Fix SIMD codegen tests on LLVM 20 · rust-lang/rust@f895e31 (original) (raw)
`@@ -27,7 +27,7 @@ extern "rust-intrinsic" {
`
27
27
`// CHECK-LABEL: @reduce_any_32x2
`
28
28
`#[no_mangle]
`
29
29
`pub unsafe fn reduce_any_32x2(x: mask32x2) -> bool {
`
30
``
`-
// CHECK: [[A:%[0-9]+]] = lshr <2 x i32> %{{x|1}}, <i32 31, i32 31>
`
``
30
`+
// CHECK: [[A:%[0-9]+]] = lshr <2 x i32> %{{x|1}}, {{<i32 31, i32 31>|splat (i32 31)}}
`
31
31
`// CHECK: [[B:%[0-9]+]] = trunc <2 x i32> [[A]] to <2 x i1>
`
32
32
`// CHECK: [[C:%[0-9]+]] = call i1 @llvm.vector.reduce.or.v2i1(<2 x i1> [[B]])
`
33
33
`// CHECK: %{{[0-9]+}} = zext i1 [[C]] to i8
`
`@@ -37,7 +37,7 @@ pub unsafe fn reduce_any_32x2(x: mask32x2) -> bool {
`
37
37
`// CHECK-LABEL: @reduce_all_32x2
`
38
38
`#[no_mangle]
`
39
39
`pub unsafe fn reduce_all_32x2(x: mask32x2) -> bool {
`
40
``
`-
// CHECK: [[A:%[0-9]+]] = lshr <2 x i32> %{{x|1}}, <i32 31, i32 31>
`
``
40
`+
// CHECK: [[A:%[0-9]+]] = lshr <2 x i32> %{{x|1}}, {{<i32 31, i32 31>|splat (i32 31)}}
`
41
41
`// CHECK: [[B:%[0-9]+]] = trunc <2 x i32> [[A]] to <2 x i1>
`
42
42
`// CHECK: [[C:%[0-9]+]] = call i1 @llvm.vector.reduce.and.v2i1(<2 x i1> [[B]])
`
43
43
`// CHECK: %{{[0-9]+}} = zext i1 [[C]] to i8
`
`@@ -47,7 +47,7 @@ pub unsafe fn reduce_all_32x2(x: mask32x2) -> bool {
`
47
47
`// CHECK-LABEL: @reduce_any_8x16
`
48
48
`#[no_mangle]
`
49
49
`pub unsafe fn reduce_any_8x16(x: mask8x16) -> bool {
`
50
``
`-
// CHECK: [[A:%[0-9]+]] = lshr <16 x i8> %{{x|1}}, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
`
``
50
`+
// CHECK: [[A:%[0-9]+]] = lshr <16 x i8> %{{x|1}}, {{<i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>|splat (i8 7)}}
`
51
51
`// CHECK: [[B:%[0-9]+]] = trunc <16 x i8> [[A]] to <16 x i1>
`
52
52
`// CHECK: [[C:%[0-9]+]] = call i1 @llvm.vector.reduce.or.v16i1(<16 x i1> [[B]])
`
53
53
`// CHECK: %{{[0-9]+}} = zext i1 [[C]] to i8
`
`@@ -57,7 +57,7 @@ pub unsafe fn reduce_any_8x16(x: mask8x16) -> bool {
`
57
57
`// CHECK-LABEL: @reduce_all_8x16
`
58
58
`#[no_mangle]
`
59
59
`pub unsafe fn reduce_all_8x16(x: mask8x16) -> bool {
`
60
``
`-
// CHECK: [[A:%[0-9]+]] = lshr <16 x i8> %{{x|1}}, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
`
``
60
`+
// CHECK: [[A:%[0-9]+]] = lshr <16 x i8> %{{x|1}}, {{<i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>|splat (i8 7)}}
`
61
61
`// CHECK: [[B:%[0-9]+]] = trunc <16 x i8> [[A]] to <16 x i1>
`
62
62
`// CHECK: [[C:%[0-9]+]] = call i1 @llvm.vector.reduce.and.v16i1(<16 x i1> [[B]])
`
63
63
`// CHECK: %{{[0-9]+}} = zext i1 [[C]] to i8
`