xref: /llvm-project/llvm/test/CodeGen/VE/VELIntrinsics/vst.ll (revision b006b60dc993b2e0ba3e412c80709477241b6be6)
1; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s
2
3;;; Test vector store intrinsic instructions
4;;;
5;;; Note:
6;;;   We test VST*rrvl, VST*rrvml, VST*irvl, and VST*irvml instructions.
7
8; Function Attrs: nounwind
9define void @vst_vssl(ptr %0, i64 %1) {
10; CHECK-LABEL: vst_vssl:
11; CHECK:       # %bb.0:
12; CHECK-NEXT:    lea %s2, 256
13; CHECK-NEXT:    lvl %s2
14; CHECK-NEXT:    vld %v0, %s1, %s0
15; CHECK-NEXT:    vst %v0, %s1, %s0
16; CHECK-NEXT:    b.l.t (, %s10)
17  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
18  tail call void @llvm.ve.vl.vst.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
19  ret void
20}
21
22; Function Attrs: nounwind readonly
23declare <256 x double> @llvm.ve.vl.vld.vssl(i64, ptr, i32)
24
25; Function Attrs: nounwind writeonly
26declare void @llvm.ve.vl.vst.vssl(<256 x double>, i64, ptr, i32)
27
28; Function Attrs: nounwind
29define void @vst_vssml(ptr %0, i64 %1) {
30; CHECK-LABEL: vst_vssml:
31; CHECK:       # %bb.0:
32; CHECK-NEXT:    lea %s2, 256
33; CHECK-NEXT:    lvl %s2
34; CHECK-NEXT:    vld %v0, %s1, %s0
35; CHECK-NEXT:    vst %v0, %s1, %s0, %vm1
36; CHECK-NEXT:    b.l.t (, %s10)
37  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
38  tail call void @llvm.ve.vl.vst.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
39  ret void
40}
41
42; Function Attrs: nounwind writeonly
43declare void @llvm.ve.vl.vst.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
44
45; Function Attrs: nounwind
46define void @vst_vssl_imm(ptr %0) {
47; CHECK-LABEL: vst_vssl_imm:
48; CHECK:       # %bb.0:
49; CHECK-NEXT:    lea %s1, 256
50; CHECK-NEXT:    lvl %s1
51; CHECK-NEXT:    vld %v0, 8, %s0
52; CHECK-NEXT:    vst %v0, 8, %s0
53; CHECK-NEXT:    b.l.t (, %s10)
54  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
55  tail call void @llvm.ve.vl.vst.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
56  ret void
57}
58
59; Function Attrs: nounwind
60define void @vst_vssml_imm(ptr %0) {
61; CHECK-LABEL: vst_vssml_imm:
62; CHECK:       # %bb.0:
63; CHECK-NEXT:    lea %s1, 256
64; CHECK-NEXT:    lvl %s1
65; CHECK-NEXT:    vld %v0, 8, %s0
66; CHECK-NEXT:    vst %v0, 8, %s0, %vm1
67; CHECK-NEXT:    b.l.t (, %s10)
68  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
69  tail call void @llvm.ve.vl.vst.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
70  ret void
71}
72
73; Function Attrs: nounwind
74define void @vstnc_vssl(ptr %0, i64 %1) {
75; CHECK-LABEL: vstnc_vssl:
76; CHECK:       # %bb.0:
77; CHECK-NEXT:    lea %s2, 256
78; CHECK-NEXT:    lvl %s2
79; CHECK-NEXT:    vld %v0, %s1, %s0
80; CHECK-NEXT:    vst.nc %v0, %s1, %s0
81; CHECK-NEXT:    b.l.t (, %s10)
82  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
83  tail call void @llvm.ve.vl.vstnc.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
84  ret void
85}
86
87; Function Attrs: nounwind writeonly
88declare void @llvm.ve.vl.vstnc.vssl(<256 x double>, i64, ptr, i32)
89
90; Function Attrs: nounwind
91define void @vstnc_vssml(ptr %0, i64 %1) {
92; CHECK-LABEL: vstnc_vssml:
93; CHECK:       # %bb.0:
94; CHECK-NEXT:    lea %s2, 256
95; CHECK-NEXT:    lvl %s2
96; CHECK-NEXT:    vld %v0, %s1, %s0
97; CHECK-NEXT:    vst.nc %v0, %s1, %s0, %vm1
98; CHECK-NEXT:    b.l.t (, %s10)
99  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
100  tail call void @llvm.ve.vl.vstnc.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
101  ret void
102}
103
104; Function Attrs: nounwind writeonly
105declare void @llvm.ve.vl.vstnc.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
106
107; Function Attrs: nounwind
108define void @vstnc_vssl_imm(ptr %0) {
109; CHECK-LABEL: vstnc_vssl_imm:
110; CHECK:       # %bb.0:
111; CHECK-NEXT:    lea %s1, 256
112; CHECK-NEXT:    lvl %s1
113; CHECK-NEXT:    vld %v0, 8, %s0
114; CHECK-NEXT:    vst.nc %v0, 8, %s0
115; CHECK-NEXT:    b.l.t (, %s10)
116  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
117  tail call void @llvm.ve.vl.vstnc.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
118  ret void
119}
120
121; Function Attrs: nounwind
122define void @vstnc_vssml_imm(ptr %0) {
123; CHECK-LABEL: vstnc_vssml_imm:
124; CHECK:       # %bb.0:
125; CHECK-NEXT:    lea %s1, 256
126; CHECK-NEXT:    lvl %s1
127; CHECK-NEXT:    vld %v0, 8, %s0
128; CHECK-NEXT:    vst.nc %v0, 8, %s0, %vm1
129; CHECK-NEXT:    b.l.t (, %s10)
130  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
131  tail call void @llvm.ve.vl.vstnc.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
132  ret void
133}
134
135; Function Attrs: nounwind
136define void @vstot_vssl(ptr %0, i64 %1) {
137; CHECK-LABEL: vstot_vssl:
138; CHECK:       # %bb.0:
139; CHECK-NEXT:    lea %s2, 256
140; CHECK-NEXT:    lvl %s2
141; CHECK-NEXT:    vld %v0, %s1, %s0
142; CHECK-NEXT:    vst.ot %v0, %s1, %s0
143; CHECK-NEXT:    b.l.t (, %s10)
144  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
145  tail call void @llvm.ve.vl.vstot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
146  ret void
147}
148
149; Function Attrs: nounwind writeonly
150declare void @llvm.ve.vl.vstot.vssl(<256 x double>, i64, ptr, i32)
151
152; Function Attrs: nounwind
153define void @vstot_vssml(ptr %0, i64 %1) {
154; CHECK-LABEL: vstot_vssml:
155; CHECK:       # %bb.0:
156; CHECK-NEXT:    lea %s2, 256
157; CHECK-NEXT:    lvl %s2
158; CHECK-NEXT:    vld %v0, %s1, %s0
159; CHECK-NEXT:    vst.ot %v0, %s1, %s0, %vm1
160; CHECK-NEXT:    b.l.t (, %s10)
161  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
162  tail call void @llvm.ve.vl.vstot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
163  ret void
164}
165
166; Function Attrs: nounwind writeonly
167declare void @llvm.ve.vl.vstot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
168
169; Function Attrs: nounwind
170define void @vstot_vssl_imm(ptr %0) {
171; CHECK-LABEL: vstot_vssl_imm:
172; CHECK:       # %bb.0:
173; CHECK-NEXT:    lea %s1, 256
174; CHECK-NEXT:    lvl %s1
175; CHECK-NEXT:    vld %v0, 8, %s0
176; CHECK-NEXT:    vst.ot %v0, 8, %s0
177; CHECK-NEXT:    b.l.t (, %s10)
178  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
179  tail call void @llvm.ve.vl.vstot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
180  ret void
181}
182
183; Function Attrs: nounwind
184define void @vstot_vssml_imm(ptr %0) {
185; CHECK-LABEL: vstot_vssml_imm:
186; CHECK:       # %bb.0:
187; CHECK-NEXT:    lea %s1, 256
188; CHECK-NEXT:    lvl %s1
189; CHECK-NEXT:    vld %v0, 8, %s0
190; CHECK-NEXT:    vst.ot %v0, 8, %s0, %vm1
191; CHECK-NEXT:    b.l.t (, %s10)
192  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
193  tail call void @llvm.ve.vl.vstot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
194  ret void
195}
196
197; Function Attrs: nounwind
198define void @vstncot_vssl(ptr %0, i64 %1) {
199; CHECK-LABEL: vstncot_vssl:
200; CHECK:       # %bb.0:
201; CHECK-NEXT:    lea %s2, 256
202; CHECK-NEXT:    lvl %s2
203; CHECK-NEXT:    vld %v0, %s1, %s0
204; CHECK-NEXT:    vst.nc.ot %v0, %s1, %s0
205; CHECK-NEXT:    b.l.t (, %s10)
206  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
207  tail call void @llvm.ve.vl.vstncot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
208  ret void
209}
210
211; Function Attrs: nounwind writeonly
212declare void @llvm.ve.vl.vstncot.vssl(<256 x double>, i64, ptr, i32)
213
214; Function Attrs: nounwind
215define void @vstncot_vssml(ptr %0, i64 %1) {
216; CHECK-LABEL: vstncot_vssml:
217; CHECK:       # %bb.0:
218; CHECK-NEXT:    lea %s2, 256
219; CHECK-NEXT:    lvl %s2
220; CHECK-NEXT:    vld %v0, %s1, %s0
221; CHECK-NEXT:    vst.nc.ot %v0, %s1, %s0, %vm1
222; CHECK-NEXT:    b.l.t (, %s10)
223  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
224  tail call void @llvm.ve.vl.vstncot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
225  ret void
226}
227
228; Function Attrs: nounwind writeonly
229declare void @llvm.ve.vl.vstncot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
230
231; Function Attrs: nounwind
232define void @vstncot_vssl_imm(ptr %0) {
233; CHECK-LABEL: vstncot_vssl_imm:
234; CHECK:       # %bb.0:
235; CHECK-NEXT:    lea %s1, 256
236; CHECK-NEXT:    lvl %s1
237; CHECK-NEXT:    vld %v0, 8, %s0
238; CHECK-NEXT:    vst.nc.ot %v0, 8, %s0
239; CHECK-NEXT:    b.l.t (, %s10)
240  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
241  tail call void @llvm.ve.vl.vstncot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
242  ret void
243}
244
245; Function Attrs: nounwind
246define void @vstncot_vssml_imm(ptr %0) {
247; CHECK-LABEL: vstncot_vssml_imm:
248; CHECK:       # %bb.0:
249; CHECK-NEXT:    lea %s1, 256
250; CHECK-NEXT:    lvl %s1
251; CHECK-NEXT:    vld %v0, 8, %s0
252; CHECK-NEXT:    vst.nc.ot %v0, 8, %s0, %vm1
253; CHECK-NEXT:    b.l.t (, %s10)
254  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
255  tail call void @llvm.ve.vl.vstncot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
256  ret void
257}
258
259; Function Attrs: nounwind
260define void @vstu_vssl(ptr %0, i64 %1) {
261; CHECK-LABEL: vstu_vssl:
262; CHECK:       # %bb.0:
263; CHECK-NEXT:    lea %s2, 256
264; CHECK-NEXT:    lvl %s2
265; CHECK-NEXT:    vld %v0, %s1, %s0
266; CHECK-NEXT:    vstu %v0, %s1, %s0
267; CHECK-NEXT:    b.l.t (, %s10)
268  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
269  tail call void @llvm.ve.vl.vstu.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
270  ret void
271}
272
273; Function Attrs: nounwind writeonly
274declare void @llvm.ve.vl.vstu.vssl(<256 x double>, i64, ptr, i32)
275
276; Function Attrs: nounwind
277define void @vstu_vssml(ptr %0, i64 %1) {
278; CHECK-LABEL: vstu_vssml:
279; CHECK:       # %bb.0:
280; CHECK-NEXT:    lea %s2, 256
281; CHECK-NEXT:    lvl %s2
282; CHECK-NEXT:    vld %v0, %s1, %s0
283; CHECK-NEXT:    vstu %v0, %s1, %s0, %vm1
284; CHECK-NEXT:    b.l.t (, %s10)
285  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
286  tail call void @llvm.ve.vl.vstu.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
287  ret void
288}
289
290; Function Attrs: nounwind writeonly
291declare void @llvm.ve.vl.vstu.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
292
293; Function Attrs: nounwind
294define void @vstu_vssl_imm(ptr %0) {
295; CHECK-LABEL: vstu_vssl_imm:
296; CHECK:       # %bb.0:
297; CHECK-NEXT:    lea %s1, 256
298; CHECK-NEXT:    lvl %s1
299; CHECK-NEXT:    vld %v0, 8, %s0
300; CHECK-NEXT:    vstu %v0, 8, %s0
301; CHECK-NEXT:    b.l.t (, %s10)
302  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
303  tail call void @llvm.ve.vl.vstu.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
304  ret void
305}
306
307; Function Attrs: nounwind
308define void @vstu_vssml_imm(ptr %0) {
309; CHECK-LABEL: vstu_vssml_imm:
310; CHECK:       # %bb.0:
311; CHECK-NEXT:    lea %s1, 256
312; CHECK-NEXT:    lvl %s1
313; CHECK-NEXT:    vld %v0, 8, %s0
314; CHECK-NEXT:    vstu %v0, 8, %s0, %vm1
315; CHECK-NEXT:    b.l.t (, %s10)
316  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
317  tail call void @llvm.ve.vl.vstu.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
318  ret void
319}
320
321; Function Attrs: nounwind
322define void @vstunc_vssl(ptr %0, i64 %1) {
323; CHECK-LABEL: vstunc_vssl:
324; CHECK:       # %bb.0:
325; CHECK-NEXT:    lea %s2, 256
326; CHECK-NEXT:    lvl %s2
327; CHECK-NEXT:    vld %v0, %s1, %s0
328; CHECK-NEXT:    vstu.nc %v0, %s1, %s0
329; CHECK-NEXT:    b.l.t (, %s10)
330  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
331  tail call void @llvm.ve.vl.vstunc.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
332  ret void
333}
334
335; Function Attrs: nounwind writeonly
336declare void @llvm.ve.vl.vstunc.vssl(<256 x double>, i64, ptr, i32)
337
338; Function Attrs: nounwind
339define void @vstunc_vssml(ptr %0, i64 %1) {
340; CHECK-LABEL: vstunc_vssml:
341; CHECK:       # %bb.0:
342; CHECK-NEXT:    lea %s2, 256
343; CHECK-NEXT:    lvl %s2
344; CHECK-NEXT:    vld %v0, %s1, %s0
345; CHECK-NEXT:    vstu.nc %v0, %s1, %s0, %vm1
346; CHECK-NEXT:    b.l.t (, %s10)
347  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
348  tail call void @llvm.ve.vl.vstunc.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
349  ret void
350}
351
352; Function Attrs: nounwind writeonly
353declare void @llvm.ve.vl.vstunc.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
354
355; Function Attrs: nounwind
356define void @vstunc_vssl_imm(ptr %0) {
357; CHECK-LABEL: vstunc_vssl_imm:
358; CHECK:       # %bb.0:
359; CHECK-NEXT:    lea %s1, 256
360; CHECK-NEXT:    lvl %s1
361; CHECK-NEXT:    vld %v0, 8, %s0
362; CHECK-NEXT:    vstu.nc %v0, 8, %s0
363; CHECK-NEXT:    b.l.t (, %s10)
364  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
365  tail call void @llvm.ve.vl.vstunc.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
366  ret void
367}
368
369; Function Attrs: nounwind
370define void @vstunc_vssml_imm(ptr %0) {
371; CHECK-LABEL: vstunc_vssml_imm:
372; CHECK:       # %bb.0:
373; CHECK-NEXT:    lea %s1, 256
374; CHECK-NEXT:    lvl %s1
375; CHECK-NEXT:    vld %v0, 8, %s0
376; CHECK-NEXT:    vstu.nc %v0, 8, %s0, %vm1
377; CHECK-NEXT:    b.l.t (, %s10)
378  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
379  tail call void @llvm.ve.vl.vstunc.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
380  ret void
381}
382
383; Function Attrs: nounwind
384define void @vstuot_vssl(ptr %0, i64 %1) {
385; CHECK-LABEL: vstuot_vssl:
386; CHECK:       # %bb.0:
387; CHECK-NEXT:    lea %s2, 256
388; CHECK-NEXT:    lvl %s2
389; CHECK-NEXT:    vld %v0, %s1, %s0
390; CHECK-NEXT:    vstu.ot %v0, %s1, %s0
391; CHECK-NEXT:    b.l.t (, %s10)
392  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
393  tail call void @llvm.ve.vl.vstuot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
394  ret void
395}
396
397; Function Attrs: nounwind writeonly
398declare void @llvm.ve.vl.vstuot.vssl(<256 x double>, i64, ptr, i32)
399
400; Function Attrs: nounwind
401define void @vstuot_vssml(ptr %0, i64 %1) {
402; CHECK-LABEL: vstuot_vssml:
403; CHECK:       # %bb.0:
404; CHECK-NEXT:    lea %s2, 256
405; CHECK-NEXT:    lvl %s2
406; CHECK-NEXT:    vld %v0, %s1, %s0
407; CHECK-NEXT:    vstu.ot %v0, %s1, %s0, %vm1
408; CHECK-NEXT:    b.l.t (, %s10)
409  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
410  tail call void @llvm.ve.vl.vstuot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
411  ret void
412}
413
414; Function Attrs: nounwind writeonly
415declare void @llvm.ve.vl.vstuot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
416
417; Function Attrs: nounwind
418define void @vstuot_vssl_imm(ptr %0) {
419; CHECK-LABEL: vstuot_vssl_imm:
420; CHECK:       # %bb.0:
421; CHECK-NEXT:    lea %s1, 256
422; CHECK-NEXT:    lvl %s1
423; CHECK-NEXT:    vld %v0, 8, %s0
424; CHECK-NEXT:    vstu.ot %v0, 8, %s0
425; CHECK-NEXT:    b.l.t (, %s10)
426  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
427  tail call void @llvm.ve.vl.vstuot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
428  ret void
429}
430
431; Function Attrs: nounwind
432define void @vstuot_vssml_imm(ptr %0) {
433; CHECK-LABEL: vstuot_vssml_imm:
434; CHECK:       # %bb.0:
435; CHECK-NEXT:    lea %s1, 256
436; CHECK-NEXT:    lvl %s1
437; CHECK-NEXT:    vld %v0, 8, %s0
438; CHECK-NEXT:    vstu.ot %v0, 8, %s0, %vm1
439; CHECK-NEXT:    b.l.t (, %s10)
440  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
441  tail call void @llvm.ve.vl.vstuot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
442  ret void
443}
444
445; Function Attrs: nounwind
446define void @vstuncot_vssl(ptr %0, i64 %1) {
447; CHECK-LABEL: vstuncot_vssl:
448; CHECK:       # %bb.0:
449; CHECK-NEXT:    lea %s2, 256
450; CHECK-NEXT:    lvl %s2
451; CHECK-NEXT:    vld %v0, %s1, %s0
452; CHECK-NEXT:    vstu.nc.ot %v0, %s1, %s0
453; CHECK-NEXT:    b.l.t (, %s10)
454  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
455  tail call void @llvm.ve.vl.vstuncot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
456  ret void
457}
458
459; Function Attrs: nounwind writeonly
460declare void @llvm.ve.vl.vstuncot.vssl(<256 x double>, i64, ptr, i32)
461
462; Function Attrs: nounwind
463define void @vstuncot_vssml(ptr %0, i64 %1) {
464; CHECK-LABEL: vstuncot_vssml:
465; CHECK:       # %bb.0:
466; CHECK-NEXT:    lea %s2, 256
467; CHECK-NEXT:    lvl %s2
468; CHECK-NEXT:    vld %v0, %s1, %s0
469; CHECK-NEXT:    vstu.nc.ot %v0, %s1, %s0, %vm1
470; CHECK-NEXT:    b.l.t (, %s10)
471  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
472  tail call void @llvm.ve.vl.vstuncot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
473  ret void
474}
475
476; Function Attrs: nounwind writeonly
477declare void @llvm.ve.vl.vstuncot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
478
479; Function Attrs: nounwind
480define void @vstuncot_vssl_imm(ptr %0) {
481; CHECK-LABEL: vstuncot_vssl_imm:
482; CHECK:       # %bb.0:
483; CHECK-NEXT:    lea %s1, 256
484; CHECK-NEXT:    lvl %s1
485; CHECK-NEXT:    vld %v0, 8, %s0
486; CHECK-NEXT:    vstu.nc.ot %v0, 8, %s0
487; CHECK-NEXT:    b.l.t (, %s10)
488  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
489  tail call void @llvm.ve.vl.vstuncot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
490  ret void
491}
492
493; Function Attrs: nounwind
494define void @vstuncot_vssml_imm(ptr %0) {
495; CHECK-LABEL: vstuncot_vssml_imm:
496; CHECK:       # %bb.0:
497; CHECK-NEXT:    lea %s1, 256
498; CHECK-NEXT:    lvl %s1
499; CHECK-NEXT:    vld %v0, 8, %s0
500; CHECK-NEXT:    vstu.nc.ot %v0, 8, %s0, %vm1
501; CHECK-NEXT:    b.l.t (, %s10)
502  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
503  tail call void @llvm.ve.vl.vstuncot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
504  ret void
505}
506
507; Function Attrs: nounwind
508define void @vstl_vssl(ptr %0, i64 %1) {
509; CHECK-LABEL: vstl_vssl:
510; CHECK:       # %bb.0:
511; CHECK-NEXT:    lea %s2, 256
512; CHECK-NEXT:    lvl %s2
513; CHECK-NEXT:    vld %v0, %s1, %s0
514; CHECK-NEXT:    vstl %v0, %s1, %s0
515; CHECK-NEXT:    b.l.t (, %s10)
516  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
517  tail call void @llvm.ve.vl.vstl.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
518  ret void
519}
520
521; Function Attrs: nounwind writeonly
522declare void @llvm.ve.vl.vstl.vssl(<256 x double>, i64, ptr, i32)
523
524; Function Attrs: nounwind
525define void @vstl_vssml(ptr %0, i64 %1) {
526; CHECK-LABEL: vstl_vssml:
527; CHECK:       # %bb.0:
528; CHECK-NEXT:    lea %s2, 256
529; CHECK-NEXT:    lvl %s2
530; CHECK-NEXT:    vld %v0, %s1, %s0
531; CHECK-NEXT:    vstl %v0, %s1, %s0, %vm1
532; CHECK-NEXT:    b.l.t (, %s10)
533  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
534  tail call void @llvm.ve.vl.vstl.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
535  ret void
536}
537
538; Function Attrs: nounwind writeonly
539declare void @llvm.ve.vl.vstl.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
540
541; Function Attrs: nounwind
542define void @vstl_vssl_imm(ptr %0) {
543; CHECK-LABEL: vstl_vssl_imm:
544; CHECK:       # %bb.0:
545; CHECK-NEXT:    lea %s1, 256
546; CHECK-NEXT:    lvl %s1
547; CHECK-NEXT:    vld %v0, 8, %s0
548; CHECK-NEXT:    vstl %v0, 8, %s0
549; CHECK-NEXT:    b.l.t (, %s10)
550  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
551  tail call void @llvm.ve.vl.vstl.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
552  ret void
553}
554
555; Function Attrs: nounwind
556define void @vstl_vssml_imm(ptr %0) {
557; CHECK-LABEL: vstl_vssml_imm:
558; CHECK:       # %bb.0:
559; CHECK-NEXT:    lea %s1, 256
560; CHECK-NEXT:    lvl %s1
561; CHECK-NEXT:    vld %v0, 8, %s0
562; CHECK-NEXT:    vstl %v0, 8, %s0, %vm1
563; CHECK-NEXT:    b.l.t (, %s10)
564  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
565  tail call void @llvm.ve.vl.vstl.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
566  ret void
567}
568
569; Function Attrs: nounwind
570define void @vstlnc_vssl(ptr %0, i64 %1) {
571; CHECK-LABEL: vstlnc_vssl:
572; CHECK:       # %bb.0:
573; CHECK-NEXT:    lea %s2, 256
574; CHECK-NEXT:    lvl %s2
575; CHECK-NEXT:    vld %v0, %s1, %s0
576; CHECK-NEXT:    vstl.nc %v0, %s1, %s0
577; CHECK-NEXT:    b.l.t (, %s10)
578  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
579  tail call void @llvm.ve.vl.vstlnc.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
580  ret void
581}
582
583; Function Attrs: nounwind writeonly
584declare void @llvm.ve.vl.vstlnc.vssl(<256 x double>, i64, ptr, i32)
585
586; Function Attrs: nounwind
587define void @vstlnc_vssml(ptr %0, i64 %1) {
588; CHECK-LABEL: vstlnc_vssml:
589; CHECK:       # %bb.0:
590; CHECK-NEXT:    lea %s2, 256
591; CHECK-NEXT:    lvl %s2
592; CHECK-NEXT:    vld %v0, %s1, %s0
593; CHECK-NEXT:    vstl.nc %v0, %s1, %s0, %vm1
594; CHECK-NEXT:    b.l.t (, %s10)
595  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
596  tail call void @llvm.ve.vl.vstlnc.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
597  ret void
598}
599
600; Function Attrs: nounwind writeonly
601declare void @llvm.ve.vl.vstlnc.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
602
603; Function Attrs: nounwind
604define void @vstlnc_vssl_imm(ptr %0) {
605; CHECK-LABEL: vstlnc_vssl_imm:
606; CHECK:       # %bb.0:
607; CHECK-NEXT:    lea %s1, 256
608; CHECK-NEXT:    lvl %s1
609; CHECK-NEXT:    vld %v0, 8, %s0
610; CHECK-NEXT:    vstl.nc %v0, 8, %s0
611; CHECK-NEXT:    b.l.t (, %s10)
612  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
613  tail call void @llvm.ve.vl.vstlnc.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
614  ret void
615}
616
617; Function Attrs: nounwind
618define void @vstlnc_vssml_imm(ptr %0) {
619; CHECK-LABEL: vstlnc_vssml_imm:
620; CHECK:       # %bb.0:
621; CHECK-NEXT:    lea %s1, 256
622; CHECK-NEXT:    lvl %s1
623; CHECK-NEXT:    vld %v0, 8, %s0
624; CHECK-NEXT:    vstl.nc %v0, 8, %s0, %vm1
625; CHECK-NEXT:    b.l.t (, %s10)
626  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
627  tail call void @llvm.ve.vl.vstlnc.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
628  ret void
629}
630
631; Function Attrs: nounwind
632define void @vstlot_vssl(ptr %0, i64 %1) {
633; CHECK-LABEL: vstlot_vssl:
634; CHECK:       # %bb.0:
635; CHECK-NEXT:    lea %s2, 256
636; CHECK-NEXT:    lvl %s2
637; CHECK-NEXT:    vld %v0, %s1, %s0
638; CHECK-NEXT:    vstl.ot %v0, %s1, %s0
639; CHECK-NEXT:    b.l.t (, %s10)
640  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
641  tail call void @llvm.ve.vl.vstlot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
642  ret void
643}
644
645; Function Attrs: nounwind writeonly
646declare void @llvm.ve.vl.vstlot.vssl(<256 x double>, i64, ptr, i32)
647
648; Function Attrs: nounwind
649define void @vstlot_vssml(ptr %0, i64 %1) {
650; CHECK-LABEL: vstlot_vssml:
651; CHECK:       # %bb.0:
652; CHECK-NEXT:    lea %s2, 256
653; CHECK-NEXT:    lvl %s2
654; CHECK-NEXT:    vld %v0, %s1, %s0
655; CHECK-NEXT:    vstl.ot %v0, %s1, %s0, %vm1
656; CHECK-NEXT:    b.l.t (, %s10)
657  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
658  tail call void @llvm.ve.vl.vstlot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
659  ret void
660}
661
662; Function Attrs: nounwind writeonly
663declare void @llvm.ve.vl.vstlot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
664
665; Function Attrs: nounwind
666define void @vstlot_vssl_imm(ptr %0) {
667; CHECK-LABEL: vstlot_vssl_imm:
668; CHECK:       # %bb.0:
669; CHECK-NEXT:    lea %s1, 256
670; CHECK-NEXT:    lvl %s1
671; CHECK-NEXT:    vld %v0, 8, %s0
672; CHECK-NEXT:    vstl.ot %v0, 8, %s0
673; CHECK-NEXT:    b.l.t (, %s10)
674  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
675  tail call void @llvm.ve.vl.vstlot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
676  ret void
677}
678
679; Function Attrs: nounwind
680define void @vstlot_vssml_imm(ptr %0) {
681; CHECK-LABEL: vstlot_vssml_imm:
682; CHECK:       # %bb.0:
683; CHECK-NEXT:    lea %s1, 256
684; CHECK-NEXT:    lvl %s1
685; CHECK-NEXT:    vld %v0, 8, %s0
686; CHECK-NEXT:    vstl.ot %v0, 8, %s0, %vm1
687; CHECK-NEXT:    b.l.t (, %s10)
688  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
689  tail call void @llvm.ve.vl.vstlot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
690  ret void
691}
692
693; Function Attrs: nounwind
694define void @vstlncot_vssl(ptr %0, i64 %1) {
695; CHECK-LABEL: vstlncot_vssl:
696; CHECK:       # %bb.0:
697; CHECK-NEXT:    lea %s2, 256
698; CHECK-NEXT:    lvl %s2
699; CHECK-NEXT:    vld %v0, %s1, %s0
700; CHECK-NEXT:    vstl.nc.ot %v0, %s1, %s0
701; CHECK-NEXT:    b.l.t (, %s10)
702  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
703  tail call void @llvm.ve.vl.vstlncot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
704  ret void
705}
706
707; Function Attrs: nounwind writeonly
708declare void @llvm.ve.vl.vstlncot.vssl(<256 x double>, i64, ptr, i32)
709
710; Function Attrs: nounwind
711define void @vstlncot_vssml(ptr %0, i64 %1) {
712; CHECK-LABEL: vstlncot_vssml:
713; CHECK:       # %bb.0:
714; CHECK-NEXT:    lea %s2, 256
715; CHECK-NEXT:    lvl %s2
716; CHECK-NEXT:    vld %v0, %s1, %s0
717; CHECK-NEXT:    vstl.nc.ot %v0, %s1, %s0, %vm1
718; CHECK-NEXT:    b.l.t (, %s10)
719  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
720  tail call void @llvm.ve.vl.vstlncot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
721  ret void
722}
723
724; Function Attrs: nounwind writeonly
725declare void @llvm.ve.vl.vstlncot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
726
727; Function Attrs: nounwind
728define void @vstlncot_vssl_imm(ptr %0) {
729; CHECK-LABEL: vstlncot_vssl_imm:
730; CHECK:       # %bb.0:
731; CHECK-NEXT:    lea %s1, 256
732; CHECK-NEXT:    lvl %s1
733; CHECK-NEXT:    vld %v0, 8, %s0
734; CHECK-NEXT:    vstl.nc.ot %v0, 8, %s0
735; CHECK-NEXT:    b.l.t (, %s10)
736  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
737  tail call void @llvm.ve.vl.vstlncot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
738  ret void
739}
740
741; Function Attrs: nounwind
742define void @vstlncot_vssml_imm(ptr %0) {
743; CHECK-LABEL: vstlncot_vssml_imm:
744; CHECK:       # %bb.0:
745; CHECK-NEXT:    lea %s1, 256
746; CHECK-NEXT:    lvl %s1
747; CHECK-NEXT:    vld %v0, 8, %s0
748; CHECK-NEXT:    vstl.nc.ot %v0, 8, %s0, %vm1
749; CHECK-NEXT:    b.l.t (, %s10)
750  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
751  tail call void @llvm.ve.vl.vstlncot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
752  ret void
753}
754
755; Function Attrs: nounwind
756define void @vst2d_vssl(ptr %0, i64 %1) {
757; CHECK-LABEL: vst2d_vssl:
758; CHECK:       # %bb.0:
759; CHECK-NEXT:    lea %s2, 256
760; CHECK-NEXT:    lvl %s2
761; CHECK-NEXT:    vld %v0, %s1, %s0
762; CHECK-NEXT:    vst2d %v0, %s1, %s0
763; CHECK-NEXT:    b.l.t (, %s10)
764  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
765  tail call void @llvm.ve.vl.vst2d.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
766  ret void
767}
768
769; Function Attrs: nounwind writeonly
770declare void @llvm.ve.vl.vst2d.vssl(<256 x double>, i64, ptr, i32)
771
772; Function Attrs: nounwind
773define void @vst2d_vssml(ptr %0, i64 %1) {
774; CHECK-LABEL: vst2d_vssml:
775; CHECK:       # %bb.0:
776; CHECK-NEXT:    lea %s2, 256
777; CHECK-NEXT:    lvl %s2
778; CHECK-NEXT:    vld %v0, %s1, %s0
779; CHECK-NEXT:    vst2d %v0, %s1, %s0, %vm1
780; CHECK-NEXT:    b.l.t (, %s10)
781  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
782  tail call void @llvm.ve.vl.vst2d.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
783  ret void
784}
785
786; Function Attrs: nounwind writeonly
787declare void @llvm.ve.vl.vst2d.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
788
789; Function Attrs: nounwind
790define void @vst2d_vssl_imm(ptr %0) {
791; CHECK-LABEL: vst2d_vssl_imm:
792; CHECK:       # %bb.0:
793; CHECK-NEXT:    lea %s1, 256
794; CHECK-NEXT:    lvl %s1
795; CHECK-NEXT:    vld %v0, 8, %s0
796; CHECK-NEXT:    vst2d %v0, 8, %s0
797; CHECK-NEXT:    b.l.t (, %s10)
798  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
799  tail call void @llvm.ve.vl.vst2d.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
800  ret void
801}
802
803; Function Attrs: nounwind
804define void @vst2d_vssml_imm(ptr %0) {
805; CHECK-LABEL: vst2d_vssml_imm:
806; CHECK:       # %bb.0:
807; CHECK-NEXT:    lea %s1, 256
808; CHECK-NEXT:    lvl %s1
809; CHECK-NEXT:    vld %v0, 8, %s0
810; CHECK-NEXT:    vst2d %v0, 8, %s0, %vm1
811; CHECK-NEXT:    b.l.t (, %s10)
812  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
813  tail call void @llvm.ve.vl.vst2d.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
814  ret void
815}
816
817; Function Attrs: nounwind
818define void @vst2dnc_vssl(ptr %0, i64 %1) {
819; CHECK-LABEL: vst2dnc_vssl:
820; CHECK:       # %bb.0:
821; CHECK-NEXT:    lea %s2, 256
822; CHECK-NEXT:    lvl %s2
823; CHECK-NEXT:    vld %v0, %s1, %s0
824; CHECK-NEXT:    vst2d.nc %v0, %s1, %s0
825; CHECK-NEXT:    b.l.t (, %s10)
826  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
827  tail call void @llvm.ve.vl.vst2dnc.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
828  ret void
829}
830
831; Function Attrs: nounwind writeonly
832declare void @llvm.ve.vl.vst2dnc.vssl(<256 x double>, i64, ptr, i32)
833
834; Function Attrs: nounwind
835define void @vst2dnc_vssml(ptr %0, i64 %1) {
836; CHECK-LABEL: vst2dnc_vssml:
837; CHECK:       # %bb.0:
838; CHECK-NEXT:    lea %s2, 256
839; CHECK-NEXT:    lvl %s2
840; CHECK-NEXT:    vld %v0, %s1, %s0
841; CHECK-NEXT:    vst2d.nc %v0, %s1, %s0, %vm1
842; CHECK-NEXT:    b.l.t (, %s10)
843  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
844  tail call void @llvm.ve.vl.vst2dnc.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
845  ret void
846}
847
848; Function Attrs: nounwind writeonly
849declare void @llvm.ve.vl.vst2dnc.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
850
851; Function Attrs: nounwind
852define void @vst2dnc_vssl_imm(ptr %0) {
853; CHECK-LABEL: vst2dnc_vssl_imm:
854; CHECK:       # %bb.0:
855; CHECK-NEXT:    lea %s1, 256
856; CHECK-NEXT:    lvl %s1
857; CHECK-NEXT:    vld %v0, 8, %s0
858; CHECK-NEXT:    vst2d.nc %v0, 8, %s0
859; CHECK-NEXT:    b.l.t (, %s10)
860  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
861  tail call void @llvm.ve.vl.vst2dnc.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
862  ret void
863}
864
865; Function Attrs: nounwind
866define void @vst2dnc_vssml_imm(ptr %0) {
867; CHECK-LABEL: vst2dnc_vssml_imm:
868; CHECK:       # %bb.0:
869; CHECK-NEXT:    lea %s1, 256
870; CHECK-NEXT:    lvl %s1
871; CHECK-NEXT:    vld %v0, 8, %s0
872; CHECK-NEXT:    vst2d.nc %v0, 8, %s0, %vm1
873; CHECK-NEXT:    b.l.t (, %s10)
874  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
875  tail call void @llvm.ve.vl.vst2dnc.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
876  ret void
877}
878
879; Function Attrs: nounwind
880define void @vst2dot_vssl(ptr %0, i64 %1) {
881; CHECK-LABEL: vst2dot_vssl:
882; CHECK:       # %bb.0:
883; CHECK-NEXT:    lea %s2, 256
884; CHECK-NEXT:    lvl %s2
885; CHECK-NEXT:    vld %v0, %s1, %s0
886; CHECK-NEXT:    vst2d.ot %v0, %s1, %s0
887; CHECK-NEXT:    b.l.t (, %s10)
888  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
889  tail call void @llvm.ve.vl.vst2dot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
890  ret void
891}
892
893; Function Attrs: nounwind writeonly
894declare void @llvm.ve.vl.vst2dot.vssl(<256 x double>, i64, ptr, i32)
895
896; Function Attrs: nounwind
897define void @vst2dot_vssml(ptr %0, i64 %1) {
898; CHECK-LABEL: vst2dot_vssml:
899; CHECK:       # %bb.0:
900; CHECK-NEXT:    lea %s2, 256
901; CHECK-NEXT:    lvl %s2
902; CHECK-NEXT:    vld %v0, %s1, %s0
903; CHECK-NEXT:    vst2d.ot %v0, %s1, %s0, %vm1
904; CHECK-NEXT:    b.l.t (, %s10)
905  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
906  tail call void @llvm.ve.vl.vst2dot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
907  ret void
908}
909
910; Function Attrs: nounwind writeonly
911declare void @llvm.ve.vl.vst2dot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
912
913; Function Attrs: nounwind
914define void @vst2dot_vssl_imm(ptr %0) {
915; CHECK-LABEL: vst2dot_vssl_imm:
916; CHECK:       # %bb.0:
917; CHECK-NEXT:    lea %s1, 256
918; CHECK-NEXT:    lvl %s1
919; CHECK-NEXT:    vld %v0, 8, %s0
920; CHECK-NEXT:    vst2d.ot %v0, 8, %s0
921; CHECK-NEXT:    b.l.t (, %s10)
922  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
923  tail call void @llvm.ve.vl.vst2dot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
924  ret void
925}
926
927; Function Attrs: nounwind
928define void @vst2dot_vssml_imm(ptr %0) {
929; CHECK-LABEL: vst2dot_vssml_imm:
930; CHECK:       # %bb.0:
931; CHECK-NEXT:    lea %s1, 256
932; CHECK-NEXT:    lvl %s1
933; CHECK-NEXT:    vld %v0, 8, %s0
934; CHECK-NEXT:    vst2d.ot %v0, 8, %s0, %vm1
935; CHECK-NEXT:    b.l.t (, %s10)
936  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
937  tail call void @llvm.ve.vl.vst2dot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
938  ret void
939}
940
941; Function Attrs: nounwind
942define void @vst2dncot_vssl(ptr %0, i64 %1) {
943; CHECK-LABEL: vst2dncot_vssl:
944; CHECK:       # %bb.0:
945; CHECK-NEXT:    lea %s2, 256
946; CHECK-NEXT:    lvl %s2
947; CHECK-NEXT:    vld %v0, %s1, %s0
948; CHECK-NEXT:    vst2d.nc.ot %v0, %s1, %s0
949; CHECK-NEXT:    b.l.t (, %s10)
950  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
951  tail call void @llvm.ve.vl.vst2dncot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
952  ret void
953}
954
955; Function Attrs: nounwind writeonly
956declare void @llvm.ve.vl.vst2dncot.vssl(<256 x double>, i64, ptr, i32)
957
958; Function Attrs: nounwind
959define void @vst2dncot_vssml(ptr %0, i64 %1) {
960; CHECK-LABEL: vst2dncot_vssml:
961; CHECK:       # %bb.0:
962; CHECK-NEXT:    lea %s2, 256
963; CHECK-NEXT:    lvl %s2
964; CHECK-NEXT:    vld %v0, %s1, %s0
965; CHECK-NEXT:    vst2d.nc.ot %v0, %s1, %s0, %vm1
966; CHECK-NEXT:    b.l.t (, %s10)
967  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
968  tail call void @llvm.ve.vl.vst2dncot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
969  ret void
970}
971
972; Function Attrs: nounwind writeonly
973declare void @llvm.ve.vl.vst2dncot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
974
975; Function Attrs: nounwind
976define void @vst2dncot_vssl_imm(ptr %0) {
977; CHECK-LABEL: vst2dncot_vssl_imm:
978; CHECK:       # %bb.0:
979; CHECK-NEXT:    lea %s1, 256
980; CHECK-NEXT:    lvl %s1
981; CHECK-NEXT:    vld %v0, 8, %s0
982; CHECK-NEXT:    vst2d.nc.ot %v0, 8, %s0
983; CHECK-NEXT:    b.l.t (, %s10)
984  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
985  tail call void @llvm.ve.vl.vst2dncot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
986  ret void
987}
988
989; Function Attrs: nounwind
990define void @vst2dncot_vssml_imm(ptr %0) {
991; CHECK-LABEL: vst2dncot_vssml_imm:
992; CHECK:       # %bb.0:
993; CHECK-NEXT:    lea %s1, 256
994; CHECK-NEXT:    lvl %s1
995; CHECK-NEXT:    vld %v0, 8, %s0
996; CHECK-NEXT:    vst2d.nc.ot %v0, 8, %s0, %vm1
997; CHECK-NEXT:    b.l.t (, %s10)
998  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
999  tail call void @llvm.ve.vl.vst2dncot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
1000  ret void
1001}
1002
1003; Function Attrs: nounwind
1004define void @vstu2d_vssl(ptr %0, i64 %1) {
1005; CHECK-LABEL: vstu2d_vssl:
1006; CHECK:       # %bb.0:
1007; CHECK-NEXT:    lea %s2, 256
1008; CHECK-NEXT:    lvl %s2
1009; CHECK-NEXT:    vld %v0, %s1, %s0
1010; CHECK-NEXT:    vstu2d %v0, %s1, %s0
1011; CHECK-NEXT:    b.l.t (, %s10)
1012  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
1013  tail call void @llvm.ve.vl.vstu2d.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
1014  ret void
1015}
1016
1017; Function Attrs: nounwind writeonly
1018declare void @llvm.ve.vl.vstu2d.vssl(<256 x double>, i64, ptr, i32)
1019
1020; Function Attrs: nounwind
1021define void @vstu2d_vssml(ptr %0, i64 %1) {
1022; CHECK-LABEL: vstu2d_vssml:
1023; CHECK:       # %bb.0:
1024; CHECK-NEXT:    lea %s2, 256
1025; CHECK-NEXT:    lvl %s2
1026; CHECK-NEXT:    vld %v0, %s1, %s0
1027; CHECK-NEXT:    vstu2d %v0, %s1, %s0, %vm1
1028; CHECK-NEXT:    b.l.t (, %s10)
1029  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
1030  tail call void @llvm.ve.vl.vstu2d.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
1031  ret void
1032}
1033
1034; Function Attrs: nounwind writeonly
1035declare void @llvm.ve.vl.vstu2d.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
1036
1037; Function Attrs: nounwind
1038define void @vstu2d_vssl_imm(ptr %0) {
1039; CHECK-LABEL: vstu2d_vssl_imm:
1040; CHECK:       # %bb.0:
1041; CHECK-NEXT:    lea %s1, 256
1042; CHECK-NEXT:    lvl %s1
1043; CHECK-NEXT:    vld %v0, 8, %s0
1044; CHECK-NEXT:    vstu2d %v0, 8, %s0
1045; CHECK-NEXT:    b.l.t (, %s10)
1046  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
1047  tail call void @llvm.ve.vl.vstu2d.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
1048  ret void
1049}
1050
1051; Function Attrs: nounwind
1052define void @vstu2d_vssml_imm(ptr %0) {
1053; CHECK-LABEL: vstu2d_vssml_imm:
1054; CHECK:       # %bb.0:
1055; CHECK-NEXT:    lea %s1, 256
1056; CHECK-NEXT:    lvl %s1
1057; CHECK-NEXT:    vld %v0, 8, %s0
1058; CHECK-NEXT:    vstu2d %v0, 8, %s0, %vm1
1059; CHECK-NEXT:    b.l.t (, %s10)
1060  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
1061  tail call void @llvm.ve.vl.vstu2d.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
1062  ret void
1063}
1064
1065; Function Attrs: nounwind
1066define void @vstu2dnc_vssl(ptr %0, i64 %1) {
1067; CHECK-LABEL: vstu2dnc_vssl:
1068; CHECK:       # %bb.0:
1069; CHECK-NEXT:    lea %s2, 256
1070; CHECK-NEXT:    lvl %s2
1071; CHECK-NEXT:    vld %v0, %s1, %s0
1072; CHECK-NEXT:    vstu2d.nc %v0, %s1, %s0
1073; CHECK-NEXT:    b.l.t (, %s10)
1074  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
1075  tail call void @llvm.ve.vl.vstu2dnc.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
1076  ret void
1077}
1078
1079; Function Attrs: nounwind writeonly
1080declare void @llvm.ve.vl.vstu2dnc.vssl(<256 x double>, i64, ptr, i32)
1081
1082; Function Attrs: nounwind
1083define void @vstu2dnc_vssml(ptr %0, i64 %1) {
1084; CHECK-LABEL: vstu2dnc_vssml:
1085; CHECK:       # %bb.0:
1086; CHECK-NEXT:    lea %s2, 256
1087; CHECK-NEXT:    lvl %s2
1088; CHECK-NEXT:    vld %v0, %s1, %s0
1089; CHECK-NEXT:    vstu2d.nc %v0, %s1, %s0, %vm1
1090; CHECK-NEXT:    b.l.t (, %s10)
1091  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
1092  tail call void @llvm.ve.vl.vstu2dnc.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
1093  ret void
1094}
1095
1096; Function Attrs: nounwind writeonly
1097declare void @llvm.ve.vl.vstu2dnc.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
1098
1099; Function Attrs: nounwind
1100define void @vstu2dnc_vssl_imm(ptr %0) {
1101; CHECK-LABEL: vstu2dnc_vssl_imm:
1102; CHECK:       # %bb.0:
1103; CHECK-NEXT:    lea %s1, 256
1104; CHECK-NEXT:    lvl %s1
1105; CHECK-NEXT:    vld %v0, 8, %s0
1106; CHECK-NEXT:    vstu2d.nc %v0, 8, %s0
1107; CHECK-NEXT:    b.l.t (, %s10)
1108  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
1109  tail call void @llvm.ve.vl.vstu2dnc.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
1110  ret void
1111}
1112
1113; Function Attrs: nounwind
1114define void @vstu2dnc_vssml_imm(ptr %0) {
1115; CHECK-LABEL: vstu2dnc_vssml_imm:
1116; CHECK:       # %bb.0:
1117; CHECK-NEXT:    lea %s1, 256
1118; CHECK-NEXT:    lvl %s1
1119; CHECK-NEXT:    vld %v0, 8, %s0
1120; CHECK-NEXT:    vstu2d.nc %v0, 8, %s0, %vm1
1121; CHECK-NEXT:    b.l.t (, %s10)
1122  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
1123  tail call void @llvm.ve.vl.vstu2dnc.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
1124  ret void
1125}
1126
1127; Function Attrs: nounwind
1128define void @vstu2dot_vssl(ptr %0, i64 %1) {
1129; CHECK-LABEL: vstu2dot_vssl:
1130; CHECK:       # %bb.0:
1131; CHECK-NEXT:    lea %s2, 256
1132; CHECK-NEXT:    lvl %s2
1133; CHECK-NEXT:    vld %v0, %s1, %s0
1134; CHECK-NEXT:    vstu2d.ot %v0, %s1, %s0
1135; CHECK-NEXT:    b.l.t (, %s10)
1136  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
1137  tail call void @llvm.ve.vl.vstu2dot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
1138  ret void
1139}
1140
1141; Function Attrs: nounwind writeonly
1142declare void @llvm.ve.vl.vstu2dot.vssl(<256 x double>, i64, ptr, i32)
1143
1144; Function Attrs: nounwind
1145define void @vstu2dot_vssml(ptr %0, i64 %1) {
1146; CHECK-LABEL: vstu2dot_vssml:
1147; CHECK:       # %bb.0:
1148; CHECK-NEXT:    lea %s2, 256
1149; CHECK-NEXT:    lvl %s2
1150; CHECK-NEXT:    vld %v0, %s1, %s0
1151; CHECK-NEXT:    vstu2d.ot %v0, %s1, %s0, %vm1
1152; CHECK-NEXT:    b.l.t (, %s10)
1153  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
1154  tail call void @llvm.ve.vl.vstu2dot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
1155  ret void
1156}
1157
1158; Function Attrs: nounwind writeonly
1159declare void @llvm.ve.vl.vstu2dot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
1160
1161; Function Attrs: nounwind
1162define void @vstu2dot_vssl_imm(ptr %0) {
1163; CHECK-LABEL: vstu2dot_vssl_imm:
1164; CHECK:       # %bb.0:
1165; CHECK-NEXT:    lea %s1, 256
1166; CHECK-NEXT:    lvl %s1
1167; CHECK-NEXT:    vld %v0, 8, %s0
1168; CHECK-NEXT:    vstu2d.ot %v0, 8, %s0
1169; CHECK-NEXT:    b.l.t (, %s10)
1170  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
1171  tail call void @llvm.ve.vl.vstu2dot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
1172  ret void
1173}
1174
1175; Function Attrs: nounwind
1176define void @vstu2dot_vssml_imm(ptr %0) {
1177; CHECK-LABEL: vstu2dot_vssml_imm:
1178; CHECK:       # %bb.0:
1179; CHECK-NEXT:    lea %s1, 256
1180; CHECK-NEXT:    lvl %s1
1181; CHECK-NEXT:    vld %v0, 8, %s0
1182; CHECK-NEXT:    vstu2d.ot %v0, 8, %s0, %vm1
1183; CHECK-NEXT:    b.l.t (, %s10)
1184  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
1185  tail call void @llvm.ve.vl.vstu2dot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
1186  ret void
1187}
1188
1189; Function Attrs: nounwind
1190define void @vstu2dncot_vssl(ptr %0, i64 %1) {
1191; CHECK-LABEL: vstu2dncot_vssl:
1192; CHECK:       # %bb.0:
1193; CHECK-NEXT:    lea %s2, 256
1194; CHECK-NEXT:    lvl %s2
1195; CHECK-NEXT:    vld %v0, %s1, %s0
1196; CHECK-NEXT:    vstu2d.nc.ot %v0, %s1, %s0
1197; CHECK-NEXT:    b.l.t (, %s10)
1198  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
1199  tail call void @llvm.ve.vl.vstu2dncot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
1200  ret void
1201}
1202
1203; Function Attrs: nounwind writeonly
1204declare void @llvm.ve.vl.vstu2dncot.vssl(<256 x double>, i64, ptr, i32)
1205
1206; Function Attrs: nounwind
1207define void @vstu2dncot_vssml(ptr %0, i64 %1) {
1208; CHECK-LABEL: vstu2dncot_vssml:
1209; CHECK:       # %bb.0:
1210; CHECK-NEXT:    lea %s2, 256
1211; CHECK-NEXT:    lvl %s2
1212; CHECK-NEXT:    vld %v0, %s1, %s0
1213; CHECK-NEXT:    vstu2d.nc.ot %v0, %s1, %s0, %vm1
1214; CHECK-NEXT:    b.l.t (, %s10)
1215  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
1216  tail call void @llvm.ve.vl.vstu2dncot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
1217  ret void
1218}
1219
1220; Function Attrs: nounwind writeonly
1221declare void @llvm.ve.vl.vstu2dncot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
1222
1223; Function Attrs: nounwind
1224define void @vstu2dncot_vssl_imm(ptr %0) {
1225; CHECK-LABEL: vstu2dncot_vssl_imm:
1226; CHECK:       # %bb.0:
1227; CHECK-NEXT:    lea %s1, 256
1228; CHECK-NEXT:    lvl %s1
1229; CHECK-NEXT:    vld %v0, 8, %s0
1230; CHECK-NEXT:    vstu2d.nc.ot %v0, 8, %s0
1231; CHECK-NEXT:    b.l.t (, %s10)
1232  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
1233  tail call void @llvm.ve.vl.vstu2dncot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
1234  ret void
1235}
1236
1237; Function Attrs: nounwind
1238define void @vstu2dncot_vssml_imm(ptr %0) {
1239; CHECK-LABEL: vstu2dncot_vssml_imm:
1240; CHECK:       # %bb.0:
1241; CHECK-NEXT:    lea %s1, 256
1242; CHECK-NEXT:    lvl %s1
1243; CHECK-NEXT:    vld %v0, 8, %s0
1244; CHECK-NEXT:    vstu2d.nc.ot %v0, 8, %s0, %vm1
1245; CHECK-NEXT:    b.l.t (, %s10)
1246  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
1247  tail call void @llvm.ve.vl.vstu2dncot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
1248  ret void
1249}
1250
1251; Function Attrs: nounwind
1252define void @vstl2d_vssl(ptr %0, i64 %1) {
1253; CHECK-LABEL: vstl2d_vssl:
1254; CHECK:       # %bb.0:
1255; CHECK-NEXT:    lea %s2, 256
1256; CHECK-NEXT:    lvl %s2
1257; CHECK-NEXT:    vld %v0, %s1, %s0
1258; CHECK-NEXT:    vstl2d %v0, %s1, %s0
1259; CHECK-NEXT:    b.l.t (, %s10)
1260  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
1261  tail call void @llvm.ve.vl.vstl2d.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
1262  ret void
1263}
1264
1265; Function Attrs: nounwind writeonly
1266declare void @llvm.ve.vl.vstl2d.vssl(<256 x double>, i64, ptr, i32)
1267
1268; Function Attrs: nounwind
1269define void @vstl2d_vssml(ptr %0, i64 %1) {
1270; CHECK-LABEL: vstl2d_vssml:
1271; CHECK:       # %bb.0:
1272; CHECK-NEXT:    lea %s2, 256
1273; CHECK-NEXT:    lvl %s2
1274; CHECK-NEXT:    vld %v0, %s1, %s0
1275; CHECK-NEXT:    vstl2d %v0, %s1, %s0, %vm1
1276; CHECK-NEXT:    b.l.t (, %s10)
1277  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
1278  tail call void @llvm.ve.vl.vstl2d.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
1279  ret void
1280}
1281
1282; Function Attrs: nounwind writeonly
1283declare void @llvm.ve.vl.vstl2d.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
1284
1285; Function Attrs: nounwind
1286define void @vstl2d_vssl_imm(ptr %0) {
1287; CHECK-LABEL: vstl2d_vssl_imm:
1288; CHECK:       # %bb.0:
1289; CHECK-NEXT:    lea %s1, 256
1290; CHECK-NEXT:    lvl %s1
1291; CHECK-NEXT:    vld %v0, 8, %s0
1292; CHECK-NEXT:    vstl2d %v0, 8, %s0
1293; CHECK-NEXT:    b.l.t (, %s10)
1294  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
1295  tail call void @llvm.ve.vl.vstl2d.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
1296  ret void
1297}
1298
1299; Function Attrs: nounwind
1300define void @vstl2d_vssml_imm(ptr %0) {
1301; CHECK-LABEL: vstl2d_vssml_imm:
1302; CHECK:       # %bb.0:
1303; CHECK-NEXT:    lea %s1, 256
1304; CHECK-NEXT:    lvl %s1
1305; CHECK-NEXT:    vld %v0, 8, %s0
1306; CHECK-NEXT:    vstl2d %v0, 8, %s0, %vm1
1307; CHECK-NEXT:    b.l.t (, %s10)
1308  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
1309  tail call void @llvm.ve.vl.vstl2d.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
1310  ret void
1311}
1312
1313; Function Attrs: nounwind
1314define void @vstl2dnc_vssl(ptr %0, i64 %1) {
1315; CHECK-LABEL: vstl2dnc_vssl:
1316; CHECK:       # %bb.0:
1317; CHECK-NEXT:    lea %s2, 256
1318; CHECK-NEXT:    lvl %s2
1319; CHECK-NEXT:    vld %v0, %s1, %s0
1320; CHECK-NEXT:    vstl2d.nc %v0, %s1, %s0
1321; CHECK-NEXT:    b.l.t (, %s10)
1322  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
1323  tail call void @llvm.ve.vl.vstl2dnc.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
1324  ret void
1325}
1326
1327; Function Attrs: nounwind writeonly
1328declare void @llvm.ve.vl.vstl2dnc.vssl(<256 x double>, i64, ptr, i32)
1329
1330; Function Attrs: nounwind
1331define void @vstl2dnc_vssml(ptr %0, i64 %1) {
1332; CHECK-LABEL: vstl2dnc_vssml:
1333; CHECK:       # %bb.0:
1334; CHECK-NEXT:    lea %s2, 256
1335; CHECK-NEXT:    lvl %s2
1336; CHECK-NEXT:    vld %v0, %s1, %s0
1337; CHECK-NEXT:    vstl2d.nc %v0, %s1, %s0, %vm1
1338; CHECK-NEXT:    b.l.t (, %s10)
1339  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
1340  tail call void @llvm.ve.vl.vstl2dnc.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
1341  ret void
1342}
1343
1344; Function Attrs: nounwind writeonly
1345declare void @llvm.ve.vl.vstl2dnc.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
1346
1347; Function Attrs: nounwind
1348define void @vstl2dnc_vssl_imm(ptr %0) {
1349; CHECK-LABEL: vstl2dnc_vssl_imm:
1350; CHECK:       # %bb.0:
1351; CHECK-NEXT:    lea %s1, 256
1352; CHECK-NEXT:    lvl %s1
1353; CHECK-NEXT:    vld %v0, 8, %s0
1354; CHECK-NEXT:    vstl2d.nc %v0, 8, %s0
1355; CHECK-NEXT:    b.l.t (, %s10)
1356  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
1357  tail call void @llvm.ve.vl.vstl2dnc.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
1358  ret void
1359}
1360
1361; Function Attrs: nounwind
1362define void @vstl2dnc_vssml_imm(ptr %0) {
1363; CHECK-LABEL: vstl2dnc_vssml_imm:
1364; CHECK:       # %bb.0:
1365; CHECK-NEXT:    lea %s1, 256
1366; CHECK-NEXT:    lvl %s1
1367; CHECK-NEXT:    vld %v0, 8, %s0
1368; CHECK-NEXT:    vstl2d.nc %v0, 8, %s0, %vm1
1369; CHECK-NEXT:    b.l.t (, %s10)
1370  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
1371  tail call void @llvm.ve.vl.vstl2dnc.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
1372  ret void
1373}
1374
1375; Function Attrs: nounwind
1376define void @vstl2dot_vssl(ptr %0, i64 %1) {
1377; CHECK-LABEL: vstl2dot_vssl:
1378; CHECK:       # %bb.0:
1379; CHECK-NEXT:    lea %s2, 256
1380; CHECK-NEXT:    lvl %s2
1381; CHECK-NEXT:    vld %v0, %s1, %s0
1382; CHECK-NEXT:    vstl2d.ot %v0, %s1, %s0
1383; CHECK-NEXT:    b.l.t (, %s10)
1384  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
1385  tail call void @llvm.ve.vl.vstl2dot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
1386  ret void
1387}
1388
1389; Function Attrs: nounwind writeonly
1390declare void @llvm.ve.vl.vstl2dot.vssl(<256 x double>, i64, ptr, i32)
1391
1392; Function Attrs: nounwind
1393define void @vstl2dot_vssml(ptr %0, i64 %1) {
1394; CHECK-LABEL: vstl2dot_vssml:
1395; CHECK:       # %bb.0:
1396; CHECK-NEXT:    lea %s2, 256
1397; CHECK-NEXT:    lvl %s2
1398; CHECK-NEXT:    vld %v0, %s1, %s0
1399; CHECK-NEXT:    vstl2d.ot %v0, %s1, %s0, %vm1
1400; CHECK-NEXT:    b.l.t (, %s10)
1401  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
1402  tail call void @llvm.ve.vl.vstl2dot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
1403  ret void
1404}
1405
1406; Function Attrs: nounwind writeonly
1407declare void @llvm.ve.vl.vstl2dot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
1408
1409; Function Attrs: nounwind
1410define void @vstl2dot_vssl_imm(ptr %0) {
1411; CHECK-LABEL: vstl2dot_vssl_imm:
1412; CHECK:       # %bb.0:
1413; CHECK-NEXT:    lea %s1, 256
1414; CHECK-NEXT:    lvl %s1
1415; CHECK-NEXT:    vld %v0, 8, %s0
1416; CHECK-NEXT:    vstl2d.ot %v0, 8, %s0
1417; CHECK-NEXT:    b.l.t (, %s10)
1418  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
1419  tail call void @llvm.ve.vl.vstl2dot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
1420  ret void
1421}
1422
1423; Function Attrs: nounwind
1424define void @vstl2dot_vssml_imm(ptr %0) {
1425; CHECK-LABEL: vstl2dot_vssml_imm:
1426; CHECK:       # %bb.0:
1427; CHECK-NEXT:    lea %s1, 256
1428; CHECK-NEXT:    lvl %s1
1429; CHECK-NEXT:    vld %v0, 8, %s0
1430; CHECK-NEXT:    vstl2d.ot %v0, 8, %s0, %vm1
1431; CHECK-NEXT:    b.l.t (, %s10)
1432  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
1433  tail call void @llvm.ve.vl.vstl2dot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
1434  ret void
1435}
1436
1437; Function Attrs: nounwind
1438define void @vstl2dncot_vssl(ptr %0, i64 %1) {
1439; CHECK-LABEL: vstl2dncot_vssl:
1440; CHECK:       # %bb.0:
1441; CHECK-NEXT:    lea %s2, 256
1442; CHECK-NEXT:    lvl %s2
1443; CHECK-NEXT:    vld %v0, %s1, %s0
1444; CHECK-NEXT:    vstl2d.nc.ot %v0, %s1, %s0
1445; CHECK-NEXT:    b.l.t (, %s10)
1446  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
1447  tail call void @llvm.ve.vl.vstl2dncot.vssl(<256 x double> %3, i64 %1, ptr %0, i32 256)
1448  ret void
1449}
1450
1451; Function Attrs: nounwind writeonly
1452declare void @llvm.ve.vl.vstl2dncot.vssl(<256 x double>, i64, ptr, i32)
1453
1454; Function Attrs: nounwind
1455define void @vstl2dncot_vssml(ptr %0, i64 %1) {
1456; CHECK-LABEL: vstl2dncot_vssml:
1457; CHECK:       # %bb.0:
1458; CHECK-NEXT:    lea %s2, 256
1459; CHECK-NEXT:    lvl %s2
1460; CHECK-NEXT:    vld %v0, %s1, %s0
1461; CHECK-NEXT:    vstl2d.nc.ot %v0, %s1, %s0, %vm1
1462; CHECK-NEXT:    b.l.t (, %s10)
1463  %3 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 %1, ptr %0, i32 256)
1464  tail call void @llvm.ve.vl.vstl2dncot.vssml(<256 x double> %3, i64 %1, ptr %0, <256 x i1> undef, i32 256)
1465  ret void
1466}
1467
1468; Function Attrs: nounwind writeonly
1469declare void @llvm.ve.vl.vstl2dncot.vssml(<256 x double>, i64, ptr, <256 x i1>, i32)
1470
1471; Function Attrs: nounwind
1472define void @vstl2dncot_vssl_imm(ptr %0) {
1473; CHECK-LABEL: vstl2dncot_vssl_imm:
1474; CHECK:       # %bb.0:
1475; CHECK-NEXT:    lea %s1, 256
1476; CHECK-NEXT:    lvl %s1
1477; CHECK-NEXT:    vld %v0, 8, %s0
1478; CHECK-NEXT:    vstl2d.nc.ot %v0, 8, %s0
1479; CHECK-NEXT:    b.l.t (, %s10)
1480  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
1481  tail call void @llvm.ve.vl.vstl2dncot.vssl(<256 x double> %2, i64 8, ptr %0, i32 256)
1482  ret void
1483}
1484
1485; Function Attrs: nounwind
1486define void @vstl2dncot_vssml_imm(ptr %0) {
1487; CHECK-LABEL: vstl2dncot_vssml_imm:
1488; CHECK:       # %bb.0:
1489; CHECK-NEXT:    lea %s1, 256
1490; CHECK-NEXT:    lvl %s1
1491; CHECK-NEXT:    vld %v0, 8, %s0
1492; CHECK-NEXT:    vstl2d.nc.ot %v0, 8, %s0, %vm1
1493; CHECK-NEXT:    b.l.t (, %s10)
1494  %2 = tail call fast <256 x double> @llvm.ve.vl.vld.vssl(i64 8, ptr %0, i32 256)
1495  tail call void @llvm.ve.vl.vstl2dncot.vssml(<256 x double> %2, i64 8, ptr %0, <256 x i1> undef, i32 256)
1496  ret void
1497}
1498