xref: /aosp_15_r20/external/llvm/test/CodeGen/AMDGPU/llvm.SI.gather4.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker;RUN: llc < %s -march=amdgcn -mcpu=verde -verify-machineinstrs | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker;RUN: llc < %s -march=amdgcn -mcpu=tonga -verify-machineinstrs | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_v2:
5*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4 {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
6*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_v2() {
7*9880d681SAndroid Build Coastguard Workermain_body:
8*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.v2i32(<2 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
9*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
10*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
11*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
12*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
13*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
14*9880d681SAndroid Build Coastguard Worker  ret void
15*9880d681SAndroid Build Coastguard Worker}
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4:
18*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4 {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
19*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4() {
20*9880d681SAndroid Build Coastguard Workermain_body:
21*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
22*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
23*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
24*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
25*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
26*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
27*9880d681SAndroid Build Coastguard Worker  ret void
28*9880d681SAndroid Build Coastguard Worker}
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_cl:
31*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_cl {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
32*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_cl() {
33*9880d681SAndroid Build Coastguard Workermain_body:
34*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.cl.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
35*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
36*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
37*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
38*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
39*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
40*9880d681SAndroid Build Coastguard Worker  ret void
41*9880d681SAndroid Build Coastguard Worker}
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_l:
44*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_l {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
45*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_l() {
46*9880d681SAndroid Build Coastguard Workermain_body:
47*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.l.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
48*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
49*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
50*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
51*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
52*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
53*9880d681SAndroid Build Coastguard Worker  ret void
54*9880d681SAndroid Build Coastguard Worker}
55*9880d681SAndroid Build Coastguard Worker
56*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_b:
57*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_b {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
58*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_b() {
59*9880d681SAndroid Build Coastguard Workermain_body:
60*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.b.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
61*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
62*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
63*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
64*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
65*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
66*9880d681SAndroid Build Coastguard Worker  ret void
67*9880d681SAndroid Build Coastguard Worker}
68*9880d681SAndroid Build Coastguard Worker
69*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_b_cl:
70*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_b_cl {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
71*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_b_cl() {
72*9880d681SAndroid Build Coastguard Workermain_body:
73*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.b.cl.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
74*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
75*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
76*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
77*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
78*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
79*9880d681SAndroid Build Coastguard Worker  ret void
80*9880d681SAndroid Build Coastguard Worker}
81*9880d681SAndroid Build Coastguard Worker
82*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_b_cl_v8:
83*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_b_cl {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
84*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_b_cl_v8() {
85*9880d681SAndroid Build Coastguard Workermain_body:
86*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.b.cl.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
87*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
88*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
89*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
90*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
91*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
92*9880d681SAndroid Build Coastguard Worker  ret void
93*9880d681SAndroid Build Coastguard Worker}
94*9880d681SAndroid Build Coastguard Worker
95*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_lz_v2:
96*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_lz {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
97*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_lz_v2() {
98*9880d681SAndroid Build Coastguard Workermain_body:
99*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.lz.v2i32(<2 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
100*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
101*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
102*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
103*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
104*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
105*9880d681SAndroid Build Coastguard Worker  ret void
106*9880d681SAndroid Build Coastguard Worker}
107*9880d681SAndroid Build Coastguard Worker
108*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_lz:
109*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_lz {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
110*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_lz() {
111*9880d681SAndroid Build Coastguard Workermain_body:
112*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.lz.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
113*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
114*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
115*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
116*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
117*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
118*9880d681SAndroid Build Coastguard Worker  ret void
119*9880d681SAndroid Build Coastguard Worker}
120*9880d681SAndroid Build Coastguard Worker
121*9880d681SAndroid Build Coastguard Worker
122*9880d681SAndroid Build Coastguard Worker
123*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_o:
124*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
125*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_o() {
126*9880d681SAndroid Build Coastguard Workermain_body:
127*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
128*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
129*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
130*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
131*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
132*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
133*9880d681SAndroid Build Coastguard Worker  ret void
134*9880d681SAndroid Build Coastguard Worker}
135*9880d681SAndroid Build Coastguard Worker
136*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_cl_o:
137*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_cl_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
138*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_cl_o() {
139*9880d681SAndroid Build Coastguard Workermain_body:
140*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.cl.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
141*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
142*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
143*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
144*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
145*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
146*9880d681SAndroid Build Coastguard Worker  ret void
147*9880d681SAndroid Build Coastguard Worker}
148*9880d681SAndroid Build Coastguard Worker
149*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_cl_o_v8:
150*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_cl_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
151*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_cl_o_v8() {
152*9880d681SAndroid Build Coastguard Workermain_body:
153*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.cl.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
154*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
155*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
156*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
157*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
158*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
159*9880d681SAndroid Build Coastguard Worker  ret void
160*9880d681SAndroid Build Coastguard Worker}
161*9880d681SAndroid Build Coastguard Worker
162*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_l_o:
163*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_l_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
164*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_l_o() {
165*9880d681SAndroid Build Coastguard Workermain_body:
166*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.l.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
167*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
168*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
169*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
170*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
171*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
172*9880d681SAndroid Build Coastguard Worker  ret void
173*9880d681SAndroid Build Coastguard Worker}
174*9880d681SAndroid Build Coastguard Worker
175*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_l_o_v8:
176*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_l_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
177*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_l_o_v8() {
178*9880d681SAndroid Build Coastguard Workermain_body:
179*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.l.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
180*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
181*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
182*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
183*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
184*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
185*9880d681SAndroid Build Coastguard Worker  ret void
186*9880d681SAndroid Build Coastguard Worker}
187*9880d681SAndroid Build Coastguard Worker
188*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_b_o:
189*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_b_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
190*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_b_o() {
191*9880d681SAndroid Build Coastguard Workermain_body:
192*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.b.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
193*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
194*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
195*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
196*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
197*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
198*9880d681SAndroid Build Coastguard Worker  ret void
199*9880d681SAndroid Build Coastguard Worker}
200*9880d681SAndroid Build Coastguard Worker
201*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_b_o_v8:
202*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_b_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
203*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_b_o_v8() {
204*9880d681SAndroid Build Coastguard Workermain_body:
205*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.b.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
206*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
207*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
208*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
209*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
210*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
211*9880d681SAndroid Build Coastguard Worker  ret void
212*9880d681SAndroid Build Coastguard Worker}
213*9880d681SAndroid Build Coastguard Worker
214*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_b_cl_o:
215*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_b_cl_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
216*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_b_cl_o() {
217*9880d681SAndroid Build Coastguard Workermain_body:
218*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.b.cl.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
219*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
220*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
221*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
222*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
223*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
224*9880d681SAndroid Build Coastguard Worker  ret void
225*9880d681SAndroid Build Coastguard Worker}
226*9880d681SAndroid Build Coastguard Worker
227*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_lz_o:
228*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_lz_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
229*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_lz_o() {
230*9880d681SAndroid Build Coastguard Workermain_body:
231*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.lz.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
232*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
233*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
234*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
235*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
236*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
237*9880d681SAndroid Build Coastguard Worker  ret void
238*9880d681SAndroid Build Coastguard Worker}
239*9880d681SAndroid Build Coastguard Worker
240*9880d681SAndroid Build Coastguard Worker
241*9880d681SAndroid Build Coastguard Worker
242*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c:
243*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
244*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c() {
245*9880d681SAndroid Build Coastguard Workermain_body:
246*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.c.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
247*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
248*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
249*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
250*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
251*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
252*9880d681SAndroid Build Coastguard Worker  ret void
253*9880d681SAndroid Build Coastguard Worker}
254*9880d681SAndroid Build Coastguard Worker
255*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_cl:
256*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_cl {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
257*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_cl() {
258*9880d681SAndroid Build Coastguard Workermain_body:
259*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.c.cl.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
260*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
261*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
262*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
263*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
264*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
265*9880d681SAndroid Build Coastguard Worker  ret void
266*9880d681SAndroid Build Coastguard Worker}
267*9880d681SAndroid Build Coastguard Worker
268*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_cl_v8:
269*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_cl {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
270*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_cl_v8() {
271*9880d681SAndroid Build Coastguard Workermain_body:
272*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.c.cl.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
273*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
274*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
275*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
276*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
277*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
278*9880d681SAndroid Build Coastguard Worker  ret void
279*9880d681SAndroid Build Coastguard Worker}
280*9880d681SAndroid Build Coastguard Worker
281*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_l:
282*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_l {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
283*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_l() {
284*9880d681SAndroid Build Coastguard Workermain_body:
285*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.c.l.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
286*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
287*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
288*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
289*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
290*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
291*9880d681SAndroid Build Coastguard Worker  ret void
292*9880d681SAndroid Build Coastguard Worker}
293*9880d681SAndroid Build Coastguard Worker
294*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_l_v8:
295*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_l {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
296*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_l_v8() {
297*9880d681SAndroid Build Coastguard Workermain_body:
298*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.c.l.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
299*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
300*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
301*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
302*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
303*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
304*9880d681SAndroid Build Coastguard Worker  ret void
305*9880d681SAndroid Build Coastguard Worker}
306*9880d681SAndroid Build Coastguard Worker
307*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_b:
308*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_b {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
309*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_b() {
310*9880d681SAndroid Build Coastguard Workermain_body:
311*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.c.b.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
312*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
313*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
314*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
315*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
316*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
317*9880d681SAndroid Build Coastguard Worker  ret void
318*9880d681SAndroid Build Coastguard Worker}
319*9880d681SAndroid Build Coastguard Worker
320*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_b_v8:
321*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_b {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
322*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_b_v8() {
323*9880d681SAndroid Build Coastguard Workermain_body:
324*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.c.b.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
325*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
326*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
327*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
328*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
329*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
330*9880d681SAndroid Build Coastguard Worker  ret void
331*9880d681SAndroid Build Coastguard Worker}
332*9880d681SAndroid Build Coastguard Worker
333*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_b_cl:
334*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_b_cl {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
335*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_b_cl() {
336*9880d681SAndroid Build Coastguard Workermain_body:
337*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.c.b.cl.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
338*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
339*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
340*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
341*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
342*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
343*9880d681SAndroid Build Coastguard Worker  ret void
344*9880d681SAndroid Build Coastguard Worker}
345*9880d681SAndroid Build Coastguard Worker
346*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_lz:
347*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_lz {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
348*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_lz() {
349*9880d681SAndroid Build Coastguard Workermain_body:
350*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.c.lz.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
351*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
352*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
353*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
354*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
355*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
356*9880d681SAndroid Build Coastguard Worker  ret void
357*9880d681SAndroid Build Coastguard Worker}
358*9880d681SAndroid Build Coastguard Worker
359*9880d681SAndroid Build Coastguard Worker
360*9880d681SAndroid Build Coastguard Worker
361*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_o:
362*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
363*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_o() {
364*9880d681SAndroid Build Coastguard Workermain_body:
365*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.c.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
366*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
367*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
368*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
369*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
370*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
371*9880d681SAndroid Build Coastguard Worker  ret void
372*9880d681SAndroid Build Coastguard Worker}
373*9880d681SAndroid Build Coastguard Worker
374*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_o_v8:
375*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
376*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_o_v8() {
377*9880d681SAndroid Build Coastguard Workermain_body:
378*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.c.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
379*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
380*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
381*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
382*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
383*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
384*9880d681SAndroid Build Coastguard Worker  ret void
385*9880d681SAndroid Build Coastguard Worker}
386*9880d681SAndroid Build Coastguard Worker
387*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_cl_o:
388*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_cl_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
389*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_cl_o() {
390*9880d681SAndroid Build Coastguard Workermain_body:
391*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.c.cl.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
392*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
393*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
394*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
395*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
396*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
397*9880d681SAndroid Build Coastguard Worker  ret void
398*9880d681SAndroid Build Coastguard Worker}
399*9880d681SAndroid Build Coastguard Worker
400*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_l_o:
401*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_l_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
402*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_l_o() {
403*9880d681SAndroid Build Coastguard Workermain_body:
404*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.c.l.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
405*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
406*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
407*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
408*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
409*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
410*9880d681SAndroid Build Coastguard Worker  ret void
411*9880d681SAndroid Build Coastguard Worker}
412*9880d681SAndroid Build Coastguard Worker
413*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_b_o:
414*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_b_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
415*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_b_o() {
416*9880d681SAndroid Build Coastguard Workermain_body:
417*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.c.b.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
418*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
419*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
420*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
421*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
422*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
423*9880d681SAndroid Build Coastguard Worker  ret void
424*9880d681SAndroid Build Coastguard Worker}
425*9880d681SAndroid Build Coastguard Worker
426*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_b_cl_o:
427*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_b_cl_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
428*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_b_cl_o() {
429*9880d681SAndroid Build Coastguard Workermain_body:
430*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.c.b.cl.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
431*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
432*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
433*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
434*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
435*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
436*9880d681SAndroid Build Coastguard Worker  ret void
437*9880d681SAndroid Build Coastguard Worker}
438*9880d681SAndroid Build Coastguard Worker
439*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_lz_o:
440*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_lz_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
441*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_lz_o() {
442*9880d681SAndroid Build Coastguard Workermain_body:
443*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.c.lz.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
444*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
445*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
446*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
447*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
448*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
449*9880d681SAndroid Build Coastguard Worker  ret void
450*9880d681SAndroid Build Coastguard Worker}
451*9880d681SAndroid Build Coastguard Worker
452*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_lz_o_v8:
453*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_lz_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da
454*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_lz_o_v8() {
455*9880d681SAndroid Build Coastguard Workermain_body:
456*9880d681SAndroid Build Coastguard Worker  %r = call <4 x float> @llvm.SI.gather4.c.lz.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0)
457*9880d681SAndroid Build Coastguard Worker  %r0 = extractelement <4 x float> %r, i32 0
458*9880d681SAndroid Build Coastguard Worker  %r1 = extractelement <4 x float> %r, i32 1
459*9880d681SAndroid Build Coastguard Worker  %r2 = extractelement <4 x float> %r, i32 2
460*9880d681SAndroid Build Coastguard Worker  %r3 = extractelement <4 x float> %r, i32 3
461*9880d681SAndroid Build Coastguard Worker  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
462*9880d681SAndroid Build Coastguard Worker  ret void
463*9880d681SAndroid Build Coastguard Worker}
464*9880d681SAndroid Build Coastguard Worker
465*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_sgpr_bug:
466*9880d681SAndroid Build Coastguard Worker;
467*9880d681SAndroid Build Coastguard Worker; This crashed at some point due to a bug in FixSGPRCopies. Derived from the
468*9880d681SAndroid Build Coastguard Worker; report in https://bugs.freedesktop.org/show_bug.cgi?id=96877
469*9880d681SAndroid Build Coastguard Worker;
470*9880d681SAndroid Build Coastguard Worker;CHECK: s_load_dwordx4 s{{\[}}[[LO:[0-9]+]]:[[HI:[0-9]+]]], {{s\[[0-9]+:[0-9]+\]}}, 0x0
471*9880d681SAndroid Build Coastguard Worker;CHECK: s_waitcnt lgkmcnt(0)
472*9880d681SAndroid Build Coastguard Worker;CHECK: s_mov_b32 s[[LO]], 0
473*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_lz {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, s{{\[}}[[LO]]:[[HI]]] dmask:0x8
474*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps float @gather4_sgpr_bug() {
475*9880d681SAndroid Build Coastguard Workermain_body:
476*9880d681SAndroid Build Coastguard Worker  %tmp = load <4 x i32>, <4 x i32> addrspace(2)* undef, align 16
477*9880d681SAndroid Build Coastguard Worker  %tmp1 = insertelement <4 x i32> %tmp, i32 0, i32 0
478*9880d681SAndroid Build Coastguard Worker  %tmp2 = call <4 x float> @llvm.SI.gather4.lz.v2i32(<2 x i32> undef, <8 x i32> undef, <4 x i32> %tmp1, i32 8, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
479*9880d681SAndroid Build Coastguard Worker  %tmp4 = extractelement <4 x float> %tmp2, i32 1
480*9880d681SAndroid Build Coastguard Worker  %tmp9 = fadd float undef, %tmp4
481*9880d681SAndroid Build Coastguard Worker  ret float %tmp9
482*9880d681SAndroid Build Coastguard Worker}
483*9880d681SAndroid Build Coastguard Worker
484*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
485*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
486*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.cl.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
487*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.l.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
488*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.b.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
489*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.b.cl.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
490*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.b.cl.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
491*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.lz.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
492*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.lz.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
493*9880d681SAndroid Build Coastguard Worker
494*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
495*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.cl.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
496*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.cl.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
497*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.l.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
498*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.l.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
499*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.b.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
500*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.b.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
501*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.b.cl.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
502*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.lz.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
503*9880d681SAndroid Build Coastguard Worker
504*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
505*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.cl.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
506*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.cl.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
507*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.l.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
508*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.l.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
509*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.b.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
510*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.b.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
511*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.b.cl.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
512*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.lz.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
513*9880d681SAndroid Build Coastguard Worker
514*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
515*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
516*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.cl.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
517*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.l.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
518*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.b.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
519*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.b.cl.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
520*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.lz.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
521*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.lz.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0
522*9880d681SAndroid Build Coastguard Worker
523*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float)
524*9880d681SAndroid Build Coastguard Worker
525*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind readnone }
526