|  | //===- 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 |