1//===- subzero/crosstest/test_cast.h - Test prototypes ----------*- C++ -*-===//
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// This file declares the function prototypes used for crosstesting cast
11// operations.
12//
13//===----------------------------------------------------------------------===//
14
15// The driver and the test program may be compiled by different
16// versions of clang, with different standard libraries that have
17// different definitions of int8_t.  Specifically, int8_t may be
18// typedef'd as either 'char' or 'signed char', which mangle to
19// different strings.  Avoid int8_t and use an explicit myint8_t.
20typedef signed char myint8_t;
21
22template <typename FromType, typename ToType> ToType cast(FromType a);
23template <typename FromType, typename ToType> ToType castBits(FromType a);
24
25// Targets like MIPS32, pass floating-point arguments in general purpose
26// registers when the first argument is passed in a general purpose register.
27// Overloaded cast and castBits functions take two extra integer argument to
28// check proper conversion of floating-point to/from general purpose registers.
29template <typename FromType, typename ToType>
30ToType cast(int i, FromType a, int j);
31template <typename FromType, typename ToType>
32ToType castBits(int i, FromType a, int j);
33