• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-NOHSA -check-prefix=FUNC %s
2; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-HSA -check-prefix=FUNC %s
3; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-NOHSA -check-prefix=FUNC %s
4; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s
5
6; FUNC-LABEL: {{^}}constant_load_i16:
7; GCN-NOHSA: buffer_load_ushort v{{[0-9]+}}
8; GCN-HSA: flat_load_ushort
9
10; EG: VTX_READ_16 T{{[0-9]+}}.X, T{{[0-9]+}}.X, 0
11define void @constant_load_i16(i16 addrspace(1)* %out, i16 addrspace(2)* %in) {
12entry:
13  %ld = load i16, i16 addrspace(2)* %in
14  store i16 %ld, i16 addrspace(1)* %out
15  ret void
16}
17
18; FUNC-LABEL: {{^}}constant_load_v2i16:
19; GCN: s_load_dword s
20
21; EG: VTX_READ_32
22define void @constant_load_v2i16(<2 x i16> addrspace(1)* %out, <2 x i16> addrspace(2)* %in) {
23entry:
24  %ld = load <2 x i16>, <2 x i16> addrspace(2)* %in
25  store <2 x i16> %ld, <2 x i16> addrspace(1)* %out
26  ret void
27}
28
29; FUNC-LABEL: {{^}}constant_load_v3i16:
30; GCN: s_load_dwordx2 s
31
32; EG-DAG: VTX_READ_32
33; EG-DAG: VTX_READ_16
34define void @constant_load_v3i16(<3 x i16> addrspace(1)* %out, <3 x i16> addrspace(2)* %in) {
35entry:
36  %ld = load <3 x i16>, <3 x i16> addrspace(2)* %in
37  store <3 x i16> %ld, <3 x i16> addrspace(1)* %out
38  ret void
39}
40
41; FUNC-LABEL: {{^}}constant_load_v4i16:
42; GCN: s_load_dwordx2
43
44; EG: VTX_READ_64
45define void @constant_load_v4i16(<4 x i16> addrspace(1)* %out, <4 x i16> addrspace(2)* %in) {
46entry:
47  %ld = load <4 x i16>, <4 x i16> addrspace(2)* %in
48  store <4 x i16> %ld, <4 x i16> addrspace(1)* %out
49  ret void
50}
51
52; FUNC-LABEL: {{^}}constant_load_v8i16:
53; GCN: s_load_dwordx4
54
55; EG: VTX_READ_128
56define void @constant_load_v8i16(<8 x i16> addrspace(1)* %out, <8 x i16> addrspace(2)* %in) {
57entry:
58  %ld = load <8 x i16>, <8 x i16> addrspace(2)* %in
59  store <8 x i16> %ld, <8 x i16> addrspace(1)* %out
60  ret void
61}
62
63; FUNC-LABEL: {{^}}constant_load_v16i16:
64; GCN: s_load_dwordx8
65
66; EG: VTX_READ_128
67; EG: VTX_READ_128
68define void @constant_load_v16i16(<16 x i16> addrspace(1)* %out, <16 x i16> addrspace(2)* %in) {
69entry:
70  %ld = load <16 x i16>, <16 x i16> addrspace(2)* %in
71  store <16 x i16> %ld, <16 x i16> addrspace(1)* %out
72  ret void
73}
74
75; FUNC-LABEL: {{^}}constant_zextload_i16_to_i32:
76; GCN-NOHSA: buffer_load_ushort
77; GCN-NOHSA: buffer_store_dword
78
79; GCN-HSA: flat_load_ushort
80; GCN-HSA: flat_store_dword
81
82; EG: VTX_READ_16 T{{[0-9]+\.X, T[0-9]+\.X}}
83define void @constant_zextload_i16_to_i32(i32 addrspace(1)* %out, i16 addrspace(2)* %in) #0 {
84  %a = load i16, i16 addrspace(2)* %in
85  %ext = zext i16 %a to i32
86  store i32 %ext, i32 addrspace(1)* %out
87  ret void
88}
89
90; FUNC-LABEL: {{^}}constant_sextload_i16_to_i32:
91; GCN-NOHSA: buffer_load_sshort
92; GCN-NOHSA: buffer_store_dword
93
94; GCN-HSA: flat_load_sshort
95; GCN-HSA: flat_store_dword
96
97; EG: VTX_READ_16 [[DST:T[0-9]\.[XYZW]]], [[DST]]
98; EG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST]], 0.0, literal
99; EG: 16
100define void @constant_sextload_i16_to_i32(i32 addrspace(1)* %out, i16 addrspace(2)* %in) #0 {
101  %a = load i16, i16 addrspace(2)* %in
102  %ext = sext i16 %a to i32
103  store i32 %ext, i32 addrspace(1)* %out
104  ret void
105}
106
107; FUNC-LABEL: {{^}}constant_zextload_v1i16_to_v1i32:
108; GCN-NOHSA: buffer_load_ushort
109; GCN-HSA: flat_load_ushort
110define void @constant_zextload_v1i16_to_v1i32(<1 x i32> addrspace(1)* %out, <1 x i16> addrspace(2)* %in) #0 {
111  %load = load <1 x i16>, <1 x i16> addrspace(2)* %in
112  %ext = zext <1 x i16> %load to <1 x i32>
113  store <1 x i32> %ext, <1 x i32> addrspace(1)* %out
114  ret void
115}
116
117; FUNC-LABEL: {{^}}constant_sextload_v1i16_to_v1i32:
118; GCN-NOHSA: buffer_load_sshort
119; GCN-HSA: flat_load_sshort
120define void @constant_sextload_v1i16_to_v1i32(<1 x i32> addrspace(1)* %out, <1 x i16> addrspace(2)* %in) #0 {
121  %load = load <1 x i16>, <1 x i16> addrspace(2)* %in
122  %ext = sext <1 x i16> %load to <1 x i32>
123  store <1 x i32> %ext, <1 x i32> addrspace(1)* %out
124  ret void
125}
126
127; FUNC-LABEL: {{^}}constant_zextload_v2i16_to_v2i32:
128; GCN: s_load_dword s
129; GCN-DAG: s_and_b32 s{{[0-9]+}}, s{{[0-9]+}}, 0xffff{{$}}
130; GCN-DAG: s_lshr_b32 s{{[0-9]+}}, s{{[0-9]+}}, 16
131define void @constant_zextload_v2i16_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x i16> addrspace(2)* %in) #0 {
132  %load = load <2 x i16>, <2 x i16> addrspace(2)* %in
133  %ext = zext <2 x i16> %load to <2 x i32>
134  store <2 x i32> %ext, <2 x i32> addrspace(1)* %out
135  ret void
136}
137
138; FUNC-LABEL: {{^}}constant_sextload_v2i16_to_v2i32:
139; GCN: s_load_dword s
140; GCN-DAG: s_ashr_i32
141; GCN-DAG: s_sext_i32_i16
142
143; EG-DAG: VTX_READ_16 [[DST_X:T[0-9]\.[XYZW]]], [[DST_X]]
144; EG-DAG: VTX_READ_16 [[DST_Y:T[0-9]\.[XYZW]]], [[DST_Y]]
145; EG-DAG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST_X]], 0.0, literal
146; EG-DAG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST_Y]], 0.0, literal
147; EG-DAG: 16
148; EG-DAG: 16
149define void @constant_sextload_v2i16_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x i16> addrspace(2)* %in) #0 {
150  %load = load <2 x i16>, <2 x i16> addrspace(2)* %in
151  %ext = sext <2 x i16> %load to <2 x i32>
152  store <2 x i32> %ext, <2 x i32> addrspace(1)* %out
153  ret void
154}
155
156; FUNC-LABEL: {{^}}constant_constant_zextload_v3i16_to_v3i32:
157; GCN: s_load_dwordx2
158define void @constant_constant_zextload_v3i16_to_v3i32(<3 x i32> addrspace(1)* %out, <3 x i16> addrspace(2)* %in) {
159entry:
160  %ld = load <3 x i16>, <3 x i16> addrspace(2)* %in
161  %ext = zext <3 x i16> %ld to <3 x i32>
162  store <3 x i32> %ext, <3 x i32> addrspace(1)* %out
163  ret void
164}
165
166; FUNC-LABEL: {{^}}constant_constant_sextload_v3i16_to_v3i32:
167; GCN: s_load_dwordx2
168define void @constant_constant_sextload_v3i16_to_v3i32(<3 x i32> addrspace(1)* %out, <3 x i16> addrspace(2)* %in) {
169entry:
170  %ld = load <3 x i16>, <3 x i16> addrspace(2)* %in
171  %ext = sext <3 x i16> %ld to <3 x i32>
172  store <3 x i32> %ext, <3 x i32> addrspace(1)* %out
173  ret void
174}
175
176; FUNC-LABEL: {{^}}constant_constant_zextload_v4i16_to_v4i32:
177; GCN: s_load_dwordx2
178; GCN-DAG: s_and_b32
179; GCN-DAG: s_lshr_b32
180
181; EG: VTX_READ_16
182; EG: VTX_READ_16
183; EG: VTX_READ_16
184; EG: VTX_READ_16
185define void @constant_constant_zextload_v4i16_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i16> addrspace(2)* %in) #0 {
186  %load = load <4 x i16>, <4 x i16> addrspace(2)* %in
187  %ext = zext <4 x i16> %load to <4 x i32>
188  store <4 x i32> %ext, <4 x i32> addrspace(1)* %out
189  ret void
190}
191
192; FUNC-LABEL: {{^}}constant_sextload_v4i16_to_v4i32:
193; GCN: s_load_dwordx2
194; GCN-DAG: s_ashr_i32
195; GCN-DAG: s_sext_i32_i16
196
197; EG-DAG: VTX_READ_16 [[DST_X:T[0-9]\.[XYZW]]], [[DST_X]]
198; EG-DAG: VTX_READ_16 [[DST_Y:T[0-9]\.[XYZW]]], [[DST_Y]]
199; EG-DAG: VTX_READ_16 [[DST_Z:T[0-9]\.[XYZW]]], [[DST_Z]]
200; EG-DAG: VTX_READ_16 [[DST_W:T[0-9]\.[XYZW]]], [[DST_W]]
201; EG-DAG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST_X]], 0.0, literal
202; EG-DAG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST_Y]], 0.0, literal
203; EG-DAG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST_Z]], 0.0, literal
204; EG-DAG: BFE_INT {{[* ]*}}T{{[0-9].[XYZW]}}, [[DST_W]], 0.0, literal
205; EG-DAG: 16
206; EG-DAG: 16
207; EG-DAG: 16
208; EG-DAG: 16
209define void @constant_sextload_v4i16_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i16> addrspace(2)* %in) #0 {
210  %load = load <4 x i16>, <4 x i16> addrspace(2)* %in
211  %ext = sext <4 x i16> %load to <4 x i32>
212  store <4 x i32> %ext, <4 x i32> addrspace(1)* %out
213  ret void
214}
215
216; FUNC-LABEL: {{^}}constant_zextload_v8i16_to_v8i32:
217; GCN: s_load_dwordx4
218; GCN-DAG: s_and_b32
219; GCN-DAG: s_lshr_b32
220define void @constant_zextload_v8i16_to_v8i32(<8 x i32> addrspace(1)* %out, <8 x i16> addrspace(2)* %in) #0 {
221  %load = load <8 x i16>, <8 x i16> addrspace(2)* %in
222  %ext = zext <8 x i16> %load to <8 x i32>
223  store <8 x i32> %ext, <8 x i32> addrspace(1)* %out
224  ret void
225}
226
227; FUNC-LABEL: {{^}}constant_sextload_v8i16_to_v8i32:
228; GCN: s_load_dwordx4
229; GCN-DAG: s_ashr_i32
230; GCN-DAG: s_sext_i32_i16
231define void @constant_sextload_v8i16_to_v8i32(<8 x i32> addrspace(1)* %out, <8 x i16> addrspace(2)* %in) #0 {
232  %load = load <8 x i16>, <8 x i16> addrspace(2)* %in
233  %ext = sext <8 x i16> %load to <8 x i32>
234  store <8 x i32> %ext, <8 x i32> addrspace(1)* %out
235  ret void
236}
237
238; FUNC-LABEL: {{^}}constant_zextload_v16i16_to_v16i32:
239; GCN: s_load_dwordx8
240; GCN-DAG: s_and_b32
241; GCN-DAG: s_lshr_b32
242define void @constant_zextload_v16i16_to_v16i32(<16 x i32> addrspace(1)* %out, <16 x i16> addrspace(2)* %in) #0 {
243  %load = load <16 x i16>, <16 x i16> addrspace(2)* %in
244  %ext = zext <16 x i16> %load to <16 x i32>
245  store <16 x i32> %ext, <16 x i32> addrspace(1)* %out
246  ret void
247}
248
249; FUNC-LABEL: {{^}}constant_sextload_v16i16_to_v16i32:
250; GCN: s_load_dwordx8
251; GCN-DAG: s_ashr_i32
252; GCN-DAG: s_sext_i32_i16
253define void @constant_sextload_v16i16_to_v16i32(<16 x i32> addrspace(1)* %out, <16 x i16> addrspace(2)* %in) #0 {
254  %load = load <16 x i16>, <16 x i16> addrspace(2)* %in
255  %ext = sext <16 x i16> %load to <16 x i32>
256  store <16 x i32> %ext, <16 x i32> addrspace(1)* %out
257  ret void
258}
259
260; FUNC-LABEL: {{^}}constant_zextload_v32i16_to_v32i32:
261; GCN-DAG: s_load_dwordx16
262; GCN-DAG: s_mov_b32 [[K:s[0-9]+]], 0xffff{{$}}
263; GCN: s_and_b32 s{{[0-9]+}}, s{{[0-9]+}}, [[K]]
264; GCN: s_lshr_b32 s{{[0-9]+}}, s{{[0-9]+}}, 16
265define void @constant_zextload_v32i16_to_v32i32(<32 x i32> addrspace(1)* %out, <32 x i16> addrspace(2)* %in) #0 {
266  %load = load <32 x i16>, <32 x i16> addrspace(2)* %in
267  %ext = zext <32 x i16> %load to <32 x i32>
268  store <32 x i32> %ext, <32 x i32> addrspace(1)* %out
269  ret void
270}
271
272; FUNC-LABEL: {{^}}constant_sextload_v32i16_to_v32i32:
273; GCN: s_load_dwordx16
274; GCN-DAG: s_ashr_i32
275; GCN-DAG: s_sext_i32_i16
276define void @constant_sextload_v32i16_to_v32i32(<32 x i32> addrspace(1)* %out, <32 x i16> addrspace(2)* %in) #0 {
277  %load = load <32 x i16>, <32 x i16> addrspace(2)* %in
278  %ext = sext <32 x i16> %load to <32 x i32>
279  store <32 x i32> %ext, <32 x i32> addrspace(1)* %out
280  ret void
281}
282
283; FUNC-LABEL: {{^}}constant_zextload_v64i16_to_v64i32:
284; GCN: s_load_dwordx16
285; GCN: s_load_dwordx16
286define void @constant_zextload_v64i16_to_v64i32(<64 x i32> addrspace(1)* %out, <64 x i16> addrspace(2)* %in) #0 {
287  %load = load <64 x i16>, <64 x i16> addrspace(2)* %in
288  %ext = zext <64 x i16> %load to <64 x i32>
289  store <64 x i32> %ext, <64 x i32> addrspace(1)* %out
290  ret void
291}
292
293; FUNC-LABEL: {{^}}constant_sextload_v64i16_to_v64i32:
294define void @constant_sextload_v64i16_to_v64i32(<64 x i32> addrspace(1)* %out, <64 x i16> addrspace(2)* %in) #0 {
295  %load = load <64 x i16>, <64 x i16> addrspace(2)* %in
296  %ext = sext <64 x i16> %load to <64 x i32>
297  store <64 x i32> %ext, <64 x i32> addrspace(1)* %out
298  ret void
299}
300
301; FUNC-LABEL: {{^}}constant_zextload_i16_to_i64:
302; GCN-NOHSA-DAG: buffer_load_ushort v[[LO:[0-9]+]],
303; GCN-HSA-DAG: flat_load_ushort v[[LO:[0-9]+]],
304; GCN-DAG: v_mov_b32_e32 v[[HI:[0-9]+]], 0{{$}}
305
306; GCN-NOHSA: buffer_store_dwordx2 v{{\[}}[[LO]]:[[HI]]]
307; GCN-HSA: flat_store_dwordx2 v{{\[[0-9]+:[0-9]+\]}}, v{{\[}}[[LO]]:[[HI]]{{\]}}
308define void @constant_zextload_i16_to_i64(i64 addrspace(1)* %out, i16 addrspace(2)* %in) #0 {
309  %a = load i16, i16 addrspace(2)* %in
310  %ext = zext i16 %a to i64
311  store i64 %ext, i64 addrspace(1)* %out
312  ret void
313}
314
315; FUNC-LABEL: {{^}}constant_sextload_i16_to_i64:
316; GCN-NOHSA-DAG: buffer_load_sshort v[[LO:[0-9]+]],
317; GCN-HSA-DAG: flat_load_sshort v[[LO:[0-9]+]],
318; GCN-DAG: v_ashrrev_i32_e32 v[[HI:[0-9]+]], 31, v[[LO]]
319
320; GCN-NOHSA: buffer_store_dwordx2 v{{\[}}[[LO]]:[[HI]]]
321; GCN-HSA: flat_store_dwordx2 v{{\[[0-9]+:[0-9]+\]}}, v{{\[}}[[LO]]:[[HI]]{{\]}}
322define void @constant_sextload_i16_to_i64(i64 addrspace(1)* %out, i16 addrspace(2)* %in) #0 {
323  %a = load i16, i16 addrspace(2)* %in
324  %ext = sext i16 %a to i64
325  store i64 %ext, i64 addrspace(1)* %out
326  ret void
327}
328
329; FUNC-LABEL: {{^}}constant_zextload_v1i16_to_v1i64:
330define void @constant_zextload_v1i16_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i16> addrspace(2)* %in) #0 {
331  %load = load <1 x i16>, <1 x i16> addrspace(2)* %in
332  %ext = zext <1 x i16> %load to <1 x i64>
333  store <1 x i64> %ext, <1 x i64> addrspace(1)* %out
334  ret void
335}
336
337; FUNC-LABEL: {{^}}constant_sextload_v1i16_to_v1i64:
338define void @constant_sextload_v1i16_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i16> addrspace(2)* %in) #0 {
339  %load = load <1 x i16>, <1 x i16> addrspace(2)* %in
340  %ext = sext <1 x i16> %load to <1 x i64>
341  store <1 x i64> %ext, <1 x i64> addrspace(1)* %out
342  ret void
343}
344
345; FUNC-LABEL: {{^}}constant_zextload_v2i16_to_v2i64:
346define void @constant_zextload_v2i16_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i16> addrspace(2)* %in) #0 {
347  %load = load <2 x i16>, <2 x i16> addrspace(2)* %in
348  %ext = zext <2 x i16> %load to <2 x i64>
349  store <2 x i64> %ext, <2 x i64> addrspace(1)* %out
350  ret void
351}
352
353; FUNC-LABEL: {{^}}constant_sextload_v2i16_to_v2i64:
354define void @constant_sextload_v2i16_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i16> addrspace(2)* %in) #0 {
355  %load = load <2 x i16>, <2 x i16> addrspace(2)* %in
356  %ext = sext <2 x i16> %load to <2 x i64>
357  store <2 x i64> %ext, <2 x i64> addrspace(1)* %out
358  ret void
359}
360
361; FUNC-LABEL: {{^}}constant_zextload_v4i16_to_v4i64:
362define void @constant_zextload_v4i16_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i16> addrspace(2)* %in) #0 {
363  %load = load <4 x i16>, <4 x i16> addrspace(2)* %in
364  %ext = zext <4 x i16> %load to <4 x i64>
365  store <4 x i64> %ext, <4 x i64> addrspace(1)* %out
366  ret void
367}
368
369; FUNC-LABEL: {{^}}constant_sextload_v4i16_to_v4i64:
370define void @constant_sextload_v4i16_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i16> addrspace(2)* %in) #0 {
371  %load = load <4 x i16>, <4 x i16> addrspace(2)* %in
372  %ext = sext <4 x i16> %load to <4 x i64>
373  store <4 x i64> %ext, <4 x i64> addrspace(1)* %out
374  ret void
375}
376
377; FUNC-LABEL: {{^}}constant_zextload_v8i16_to_v8i64:
378define void @constant_zextload_v8i16_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i16> addrspace(2)* %in) #0 {
379  %load = load <8 x i16>, <8 x i16> addrspace(2)* %in
380  %ext = zext <8 x i16> %load to <8 x i64>
381  store <8 x i64> %ext, <8 x i64> addrspace(1)* %out
382  ret void
383}
384
385; FUNC-LABEL: {{^}}constant_sextload_v8i16_to_v8i64:
386define void @constant_sextload_v8i16_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i16> addrspace(2)* %in) #0 {
387  %load = load <8 x i16>, <8 x i16> addrspace(2)* %in
388  %ext = sext <8 x i16> %load to <8 x i64>
389  store <8 x i64> %ext, <8 x i64> addrspace(1)* %out
390  ret void
391}
392
393; FUNC-LABEL: {{^}}constant_zextload_v16i16_to_v16i64:
394define void @constant_zextload_v16i16_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i16> addrspace(2)* %in) #0 {
395  %load = load <16 x i16>, <16 x i16> addrspace(2)* %in
396  %ext = zext <16 x i16> %load to <16 x i64>
397  store <16 x i64> %ext, <16 x i64> addrspace(1)* %out
398  ret void
399}
400
401; FUNC-LABEL: {{^}}constant_sextload_v16i16_to_v16i64:
402define void @constant_sextload_v16i16_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i16> addrspace(2)* %in) #0 {
403  %load = load <16 x i16>, <16 x i16> addrspace(2)* %in
404  %ext = sext <16 x i16> %load to <16 x i64>
405  store <16 x i64> %ext, <16 x i64> addrspace(1)* %out
406  ret void
407}
408
409; FUNC-LABEL: {{^}}constant_zextload_v32i16_to_v32i64:
410define void @constant_zextload_v32i16_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i16> addrspace(2)* %in) #0 {
411  %load = load <32 x i16>, <32 x i16> addrspace(2)* %in
412  %ext = zext <32 x i16> %load to <32 x i64>
413  store <32 x i64> %ext, <32 x i64> addrspace(1)* %out
414  ret void
415}
416
417; FUNC-LABEL: {{^}}constant_sextload_v32i16_to_v32i64:
418define void @constant_sextload_v32i16_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i16> addrspace(2)* %in) #0 {
419  %load = load <32 x i16>, <32 x i16> addrspace(2)* %in
420  %ext = sext <32 x i16> %load to <32 x i64>
421  store <32 x i64> %ext, <32 x i64> addrspace(1)* %out
422  ret void
423}
424
425; ; XFUNC-LABEL: {{^}}constant_zextload_v64i16_to_v64i64:
426; define void @constant_zextload_v64i16_to_v64i64(<64 x i64> addrspace(1)* %out, <64 x i16> addrspace(2)* %in) #0 {
427;   %load = load <64 x i16>, <64 x i16> addrspace(2)* %in
428;   %ext = zext <64 x i16> %load to <64 x i64>
429;   store <64 x i64> %ext, <64 x i64> addrspace(1)* %out
430;   ret void
431; }
432
433; ; XFUNC-LABEL: {{^}}constant_sextload_v64i16_to_v64i64:
434; define void @constant_sextload_v64i16_to_v64i64(<64 x i64> addrspace(1)* %out, <64 x i16> addrspace(2)* %in) #0 {
435;   %load = load <64 x i16>, <64 x i16> addrspace(2)* %in
436;   %ext = sext <64 x i16> %load to <64 x i64>
437;   store <64 x i64> %ext, <64 x i64> addrspace(1)* %out
438;   ret void
439; }
440
441attributes #0 = { nounwind }
442