@@ -112,72 +112,77 @@ namespace llvm {
112
112
113
113
v1i128 = 62 , // 1 x i128
114
114
115
- // Scalable integer types
116
- nxv1i1 = 63 , // n x 1 x i1
117
- nxv2i1 = 64 , // n x 2 x i1
118
- nxv4i1 = 65 , // n x 4 x i1
119
- nxv8i1 = 66 , // n x 8 x i1
120
- nxv16i1 = 67 , // n x 16 x i1
121
- nxv32i1 = 68 , // n x 32 x i1
122
-
123
- nxv1i8 = 69 , // n x 1 x i8
124
- nxv2i8 = 70 , // n x 2 x i8
125
- nxv4i8 = 71 , // n x 4 x i8
126
- nxv8i8 = 72 , // n x 8 x i8
127
- nxv16i8 = 73 , // n x 16 x i8
128
- nxv32i8 = 74 , // n x 32 x i8
129
-
130
- nxv1i16 = 75 , // n x 1 x i16
131
- nxv2i16 = 76 , // n x 2 x i16
132
- nxv4i16 = 77 , // n x 4 x i16
133
- nxv8i16 = 78 , // n x 8 x i16
134
- nxv16i16 = 79 , // n x 16 x i16
135
- nxv32i16 = 80 , // n x 32 x i16
136
-
137
- nxv1i32 = 81 , // n x 1 x i32
138
- nxv2i32 = 82 , // n x 2 x i32
139
- nxv4i32 = 83 , // n x 4 x i32
140
- nxv8i32 = 84 , // n x 8 x i32
141
- nxv16i32 = 85 , // n x 16 x i32
142
- nxv32i32 = 86 , // n x 32 x i32
143
-
144
- nxv1i64 = 87 , // n x 1 x i64
145
- nxv2i64 = 88 , // n x 2 x i64
146
- nxv4i64 = 89 , // n x 4 x i64
147
- nxv8i64 = 90 , // n x 8 x i64
148
- nxv16i64 = 91 , // n x 16 x i64
149
- nxv32i64 = 92 , // n x 32 x i64
150
-
151
- FIRST_INTEGER_VECTOR_VALUETYPE = v1i1,
152
- LAST_INTEGER_VECTOR_VALUETYPE = nxv32i64,
153
-
154
- FIRST_INTEGER_SCALABLE_VALUETYPE = nxv1i1,
155
- LAST_INTEGER_SCALABLE_VALUETYPE = nxv32i64,
156
-
157
- v2f16 = 93 , // 2 x f16
158
- v3f16 = 94 , // 3 x f16
159
- v4f16 = 95 , // 4 x f16
160
- v8f16 = 96 , // 8 x f16
161
- v16f16 = 97 , // 16 x f16
162
- v32f16 = 98 , // 32 x f16
163
- v1f32 = 99 , // 1 x f32
164
- v2f32 = 100 , // 2 x f32
165
- v3f32 = 101 , // 3 x f32
166
- v4f32 = 102 , // 4 x f32
167
- v5f32 = 103 , // 5 x f32
168
- v8f32 = 104 , // 8 x f32
169
- v16f32 = 105 , // 16 x f32
170
- v32f32 = 106 , // 32 x f32
171
- v64f32 = 107 , // 64 x f32
172
- v128f32 = 108 , // 128 x f32
173
- v256f32 = 109 , // 256 x f32
174
- v512f32 = 110 , // 512 x f32
175
- v1024f32 = 111 , // 1024 x f32
176
- v2048f32 = 112 , // 2048 x f32
177
- v1f64 = 113 , // 1 x f64
178
- v2f64 = 114 , // 2 x f64
179
- v4f64 = 115 , // 4 x f64
180
- v8f64 = 116 , // 8 x f64
115
+ FIRST_INTEGER_FIXEDLEN_VECTOR_VALUETYPE = v1i1,
116
+ LAST_INTEGER_FIXEDLEN_VECTOR_VALUETYPE = v1i128,
117
+
118
+ v2f16 = 63 , // 2 x f16
119
+ v3f16 = 64 , // 3 x f16
120
+ v4f16 = 65 , // 4 x f16
121
+ v8f16 = 66 , // 8 x f16
122
+ v16f16 = 67 , // 16 x f16
123
+ v32f16 = 68 , // 32 x f16
124
+ v1f32 = 69 , // 1 x f32
125
+ v2f32 = 70 , // 2 x f32
126
+ v3f32 = 71 , // 3 x f32
127
+ v4f32 = 72 , // 4 x f32
128
+ v5f32 = 73 , // 5 x f32
129
+ v8f32 = 74 , // 8 x f32
130
+ v16f32 = 75 , // 16 x f32
131
+ v32f32 = 76 , // 32 x f32
132
+ v64f32 = 77 , // 64 x f32
133
+ v128f32 = 78 , // 128 x f32
134
+ v256f32 = 79 , // 256 x f32
135
+ v512f32 = 80 , // 512 x f32
136
+ v1024f32 = 81 , // 1024 x f32
137
+ v2048f32 = 82 , // 2048 x f32
138
+ v1f64 = 83 , // 1 x f64
139
+ v2f64 = 84 , // 2 x f64
140
+ v4f64 = 85 , // 4 x f64
141
+ v8f64 = 86 , // 8 x f64
142
+
143
+ FIRST_FP_FIXEDLEN_VECTOR_VALUETYPE = v2f16,
144
+ LAST_FP_FIXEDLEN_VECTOR_VALUETYPE = v8f64,
145
+
146
+ FIRST_FIXEDLEN_VECTOR_VALUETYPE = v1i1,
147
+ LAST_FIXEDLEN_VECTOR_VALUETYPE = v8f64,
148
+
149
+ nxv1i1 = 87 , // n x 1 x i1
150
+ nxv2i1 = 88 , // n x 2 x i1
151
+ nxv4i1 = 89 , // n x 4 x i1
152
+ nxv8i1 = 90 , // n x 8 x i1
153
+ nxv16i1 = 91 , // n x 16 x i1
154
+ nxv32i1 = 92 , // n x 32 x i1
155
+
156
+ nxv1i8 = 93 , // n x 1 x i8
157
+ nxv2i8 = 94 , // n x 2 x i8
158
+ nxv4i8 = 95 , // n x 4 x i8
159
+ nxv8i8 = 96 , // n x 8 x i8
160
+ nxv16i8 = 97 , // n x 16 x i8
161
+ nxv32i8 = 98 , // n x 32 x i8
162
+
163
+ nxv1i16 = 99 , // n x 1 x i16
164
+ nxv2i16 = 100 , // n x 2 x i16
165
+ nxv4i16 = 101 , // n x 4 x i16
166
+ nxv8i16 = 102 , // n x 8 x i16
167
+ nxv16i16 = 103 , // n x 16 x i16
168
+ nxv32i16 = 104 , // n x 32 x i16
169
+
170
+ nxv1i32 = 105 , // n x 1 x i32
171
+ nxv2i32 = 106 , // n x 2 x i32
172
+ nxv4i32 = 107 , // n x 4 x i32
173
+ nxv8i32 = 108 , // n x 8 x i32
174
+ nxv16i32 = 109 , // n x 16 x i32
175
+ nxv32i32 = 110 , // n x 32 x i32
176
+
177
+ nxv1i64 = 111 , // n x 1 x i64
178
+ nxv2i64 = 112 , // n x 2 x i64
179
+ nxv4i64 = 113 , // n x 4 x i64
180
+ nxv8i64 = 114 , // n x 8 x i64
181
+ nxv16i64 = 115 , // n x 16 x i64
182
+ nxv32i64 = 116 , // n x 32 x i64
183
+
184
+ FIRST_INTEGER_SCALABLE_VECTOR_VALUETYPE = nxv1i1,
185
+ LAST_INTEGER_SCALABLE_VECTOR_VALUETYPE = nxv32i64,
181
186
182
187
nxv2f16 = 117 , // n x 2 x f16
183
188
nxv4f16 = 118 , // n x 4 x f16
@@ -192,11 +197,11 @@ namespace llvm {
192
197
nxv4f64 = 127 , // n x 4 x f64
193
198
nxv8f64 = 128 , // n x 8 x f64
194
199
195
- FIRST_FP_VECTOR_VALUETYPE = v2f16 ,
196
- LAST_FP_VECTOR_VALUETYPE = nxv8f64,
200
+ FIRST_FP_SCALABLE_VECTOR_VALUETYPE = nxv2f16 ,
201
+ LAST_FP_SCALABLE_VECTOR_VALUETYPE = nxv8f64,
197
202
198
- FIRST_FP_SCALABLE_VALUETYPE = nxv2f16 ,
199
- LAST_FP_SCALABLE_VALUETYPE = nxv8f64,
203
+ FIRST_SCALABLE_VECTOR_VALUETYPE = nxv1i1 ,
204
+ LAST_SCALABLE_VECTOR_VALUETYPE = nxv8f64,
200
205
201
206
FIRST_VECTOR_VALUETYPE = v1i1,
202
207
LAST_VECTOR_VALUETYPE = nxv8f64,
@@ -278,16 +283,20 @@ namespace llvm {
278
283
bool isFloatingPoint () const {
279
284
return ((SimpleTy >= MVT::FIRST_FP_VALUETYPE &&
280
285
SimpleTy <= MVT::LAST_FP_VALUETYPE) ||
281
- (SimpleTy >= MVT::FIRST_FP_VECTOR_VALUETYPE &&
282
- SimpleTy <= MVT::LAST_FP_VECTOR_VALUETYPE));
286
+ (SimpleTy >= MVT::FIRST_FP_FIXEDLEN_VECTOR_VALUETYPE &&
287
+ SimpleTy <= MVT::LAST_FP_FIXEDLEN_VECTOR_VALUETYPE) ||
288
+ (SimpleTy >= MVT::FIRST_FP_SCALABLE_VECTOR_VALUETYPE &&
289
+ SimpleTy <= MVT::LAST_FP_SCALABLE_VECTOR_VALUETYPE));
283
290
}
284
291
285
292
// / Return true if this is an integer or a vector integer type.
286
293
bool isInteger () const {
287
294
return ((SimpleTy >= MVT::FIRST_INTEGER_VALUETYPE &&
288
295
SimpleTy <= MVT::LAST_INTEGER_VALUETYPE) ||
289
- (SimpleTy >= MVT::FIRST_INTEGER_VECTOR_VALUETYPE &&
290
- SimpleTy <= MVT::LAST_INTEGER_VECTOR_VALUETYPE));
296
+ (SimpleTy >= MVT::FIRST_INTEGER_FIXEDLEN_VECTOR_VALUETYPE &&
297
+ SimpleTy <= MVT::LAST_INTEGER_FIXEDLEN_VECTOR_VALUETYPE) ||
298
+ (SimpleTy >= MVT::FIRST_INTEGER_SCALABLE_VECTOR_VALUETYPE &&
299
+ SimpleTy <= MVT::LAST_INTEGER_SCALABLE_VECTOR_VALUETYPE));
291
300
}
292
301
293
302
// / Return true if this is an integer, not including vectors.
@@ -305,10 +314,13 @@ namespace llvm {
305
314
// / Return true if this is a vector value type where the
306
315
// / runtime length is machine dependent
307
316
bool isScalableVector () const {
308
- return ((SimpleTy >= MVT::FIRST_INTEGER_SCALABLE_VALUETYPE &&
309
- SimpleTy <= MVT::LAST_INTEGER_SCALABLE_VALUETYPE) ||
310
- (SimpleTy >= MVT::FIRST_FP_SCALABLE_VALUETYPE &&
311
- SimpleTy <= MVT::LAST_FP_SCALABLE_VALUETYPE));
317
+ return (SimpleTy >= MVT::FIRST_SCALABLE_VECTOR_VALUETYPE &&
318
+ SimpleTy <= MVT::LAST_SCALABLE_VECTOR_VALUETYPE);
319
+ }
320
+
321
+ bool isFixedLengthVector () const {
322
+ return (SimpleTy >= MVT::FIRST_FIXEDLEN_VECTOR_VALUETYPE &&
323
+ SimpleTy <= MVT::LAST_FIXEDLEN_VECTOR_VALUETYPE);
312
324
}
313
325
314
326
// / Return true if this is a 16-bit vector type.
@@ -1104,26 +1116,40 @@ namespace llvm {
1104
1116
(MVT::SimpleValueType)(MVT::LAST_VECTOR_VALUETYPE + 1 ));
1105
1117
}
1106
1118
1107
- static mvt_range integer_vector_valuetypes () {
1119
+ static mvt_range fixedlen_vector_valuetypes () {
1120
+ return mvt_range (
1121
+ MVT::FIRST_FIXEDLEN_VECTOR_VALUETYPE,
1122
+ (MVT::SimpleValueType)(MVT::LAST_FIXEDLEN_VECTOR_VALUETYPE + 1 ));
1123
+ }
1124
+
1125
+ static mvt_range scalable_vector_valuetypes () {
1108
1126
return mvt_range (
1109
- MVT::FIRST_INTEGER_VECTOR_VALUETYPE ,
1110
- (MVT::SimpleValueType)(MVT::LAST_INTEGER_VECTOR_VALUETYPE + 1 ));
1127
+ MVT::FIRST_SCALABLE_VECTOR_VALUETYPE ,
1128
+ (MVT::SimpleValueType)(MVT::LAST_SCALABLE_VECTOR_VALUETYPE + 1 ));
1111
1129
}
1112
1130
1113
- static mvt_range fp_vector_valuetypes () {
1131
+ static mvt_range integer_fixedlen_vector_valuetypes () {
1114
1132
return mvt_range (
1115
- MVT::FIRST_FP_VECTOR_VALUETYPE,
1116
- (MVT::SimpleValueType)(MVT::LAST_FP_VECTOR_VALUETYPE + 1 ));
1133
+ MVT::FIRST_INTEGER_FIXEDLEN_VECTOR_VALUETYPE,
1134
+ (MVT::SimpleValueType)(MVT::LAST_INTEGER_FIXEDLEN_VECTOR_VALUETYPE + 1 ));
1135
+ }
1136
+
1137
+ static mvt_range fp_fixedlen_vector_valuetypes () {
1138
+ return mvt_range (
1139
+ MVT::FIRST_FP_FIXEDLEN_VECTOR_VALUETYPE,
1140
+ (MVT::SimpleValueType)(MVT::LAST_FP_FIXEDLEN_VECTOR_VALUETYPE + 1 ));
1117
1141
}
1118
1142
1119
1143
static mvt_range integer_scalable_vector_valuetypes () {
1120
- return mvt_range (MVT::FIRST_INTEGER_SCALABLE_VALUETYPE,
1121
- (MVT::SimpleValueType)(MVT::LAST_INTEGER_SCALABLE_VALUETYPE + 1 ));
1144
+ return mvt_range (
1145
+ MVT::FIRST_INTEGER_SCALABLE_VECTOR_VALUETYPE,
1146
+ (MVT::SimpleValueType)(MVT::LAST_INTEGER_SCALABLE_VECTOR_VALUETYPE + 1 ));
1122
1147
}
1123
1148
1124
1149
static mvt_range fp_scalable_vector_valuetypes () {
1125
- return mvt_range (MVT::FIRST_FP_SCALABLE_VALUETYPE,
1126
- (MVT::SimpleValueType)(MVT::LAST_FP_SCALABLE_VALUETYPE + 1 ));
1150
+ return mvt_range (
1151
+ MVT::FIRST_FP_SCALABLE_VECTOR_VALUETYPE,
1152
+ (MVT::SimpleValueType)(MVT::LAST_FP_SCALABLE_VECTOR_VALUETYPE + 1 ));
1127
1153
}
1128
1154
// / @}
1129
1155
};
0 commit comments