@@ -82,47 +82,92 @@ class CIR_Op<string mnemonic, list<Trait> traits = []> :
82
82
// CastOp
83
83
//===----------------------------------------------------------------------===//
84
84
85
- // The enumaration value isn't in sync with clang.
86
- def CK_IntegralToBoolean : I32EnumAttrCase<"int_to_bool", 1>;
87
- def CK_ArrayToPointerDecay : I32EnumAttrCase<"array_to_ptrdecay", 2>;
88
- def CK_IntegralCast : I32EnumAttrCase<"integral", 3>;
89
- def CK_BitCast : I32EnumAttrCase<"bitcast", 4>;
90
- def CK_FloatingCast : I32EnumAttrCase<"floating", 5>;
91
- def CK_PtrToBoolean : I32EnumAttrCase<"ptr_to_bool", 6>;
92
- def CK_FloatToIntegral : I32EnumAttrCase<"float_to_int", 7>;
93
- def CK_IntegralToPointer : I32EnumAttrCase<"int_to_ptr", 8>;
94
- def CK_PointerToIntegral : I32EnumAttrCase<"ptr_to_int", 9>;
95
- def CK_FloatToBoolean : I32EnumAttrCase<"float_to_bool", 10>;
96
- def CK_BooleanToIntegral : I32EnumAttrCase<"bool_to_int", 11>;
97
- def CK_IntegralToFloat : I32EnumAttrCase<"int_to_float", 12>;
98
- def CK_BooleanToFloat : I32EnumAttrCase<"bool_to_float", 13>;
99
- def CK_AddressSpaceConversion : I32EnumAttrCase<"address_space", 14>;
100
- def CK_FloatToComplex : I32EnumAttrCase<"float_to_complex", 15>;
101
- def CK_IntegralToComplex : I32EnumAttrCase<"int_to_complex", 16>;
102
- def CK_FloatComplexToReal : I32EnumAttrCase<"float_complex_to_real", 17>;
103
- def CK_IntegralComplexToReal : I32EnumAttrCase<"int_complex_to_real", 18>;
104
- def CK_FloatComplexToBoolean : I32EnumAttrCase<"float_complex_to_bool", 19>;
105
- def CK_IntegralComplexToBoolean : I32EnumAttrCase<"int_complex_to_bool", 20>;
106
- def CK_FloatComplexCast : I32EnumAttrCase<"float_complex", 21>;
107
- def CK_FloatComplexToIntegralComplex
108
- : I32EnumAttrCase<"float_complex_to_int_complex", 22>;
109
- def CK_IntegralComplexCast : I32EnumAttrCase<"int_complex", 23>;
110
- def CK_IntegralComplexToFloatComplex
111
- : I32EnumAttrCase<"int_complex_to_float_complex", 24>;
112
- def CK_MemberPtrToBoolean : I32EnumAttrCase<"member_ptr_to_bool", 25>;
85
+ // CK_Dependent
86
+ def CK_BitCast : I32EnumAttrCase<"bitcast", 1>;
87
+ // CK_LValueBitCast
88
+ // CK_LValueToRValueBitCast
89
+ // CK_LValueToRValue
90
+ // CK_NoOp
91
+ // CK_BaseToDerived
92
+ // CK_DerivedToBase
93
+ // CK_UncheckedDerivedToBase
94
+ // CK_Dynamic
95
+ // CK_ToUnion
96
+ def CK_ArrayToPointerDecay : I32EnumAttrCase<"array_to_ptrdecay", 11>;
97
+ // CK_FunctionToPointerDecay
98
+ // CK_NullToPointer
99
+ // CK_NullToMemberPointer
100
+ // CK_BaseToDerivedMemberPointer
101
+ // CK_DerivedToBaseMemberPointer
102
+ def CK_MemberPointerToBoolean : I32EnumAttrCase<"member_ptr_to_bool", 17>;
103
+ // CK_ReinterpretMemberPointer
104
+ // CK_UserDefinedConversion
105
+ // CK_ConstructorConversion
106
+ def CK_IntegralToPointer : I32EnumAttrCase<"int_to_ptr", 21>;
107
+ def CK_PointerToIntegral : I32EnumAttrCase<"ptr_to_int", 22>;
108
+ def CK_PointerToBoolean : I32EnumAttrCase<"ptr_to_bool", 23>;
109
+ // CK_ToVoid
110
+ // CK_MatrixCast
111
+ // CK_VectorSplat
112
+ def CK_IntegralCast : I32EnumAttrCase<"integral", 27>;
113
+ def CK_IntegralToBoolean : I32EnumAttrCase<"int_to_bool", 28>;
114
+ def CK_IntegralToFloating : I32EnumAttrCase<"int_to_float", 29>;
115
+ // CK_FloatingToFixedPoint
116
+ // CK_FixedPointToFloating
117
+ // CK_FixedPointCast
118
+ // CK_FixedPointToIntegral
119
+ // CK_IntegralToFixedPoint
120
+ // CK_FixedPointToBoolean
121
+ def CK_FloatingToIntegral : I32EnumAttrCase<"float_to_int", 36>;
122
+ def CK_FloatingToBoolean : I32EnumAttrCase<"float_to_bool", 37>;
123
+ def CK_BooleanToSignedIntegral : I32EnumAttrCase<"bool_to_int", 38>;
124
+ def CK_FloatingCast : I32EnumAttrCase<"floating", 39>;
125
+ // CK_CPointerToObjCPointerCast
126
+ // CK_BlockPointerToObjCPointerCast
127
+ // CK_AnyPointerToBlockPointerCast
128
+ // CK_ObjCObjectLValueCast
129
+ // CK_FloatingRealToComplex
130
+ // CK_FloatingComplexToReal
131
+ // CK_FloatingComplexToBoolean
132
+ def CK_FloatingComplexCast : I32EnumAttrCase<"float_complex", 47>;
133
+ // CK_FloatingComplexToIntegralComplex
134
+ // CK_IntegralRealToComplex
135
+ def CK_IntegralComplexToReal : I32EnumAttrCase<"int_complex_to_real", 50>;
136
+ def CK_IntegralComplexToBoolean : I32EnumAttrCase<"int_complex_to_bool", 51>;
137
+ def CK_IntegralComplexCast : I32EnumAttrCase<"int_complex", 52>;
138
+ def CK_IntegralComplexToFloatingComplex
139
+ : I32EnumAttrCase<"int_complex_to_float_complex", 53>;
140
+ // CK_ARCProduceObject
141
+ // CK_ARCConsumeObject
142
+ // CK_ARCReclaimReturnedObject
143
+ // CK_ARCExtendBlockObject
144
+ // CK_AtomicToNonAtomic
145
+ // CK_NonAtomicToAtomic
146
+ // CK_CopyAndAutoreleaseBlockObject
147
+ // CK_BuiltinFnToFnPtr
148
+ // CK_ZeroToOCLOpaqueType
149
+ def CK_AddressSpaceConversion : I32EnumAttrCase<"address_space", 63>;
150
+ // CK_IntToOCLSampler
151
+ // CK_HLSLVectorTruncation
152
+ // CK_HLSLArrayRValue
153
+ // CK_HLSLElementwiseCast
154
+ // CK_HLSLAggregateSplatCast
155
+
156
+ // Enums below are specific to CIR and don't have a correspondence to classic
157
+ // codegen:
158
+ def CK_BooleanToFloat : I32EnumAttrCase<"bool_to_float", 1000>;
113
159
114
160
def CastKind : I32EnumAttr<
115
161
"CastKind",
116
162
"cast kind",
117
- [CK_IntegralToBoolean, CK_ArrayToPointerDecay, CK_IntegralCast,
118
- CK_BitCast, CK_FloatingCast, CK_PtrToBoolean, CK_FloatToIntegral,
119
- CK_IntegralToPointer, CK_PointerToIntegral, CK_FloatToBoolean,
120
- CK_BooleanToIntegral, CK_IntegralToFloat, CK_BooleanToFloat,
121
- CK_AddressSpaceConversion, CK_FloatToComplex, CK_IntegralToComplex,
122
- CK_FloatComplexToReal, CK_IntegralComplexToReal, CK_FloatComplexToBoolean,
123
- CK_IntegralComplexToBoolean, CK_FloatComplexCast,
124
- CK_FloatComplexToIntegralComplex, CK_IntegralComplexCast,
125
- CK_IntegralComplexToFloatComplex, CK_MemberPtrToBoolean]> {
163
+ [CK_BitCast, CK_ArrayToPointerDecay, CK_MemberPointerToBoolean,
164
+ CK_IntegralToPointer, CK_PointerToIntegral, CK_PointerToBoolean,
165
+ CK_IntegralCast, CK_IntegralToBoolean, CK_IntegralToFloating,
166
+ CK_FloatingToIntegral, CK_FloatingToBoolean, CK_BooleanToSignedIntegral,
167
+ CK_FloatingCast, CK_FloatingComplexCast, CK_IntegralComplexToReal,
168
+ CK_IntegralComplexToBoolean, CK_IntegralComplexCast,
169
+ CK_IntegralComplexToFloatingComplex, CK_AddressSpaceConversion,
170
+ CK_BooleanToFloat]> {
126
171
let cppNamespace = "::cir";
127
172
}
128
173
0 commit comments