1b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define exec_op glue(exec_, OP)
3b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define exec_opq glue(glue(exec_, OP), q)
4b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define exec_opl glue(glue(exec_, OP), l)
5b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define exec_opw glue(glue(exec_, OP), w)
6b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define exec_opb glue(glue(exec_, OP), b)
7b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
8b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define EXECOP2(size, res, s1, flags) \
9b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    asm ("pushq %4\n\t"\
10b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popfq\n\t"\
11b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         stringify(OP) size " %" size "2, %" size "0\n\t" \
12b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "pushfq\n\t"\
13b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popq %1\n\t"\
14b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : "=q" (res), "=g" (flags)\
15b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : "q" (s1), "0" (res), "1" (flags));
16b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
17b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define EXECOP1(size, res, flags) \
18b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    asm ("pushq %3\n\t"\
19b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popfq\n\t"\
20b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         stringify(OP) size " %" size "0\n\t" \
21b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "pushfq\n\t"\
22b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popq %1\n\t"\
23b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : "=q" (res), "=g" (flags)\
24b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : "0" (res), "1" (flags));
25b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
26b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifdef OP1
27b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovinline void exec_opq(int64 s0, int64 s1, int64 iflags)
28b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
29b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    int64 res, flags;
30b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    res = s0;
31b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    flags = iflags;
32b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    EXECOP1("", res, flags);
33b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("%-6s A=%016llx R=%016llx CCIN=%04llx CC=%04llx\n",
34b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov           stringify(OP) "q", s0, res, iflags, flags & CC_MASK);
35b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
36b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovinline void exec_opl(int64 s0, int64 s1, int64 iflags)
37b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
38b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    int64 res, flags;
39b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    res = s0;
40b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    flags = iflags;
41b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    EXECOP1("", res, flags);
42b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("%-6s A=%016llx R=%016llx CCIN=%04llx CC=%04llx\n",
43b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov           stringify(OP) "l", s0, res, iflags, flags & CC_MASK);
44b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
45b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovinline void exec_opw(int64 s0, int64 s1, int64 iflags)
46b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
47b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    int64 res, flags;
48b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    res = s0;
49b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    flags = iflags;
50b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    EXECOP1("w", res, flags);
51b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("%-6s A=%016llx R=%016llx CCIN=%04llx CC=%04llx\n",
52b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov           stringify(OP) "w", s0, res, iflags, flags & CC_MASK);
53b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
54b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovinline void exec_opb(int64 s0, int64 s1, int64 iflags)
55b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
56b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    int64 res, flags;
57b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    res = s0;
58b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    flags = iflags;
59b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    EXECOP1("b", res, flags);
60b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("%-6s A=%016llx R=%016llx CCIN=%04llx CC=%04llx\n",
61b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov           stringify(OP) "b", s0, res, iflags, flags & CC_MASK);
62b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
63b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else
64b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovinline void exec_opq(int64 s0, int64 s1, int64 iflags)
65b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
66b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    int64 res, flags;
67b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    res = s0;
68b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    flags = iflags;
69b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    EXECOP2("q", res, s1, flags);
70b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("%-6s A=%016llx B=%016llx R=%016llx CCIN=%04llx CC=%04llx\n",
71b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov           stringify(OP) "q", s0, s1, res, iflags, flags & CC_MASK);
72b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
73b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
74b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovinline void exec_opl(int64 s0, int64 s1, int64 iflags)
75b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
76b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    int64 res, flags;
77b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    res = s0;
78b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    flags = iflags;
79b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    EXECOP2("", res, s1, flags);
80b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("%-6s A=%016llx B=%016llx R=%016llx CCIN=%04llx CC=%04llx\n",
81b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov           stringify(OP) "l", s0, s1, res, iflags, flags & CC_MASK);
82b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
83b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
84b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovinline void exec_opw(int64 s0, int64 s1, int64 iflags)
85b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
86b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    int64 res, flags;
87b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    res = s0;
88b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    flags = iflags;
89b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    EXECOP2("w", res, s1, flags);
90b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("%-6s A=%016llx B=%016llx R=%016llx CCIN=%04llx CC=%04llx\n",
91b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov           stringify(OP) "w", s0, s1, res, iflags, flags & CC_MASK);
92b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
93b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
94b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovinline void exec_opb(int64 s0, int64 s1, int64 iflags)
95b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
96b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    int64 res, flags;
97b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    res = s0;
98b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    flags = iflags;
99b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    EXECOP2("b", res, s1, flags);
100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("%-6s A=%016llx B=%016llx R=%016llx CCIN=%04llx CC=%04llx\n",
101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov           stringify(OP) "b", s0, s1, res, iflags, flags & CC_MASK);
102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid exec_op(int64 s0, int64 s1)
106b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
107b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if 1
108b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  int64 o,s,z,a,c,p,flags_in;
109b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  for (o = 0; o < 2; o++) {
110b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  for (s = 0; s < 2; s++) {
111b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  for (z = 0; z < 2; z++) {
112b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  for (a = 0; a < 2; a++) {
113b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  for (c = 0; c < 2; c++) {
114b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  for (p = 0; p < 2; p++) {
115b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
116b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    flags_in = (o ? CC_O : 0)
117b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov             | (s ? CC_S : 0)
118b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov             | (z ? CC_Z : 0)
119b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov             | (a ? CC_A : 0)
120b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov             | (c ? CC_C : 0)
121b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov             | (p ? CC_P : 0);
122b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_opq(s0, s1, flags_in);
123b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_opl(s0, s1, flags_in);
124b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_opw(s0, s1, flags_in);
125b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_opb(s0, s1, flags_in);
126b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  }}}}}}
127b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else
128b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_opq(s0, s1, 0);
129b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_opl(s0, s1, 0);
130b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_opw(s0, s1, 0);
131b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_opb(s0, s1, 0);
132b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_opq(s0, s1, CC_C);
133b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_opl(s0, s1, CC_C);
134b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_opw(s0, s1, CC_C);
135b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_opb(s0, s1, CC_C);
136b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
137b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
138b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
139b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid glue(test_, OP)(void)
140b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
141b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define NVALS 57
142b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   int64 i, j;
143b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   static unsigned int val[NVALS]
144b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    = { 0x00, 0x01, 0x02, 0x03,
145b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        0x3F, 0x40, 0x41,
146b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        0x7E, 0x7F, 0x80, 0x81, 0x82,
147b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        0xBF, 0xC0, 0xC1,
148b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        0xFC, 0xFD, 0xFE, 0xFF,
149b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
150b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        0xFF00, 0xFF01, 0xFF02, 0xFF03,
151b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        0xFF3F, 0xFF40, 0xFF41,
152b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        0xFF7E, 0xFF7F, 0xFF80, 0xFF81, 0xFF82,
153b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        0xFFBF, 0xFFC0, 0xFFC1,
154b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        0xFFFC, 0xFFFD, 0xFFFE, 0xFFFF,
155b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
156b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        0xFFFFFF00, 0xFFFFFF01, 0xFFFFFF02, 0xFFFFFF03,
157b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        0xFFFFFF3F, 0xFFFFFF40, 0xFFFFFF41,
158b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        0xFFFFFF7E, 0xFFFFFF7F, 0xFFFFFF80, 0xFFFFFF81, 0xFFFFFF82,
159b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        0xFFFFFFBF, 0xFFFFFFC0, 0xFFFFFFC1,
160b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        0xFFFFFFFC, 0xFFFFFFFD, 0xFFFFFFFE, 0xFFFFFFFF
161b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      };
162b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
163b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0xabcd12345678, 0x4321812FADA);
164b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x12345678, 0x812FADA);
165b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0xabcd00012341, 0xabcd00012341);
166b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x12341, 0x12341);
167b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x12341, -0x12341);
168b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0xffffffff, 0);
169b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0xffffffff, -1);
170b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0xffffffff, 1);
171b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0xffffffff, 2);
172b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x7fffffff, 0);
173b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x7fffffff, 1);
174b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x7fffffff, -1);
175b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x80000000, -1);
176b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x80000000, 1);
177b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x80000000, -2);
178b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x12347fff, 0);
179b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x12347fff, 1);
180b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x12347fff, -1);
181b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x12348000, -1);
182b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x12348000, 1);
183b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x12348000, -2);
184b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x12347f7f, 0);
185b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x12347f7f, 1);
186b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x12347f7f, -1);
187b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x12348080, -1);
188b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x12348080, 1);
189b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x12348080, -2);
190b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
191b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0xFFFFFFFFffffffff, 0);
192b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0xFFFFFFFFffffffff, -1);
193b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0xFFFFFFFFffffffff, 1);
194b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0xFFFFFFFFffffffff, 2);
195b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x7fffffffFFFFFFFF, 0);
196b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x7fffffffFFFFFFFF, 1);
197b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x7fffffffFFFFFFFF, -1);
198b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x8000000000000000, -1);
199b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x8000000000000000, 1);
200b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x8000000000000000, -2);
201b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x123443217FFFFFFF, 0);
202b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x123443217FFFFFFF, 1);
203b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x123443217FFFFFFF, -1);
204b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x1234432180000000, -1);
205b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x1234432180000000, 1);
206b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x1234432180000000, -2);
207b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x123443217F7F7f7f, 0);
208b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x123443217F7F7f7f, 1);
209b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x123443217F7F7f7f, -1);
210b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x1234432180808080, -1);
211b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x1234432180808080, 1);
212b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    exec_op(0x1234432180808080, -2);
213b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
214b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if TEST_INTEGER_VERBOSE
215b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    if (1)
216b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    for (i = 0; i < NVALS; i++)
217b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      for (j = 0; j < NVALS; j++)
218b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov	exec_op(val[i], val[j]);
219b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
220b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
221b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#undef NVALS
222b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
223b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
224b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid *glue(_test_, OP) __init_call = glue(test_, OP);
225b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
226b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#undef OP
227b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#undef OP_CC
228