@@ -15,14 +15,14 @@ using i512x3x3 = _BitInt(512) __attribute__((matrix_type(3, 3)));
1515// CHECK-NEXT: [[A:%.*]] = alloca <3 x i8>, align 4
1616// CHECK-NEXT: [[A_ADDR:%.*]] = alloca <3 x i8>, align 4
1717// CHECK-NEXT: store i32 [[A_COERCE]], ptr [[A]], align 4
18- // CHECK-NEXT: [[LOADVEC4 :%.*]] = load <4 x i8>, ptr [[A]], align 4
19- // CHECK-NEXT: [[A1:%.*]] = shufflevector <4 x i8> [[LOADVEC4 ]], <4 x i8> poison, <3 x i32> <i32 0, i32 1, i32 2>
18+ // CHECK-NEXT: [[LOADVECN :%.*]] = load <4 x i8>, ptr [[A]], align 4
19+ // CHECK-NEXT: [[A1:%.*]] = shufflevector <4 x i8> [[LOADVECN ]], <4 x i8> poison, <3 x i32> <i32 0, i32 1, i32 2>
2020// CHECK-NEXT: [[EXTRACTVEC:%.*]] = shufflevector <3 x i8> [[A1]], <3 x i8> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>
2121// CHECK-NEXT: store <4 x i8> [[EXTRACTVEC]], ptr [[A_ADDR]], align 4
22- // CHECK-NEXT: [[LOADVEC42 :%.*]] = load <4 x i8>, ptr [[A_ADDR]], align 4
23- // CHECK-NEXT: [[EXTRACTVEC3:%.*]] = shufflevector <4 x i8> [[LOADVEC42 ]], <4 x i8> poison, <3 x i32> <i32 0, i32 1, i32 2>
24- // CHECK-NEXT: [[LOADVEC44 :%.*]] = load <4 x i8>, ptr [[A_ADDR]], align 4
25- // CHECK-NEXT: [[EXTRACTVEC5:%.*]] = shufflevector <4 x i8> [[LOADVEC44 ]], <4 x i8> poison, <3 x i32> <i32 0, i32 1, i32 2>
22+ // CHECK-NEXT: [[LOADVECN2 :%.*]] = load <4 x i8>, ptr [[A_ADDR]], align 4
23+ // CHECK-NEXT: [[EXTRACTVEC3:%.*]] = shufflevector <4 x i8> [[LOADVECN2 ]], <4 x i8> poison, <3 x i32> <i32 0, i32 1, i32 2>
24+ // CHECK-NEXT: [[LOADVECN4 :%.*]] = load <4 x i8>, ptr [[A_ADDR]], align 4
25+ // CHECK-NEXT: [[EXTRACTVEC5:%.*]] = shufflevector <4 x i8> [[LOADVECN4 ]], <4 x i8> poison, <3 x i32> <i32 0, i32 1, i32 2>
2626// CHECK-NEXT: [[ADD:%.*]] = add <3 x i8> [[EXTRACTVEC3]], [[EXTRACTVEC5]]
2727// CHECK-NEXT: store <3 x i8> [[ADD]], ptr [[RETVAL]], align 4
2828// CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[RETVAL]], align 4
@@ -38,10 +38,10 @@ i8x3 v1(i8x3 a) {
3838// CHECK-NEXT: [[A_ADDR:%.*]] = alloca <3 x i32>, align 16
3939// CHECK-NEXT: [[EXTRACTVEC:%.*]] = shufflevector <3 x i32> [[A]], <3 x i32> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>
4040// CHECK-NEXT: store <4 x i32> [[EXTRACTVEC]], ptr [[A_ADDR]], align 16
41- // CHECK-NEXT: [[LOADVEC4 :%.*]] = load <4 x i32>, ptr [[A_ADDR]], align 16
42- // CHECK-NEXT: [[EXTRACTVEC1:%.*]] = shufflevector <4 x i32> [[LOADVEC4 ]], <4 x i32> poison, <3 x i32> <i32 0, i32 1, i32 2>
43- // CHECK-NEXT: [[LOADVEC42 :%.*]] = load <4 x i32>, ptr [[A_ADDR]], align 16
44- // CHECK-NEXT: [[EXTRACTVEC3:%.*]] = shufflevector <4 x i32> [[LOADVEC42 ]], <4 x i32> poison, <3 x i32> <i32 0, i32 1, i32 2>
41+ // CHECK-NEXT: [[LOADVECN :%.*]] = load <4 x i32>, ptr [[A_ADDR]], align 16
42+ // CHECK-NEXT: [[EXTRACTVEC1:%.*]] = shufflevector <4 x i32> [[LOADVECN ]], <4 x i32> poison, <3 x i32> <i32 0, i32 1, i32 2>
43+ // CHECK-NEXT: [[LOADVECN2 :%.*]] = load <4 x i32>, ptr [[A_ADDR]], align 16
44+ // CHECK-NEXT: [[EXTRACTVEC3:%.*]] = shufflevector <4 x i32> [[LOADVECN2 ]], <4 x i32> poison, <3 x i32> <i32 0, i32 1, i32 2>
4545// CHECK-NEXT: [[ADD:%.*]] = add <3 x i32> [[EXTRACTVEC1]], [[EXTRACTVEC3]]
4646// CHECK-NEXT: ret <3 x i32> [[ADD]]
4747//
@@ -53,14 +53,14 @@ i32x3 v2(i32x3 a) {
5353// CHECK-SAME: ptr noundef byval(<3 x i512>) align 256 [[TMP0:%.*]]) #[[ATTR2:[0-9]+]] {
5454// CHECK-NEXT: [[ENTRY:.*:]]
5555// CHECK-NEXT: [[A_ADDR:%.*]] = alloca <3 x i512>, align 256
56- // CHECK-NEXT: [[LOADVEC4 :%.*]] = load <4 x i512>, ptr [[TMP0]], align 256
57- // CHECK-NEXT: [[A:%.*]] = shufflevector <4 x i512> [[LOADVEC4 ]], <4 x i512> poison, <3 x i32> <i32 0, i32 1, i32 2>
56+ // CHECK-NEXT: [[LOADVECN :%.*]] = load <4 x i512>, ptr [[TMP0]], align 256
57+ // CHECK-NEXT: [[A:%.*]] = shufflevector <4 x i512> [[LOADVECN ]], <4 x i512> poison, <3 x i32> <i32 0, i32 1, i32 2>
5858// CHECK-NEXT: [[EXTRACTVEC:%.*]] = shufflevector <3 x i512> [[A]], <3 x i512> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>
5959// CHECK-NEXT: store <4 x i512> [[EXTRACTVEC]], ptr [[A_ADDR]], align 256
60- // CHECK-NEXT: [[LOADVEC41 :%.*]] = load <4 x i512>, ptr [[A_ADDR]], align 256
61- // CHECK-NEXT: [[EXTRACTVEC2:%.*]] = shufflevector <4 x i512> [[LOADVEC41 ]], <4 x i512> poison, <3 x i32> <i32 0, i32 1, i32 2>
62- // CHECK-NEXT: [[LOADVEC43 :%.*]] = load <4 x i512>, ptr [[A_ADDR]], align 256
63- // CHECK-NEXT: [[EXTRACTVEC4:%.*]] = shufflevector <4 x i512> [[LOADVEC43 ]], <4 x i512> poison, <3 x i32> <i32 0, i32 1, i32 2>
60+ // CHECK-NEXT: [[LOADVECN1 :%.*]] = load <4 x i512>, ptr [[A_ADDR]], align 256
61+ // CHECK-NEXT: [[EXTRACTVEC2:%.*]] = shufflevector <4 x i512> [[LOADVECN1 ]], <4 x i512> poison, <3 x i32> <i32 0, i32 1, i32 2>
62+ // CHECK-NEXT: [[LOADVECN3 :%.*]] = load <4 x i512>, ptr [[A_ADDR]], align 256
63+ // CHECK-NEXT: [[EXTRACTVEC4:%.*]] = shufflevector <4 x i512> [[LOADVECN3 ]], <4 x i512> poison, <3 x i32> <i32 0, i32 1, i32 2>
6464// CHECK-NEXT: [[ADD:%.*]] = add <3 x i512> [[EXTRACTVEC2]], [[EXTRACTVEC4]]
6565// CHECK-NEXT: ret <3 x i512> [[ADD]]
6666//
0 commit comments