1 //===- subzero/crosstest/test_strengthreduce.cpp - Strength reduction -----===// 2 // 3 // The Subzero Code Generator 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // Implementation for crosstesting strength reduction. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #include "test_strengthreduce.h" 15 16 // TODO(stichnot): Extend to i16 and i8 types, and also test the 17 // commutativity transformations. This may require hand-generating 18 // .ll files, because of C/C++ integer promotion rules for arithmetic, 19 // and because clang prefers to do its own commutativity 20 // transformation. 21 22 #define X(constant, suffix) \ 23 uint32_t multiplyByConst##suffix(uint32_t Val) { \ 24 return Val * (uint32_t)constant; \ 25 } \ 26 int32_t multiplyByConst##suffix(int32_t Val) { \ 27 return Val * (int32_t)constant; \ 28 } 29 CONST_TABLE 30 #undef X 31