/[qemu]/qemu/tests/test-i386-muldiv.h
ViewVC logotype

Diff of /qemu/tests/test-i386-muldiv.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by bellard, Tue Mar 4 01:14:13 2003 UTC revision 1.2 by bellard, Wed Mar 2 22:19:12 2005 UTC
# Line 1  Line 1 
1    
2  void glue(glue(test_, OP), b)(int op0, int op1)  void glue(glue(test_, OP), b)(long op0, long op1)
3  {  {
4      int res, s1, s0, flags;      long res, s1, s0, flags;
5      s0 = op0;      s0 = op0;
6      s1 = op1;      s1 = op1;
7      res = s0;      res = s0;
# Line 10  void glue(glue(test_, OP), b)(int op0, i Line 10  void glue(glue(test_, OP), b)(int op0, i
10           "popf\n\t"           "popf\n\t"
11           stringify(OP)"b %b2\n\t"           stringify(OP)"b %b2\n\t"
12           "pushf\n\t"           "pushf\n\t"
13           "popl %1\n\t"           "pop %1\n\t"
14           : "=a" (res), "=g" (flags)           : "=a" (res), "=g" (flags)
15           : "q" (s1), "0" (res), "1" (flags));           : "q" (s1), "0" (res), "1" (flags));
16      printf("%-10s A=%08x B=%08x R=%08x CC=%04x\n",      printf("%-10s A=" FMTLX " B=" FMTLX " R=" FMTLX " CC=%04lx\n",
17             stringify(OP) "b", s0, s1, res, flags & CC_MASK);             stringify(OP) "b", s0, s1, res, flags & CC_MASK);
18  }  }
19    
20  void glue(glue(test_, OP), w)(int op0h, int op0, int op1)  void glue(glue(test_, OP), w)(long op0h, long op0, long op1)
21  {  {
22      int res, s1, flags, resh;      long res, s1, flags, resh;
23      s1 = op1;      s1 = op1;
24      resh = op0h;      resh = op0h;
25      res = op0;      res = op0;
# Line 28  void glue(glue(test_, OP), w)(int op0h, Line 28  void glue(glue(test_, OP), w)(int op0h,
28           "popf\n\t"           "popf\n\t"
29           stringify(OP) "w %w3\n\t"           stringify(OP) "w %w3\n\t"
30           "pushf\n\t"           "pushf\n\t"
31           "popl %1\n\t"           "pop %1\n\t"
32           : "=a" (res), "=g" (flags), "=d" (resh)           : "=a" (res), "=g" (flags), "=d" (resh)
33           : "q" (s1), "0" (res), "1" (flags), "2" (resh));           : "q" (s1), "0" (res), "1" (flags), "2" (resh));
34      printf("%-10s AH=%08x AL=%08x B=%08x RH=%08x RL=%08x CC=%04x\n",      printf("%-10s AH=" FMTLX " AL=" FMTLX " B=" FMTLX " RH=" FMTLX " RL=" FMTLX " CC=%04lx\n",
35             stringify(OP) "w", op0h, op0, s1, resh, res, flags & CC_MASK);             stringify(OP) "w", op0h, op0, s1, resh, res, flags & CC_MASK);
36  }  }
37    
38  void glue(glue(test_, OP), l)(int op0h, int op0, int op1)  void glue(glue(test_, OP), l)(long op0h, long op0, long op1)
39  {  {
40      int res, s1, flags, resh;      long res, s1, flags, resh;
41      s1 = op1;      s1 = op1;
42      resh = op0h;      resh = op0h;
43      res = op0;      res = op0;
44      flags = 0;      flags = 0;
45      asm ("push %5\n\t"      asm ("push %5\n\t"
46           "popf\n\t"           "popf\n\t"
47           stringify(OP) "l %3\n\t"           stringify(OP) "l %k3\n\t"
48           "pushf\n\t"           "pushf\n\t"
49           "popl %1\n\t"           "pop %1\n\t"
50           : "=a" (res), "=g" (flags), "=d" (resh)           : "=a" (res), "=g" (flags), "=d" (resh)
51           : "q" (s1), "0" (res), "1" (flags), "2" (resh));           : "q" (s1), "0" (res), "1" (flags), "2" (resh));
52      printf("%-10s AH=%08x AL=%08x B=%08x RH=%08x RL=%08x CC=%04x\n",      printf("%-10s AH=" FMTLX " AL=" FMTLX " B=" FMTLX " RH=" FMTLX " RL=" FMTLX " CC=%04lx\n",
53             stringify(OP) "l", op0h, op0, s1, resh, res, flags & CC_MASK);             stringify(OP) "l", op0h, op0, s1, resh, res, flags & CC_MASK);
54  }  }
55    
56    #if defined(__x86_64__)
57    void glue(glue(test_, OP), q)(long op0h, long op0, long op1)
58    {
59        long res, s1, flags, resh;
60        s1 = op1;
61        resh = op0h;
62        res = op0;
63        flags = 0;
64        asm ("push %5\n\t"
65             "popf\n\t"
66             stringify(OP) "q %3\n\t"
67             "pushf\n\t"
68             "pop %1\n\t"
69             : "=a" (res), "=g" (flags), "=d" (resh)
70             : "q" (s1), "0" (res), "1" (flags), "2" (resh));
71        printf("%-10s AH=" FMTLX " AL=" FMTLX " B=" FMTLX " RH=" FMTLX " RL=" FMTLX " CC=%04lx\n",
72               stringify(OP) "q", op0h, op0, s1, resh, res, flags & CC_MASK);
73    }
74    #endif
75    
76  #undef OP  #undef OP

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26