@@ -11,8 +11,6 @@ define void @loadf64() {
11
11
@llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f64_1_0_0t (
12
12
i32 0 , i32 1 , i32 1 , i32 0 , i1 false )
13
13
14
- ret void
15
-
16
14
; check we load an <2 x i32> instead of a double
17
15
; CHECK-NOT: call {double, i1} @llvm.dx.resource.load.typedbuffer
18
16
; CHECK: [[L0:%.*]] = call { <2 x i32>, i1 }
@@ -23,14 +21,10 @@ define void @loadf64() {
23
21
24
22
; check we extract the two i32 and construct a double
25
23
; 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
28
26
; 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 }
34
28
%data0 = extractvalue {double , i1 } %load0 , 0
35
29
ret void
36
30
}
@@ -53,19 +47,15 @@ define void @loadv2f64() {
53
47
54
48
; check we extract the 4 i32 and construct a <2 x double>
55
49
; 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
60
54
; 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
62
56
; 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 }
69
59
%data0 = extractvalue { <2 x double >, i1 } %load0 , 0
70
60
ret void
71
61
}
@@ -80,8 +70,6 @@ define void @loadf64WithCheckBit() {
80
70
@llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f64_1_0_0t (
81
71
i32 0 , i32 1 , i32 1 , i32 0 , i1 false )
82
72
83
- ret void
84
-
85
73
; check we load an <2 x i32> instead of a double
86
74
; CHECK-NOT: call {double, i1} @llvm.dx.resource.load.typedbuffer
87
75
; CHECK: [[L0:%.*]] = call { <2 x i32>, i1 }
@@ -92,16 +80,12 @@ define void @loadf64WithCheckBit() {
92
80
93
81
; check we extract the two i32 and construct a double
94
82
; 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
97
85
; 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
103
86
%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 }
105
89
%cb = extractvalue {double , i1 } %load0 , 1
106
90
ret void
107
91
}
0 commit comments