C++程序  |  31行  |  1.28 KB

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