1 //===-- AMDILUtilityFunctions.h - AMDIL Utility Functions Header --------===// 2 // 3 // The LLVM Compiler Infrastructure 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 provides helper macros for expanding case statements. 11 // 12 //===----------------------------------------------------------------------===// 13 #ifndef AMDILUTILITYFUNCTIONS_H_ 14 #define AMDILUTILITYFUNCTIONS_H_ 15 16 // Macros that are used to help with switch statements for various data types 17 // However, these macro's do not return anything unlike the second set below. 18 #define ExpandCaseTo32bitIntTypes(Instr) \ 19 case Instr##_i32: 20 21 #define ExpandCaseTo32bitIntTruncTypes(Instr) \ 22 case Instr##_i32i8: \ 23 case Instr##_i32i16: 24 25 #define ExpandCaseToIntTypes(Instr) \ 26 ExpandCaseTo32bitIntTypes(Instr) 27 28 #define ExpandCaseToIntTruncTypes(Instr) \ 29 ExpandCaseTo32bitIntTruncTypes(Instr) 30 31 #define ExpandCaseToFloatTypes(Instr) \ 32 case Instr##_f32: 33 34 #define ExpandCaseTo32bitScalarTypes(Instr) \ 35 ExpandCaseTo32bitIntTypes(Instr) \ 36 case Instr##_f32: 37 38 #define ExpandCaseToAllScalarTypes(Instr) \ 39 ExpandCaseToFloatTypes(Instr) \ 40 ExpandCaseToIntTypes(Instr) 41 42 #define ExpandCaseToAllScalarTruncTypes(Instr) \ 43 ExpandCaseToFloatTruncTypes(Instr) \ 44 ExpandCaseToIntTruncTypes(Instr) 45 46 #define ExpandCaseToAllTypes(Instr) \ 47 ExpandCaseToAllScalarTypes(Instr) 48 49 #define ExpandCaseToAllTruncTypes(Instr) \ 50 ExpandCaseToAllScalarTruncTypes(Instr) 51 52 // Macros that expand into statements with return values 53 #define ExpandCaseTo32bitIntReturn(Instr, Return) \ 54 case Instr##_i32: return Return##_i32; 55 56 #define ExpandCaseToIntReturn(Instr, Return) \ 57 ExpandCaseTo32bitIntReturn(Instr, Return) 58 59 #define ExpandCaseToFloatReturn(Instr, Return) \ 60 case Instr##_f32: return Return##_f32;\ 61 62 #define ExpandCaseToAllScalarReturn(Instr, Return) \ 63 ExpandCaseToFloatReturn(Instr, Return) \ 64 ExpandCaseToIntReturn(Instr, Return) 65 66 // These macros expand to common groupings of RegClass ID's 67 #define ExpandCaseTo1CompRegID \ 68 case AMDGPU::GPRI32RegClassID: \ 69 case AMDGPU::GPRF32RegClassID: 70 71 #define ExpandCaseTo32BitType(Instr) \ 72 case Instr##_i32: \ 73 case Instr##_f32: 74 75 #endif // AMDILUTILITYFUNCTIONS_H_ 76