@@ -11,8 +11,6 @@ define void @loadf64() {
1111 @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f64_1_0_0t (
1212 i32 0 , i32 1 , i32 1 , i32 0 , i1 false )
1313
14- ret void
15-
1614 ; check we load an <2 x i32> instead of a double
1715 ; CHECK-NOT: call {double, i1} @llvm.dx.resource.load.typedbuffer
1816 ; CHECK: [[L0:%.*]] = call { <2 x i32>, i1 }
@@ -23,14 +21,10 @@ define void @loadf64() {
2321
2422 ; check we extract the two i32 and construct a double
2523 ; CHECK: [[D0:%.*]] = extractvalue { <2 x i32>, i1 } [[L0]], 0
26- ; CHECK: [[Lo:%.*]] = extractelement <2 x i32> [[D0]], i64 0
27- ; CHECK: [[Hi:%.*]] = extractelement <2 x i32> [[D0]], i64 1
24+ ; CHECK: [[Lo:%.*]] = extractelement <2 x i32> [[D0]], i32 0
25+ ; CHECK: [[Hi:%.*]] = extractelement <2 x i32> [[D0]], i32 1
2826 ; CHECK: [[DBL:%.*]] = call double @llvm.dx.asdouble.i32(i32 [[Lo]], i32 [[Hi]])
29- ; construct a new {double, i1}
30- ; CHECK: [[CB:%.*]] = extractvalue { <2 x i32>, i1 } [[L0]], 1
31- ; CHECK: [[S1:%.*]] = insertvalue { double, i1 } poison, double [[DBL]], 0
32- ; CHECK: [[S2:%.*]] = insertvalue { double, i1 } [[S1]], i1 [[CB]], 1
33- ; CHECK: extractvalue { double, i1 } [[S2]], 0
27+ ; CHECK-NOT: extractvalue { double, i1 }
3428 %data0 = extractvalue {double , i1 } %load0 , 0
3529 ret void
3630}
@@ -53,19 +47,15 @@ define void @loadv2f64() {
5347
5448 ; check we extract the 4 i32 and construct a <2 x double>
5549 ; CHECK: [[D0:%.*]] = extractvalue { <4 x i32>, i1 } [[L0]], 0
56- ; CHECK: [[Lo1:%.*]] = extractelement <4 x i32> [[D0]], i64 0
57- ; CHECK: [[Hi1:%.*]] = extractelement <4 x i32> [[D0]], i64 1
58- ; CHECK: [[Lo2:%.*]] = extractelement <4 x i32> [[D0]], i64 2
59- ; CHECK: [[Hi2:%.*]] = extractelement <4 x i32> [[D0]], i64 3
50+ ; CHECK: [[Lo1:%.*]] = extractelement <4 x i32> [[D0]], i32 0
51+ ; CHECK: [[Hi1:%.*]] = extractelement <4 x i32> [[D0]], i32 1
52+ ; CHECK: [[Lo2:%.*]] = extractelement <4 x i32> [[D0]], i32 2
53+ ; CHECK: [[Hi2:%.*]] = extractelement <4 x i32> [[D0]], i32 3
6054 ; CHECK: [[Dbl1:%.*]] = call double @llvm.dx.asdouble.i32(i32 [[Lo1]], i32 [[Hi1]])
61- ; CHECK: [[Vec:%.*]] = insertelement <2 x double> poison, double [[Dbl1]], i64 0
55+ ; CHECK: [[Vec:%.*]] = insertelement <2 x double> poison, double [[Dbl1]], i32 0
6256 ; CHECK: [[Dbl2:%.*]] = call double @llvm.dx.asdouble.i32(i32 [[Lo2]], i32 [[Hi2]])
63- ; CHECK: [[Vec2:%.*]] = insertelement <2 x double> [[Vec]], double [[Dbl2]], i64 1
64- ; construct a new {<2 x double>, i1}
65- ; CHECK: [[CB:%.*]] = extractvalue { <4 x i32>, i1 } [[L0]], 1
66- ; CHECK: [[S1:%.*]] = insertvalue { <2 x double>, i1 } poison, <2 x double> [[Vec2]], 0
67- ; CHECK: [[S2:%.*]] = insertvalue { <2 x double>, i1 } [[S1]], i1 [[CB]], 1
68- ; CHECK: extractvalue { <2 x double>, i1 } [[S2]], 0
57+ ; CHECK: [[Vec2:%.*]] = insertelement <2 x double> [[Vec]], double [[Dbl2]], i32 1
58+ ; CHECK-NOT: extractvalue { <2 x double>, i1 }
6959 %data0 = extractvalue { <2 x double >, i1 } %load0 , 0
7060 ret void
7161}
@@ -80,8 +70,6 @@ define void @loadf64WithCheckBit() {
8070 @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f64_1_0_0t (
8171 i32 0 , i32 1 , i32 1 , i32 0 , i1 false )
8272
83- ret void
84-
8573 ; check we load an <2 x i32> instead of a double
8674 ; CHECK-NOT: call {double, i1} @llvm.dx.resource.load.typedbuffer
8775 ; CHECK: [[L0:%.*]] = call { <2 x i32>, i1 }
@@ -92,16 +80,12 @@ define void @loadf64WithCheckBit() {
9280
9381 ; check we extract the two i32 and construct a double
9482 ; CHECK: [[D0:%.*]] = extractvalue { <2 x i32>, i1 } [[L0]], 0
95- ; CHECK: [[Lo:%.*]] = extractelement <2 x i32> [[D0]], i64 0
96- ; CHECK: [[Hi:%.*]] = extractelement <2 x i32> [[D0]], i64 1
83+ ; CHECK: [[Lo:%.*]] = extractelement <2 x i32> [[D0]], i32 0
84+ ; CHECK: [[Hi:%.*]] = extractelement <2 x i32> [[D0]], i32 1
9785 ; CHECK: [[DBL:%.*]] = call double @llvm.dx.asdouble.i32(i32 [[Lo]], i32 [[Hi]])
98- ; construct a new {double, i1}
99- ; CHECK: [[CB:%.*]] = extractvalue { <2 x i32>, i1 } [[L0]], 1
100- ; CHECK: [[S1:%.*]] = insertvalue { double, i1 } poison, double [[DBL]], 0
101- ; CHECK: [[S2:%.*]] = insertvalue { double, i1 } [[S1]], i1 [[CB]], 1
102- ; CHECK: extractvalue { double, i1 } [[S2]], 0
10386 %data0 = extractvalue {double , i1 } %load0 , 0
104- ; CHECK: extractvalue { double, i1 } [[S2]], 1
87+ ; CHECK: extractvalue { <2 x i32>, i1 } [[L0]], 1
88+ ; CHECK-NOT: extractvalue { double, i1 }
10589 %cb = extractvalue {double , i1 } %load0 , 1
10690 ret void
10791}
0 commit comments