| //===- subzero/crosstest/test_cast.h - Test prototypes ----------*- C++ -*-===// | |
| // | |
| // The Subzero Code Generator | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| // | |
| // This file declares the function prototypes used for crosstesting cast | |
| // operations. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| // The driver and the test program may be compiled by different | |
| // versions of clang, with different standard libraries that have | |
| // different definitions of int8_t. Specifically, int8_t may be | |
| // typedef'd as either 'char' or 'signed char', which mangle to | |
| // different strings. Avoid int8_t and use an explicit myint8_t. | |
| typedef signed char myint8_t; | |
| template <typename FromType, typename ToType> ToType cast(FromType a); | |
| template <typename FromType, typename ToType> ToType castBits(FromType a); | |
| // Targets like MIPS32, pass floating-point arguments in general purpose | |
| // registers when the first argument is passed in a general purpose register. | |
| // Overloaded cast and castBits functions take two extra integer argument to | |
| // check proper conversion of floating-point to/from general purpose registers. | |
| template <typename FromType, typename ToType> | |
| ToType cast(int i, FromType a, int j); | |
| template <typename FromType, typename ToType> | |
| ToType castBits(int i, FromType a, int j); |