//===-- AMDILUtilityFunctions.h - AMDIL Utility Functions Header --------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //==-----------------------------------------------------------------------===// // // This file provides helper macros for expanding case statements. // //===----------------------------------------------------------------------===// #ifndef AMDILUTILITYFUNCTIONS_H_ #define AMDILUTILITYFUNCTIONS_H_ // Macros that are used to help with switch statements for various data types // However, these macro's do not return anything unlike the second set below. #define ExpandCaseTo32bitIntTypes(Instr) \ case Instr##_i32: #define ExpandCaseTo32bitIntTruncTypes(Instr) \ case Instr##_i32i8: \ case Instr##_i32i16: #define ExpandCaseToIntTypes(Instr) \ ExpandCaseTo32bitIntTypes(Instr) #define ExpandCaseToIntTruncTypes(Instr) \ ExpandCaseTo32bitIntTruncTypes(Instr) #define ExpandCaseToFloatTypes(Instr) \ case Instr##_f32: #define ExpandCaseTo32bitScalarTypes(Instr) \ ExpandCaseTo32bitIntTypes(Instr) \ case Instr##_f32: #define ExpandCaseToAllScalarTypes(Instr) \ ExpandCaseToFloatTypes(Instr) \ ExpandCaseToIntTypes(Instr) #define ExpandCaseToAllScalarTruncTypes(Instr) \ ExpandCaseToFloatTruncTypes(Instr) \ ExpandCaseToIntTruncTypes(Instr) #define ExpandCaseToAllTypes(Instr) \ ExpandCaseToAllScalarTypes(Instr) #define ExpandCaseToAllTruncTypes(Instr) \ ExpandCaseToAllScalarTruncTypes(Instr) // Macros that expand into statements with return values #define ExpandCaseTo32bitIntReturn(Instr, Return) \ case Instr##_i32: return Return##_i32; #define ExpandCaseToIntReturn(Instr, Return) \ ExpandCaseTo32bitIntReturn(Instr, Return) #define ExpandCaseToFloatReturn(Instr, Return) \ case Instr##_f32: return Return##_f32;\ #define ExpandCaseToAllScalarReturn(Instr, Return) \ ExpandCaseToFloatReturn(Instr, Return) \ ExpandCaseToIntReturn(Instr, Return) // These macros expand to common groupings of RegClass ID's #define ExpandCaseTo1CompRegID \ case AMDIL::GPRI32RegClassID: \ case AMDIL::GPRF32RegClassID: #define ExpandCaseTo32BitType(Instr) \ case Instr##_i32: \ case Instr##_f32: #endif // AMDILUTILITYFUNCTIONS_H_