|
10 | 10 |
|
11 | 11 | target datalayout = "e-p:64:64-p6:32:32-i64:64-n8:16:32:64"
|
12 | 12 |
|
13 |
| -declare <32 x i32> @llvm.vc.internal.lsc.load.ugm.v32i32.v1i1.i64(<1 x i1>, i8, i8, i8, i8, i8, i64, i64, i16, i32, <32 x i32>) #4 |
| 13 | +declare <32 x i32> @llvm.vc.internal.lsc.load.ugm.v32i32.v1i1.i64(<1 x i1>, i8, i8, i8, i8, i8, i64, i64, i16, i32, <32 x i32>) |
| 14 | +declare <32 x double> @llvm.vc.internal.lsc.load.ugm.v32f64.v32i1.v32i64(<32 x i1>, i8, i8, i8, i8, i8, i64, <32 x i64>, i16, i32, <32 x double>) |
14 | 15 |
|
15 | 16 | ; CHECK-LABEL: @test_fold_cast
|
16 | 17 | define <32 x i32> @test_fold_cast(i8 addrspace(1)* align 8 %a) {
|
@@ -45,6 +46,26 @@ entry:
|
45 | 46 | ret <32 x i32> %res
|
46 | 47 | }
|
47 | 48 |
|
| 49 | +; CHECK-LABEL: @test_fold_cast_vector |
| 50 | +define <32 x double> @test_fold_cast_vector(<32 x i1> %mask, <32 x i8 addrspace(1)*> %a) { |
| 51 | +entry: |
| 52 | + %bitcast = bitcast <32 x i8 addrspace(1)*> %a to <32 x double addrspace(1)*> |
| 53 | + ; CHECK: %pti = ptrtoint <32 x i8 addrspace(1)*> %a to <32 x i64> |
| 54 | + %pti = ptrtoint <32 x double addrspace(1)*> %bitcast to <32 x i64> |
| 55 | + %res = call <32 x double> @llvm.vc.internal.lsc.load.ugm.v32f64.v32i1.v32i64(<32 x i1> %mask, i8 3, i8 4, i8 1, i8 0, i8 0, i64 0, <32 x i64> %pti, i16 1, i32 0, <32 x double> undef) |
| 56 | + ret <32 x double> %res |
| 57 | +} |
| 58 | + |
| 59 | +; CHECK-LABEL: @test_fold_itp_vector |
| 60 | +define <32 x double> @test_fold_itp_vector(<32 x i1> %mask, <32 x i64> %a) { |
| 61 | +entry: |
| 62 | + %itp = inttoptr <32 x i64> %a to <32 x double addrspace(1)*> |
| 63 | + %pti = ptrtoint <32 x double addrspace(1)*> %itp to <32 x i64> |
| 64 | + ; CHECK: %res = call <32 x double> @llvm.vc.internal.lsc.load.ugm.v32f64.v32i1.v32i64(<32 x i1> %mask, i8 3, i8 4, i8 1, i8 0, i8 0, i64 0, <32 x i64> %a, i16 1, i32 0, <32 x double> undef) |
| 65 | + %res = call <32 x double> @llvm.vc.internal.lsc.load.ugm.v32f64.v32i1.v32i64(<32 x i1> %mask, i8 3, i8 4, i8 1, i8 0, i8 0, i64 0, <32 x i64> %pti, i16 1, i32 0, <32 x double> undef) |
| 66 | + ret <32 x double> %res |
| 67 | +} |
| 68 | + |
48 | 69 | ; CHECK-LABEL: @test_cross_block
|
49 | 70 | define void @test_cross_block(i64 %a, i32 %b) {
|
50 | 71 | entry:
|
|
0 commit comments