• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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