@@ -46,6 +46,37 @@ 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
+ static const LLT NXV12S1 = LLT::scalable_vector(12 , S1);
54
+ static const LLT NXV32S1 = LLT::scalable_vector(32 , S1);
55
+ static const LLT NXV64S1 = LLT::scalable_vector(64 , S1);
56
+ static const LLT NXV128S1 = LLT::scalable_vector(128 , S1);
57
+ static const LLT NXV384S1 = LLT::scalable_vector(384 , S1);
58
+
59
+ static const LLT NXV1S32 = LLT::scalable_vector(1 , S32);
60
+ static const LLT NXV2S32 = LLT::scalable_vector(2 , S32);
61
+ static const LLT NXV3S32 = LLT::scalable_vector(3 , S32);
62
+ static const LLT NXV4S32 = LLT::scalable_vector(4 , S32);
63
+ static const LLT NXV8S32 = LLT::scalable_vector(8 , S32);
64
+ static const LLT NXV12S32 = LLT::scalable_vector(12 , S32);
65
+ static const LLT NXV24S32 = LLT::scalable_vector(24 , S32);
66
+
67
+ static const LLT NXV1S64 = LLT::scalable_vector(1 , S64);
68
+ static const LLT NXV2S64 = LLT::scalable_vector(2 , S64);
69
+ static const LLT NXV3S64 = LLT::scalable_vector(3 , S64);
70
+ static const LLT NXV4S64 = LLT::scalable_vector(4 , S64);
71
+ static const LLT NXV6S64 = LLT::scalable_vector(6 , S64);
72
+ static const LLT NXV12S64 = LLT::scalable_vector(12 , S64);
73
+
74
+ static const LLT NXV1P0 = LLT::scalable_vector(1 , P0);
75
+ static const LLT NXV2P0 = LLT::scalable_vector(2 , P0);
76
+ static const LLT NXV3P0 = LLT::scalable_vector(3 , P0);
77
+ static const LLT NXV4P0 = LLT::scalable_vector(4 , P0);
78
+ static const LLT NXV12P0 = LLT::scalable_vector(12 , P0);
79
+
49
80
TEST (GISelUtilsTest, getGCDType) {
50
81
EXPECT_EQ (S1, getGCDType (S1, S1));
51
82
EXPECT_EQ (S32, getGCDType (S32, S32));
@@ -244,6 +275,62 @@ TEST(GISelUtilsTest, getLCMType) {
244
275
245
276
EXPECT_EQ (V2S64, getLCMType (V2S64, P1));
246
277
EXPECT_EQ (V4P1, getLCMType (P1, V2S64));
278
+
279
+ // Scalable, Scalable
280
+ EXPECT_EQ (NXV32S1, getLCMType (NXV1S1, NXV1S32));
281
+ EXPECT_EQ (NXV1S64, getLCMType (NXV1S64, NXV1S32));
282
+ EXPECT_EQ (NXV2S32, getLCMType (NXV1S32, NXV1S64));
283
+ EXPECT_EQ (NXV1P0, getLCMType (NXV1P0, NXV1S64));
284
+ EXPECT_EQ (NXV1S64, getLCMType (NXV1S64, NXV1P0));
285
+
286
+ EXPECT_EQ (NXV128S1, getLCMType (NXV4S1, NXV4S32));
287
+ EXPECT_EQ (NXV4S64, getLCMType (NXV4S64, NXV4S32));
288
+ EXPECT_EQ (NXV8S32, getLCMType (NXV4S32, NXV4S64));
289
+ EXPECT_EQ (NXV4P0, getLCMType (NXV4P0, NXV4S64));
290
+ EXPECT_EQ (NXV4S64, getLCMType (NXV4S64, NXV4P0));
291
+
292
+ EXPECT_EQ (NXV64S1, getLCMType (NXV4S1, NXV2S32));
293
+ EXPECT_EQ (NXV4S64, getLCMType (NXV4S64, NXV2S32));
294
+ EXPECT_EQ (NXV4S32, getLCMType (NXV4S32, NXV2S64));
295
+ EXPECT_EQ (NXV4P0, getLCMType (NXV4P0, NXV2S64));
296
+ EXPECT_EQ (NXV4S64, getLCMType (NXV4S64, NXV2P0));
297
+
298
+ EXPECT_EQ (NXV128S1, getLCMType (NXV2S1, NXV4S32));
299
+ EXPECT_EQ (NXV2S64, getLCMType (NXV2S64, NXV4S32));
300
+ EXPECT_EQ (NXV8S32, getLCMType (NXV2S32, NXV4S64));
301
+ EXPECT_EQ (NXV4P0, getLCMType (NXV2P0, NXV4S64));
302
+ EXPECT_EQ (NXV4S64, getLCMType (NXV2S64, NXV4P0));
303
+
304
+ EXPECT_EQ (NXV384S1, getLCMType (NXV3S1, NXV4S32));
305
+ EXPECT_EQ (NXV6S64, getLCMType (NXV3S64, NXV4S32));
306
+ EXPECT_EQ (NXV24S32, getLCMType (NXV3S32, NXV4S64));
307
+ EXPECT_EQ (NXV12P0, getLCMType (NXV3P0, NXV4S64));
308
+ EXPECT_EQ (NXV12S64, getLCMType (NXV3S64, NXV4P0));
309
+
310
+ EXPECT_EQ (NXV12S1, getLCMType (NXV3S1, NXV4S1));
311
+ EXPECT_EQ (NXV12S32, getLCMType (NXV3S32, NXV4S32));
312
+ EXPECT_EQ (NXV12S64, getLCMType (NXV3S64, NXV4S64));
313
+ EXPECT_EQ (NXV12P0, getLCMType (NXV3P0, NXV4P0));
314
+
315
+ // Scalable, Scalar
316
+
317
+ EXPECT_EQ (NXV1S1, getLCMType (NXV1S1, S1));
318
+ EXPECT_EQ (NXV32S1, getLCMType (NXV1S1, S32));
319
+ EXPECT_EQ (NXV1S32, getLCMType (NXV1S32, S1));
320
+ EXPECT_EQ (NXV1S32, getLCMType (NXV1S32, S32));
321
+ EXPECT_EQ (NXV2S32, getLCMType (NXV1S32, S64));
322
+ EXPECT_EQ (NXV2S32, getLCMType (NXV2S32, S1));
323
+ EXPECT_EQ (NXV2S32, getLCMType (NXV2S32, S32));
324
+ EXPECT_EQ (NXV2S32, getLCMType (NXV2S32, S64));
325
+
326
+ EXPECT_EQ (NXV1S1, getLCMType (S1, NXV1S1));
327
+ EXPECT_EQ (NXV1S32, getLCMType (S32, NXV1S1));
328
+ EXPECT_EQ (NXV32S1, getLCMType (S1, NXV1S32));
329
+ EXPECT_EQ (NXV1S32, getLCMType (S32, NXV1S32));
330
+ EXPECT_EQ (NXV1S64, getLCMType (S64, NXV1S32));
331
+ EXPECT_EQ (NXV64S1, getLCMType (S1, NXV2S32));
332
+ EXPECT_EQ (NXV2S32, getLCMType (S32, NXV2S32));
333
+ EXPECT_EQ (NXV1S64, getLCMType (S64, NXV2S32));
247
334
}
248
335
249
336
TEST_F (AArch64GISelMITest, ConstFalseTest) {
0 commit comments