| Index: crosstest/test_arith.def
|
| diff --git a/crosstest/test_arith.def b/crosstest/test_arith.def
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4cf4596d0ef1bcdf66e3bcc6838e9e75086288d2
|
| --- /dev/null
|
| +++ b/crosstest/test_arith.def
|
| @@ -0,0 +1,45 @@
|
| +#ifndef TEST_ARITH_DEF
|
| +#define TEST_ARITH_DEF
|
| +
|
| +#define XSTR(s) STR(s)
|
| +#define STR(s) #s
|
| +
|
| +#define UINTOP_TABLE \
|
| + /* inst, operator, div */ \
|
| + X(Add, +, 0 ) \
|
| + X(Sub, -, 0 ) \
|
| + X(Mul, *, 0 ) \
|
| + X(Udiv, /, 1 ) \
|
| + X(Urem, %, 1 ) \
|
| + X(Shl, <<, 0) \
|
| + X(Lshr, >>, 0) \
|
| + X(And, &, 0 ) \
|
| + X(Or, |, 0 ) \
|
| + X(Xor, ^, 0 ) \
|
| +//#define X(inst, op, isdiv)
|
| +
|
| +#define SINTOP_TABLE \
|
| + /* inst, operator, div */ \
|
| + X(Sdiv, /, 1) \
|
| + X(Srem, %, 1) \
|
| + X(Ashr, >>, 0) \
|
| +//#define X(inst, op, isdiv)
|
| +
|
| +#define COMMA ,
|
| +#define FPOP_TABLE \
|
| + /* inst, infix_op, func */ \
|
| + X(Fadd, +, ) \
|
| + X(Fsub, -, ) \
|
| + X(Fmul, *, ) \
|
| + X(Fdiv, /, ) \
|
| + X(Frem, COMMA, myFrem) \
|
| +//#define X(inst, op, func)
|
| +
|
| +// Note: The above definition of COMMA, plus the "func" argument to
|
| +// the X macro, are because C++ does not allow the % operator on
|
| +// floating-point primitive types. To work around this, the expansion
|
| +// is "func(a infix_op b)", which becomes "myFrem(a , b)" for the Frem
|
| +// instruction and "(a + b)" for the Fadd instruction. The two
|
| +// versions of myFrem() are defined in a separate bitcode file.
|
| +
|
| +#endif // TEST_ARITH_DEF
|
|
|