OLD | NEW |
---|---|
(Empty) | |
1 #ifndef TEST_ARITH_DEF | |
2 #define TEST_ARITH_DEF | |
3 | |
4 #define XSTR(s) STR(s) | |
5 #define STR(s) #s | |
6 | |
7 #define UINTOP_TABLE \ | |
8 /* inst, operator, div */ \ | |
9 X(Add, +, 0 ) \ | |
10 X(Sub, -, 0 ) \ | |
11 X(Mul, *, 0 ) \ | |
12 X(Udiv, /, 1 ) \ | |
13 X(Urem, %, 1 ) \ | |
14 X(Shl, <<, 0) \ | |
15 X(Lshr, >>, 0) \ | |
16 X(And, &, 0 ) \ | |
17 X(Or, |, 0 ) \ | |
18 X(Xor, ^, 0 ) \ | |
19 //#define X(inst, op, isdiv) | |
20 | |
21 #define SINTOP_TABLE \ | |
22 /* inst, operator, div */ \ | |
23 X(Sdiv, /, 1) \ | |
24 X(Srem, %, 1) \ | |
25 X(Ashr, >>, 0) \ | |
26 //#define X(inst, op, isdiv) | |
27 | |
28 #define COMMA , | |
29 #define FPOP_TABLE \ | |
30 /* inst, infix_op, func */ \ | |
31 X(Fadd, +, ) \ | |
32 X(Fsub, -, ) \ | |
33 X(Fmul, *, ) \ | |
34 X(Fdiv, /, ) \ | |
35 X(Frem, COMMA, myFrem) \ | |
36 //#define X(inst, op, func) | |
37 | |
38 // Note: The above definition of COMMA, plus the "func" argument to | |
39 // the X macro, are because C++ does not allow the % operator on | |
40 // floating-point primitive types. To work around this, the expansion | |
41 // is "func(a infix_op b)", which becomes "myFrem(a , b)" for the Frem | |
42 // instruction and "(a + b)" for the Fadd instruction. The two | |
43 // versions of myFrem() are defined in a seprate bitcode file. | |
jvoung (off chromium)
2014/05/15 23:47:34
seprate -> separate
Jim Stichnoth
2014/05/17 14:14:32
Done.
| |
44 | |
45 #endif // TEST_ARITH_DEF | |
OLD | NEW |