Index: crosstest/test_strengthreduce.cpp |
diff --git a/crosstest/test_strengthreduce.cpp b/crosstest/test_strengthreduce.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b6be659bb3cb257eebf15e113fbf3bb50fab9c2e |
--- /dev/null |
+++ b/crosstest/test_strengthreduce.cpp |
@@ -0,0 +1,30 @@ |
+//===- subzero/crosstest/test_strengthreduce.cpp - Strength reduction -----===// |
+// |
+// The Subzero Code Generator |
+// |
+// This file is distributed under the University of Illinois Open Source |
+// License. See LICENSE.TXT for details. |
+// |
+//===----------------------------------------------------------------------===// |
+// |
+// Implementation for crosstesting strength reduction. |
+// |
+//===----------------------------------------------------------------------===// |
+ |
+#include "test_strengthreduce.h" |
+ |
+// TODO(stichnot): Extend to i16 and i8 types, and also test the |
+// commutativity transformations. This may require hand-generating |
+// .ll files, because of C/C++ integer promotion rules for arithmetic, |
+// and because clang prefers to do its own commutativity |
+// transformation. |
+ |
+#define X(constant, suffix) \ |
+ uint32_t multiplyByConst##suffix(uint32_t Val) { \ |
+ return Val * (uint32_t)constant; \ |
+ } \ |
+ int32_t multiplyByConst##suffix(int32_t Val) { \ |
+ return Val * (int32_t)constant; \ |
+ } |
+CONST_TABLE |
+#undef X |