xref: /aosp_15_r20/external/llvm/test/CodeGen/AMDGPU/load-constant-i32.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-NOHSA -check-prefix=FUNC %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-HSA -check-prefix=FUNC %s
3*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-NOHSA -check-prefix=FUNC %s
4*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_i32:
7*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dword s{{[0-9]+}}
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_32 T{{[0-9]+}}.X, T{{[0-9]+}}.X, 0
10*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_i32(i32 addrspace(1)* %out, i32 addrspace(2)* %in) #0 {
11*9880d681SAndroid Build Coastguard Workerentry:
12*9880d681SAndroid Build Coastguard Worker  %ld = load i32, i32 addrspace(2)* %in
13*9880d681SAndroid Build Coastguard Worker  store i32 %ld, i32 addrspace(1)* %out
14*9880d681SAndroid Build Coastguard Worker  ret void
15*9880d681SAndroid Build Coastguard Worker}
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v2i32:
18*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx2
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_64
21*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v2i32(<2 x i32> addrspace(1)* %out, <2 x i32> addrspace(2)* %in) #0 {
22*9880d681SAndroid Build Coastguard Workerentry:
23*9880d681SAndroid Build Coastguard Worker  %ld = load <2 x i32>, <2 x i32> addrspace(2)* %in
24*9880d681SAndroid Build Coastguard Worker  store <2 x i32> %ld, <2 x i32> addrspace(1)* %out
25*9880d681SAndroid Build Coastguard Worker  ret void
26*9880d681SAndroid Build Coastguard Worker}
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v3i32:
29*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx4
30*9880d681SAndroid Build Coastguard Worker
31*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_128
32*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v3i32(<3 x i32> addrspace(1)* %out, <3 x i32> addrspace(2)* %in) #0 {
33*9880d681SAndroid Build Coastguard Workerentry:
34*9880d681SAndroid Build Coastguard Worker  %ld = load <3 x i32>, <3 x i32> addrspace(2)* %in
35*9880d681SAndroid Build Coastguard Worker  store <3 x i32> %ld, <3 x i32> addrspace(1)* %out
36*9880d681SAndroid Build Coastguard Worker  ret void
37*9880d681SAndroid Build Coastguard Worker}
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v4i32:
40*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx4
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_128
43*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v4i32(<4 x i32> addrspace(1)* %out, <4 x i32> addrspace(2)* %in) #0 {
44*9880d681SAndroid Build Coastguard Workerentry:
45*9880d681SAndroid Build Coastguard Worker  %ld = load <4 x i32>, <4 x i32> addrspace(2)* %in
46*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %ld, <4 x i32> addrspace(1)* %out
47*9880d681SAndroid Build Coastguard Worker  ret void
48*9880d681SAndroid Build Coastguard Worker}
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v8i32:
51*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx8
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_128
54*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_128
55*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v8i32(<8 x i32> addrspace(1)* %out, <8 x i32> addrspace(2)* %in) #0 {
56*9880d681SAndroid Build Coastguard Workerentry:
57*9880d681SAndroid Build Coastguard Worker  %ld = load <8 x i32>, <8 x i32> addrspace(2)* %in
58*9880d681SAndroid Build Coastguard Worker  store <8 x i32> %ld, <8 x i32> addrspace(1)* %out
59*9880d681SAndroid Build Coastguard Worker  ret void
60*9880d681SAndroid Build Coastguard Worker}
61*9880d681SAndroid Build Coastguard Worker
62*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v16i32:
63*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx16
64*9880d681SAndroid Build Coastguard Worker
65*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_128
66*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_128
67*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_128
68*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_128
69*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v16i32(<16 x i32> addrspace(1)* %out, <16 x i32> addrspace(2)* %in) #0 {
70*9880d681SAndroid Build Coastguard Workerentry:
71*9880d681SAndroid Build Coastguard Worker  %ld = load <16 x i32>, <16 x i32> addrspace(2)* %in
72*9880d681SAndroid Build Coastguard Worker  store <16 x i32> %ld, <16 x i32> addrspace(1)* %out
73*9880d681SAndroid Build Coastguard Worker  ret void
74*9880d681SAndroid Build Coastguard Worker}
75*9880d681SAndroid Build Coastguard Worker
76*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_i32_to_i64:
77*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_load_dword s[[SLO:[0-9]+]],
78*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 v[[SHI:[0-9]+]], 0{{$}}
79*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx2
80*9880d681SAndroid Build Coastguard Worker
81*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW T{{[0-9]+}}.XY
82*9880d681SAndroid Build Coastguard Worker; EG: CF_END
83*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_32
84*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_i32_to_i64(i64 addrspace(1)* %out, i32 addrspace(2)* %in) #0 {
85*9880d681SAndroid Build Coastguard Worker  %ld = load i32, i32 addrspace(2)* %in
86*9880d681SAndroid Build Coastguard Worker  %ext = zext i32 %ld to i64
87*9880d681SAndroid Build Coastguard Worker  store i64 %ext, i64 addrspace(1)* %out
88*9880d681SAndroid Build Coastguard Worker  ret void
89*9880d681SAndroid Build Coastguard Worker}
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_i32_to_i64:
92*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dword s[[SLO:[0-9]+]]
93*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32 s[[HI:[0-9]+]], s[[SLO]], 31
94*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx2
95*9880d681SAndroid Build Coastguard Worker
96*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW T{{[0-9]+}}.XY
97*9880d681SAndroid Build Coastguard Worker; EG: CF_END
98*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_32
99*9880d681SAndroid Build Coastguard Worker; EG: ASHR {{[* ]*}}T{{[0-9]\.[XYZW]}}, T{{[0-9]\.[XYZW]}},  literal.
100*9880d681SAndroid Build Coastguard Worker; EG: 31
101*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_i32_to_i64(i64 addrspace(1)* %out, i32 addrspace(2)* %in) #0 {
102*9880d681SAndroid Build Coastguard Worker  %ld = load i32, i32 addrspace(2)* %in
103*9880d681SAndroid Build Coastguard Worker  %ext = sext i32 %ld to i64
104*9880d681SAndroid Build Coastguard Worker  store i64 %ext, i64 addrspace(1)* %out
105*9880d681SAndroid Build Coastguard Worker  ret void
106*9880d681SAndroid Build Coastguard Worker}
107*9880d681SAndroid Build Coastguard Worker
108*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v1i32_to_v1i64:
109*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dword
110*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx2
111*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v1i32_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i32> addrspace(2)* %in) #0 {
112*9880d681SAndroid Build Coastguard Worker  %ld = load <1 x i32>, <1 x i32> addrspace(2)* %in
113*9880d681SAndroid Build Coastguard Worker  %ext = zext <1 x i32> %ld to <1 x i64>
114*9880d681SAndroid Build Coastguard Worker  store <1 x i64> %ext, <1 x i64> addrspace(1)* %out
115*9880d681SAndroid Build Coastguard Worker  ret void
116*9880d681SAndroid Build Coastguard Worker}
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v1i32_to_v1i64:
119*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dword s[[LO:[0-9]+]]
120*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32 s[[HI:[0-9]+]], s[[LO]], 31
121*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx2
122*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v1i32_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i32> addrspace(2)* %in) #0 {
123*9880d681SAndroid Build Coastguard Worker  %ld = load <1 x i32>, <1 x i32> addrspace(2)* %in
124*9880d681SAndroid Build Coastguard Worker  %ext = sext <1 x i32> %ld to <1 x i64>
125*9880d681SAndroid Build Coastguard Worker  store <1 x i64> %ext, <1 x i64> addrspace(1)* %out
126*9880d681SAndroid Build Coastguard Worker  ret void
127*9880d681SAndroid Build Coastguard Worker}
128*9880d681SAndroid Build Coastguard Worker
129*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v2i32_to_v2i64:
130*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx2 s{{\[[0-9]+:[0-9]+\]}}, s{{\[[0-9]+:[0-9]+\]}}, 0x0{{$}}
131*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4
132*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v2i32_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i32> addrspace(2)* %in) #0 {
133*9880d681SAndroid Build Coastguard Worker  %ld = load <2 x i32>, <2 x i32> addrspace(2)* %in
134*9880d681SAndroid Build Coastguard Worker  %ext = zext <2 x i32> %ld to <2 x i64>
135*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %ext, <2 x i64> addrspace(1)* %out
136*9880d681SAndroid Build Coastguard Worker  ret void
137*9880d681SAndroid Build Coastguard Worker}
138*9880d681SAndroid Build Coastguard Worker
139*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v2i32_to_v2i64:
140*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx2 s{{\[[0-9]+:[0-9]+\]}}, s{{\[[0-9]+:[0-9]+\]}}, 0x0{{$}}
141*9880d681SAndroid Build Coastguard Worker
142*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_ashr_i32
143*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_ashr_i32
144*9880d681SAndroid Build Coastguard Worker
145*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4
146*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v2i32_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i32> addrspace(2)* %in) #0 {
147*9880d681SAndroid Build Coastguard Worker  %ld = load <2 x i32>, <2 x i32> addrspace(2)* %in
148*9880d681SAndroid Build Coastguard Worker  %ext = sext <2 x i32> %ld to <2 x i64>
149*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %ext, <2 x i64> addrspace(1)* %out
150*9880d681SAndroid Build Coastguard Worker  ret void
151*9880d681SAndroid Build Coastguard Worker}
152*9880d681SAndroid Build Coastguard Worker
153*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v4i32_to_v4i64:
154*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx4
155*9880d681SAndroid Build Coastguard Worker
156*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4
157*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4
158*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v4i32_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i32> addrspace(2)* %in) #0 {
159*9880d681SAndroid Build Coastguard Worker  %ld = load <4 x i32>, <4 x i32> addrspace(2)* %in
160*9880d681SAndroid Build Coastguard Worker  %ext = zext <4 x i32> %ld to <4 x i64>
161*9880d681SAndroid Build Coastguard Worker  store <4 x i64> %ext, <4 x i64> addrspace(1)* %out
162*9880d681SAndroid Build Coastguard Worker  ret void
163*9880d681SAndroid Build Coastguard Worker}
164*9880d681SAndroid Build Coastguard Worker
165*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v4i32_to_v4i64:
166*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx4
167*9880d681SAndroid Build Coastguard Worker
168*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32
169*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32
170*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32
171*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32
172*9880d681SAndroid Build Coastguard Worker
173*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4
174*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4
175*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v4i32_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i32> addrspace(2)* %in) #0 {
176*9880d681SAndroid Build Coastguard Worker  %ld = load <4 x i32>, <4 x i32> addrspace(2)* %in
177*9880d681SAndroid Build Coastguard Worker  %ext = sext <4 x i32> %ld to <4 x i64>
178*9880d681SAndroid Build Coastguard Worker  store <4 x i64> %ext, <4 x i64> addrspace(1)* %out
179*9880d681SAndroid Build Coastguard Worker  ret void
180*9880d681SAndroid Build Coastguard Worker}
181*9880d681SAndroid Build Coastguard Worker
182*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v8i32_to_v8i64:
183*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx8
184*9880d681SAndroid Build Coastguard Worker
185*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
186*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
187*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
188*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
189*9880d681SAndroid Build Coastguard Worker
190*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
191*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
192*9880d681SAndroid Build Coastguard Worker; GCN-SA-DAG: flat_store_dwordx4
193*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
194*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v8i32_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i32> addrspace(2)* %in) #0 {
195*9880d681SAndroid Build Coastguard Worker  %ld = load <8 x i32>, <8 x i32> addrspace(2)* %in
196*9880d681SAndroid Build Coastguard Worker  %ext = zext <8 x i32> %ld to <8 x i64>
197*9880d681SAndroid Build Coastguard Worker  store <8 x i64> %ext, <8 x i64> addrspace(1)* %out
198*9880d681SAndroid Build Coastguard Worker  ret void
199*9880d681SAndroid Build Coastguard Worker}
200*9880d681SAndroid Build Coastguard Worker
201*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v8i32_to_v8i64:
202*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx8
203*9880d681SAndroid Build Coastguard Worker
204*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32
205*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32
206*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32
207*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32
208*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32
209*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32
210*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32
211*9880d681SAndroid Build Coastguard Worker; GCN: s_ashr_i32
212*9880d681SAndroid Build Coastguard Worker
213*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
214*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
215*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
216*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
217*9880d681SAndroid Build Coastguard Worker
218*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
219*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
220*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
221*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
222*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v8i32_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i32> addrspace(2)* %in) #0 {
223*9880d681SAndroid Build Coastguard Worker  %ld = load <8 x i32>, <8 x i32> addrspace(2)* %in
224*9880d681SAndroid Build Coastguard Worker  %ext = sext <8 x i32> %ld to <8 x i64>
225*9880d681SAndroid Build Coastguard Worker  store <8 x i64> %ext, <8 x i64> addrspace(1)* %out
226*9880d681SAndroid Build Coastguard Worker  ret void
227*9880d681SAndroid Build Coastguard Worker}
228*9880d681SAndroid Build Coastguard Worker
229*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v16i32_to_v16i64:
230*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx16
231*9880d681SAndroid Build Coastguard Worker
232*9880d681SAndroid Build Coastguard Worker
233*9880d681SAndroid Build Coastguard Worker; GCN-DAG: s_ashr_i32
234*9880d681SAndroid Build Coastguard Worker
235*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4
236*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4
237*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4
238*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4
239*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4
240*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4
241*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4
242*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx4
243*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v16i32_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i32> addrspace(2)* %in) #0 {
244*9880d681SAndroid Build Coastguard Worker  %ld = load <16 x i32>, <16 x i32> addrspace(2)* %in
245*9880d681SAndroid Build Coastguard Worker  %ext = sext <16 x i32> %ld to <16 x i64>
246*9880d681SAndroid Build Coastguard Worker  store <16 x i64> %ext, <16 x i64> addrspace(1)* %out
247*9880d681SAndroid Build Coastguard Worker  ret void
248*9880d681SAndroid Build Coastguard Worker}
249*9880d681SAndroid Build Coastguard Worker
250*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v16i32_to_v16i64
251*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx16
252*9880d681SAndroid Build Coastguard Worker
253*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
254*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
255*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
256*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
257*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
258*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
259*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
260*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
261*9880d681SAndroid Build Coastguard Worker
262*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
263*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
264*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
265*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
266*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
267*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
268*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
269*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
270*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v16i32_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i32> addrspace(2)* %in) #0 {
271*9880d681SAndroid Build Coastguard Worker  %ld = load <16 x i32>, <16 x i32> addrspace(2)* %in
272*9880d681SAndroid Build Coastguard Worker  %ext = zext <16 x i32> %ld to <16 x i64>
273*9880d681SAndroid Build Coastguard Worker  store <16 x i64> %ext, <16 x i64> addrspace(1)* %out
274*9880d681SAndroid Build Coastguard Worker  ret void
275*9880d681SAndroid Build Coastguard Worker}
276*9880d681SAndroid Build Coastguard Worker
277*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v32i32_to_v32i64:
278*9880d681SAndroid Build Coastguard Worker
279*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx16
280*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx16
281*9880d681SAndroid Build Coastguard Worker
282*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
283*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
284*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
285*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
286*9880d681SAndroid Build Coastguard Worker
287*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
288*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
289*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
290*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
291*9880d681SAndroid Build Coastguard Worker
292*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
293*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
294*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
295*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
296*9880d681SAndroid Build Coastguard Worker
297*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
298*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
299*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
300*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA: buffer_store_dwordx4
301*9880d681SAndroid Build Coastguard Worker
302*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
303*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
304*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
305*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
306*9880d681SAndroid Build Coastguard Worker
307*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
308*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
309*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
310*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
311*9880d681SAndroid Build Coastguard Worker
312*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
313*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
314*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
315*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
316*9880d681SAndroid Build Coastguard Worker
317*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
318*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
319*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
320*9880d681SAndroid Build Coastguard Worker; GCN-HSA: flat_store_dwordx4
321*9880d681SAndroid Build Coastguard Worker
322*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v32i32_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i32> addrspace(2)* %in) #0 {
323*9880d681SAndroid Build Coastguard Worker  %ld = load <32 x i32>, <32 x i32> addrspace(2)* %in
324*9880d681SAndroid Build Coastguard Worker  %ext = sext <32 x i32> %ld to <32 x i64>
325*9880d681SAndroid Build Coastguard Worker  store <32 x i64> %ext, <32 x i64> addrspace(1)* %out
326*9880d681SAndroid Build Coastguard Worker  ret void
327*9880d681SAndroid Build Coastguard Worker}
328*9880d681SAndroid Build Coastguard Worker
329*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v32i32_to_v32i64:
330*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx16
331*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx16
332*9880d681SAndroid Build Coastguard Worker
333*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
334*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
335*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
336*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
337*9880d681SAndroid Build Coastguard Worker
338*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
339*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
340*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
341*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
342*9880d681SAndroid Build Coastguard Worker
343*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
344*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
345*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
346*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
347*9880d681SAndroid Build Coastguard Worker
348*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
349*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
350*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
351*9880d681SAndroid Build Coastguard Worker; GCN-NOHSA-DAG: buffer_store_dwordx4
352*9880d681SAndroid Build Coastguard Worker
353*9880d681SAndroid Build Coastguard Worker
354*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
355*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
356*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
357*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
358*9880d681SAndroid Build Coastguard Worker
359*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
360*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
361*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
362*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
363*9880d681SAndroid Build Coastguard Worker
364*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
365*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
366*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
367*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
368*9880d681SAndroid Build Coastguard Worker
369*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
370*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
371*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
372*9880d681SAndroid Build Coastguard Worker; GCN-HSA-DAG: flat_store_dwordx4
373*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v32i32_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i32> addrspace(2)* %in) #0 {
374*9880d681SAndroid Build Coastguard Worker  %ld = load <32 x i32>, <32 x i32> addrspace(2)* %in
375*9880d681SAndroid Build Coastguard Worker  %ext = zext <32 x i32> %ld to <32 x i64>
376*9880d681SAndroid Build Coastguard Worker  store <32 x i64> %ext, <32 x i64> addrspace(1)* %out
377*9880d681SAndroid Build Coastguard Worker  ret void
378*9880d681SAndroid Build Coastguard Worker}
379*9880d681SAndroid Build Coastguard Worker
380*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind }
381