diff options
Diffstat (limited to 'llvm/lib/Target/AMDGPU/AMDILUtilityFunctions.h')
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDILUtilityFunctions.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDILUtilityFunctions.h b/llvm/lib/Target/AMDGPU/AMDILUtilityFunctions.h new file mode 100644 index 00000000000..e6666f97705 --- /dev/null +++ b/llvm/lib/Target/AMDGPU/AMDILUtilityFunctions.h @@ -0,0 +1,75 @@ +//===-- 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 AMDGPU::GPRI32RegClassID: \ +case AMDGPU::GPRF32RegClassID: + +#define ExpandCaseTo32BitType(Instr) \ +case Instr##_i32: \ +case Instr##_f32: + +#endif // AMDILUTILITYFUNCTIONS_H_ |