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) \ 19case Instr##_i32: 20 21#define ExpandCaseTo32bitIntTruncTypes(Instr) \ 22case Instr##_i32i8: \ 23case 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) \ 36case Instr##_f32: 37 38#define ExpandCaseToAllScalarTypes(Instr) \ 39 ExpandCaseToFloatTypes(Instr) \ 40ExpandCaseToIntTypes(Instr) 41 42#define ExpandCaseToAllScalarTruncTypes(Instr) \ 43 ExpandCaseToFloatTruncTypes(Instr) \ 44ExpandCaseToIntTruncTypes(Instr) 45 46#define ExpandCaseToAllTypes(Instr) \ 47ExpandCaseToAllScalarTypes(Instr) 48 49#define ExpandCaseToAllTruncTypes(Instr) \ 50ExpandCaseToAllScalarTruncTypes(Instr) 51 52// Macros that expand into statements with return values 53#define ExpandCaseTo32bitIntReturn(Instr, Return) \ 54case 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) \ 64ExpandCaseToIntReturn(Instr, Return) 65 66// These macros expand to common groupings of RegClass ID's 67#define ExpandCaseTo1CompRegID \ 68case AMDGPU::GPRI32RegClassID: \ 69case AMDGPU::GPRF32RegClassID: 70 71#define ExpandCaseTo32BitType(Instr) \ 72case Instr##_i32: \ 73case Instr##_f32: 74 75#endif // AMDILUTILITYFUNCTIONS_H_ 76