9
9
;CHECK: v_add_f32_e32
10
10
define amdgpu_ps float @test1 (i32 inreg %idx0 , i32 inreg %idx1 ) {
11
11
main_body:
12
- %src0 = call float @llvm.amdgcn.buffer.load.f32 (<4 x i32 > undef , i32 %idx0 , i32 0 , i1 0 , i1 0 )
13
- %src1 = call float @llvm.amdgcn.buffer.load.f32 (<4 x i32 > undef , i32 %idx1 , i32 0 , i1 0 , i1 0 )
12
+ %src0 = call float @llvm.amdgcn.struct. buffer.load.f32 (<4 x i32 > undef , i32 %idx0 , i32 0 , i32 0 , i32 0 )
13
+ %src1 = call float @llvm.amdgcn.struct. buffer.load.f32 (<4 x i32 > undef , i32 %idx1 , i32 0 , i32 0 , i32 0 )
14
14
%out = fadd float %src0 , %src1
15
15
%out.0 = call float @llvm.amdgcn.softwqm.f32 (float %out )
16
16
ret float %out.0
@@ -25,8 +25,8 @@ main_body:
25
25
;CHECK: v_add_f32_e32
26
26
define amdgpu_ps float @test2 (i32 inreg %idx0 , i32 inreg %idx1 ) {
27
27
main_body:
28
- %src0 = call float @llvm.amdgcn.buffer.load.f32 (<4 x i32 > undef , i32 %idx0 , i32 0 , i1 0 , i1 0 )
29
- %src1 = call float @llvm.amdgcn.buffer.load.f32 (<4 x i32 > undef , i32 %idx1 , i32 0 , i1 0 , i1 0 )
28
+ %src0 = call float @llvm.amdgcn.struct. buffer.load.f32 (<4 x i32 > undef , i32 %idx0 , i32 0 , i32 0 , i32 0 )
29
+ %src1 = call float @llvm.amdgcn.struct. buffer.load.f32 (<4 x i32 > undef , i32 %idx1 , i32 0 , i32 0 , i32 0 )
30
30
%out = fadd float %src0 , %src1
31
31
%out.0 = bitcast float %out to i32
32
32
%out.1 = call i32 @llvm.amdgcn.softwqm.i32 (i32 %out.0 )
@@ -45,10 +45,10 @@ main_body:
45
45
;CHECK: v_add_f32_e32
46
46
define amdgpu_ps float @test_softwqm1 (i32 inreg %idx0 , i32 inreg %idx1 ) {
47
47
main_body:
48
- %src0 = call float @llvm.amdgcn.buffer.load.f32 (<4 x i32 > undef , i32 %idx0 , i32 0 , i1 0 , i1 0 )
49
- %src1 = call float @llvm.amdgcn.buffer.load.f32 (<4 x i32 > undef , i32 %idx1 , i32 0 , i1 0 , i1 0 )
48
+ %src0 = call float @llvm.amdgcn.struct. buffer.load.f32 (<4 x i32 > undef , i32 %idx0 , i32 0 , i32 0 , i32 0 )
49
+ %src1 = call float @llvm.amdgcn.struct. buffer.load.f32 (<4 x i32 > undef , i32 %idx1 , i32 0 , i32 0 , i32 0 )
50
50
%temp = fadd float %src0 , %src1
51
- call void @llvm.amdgcn.buffer.store.f32 (float %temp , <4 x i32 > undef , i32 %idx0 , i32 0 , i1 0 , i1 0 )
51
+ call void @llvm.amdgcn.struct. buffer.store.f32 (float %temp , <4 x i32 > undef , i32 %idx0 , i32 0 , i32 0 , i32 0 )
52
52
%out = fadd float %temp , %temp
53
53
%out.0 = call float @llvm.amdgcn.softwqm.f32 (float %out )
54
54
ret float %out.0
@@ -67,11 +67,11 @@ main_body:
67
67
;CHECK: v_add_f32_e32
68
68
define amdgpu_ps float @test_softwqm2 (i32 inreg %idx0 , i32 inreg %idx1 ) {
69
69
main_body:
70
- %src0 = call float @llvm.amdgcn.buffer.load.f32 (<4 x i32 > undef , i32 %idx0 , i32 0 , i1 0 , i1 0 )
71
- %src1 = call float @llvm.amdgcn.buffer.load.f32 (<4 x i32 > undef , i32 %idx1 , i32 0 , i1 0 , i1 0 )
70
+ %src0 = call float @llvm.amdgcn.struct. buffer.load.f32 (<4 x i32 > undef , i32 %idx0 , i32 0 , i32 0 , i32 0 )
71
+ %src1 = call float @llvm.amdgcn.struct. buffer.load.f32 (<4 x i32 > undef , i32 %idx1 , i32 0 , i32 0 , i32 0 )
72
72
%temp = fadd float %src0 , %src1
73
73
%temp.0 = call float @llvm.amdgcn.wqm.f32 (float %temp )
74
- call void @llvm.amdgcn.buffer.store.f32 (float %temp.0 , <4 x i32 > undef , i32 %idx0 , i32 0 , i1 0 , i1 0 )
74
+ call void @llvm.amdgcn.struct. buffer.store.f32 (float %temp.0 , <4 x i32 > undef , i32 %idx0 , i32 0 , i32 0 , i32 0 )
75
75
%out = fadd float %temp , %temp
76
76
%out.0 = call float @llvm.amdgcn.softwqm.f32 (float %out )
77
77
ret float %out.0
@@ -89,9 +89,9 @@ main_body:
89
89
;CHECK-NOT: s_wqm_b64
90
90
define amdgpu_ps float @test_wwm1 (i32 inreg %idx0 , i32 inreg %idx1 ) {
91
91
main_body:
92
- %src0 = call float @llvm.amdgcn.buffer.load.f32 (<4 x i32 > undef , i32 %idx0 , i32 0 , i1 0 , i1 0 )
93
- call void @llvm.amdgcn.buffer.store.f32 (float %src0 , <4 x i32 > undef , i32 %idx0 , i32 0 , i1 0 , i1 0 )
94
- %src1 = call float @llvm.amdgcn.buffer.load.f32 (<4 x i32 > undef , i32 %idx1 , i32 0 , i1 0 , i1 0 )
92
+ %src0 = call float @llvm.amdgcn.struct. buffer.load.f32 (<4 x i32 > undef , i32 %idx0 , i32 0 , i32 0 , i32 0 )
93
+ call void @llvm.amdgcn.struct. buffer.store.f32 (float %src0 , <4 x i32 > undef , i32 %idx0 , i32 0 , i32 0 , i32 0 )
94
+ %src1 = call float @llvm.amdgcn.struct. buffer.load.f32 (<4 x i32 > undef , i32 %idx1 , i32 0 , i32 0 , i32 0 )
95
95
%temp = fadd float %src0 , %src1
96
96
%temp.0 = call float @llvm.amdgcn.wwm.f32 (float %temp )
97
97
%out = fadd float %temp.0 , %temp.0
@@ -115,14 +115,14 @@ main_body:
115
115
br i1 %cmp , label %IF , label %ELSE
116
116
117
117
IF:
118
- %src0 = call float @llvm.amdgcn.buffer.load.f32 (<4 x i32 > undef , i32 %idx0 , i32 0 , i1 0 , i1 0 )
119
- %src1 = call float @llvm.amdgcn.buffer.load.f32 (<4 x i32 > undef , i32 %idx1 , i32 0 , i1 0 , i1 0 )
118
+ %src0 = call float @llvm.amdgcn.struct. buffer.load.f32 (<4 x i32 > undef , i32 %idx0 , i32 0 , i32 0 , i32 0 )
119
+ %src1 = call float @llvm.amdgcn.struct. buffer.load.f32 (<4 x i32 > undef , i32 %idx1 , i32 0 , i32 0 , i32 0 )
120
120
%out = fadd float %src0 , %src1
121
121
%data.if = call float @llvm.amdgcn.softwqm.f32 (float %out )
122
122
br label %END
123
123
124
124
ELSE:
125
- call void @llvm.amdgcn.buffer.store.f32 (float %data , <4 x i32 > undef , i32 %c , i32 0 , i1 0 , i1 0 )
125
+ call void @llvm.amdgcn.struct. buffer.store.f32 (float %data , <4 x i32 > undef , i32 %c , i32 0 , i32 0 , i32 0 )
126
126
br label %END
127
127
128
128
END:
@@ -157,24 +157,24 @@ main_body:
157
157
br i1 %cmp , label %IF , label %ELSE
158
158
159
159
IF:
160
- %src0 = call float @llvm.amdgcn.buffer.load.f32 (<4 x i32 > undef , i32 %idx0 , i32 0 , i1 0 , i1 0 )
161
- %src1 = call float @llvm.amdgcn.buffer.load.f32 (<4 x i32 > undef , i32 %idx1 , i32 0 , i1 0 , i1 0 )
160
+ %src0 = call float @llvm.amdgcn.struct. buffer.load.f32 (<4 x i32 > undef , i32 %idx0 , i32 0 , i32 0 , i32 0 )
161
+ %src1 = call float @llvm.amdgcn.struct. buffer.load.f32 (<4 x i32 > undef , i32 %idx1 , i32 0 , i32 0 , i32 0 )
162
162
%out = fadd float %src0 , %src1
163
163
%data.if = call float @llvm.amdgcn.softwqm.f32 (float %out )
164
164
br label %END
165
165
166
166
ELSE:
167
- call void @llvm.amdgcn.buffer.store.f32 (float %data.sample , <4 x i32 > undef , i32 %c , i32 0 , i1 0 , i1 0 )
167
+ call void @llvm.amdgcn.struct. buffer.store.f32 (float %data.sample , <4 x i32 > undef , i32 %c , i32 0 , i32 0 , i32 0 )
168
168
br label %END
169
169
170
170
END:
171
171
%r = phi float [ %data.if , %IF ], [ %data , %ELSE ]
172
172
ret float %r
173
173
}
174
174
175
- declare void @llvm.amdgcn.buffer.store.f32 (float , <4 x i32 >, i32 , i32 , i1 , i1 ) #2
176
- declare void @llvm.amdgcn.buffer.store.v4f32 (<4 x float >, <4 x i32 >, i32 , i32 , i1 , i1 ) #2
177
- declare float @llvm.amdgcn.buffer.load.f32 (<4 x i32 >, i32 , i32 , i1 , i1 ) #3
175
+ declare void @llvm.amdgcn.struct. buffer.store.f32 (float , <4 x i32 >, i32 , i32 , i32 , i32 immarg ) #2
176
+ declare void @llvm.amdgcn.struct. buffer.store.v4f32 (<4 x float >, <4 x i32 >, i32 , i32 , i32 , i32 immarg ) #2
177
+ declare float @llvm.amdgcn.struct. buffer.load.f32 (<4 x i32 >, i32 , i32 , i32 , i32 immarg ) #3
178
178
declare <4 x float > @llvm.amdgcn.image.sample.1d.v4f32.f32 (i32 , float , <8 x i32 >, <4 x i32 >, i1 , i32 , i32 ) #3
179
179
declare <4 x float > @llvm.amdgcn.image.sample.2d.v4f32.f32 (i32 , float , float , <8 x i32 >, <4 x i32 >, i1 , i32 , i32 ) #3
180
180
declare void @llvm.amdgcn.kill (i1 ) #1
0 commit comments