xref: /llvm-project/llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-image-function-signatures.ll (revision 1100d6a995fe392b3885b8d2bd5afed2bd57e80c)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -passes=amdgpu-simplifylib %s | FileCheck %s
3
4; Make sure we can produce a valid FunctionType for the expected
5; signature of image functions.
6
7define i32 @test_get_image_width_ro_image1d_t(ptr addrspace(4) readnone %img) {
8; CHECK-LABEL: define i32 @test_get_image_width_ro_image1d_t(
9; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
10; CHECK-NEXT:  [[ENTRY:.*:]]
11; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width14ocl_image1d_ro(ptr addrspace(4) [[IMG]])
12; CHECK-NEXT:    ret i32 [[CALL]]
13;
14entry:
15  %call = tail call i32 @_Z15get_image_width14ocl_image1d_ro(ptr addrspace(4) %img)
16  ret i32 %call
17}
18
19declare i32 @_Z15get_image_width14ocl_image1d_ro(ptr addrspace(4)) #1
20
21define i32 @test_get_image_width_wo_image1d_t(ptr addrspace(4) readnone %img) {
22; CHECK-LABEL: define i32 @test_get_image_width_wo_image1d_t(
23; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
24; CHECK-NEXT:  [[ENTRY:.*:]]
25; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width14ocl_image1d_wo(ptr addrspace(4) [[IMG]])
26; CHECK-NEXT:    ret i32 [[CALL]]
27;
28entry:
29  %call = tail call i32 @_Z15get_image_width14ocl_image1d_wo(ptr addrspace(4) %img)
30  ret i32 %call
31}
32
33declare i32 @_Z15get_image_width14ocl_image1d_wo(ptr addrspace(4)) #1
34
35define i32 @test_get_image_width_rw_image1d_t(ptr addrspace(4) readnone %img) {
36; CHECK-LABEL: define i32 @test_get_image_width_rw_image1d_t(
37; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
38; CHECK-NEXT:  [[ENTRY:.*:]]
39; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width14ocl_image1d_rw(ptr addrspace(4) [[IMG]])
40; CHECK-NEXT:    ret i32 [[CALL]]
41;
42entry:
43  %call = tail call i32 @_Z15get_image_width14ocl_image1d_rw(ptr addrspace(4) %img)
44  ret i32 %call
45}
46
47declare i32 @_Z15get_image_width14ocl_image1d_rw(ptr addrspace(4)) #1
48
49define i32 @test_get_image_width_ro_image1d_buffer_t(ptr addrspace(4) readnone %img) {
50; CHECK-LABEL: define i32 @test_get_image_width_ro_image1d_buffer_t(
51; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
52; CHECK-NEXT:  [[ENTRY:.*:]]
53; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width21ocl_image1d_buffer_ro(ptr addrspace(4) [[IMG]])
54; CHECK-NEXT:    ret i32 [[CALL]]
55;
56entry:
57  %call = tail call i32 @_Z15get_image_width21ocl_image1d_buffer_ro(ptr addrspace(4) %img)
58  ret i32 %call
59}
60
61declare i32 @_Z15get_image_width21ocl_image1d_buffer_ro(ptr addrspace(4)) #1
62
63define i32 @test_get_image_width_wo_image1d_buffer_t(ptr addrspace(4) readnone %img) {
64; CHECK-LABEL: define i32 @test_get_image_width_wo_image1d_buffer_t(
65; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
66; CHECK-NEXT:  [[ENTRY:.*:]]
67; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width21ocl_image1d_buffer_wo(ptr addrspace(4) [[IMG]])
68; CHECK-NEXT:    ret i32 [[CALL]]
69;
70entry:
71  %call = tail call i32 @_Z15get_image_width21ocl_image1d_buffer_wo(ptr addrspace(4) %img)
72  ret i32 %call
73}
74
75declare i32 @_Z15get_image_width21ocl_image1d_buffer_wo(ptr addrspace(4)) #1
76
77define i32 @test_get_image_width_rw_image1d_buffer_t(ptr addrspace(4) readnone %img) {
78; CHECK-LABEL: define i32 @test_get_image_width_rw_image1d_buffer_t(
79; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
80; CHECK-NEXT:  [[ENTRY:.*:]]
81; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width21ocl_image1d_buffer_rw(ptr addrspace(4) [[IMG]])
82; CHECK-NEXT:    ret i32 [[CALL]]
83;
84entry:
85  %call = tail call i32 @_Z15get_image_width21ocl_image1d_buffer_rw(ptr addrspace(4) %img)
86  ret i32 %call
87}
88
89declare i32 @_Z15get_image_width21ocl_image1d_buffer_rw(ptr addrspace(4)) #1
90
91define i32 @test_get_image_width_ro_image2d_t(ptr addrspace(4) readnone %img) {
92; CHECK-LABEL: define i32 @test_get_image_width_ro_image2d_t(
93; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
94; CHECK-NEXT:  [[ENTRY:.*:]]
95; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width14ocl_image2d_ro(ptr addrspace(4) [[IMG]])
96; CHECK-NEXT:    ret i32 [[CALL]]
97;
98entry:
99  %call = tail call i32 @_Z15get_image_width14ocl_image2d_ro(ptr addrspace(4) %img)
100  ret i32 %call
101}
102
103declare i32 @_Z15get_image_width14ocl_image2d_ro(ptr addrspace(4)) #1
104
105define i32 @test_get_image_width_wo_image2d_t(ptr addrspace(4) readnone %img) {
106; CHECK-LABEL: define i32 @test_get_image_width_wo_image2d_t(
107; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
108; CHECK-NEXT:  [[ENTRY:.*:]]
109; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width14ocl_image2d_wo(ptr addrspace(4) [[IMG]])
110; CHECK-NEXT:    ret i32 [[CALL]]
111;
112entry:
113  %call = tail call i32 @_Z15get_image_width14ocl_image2d_wo(ptr addrspace(4) %img)
114  ret i32 %call
115}
116
117declare i32 @_Z15get_image_width14ocl_image2d_wo(ptr addrspace(4)) #1
118
119define i32 @test_get_image_width_rw_image2d_t(ptr addrspace(4) readnone %img) {
120; CHECK-LABEL: define i32 @test_get_image_width_rw_image2d_t(
121; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
122; CHECK-NEXT:  [[ENTRY:.*:]]
123; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width14ocl_image2d_rw(ptr addrspace(4) [[IMG]])
124; CHECK-NEXT:    ret i32 [[CALL]]
125;
126entry:
127  %call = tail call i32 @_Z15get_image_width14ocl_image2d_rw(ptr addrspace(4) %img)
128  ret i32 %call
129}
130
131declare i32 @_Z15get_image_width14ocl_image2d_rw(ptr addrspace(4)) #1
132
133define i32 @test_get_image_width_ro_image3d_t(ptr addrspace(4) readnone %img) {
134; CHECK-LABEL: define i32 @test_get_image_width_ro_image3d_t(
135; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
136; CHECK-NEXT:  [[ENTRY:.*:]]
137; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width14ocl_image3d_ro(ptr addrspace(4) [[IMG]])
138; CHECK-NEXT:    ret i32 [[CALL]]
139;
140entry:
141  %call = tail call i32 @_Z15get_image_width14ocl_image3d_ro(ptr addrspace(4) %img)
142  ret i32 %call
143}
144
145declare i32 @_Z15get_image_width14ocl_image3d_ro(ptr addrspace(4)) #1
146
147define i32 @test_get_image_width_wo_image3d_t(ptr addrspace(4) readnone %img) {
148; CHECK-LABEL: define i32 @test_get_image_width_wo_image3d_t(
149; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
150; CHECK-NEXT:  [[ENTRY:.*:]]
151; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width14ocl_image3d_wo(ptr addrspace(4) [[IMG]])
152; CHECK-NEXT:    ret i32 [[CALL]]
153;
154entry:
155  %call = tail call i32 @_Z15get_image_width14ocl_image3d_wo(ptr addrspace(4) %img)
156  ret i32 %call
157}
158
159declare i32 @_Z15get_image_width14ocl_image3d_wo(ptr addrspace(4)) #1
160
161define i32 @test_get_image_width_rw_image3d_t(ptr addrspace(4) readnone %img) {
162; CHECK-LABEL: define i32 @test_get_image_width_rw_image3d_t(
163; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
164; CHECK-NEXT:  [[ENTRY:.*:]]
165; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width14ocl_image3d_rw(ptr addrspace(4) [[IMG]])
166; CHECK-NEXT:    ret i32 [[CALL]]
167;
168entry:
169  %call = tail call i32 @_Z15get_image_width14ocl_image3d_rw(ptr addrspace(4) %img)
170  ret i32 %call
171}
172
173declare i32 @_Z15get_image_width14ocl_image3d_rw(ptr addrspace(4)) #1
174
175define i32 @test_get_image_width_ro_image1d_array_t(ptr addrspace(4) readnone %img) {
176; CHECK-LABEL: define i32 @test_get_image_width_ro_image1d_array_t(
177; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
178; CHECK-NEXT:  [[ENTRY:.*:]]
179; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width20ocl_image1d_array_ro(ptr addrspace(4) [[IMG]])
180; CHECK-NEXT:    ret i32 [[CALL]]
181;
182entry:
183  %call = tail call i32 @_Z15get_image_width20ocl_image1d_array_ro(ptr addrspace(4) %img)
184  ret i32 %call
185}
186
187declare i32 @_Z15get_image_width20ocl_image1d_array_ro(ptr addrspace(4)) #1
188
189define i32 @test_get_image_width_wo_image1d_array_t(ptr addrspace(4) readnone %img) {
190; CHECK-LABEL: define i32 @test_get_image_width_wo_image1d_array_t(
191; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
192; CHECK-NEXT:  [[ENTRY:.*:]]
193; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width20ocl_image1d_array_wo(ptr addrspace(4) [[IMG]])
194; CHECK-NEXT:    ret i32 [[CALL]]
195;
196entry:
197  %call = tail call i32 @_Z15get_image_width20ocl_image1d_array_wo(ptr addrspace(4) %img)
198  ret i32 %call
199}
200
201declare i32 @_Z15get_image_width20ocl_image1d_array_wo(ptr addrspace(4)) #1
202
203define i32 @test_get_image_width_rw_image1d_array_t(ptr addrspace(4) readnone %img) {
204; CHECK-LABEL: define i32 @test_get_image_width_rw_image1d_array_t(
205; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
206; CHECK-NEXT:  [[ENTRY:.*:]]
207; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width20ocl_image1d_array_rw(ptr addrspace(4) [[IMG]])
208; CHECK-NEXT:    ret i32 [[CALL]]
209;
210entry:
211  %call = tail call i32 @_Z15get_image_width20ocl_image1d_array_rw(ptr addrspace(4) %img)
212  ret i32 %call
213}
214
215declare i32 @_Z15get_image_width20ocl_image1d_array_rw(ptr addrspace(4)) #1
216
217define i32 @test_get_image_width_ro_image2d_array_t(ptr addrspace(4) readnone %img) {
218; CHECK-LABEL: define i32 @test_get_image_width_ro_image2d_array_t(
219; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
220; CHECK-NEXT:  [[ENTRY:.*:]]
221; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width20ocl_image2d_array_ro(ptr addrspace(4) [[IMG]])
222; CHECK-NEXT:    ret i32 [[CALL]]
223;
224entry:
225  %call = tail call i32 @_Z15get_image_width20ocl_image2d_array_ro(ptr addrspace(4) %img)
226  ret i32 %call
227}
228
229declare i32 @_Z15get_image_width20ocl_image2d_array_ro(ptr addrspace(4)) #1
230
231define i32 @test_get_image_width_wo_image2d_array_t(ptr addrspace(4) readnone %img) {
232; CHECK-LABEL: define i32 @test_get_image_width_wo_image2d_array_t(
233; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
234; CHECK-NEXT:  [[ENTRY:.*:]]
235; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width20ocl_image2d_array_wo(ptr addrspace(4) [[IMG]])
236; CHECK-NEXT:    ret i32 [[CALL]]
237;
238entry:
239  %call = tail call i32 @_Z15get_image_width20ocl_image2d_array_wo(ptr addrspace(4) %img)
240  ret i32 %call
241}
242
243declare i32 @_Z15get_image_width20ocl_image2d_array_wo(ptr addrspace(4)) #1
244
245define i32 @test_get_image_width_rw_image2d_array_t(ptr addrspace(4) readnone %img) {
246; CHECK-LABEL: define i32 @test_get_image_width_rw_image2d_array_t(
247; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
248; CHECK-NEXT:  [[ENTRY:.*:]]
249; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width20ocl_image2d_array_rw(ptr addrspace(4) [[IMG]])
250; CHECK-NEXT:    ret i32 [[CALL]]
251;
252entry:
253  %call = tail call i32 @_Z15get_image_width20ocl_image2d_array_rw(ptr addrspace(4) %img)
254  ret i32 %call
255}
256
257declare i32 @_Z15get_image_width20ocl_image2d_array_rw(ptr addrspace(4)) #1
258
259define i32 @test_get_image_width_ro_image2d_depth_t(ptr addrspace(4) readnone %img) {
260; CHECK-LABEL: define i32 @test_get_image_width_ro_image2d_depth_t(
261; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
262; CHECK-NEXT:  [[ENTRY:.*:]]
263; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width20ocl_image2d_depth_ro(ptr addrspace(4) [[IMG]])
264; CHECK-NEXT:    ret i32 [[CALL]]
265;
266entry:
267  %call = tail call i32 @_Z15get_image_width20ocl_image2d_depth_ro(ptr addrspace(4) %img)
268  ret i32 %call
269}
270
271declare i32 @_Z15get_image_width20ocl_image2d_depth_ro(ptr addrspace(4)) #1
272
273define i32 @test_get_image_width_wo_image2d_depth_t(ptr addrspace(4) readnone %img) {
274; CHECK-LABEL: define i32 @test_get_image_width_wo_image2d_depth_t(
275; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
276; CHECK-NEXT:  [[ENTRY:.*:]]
277; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width20ocl_image2d_depth_wo(ptr addrspace(4) [[IMG]])
278; CHECK-NEXT:    ret i32 [[CALL]]
279;
280entry:
281  %call = tail call i32 @_Z15get_image_width20ocl_image2d_depth_wo(ptr addrspace(4) %img)
282  ret i32 %call
283}
284
285declare i32 @_Z15get_image_width20ocl_image2d_depth_wo(ptr addrspace(4)) #1
286
287define i32 @test_get_image_width_rw_image2d_depth_t(ptr addrspace(4) readnone %img) {
288; CHECK-LABEL: define i32 @test_get_image_width_rw_image2d_depth_t(
289; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
290; CHECK-NEXT:  [[ENTRY:.*:]]
291; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width20ocl_image2d_depth_rw(ptr addrspace(4) [[IMG]])
292; CHECK-NEXT:    ret i32 [[CALL]]
293;
294entry:
295  %call = tail call i32 @_Z15get_image_width20ocl_image2d_depth_rw(ptr addrspace(4) %img)
296  ret i32 %call
297}
298
299declare i32 @_Z15get_image_width20ocl_image2d_depth_rw(ptr addrspace(4)) #1
300
301define i32 @test_get_image_width_ro_image2d_array_depth_t(ptr addrspace(4) readnone %img) {
302; CHECK-LABEL: define i32 @test_get_image_width_ro_image2d_array_depth_t(
303; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
304; CHECK-NEXT:  [[ENTRY:.*:]]
305; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width26ocl_image2d_array_depth_ro(ptr addrspace(4) [[IMG]])
306; CHECK-NEXT:    ret i32 [[CALL]]
307;
308entry:
309  %call = tail call i32 @_Z15get_image_width26ocl_image2d_array_depth_ro(ptr addrspace(4) %img)
310  ret i32 %call
311}
312
313declare i32 @_Z15get_image_width26ocl_image2d_array_depth_ro(ptr addrspace(4)) #1
314
315define i32 @test_get_image_width_wo_image2d_array_depth_t(ptr addrspace(4) readnone %img) {
316; CHECK-LABEL: define i32 @test_get_image_width_wo_image2d_array_depth_t(
317; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
318; CHECK-NEXT:  [[ENTRY:.*:]]
319; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width26ocl_image2d_array_depth_wo(ptr addrspace(4) [[IMG]])
320; CHECK-NEXT:    ret i32 [[CALL]]
321;
322entry:
323  %call = tail call i32 @_Z15get_image_width26ocl_image2d_array_depth_wo(ptr addrspace(4) %img)
324  ret i32 %call
325}
326
327declare i32 @_Z15get_image_width26ocl_image2d_array_depth_wo(ptr addrspace(4)) #1
328
329define i32 @test_get_image_width_rw_image2d_array_depth_t(ptr addrspace(4) readnone %img) {
330; CHECK-LABEL: define i32 @test_get_image_width_rw_image2d_array_depth_t(
331; CHECK-SAME: ptr addrspace(4) readnone [[IMG:%.*]]) {
332; CHECK-NEXT:  [[ENTRY:.*:]]
333; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @_Z15get_image_width26ocl_image2d_array_depth_rw(ptr addrspace(4) [[IMG]])
334; CHECK-NEXT:    ret i32 [[CALL]]
335;
336entry:
337  %call = tail call i32 @_Z15get_image_width26ocl_image2d_array_depth_rw(ptr addrspace(4) %img)
338  ret i32 %call
339}
340
341declare i32 @_Z15get_image_width26ocl_image2d_array_depth_rw(ptr addrspace(4)) #1
342