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. 20 typedef signed char myint8_t; 21 22 template <typename FromType, typename ToType> ToType cast(FromType a); 23 template <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. 29 template <typename FromType, typename ToType> 30 ToType cast(int i, FromType a, int j); 31 template <typename FromType, typename ToType> 32 ToType castBits(int i, FromType a, int j); 33