@@ -46,6 +46,26 @@ static const LLT V6P0 = LLT::fixed_vector(6, P0);
46
46
static const LLT V2P1 = LLT::fixed_vector(2 , P1);
47
47
static const LLT V4P1 = LLT::fixed_vector(4 , P1);
48
48
49
+ static const LLT NXV1S1 = LLT::scalable_vector(1 , S1);
50
+ static const LLT NXV2S1 = LLT::scalable_vector(2 , S1);
51
+ static const LLT NXV3S1 = LLT::scalable_vector(3 , S1);
52
+ static const LLT NXV4S1 = LLT::scalable_vector(4 , S1);
53
+
54
+ static const LLT NXV1S32 = LLT::scalable_vector(1 , S32);
55
+ static const LLT NXV2S32 = LLT::scalable_vector(2 , S32);
56
+ static const LLT NXV3S32 = LLT::scalable_vector(3 , S32);
57
+ static const LLT NXV4S32 = LLT::scalable_vector(4 , S32);
58
+
59
+ static const LLT NXV1S64 = LLT::scalable_vector(1 , S64);
60
+ static const LLT NXV2S64 = LLT::scalable_vector(2 , S64);
61
+ static const LLT NXV3S64 = LLT::scalable_vector(3 , S64);
62
+ static const LLT NXV4S64 = LLT::scalable_vector(4 , S64);
63
+
64
+ static const LLT NXV1P0 = LLT::scalable_vector(1 , P0);
65
+ static const LLT NXV2P0 = LLT::scalable_vector(2 , P0);
66
+ static const LLT NXV3P0 = LLT::scalable_vector(3 , P0);
67
+ static const LLT NXV4P0 = LLT::scalable_vector(4 , P0);
68
+
49
69
TEST (GISelUtilsTest, getGCDType) {
50
70
EXPECT_EQ (S1, getGCDType (S1, S1));
51
71
EXPECT_EQ (S32, getGCDType (S32, S32));
@@ -152,6 +172,62 @@ TEST(GISelUtilsTest, getGCDType) {
152
172
153
173
EXPECT_EQ (LLT::scalar (4 ), getGCDType (LLT::fixed_vector (3 , 4 ), S8));
154
174
EXPECT_EQ (LLT::scalar (4 ), getGCDType (S8, LLT::fixed_vector (3 , 4 )));
175
+
176
+ // Scalable -> Scalable
177
+ EXPECT_EQ (NXV1S1, getGCDType (NXV1S1, NXV1S32));
178
+ EXPECT_EQ (NXV1S32, getGCDType (NXV1S64, NXV1S32));
179
+ EXPECT_EQ (NXV1S32, getGCDType (NXV1S32, NXV1S64));
180
+ EXPECT_EQ (NXV1P0, getGCDType (NXV1P0, NXV1S64));
181
+ EXPECT_EQ (NXV1S64, getGCDType (NXV1S64, NXV1P0));
182
+
183
+ EXPECT_EQ (NXV4S1, getGCDType (NXV4S1, NXV4S32));
184
+ EXPECT_EQ (NXV2S64, getGCDType (NXV4S64, NXV4S32));
185
+ EXPECT_EQ (NXV4S32, getGCDType (NXV4S32, NXV4S64));
186
+ EXPECT_EQ (NXV4P0, getGCDType (NXV4P0, NXV4S64));
187
+ EXPECT_EQ (NXV4S64, getGCDType (NXV4S64, NXV4P0));
188
+
189
+ EXPECT_EQ (NXV4S1, getGCDType (NXV4S1, NXV2S32));
190
+ EXPECT_EQ (NXV1S64, getGCDType (NXV4S64, NXV2S32));
191
+ EXPECT_EQ (NXV4S32, getGCDType (NXV4S32, NXV2S64));
192
+ EXPECT_EQ (NXV2P0, getGCDType (NXV4P0, NXV2S64));
193
+ EXPECT_EQ (NXV2S64, getGCDType (NXV4S64, NXV2P0));
194
+
195
+ EXPECT_EQ (NXV2S1, getGCDType (NXV2S1, NXV4S32));
196
+ EXPECT_EQ (NXV2S64, getGCDType (NXV2S64, NXV4S32));
197
+ EXPECT_EQ (NXV2S32, getGCDType (NXV2S32, NXV4S64));
198
+ EXPECT_EQ (NXV2P0, getGCDType (NXV2P0, NXV4S64));
199
+ EXPECT_EQ (NXV2S64, getGCDType (NXV2S64, NXV4P0));
200
+
201
+ EXPECT_EQ (NXV1S1, getGCDType (NXV3S1, NXV4S32));
202
+ EXPECT_EQ (NXV1S64, getGCDType (NXV3S64, NXV4S32));
203
+ EXPECT_EQ (NXV1S32, getGCDType (NXV3S32, NXV4S64));
204
+ EXPECT_EQ (NXV1P0, getGCDType (NXV3P0, NXV4S64));
205
+ EXPECT_EQ (NXV1S64, getGCDType (NXV3S64, NXV4P0));
206
+
207
+ EXPECT_EQ (NXV1S1, getGCDType (NXV3S1, NXV4S1));
208
+ EXPECT_EQ (NXV1S32, getGCDType (NXV3S32, NXV4S32));
209
+ EXPECT_EQ (NXV1S64, getGCDType (NXV3S64, NXV4S64));
210
+ EXPECT_EQ (NXV1P0, getGCDType (NXV3P0, NXV4P0));
211
+
212
+ // Scalable, Scalar
213
+
214
+ EXPECT_EQ (S1, getGCDType (NXV1S1, S1));
215
+ EXPECT_EQ (S1, getGCDType (NXV1S1, S32));
216
+ EXPECT_EQ (S1, getGCDType (NXV1S32, S1));
217
+ EXPECT_EQ (S32, getGCDType (NXV1S32, S32));
218
+ EXPECT_EQ (S32, getGCDType (NXV1S32, S64));
219
+ EXPECT_EQ (S1, getGCDType (NXV2S32, S1));
220
+ EXPECT_EQ (S32, getGCDType (NXV2S32, S32));
221
+ EXPECT_EQ (S32, getGCDType (NXV2S32, S64));
222
+
223
+ EXPECT_EQ (S1, getGCDType (S1, NXV1S1));
224
+ EXPECT_EQ (S1, getGCDType (S32, NXV1S1));
225
+ EXPECT_EQ (S1, getGCDType (S1, NXV1S32));
226
+ EXPECT_EQ (S32, getGCDType (S32, NXV1S32));
227
+ EXPECT_EQ (S32, getGCDType (S64, NXV1S32));
228
+ EXPECT_EQ (S1, getGCDType (S1, NXV2S32));
229
+ EXPECT_EQ (S32, getGCDType (S32, NXV2S32));
230
+ EXPECT_EQ (S32, getGCDType (S64, NXV2S32));
155
231
}
156
232
157
233
TEST (GISelUtilsTest, getLCMType) {
0 commit comments