blob: b6be659bb3cb257eebf15e113fbf3bb50fab9c2e [file] [log] [blame]
Jim Stichnoth0933c0c2015-06-12 10:41:16 -07001//===- 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 }
29CONST_TABLE
30#undef X