Index: crosstest/test_arith.def |
diff --git a/crosstest/test_arith.def b/crosstest/test_arith.def |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4acc9989c9d9c581d1018f33cae1c683d97d68ca |
--- /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 seprate bitcode file. |
jvoung (off chromium)
2014/05/15 23:47:34
seprate -> separate
Jim Stichnoth
2014/05/17 14:14:32
Done.
|
+ |
+#endif // TEST_ARITH_DEF |