Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / VE / Vector / vp_strided_store.ll
blob2f40c6665b087348fe6f0d0cea79370fe0266328
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=ve-unknown-unknown -mattr=+vpu | FileCheck %s
4 declare void @llvm.experimental.vp.strided.store.v256f32.p0.i64(<256 x float> %val, ptr %ptr, i64 %stride, <256 x i1> %mask, i32 %evl)
6 define fastcc void @vp_strided_store_v256f32_rrm(<256 x float> %val, ptr %ptr, i64 %stride, <256 x i1> %mask, i32 %evl) {
7 ; CHECK-LABEL: vp_strided_store_v256f32_rrm:
8 ; CHECK:       # %bb.0:
9 ; CHECK-NEXT:    and %s2, %s2, (32)0
10 ; CHECK-NEXT:    lvl %s2
11 ; CHECK-NEXT:    vstu %v0, %s1, %s0, %vm1
12 ; CHECK-NEXT:    b.l.t (, %s10)
13   call void @llvm.experimental.vp.strided.store.v256f32.p0.i64(<256 x float> %val, ptr %ptr, i64 %stride, <256 x i1> %mask, i32 %evl)
14   ret void
17 define fastcc void @vp_strided_store_v256f32_rr(<256 x float> %val, ptr %ptr, i64 %stride, i32 %evl) {
18 ; CHECK-LABEL: vp_strided_store_v256f32_rr:
19 ; CHECK:       # %bb.0:
20 ; CHECK-NEXT:    and %s2, %s2, (32)0
21 ; CHECK-NEXT:    lvl %s2
22 ; CHECK-NEXT:    vstu %v0, %s1, %s0
23 ; CHECK-NEXT:    b.l.t (, %s10)
24   %one = insertelement <256 x i1> undef, i1 1, i32 0
25   %allones = shufflevector <256 x i1> %one, <256 x i1> undef, <256 x i32> zeroinitializer
26   call void @llvm.experimental.vp.strided.store.v256f32.p0.i64(<256 x float> %val, ptr %ptr, i64 %stride, <256 x i1> %allones, i32 %evl)
27   ret void
30 define fastcc void @vp_strided_store_v256f32_ri(<256 x float> %val, ptr %ptr, i32 %evl) {
31 ; CHECK-LABEL: vp_strided_store_v256f32_ri:
32 ; CHECK:       # %bb.0:
33 ; CHECK-NEXT:    and %s1, %s1, (32)0
34 ; CHECK-NEXT:    lvl %s1
35 ; CHECK-NEXT:    vstu %v0, 24, %s0
36 ; CHECK-NEXT:    b.l.t (, %s10)
37   %one = insertelement <256 x i1> undef, i1 1, i32 0
38   %allones = shufflevector <256 x i1> %one, <256 x i1> undef, <256 x i32> zeroinitializer
39   call void @llvm.experimental.vp.strided.store.v256f32.p0.i64(<256 x float> %val, ptr %ptr, i64 24, <256 x i1> %allones, i32 %evl)
40   ret void
43 declare void @llvm.experimental.vp.strided.store.v256i32.p0.i64(<256 x i32> %val, ptr %ptr, i64 %stride, <256 x i1> %mask, i32 %evl)
45 define fastcc void @vp_strided_store_v256i32_rrm(<256 x i32> %val, ptr %ptr, i64 %stride, <256 x i1> %mask, i32 %evl) {
46 ; CHECK-LABEL: vp_strided_store_v256i32_rrm:
47 ; CHECK:       # %bb.0:
48 ; CHECK-NEXT:    and %s2, %s2, (32)0
49 ; CHECK-NEXT:    lvl %s2
50 ; CHECK-NEXT:    vstl %v0, %s1, %s0, %vm1
51 ; CHECK-NEXT:    b.l.t (, %s10)
52   call void @llvm.experimental.vp.strided.store.v256i32.p0.i64(<256 x i32> %val, ptr %ptr, i64 %stride, <256 x i1> %mask, i32 %evl)
53   ret void
56 define fastcc void @vp_strided_store_v256i32_rr(<256 x i32> %val, ptr %ptr, i64 %stride, i32 %evl) {
57 ; CHECK-LABEL: vp_strided_store_v256i32_rr:
58 ; CHECK:       # %bb.0:
59 ; CHECK-NEXT:    and %s2, %s2, (32)0
60 ; CHECK-NEXT:    lvl %s2
61 ; CHECK-NEXT:    vstl %v0, %s1, %s0
62 ; CHECK-NEXT:    b.l.t (, %s10)
63   %one = insertelement <256 x i1> undef, i1 1, i32 0
64   %allones = shufflevector <256 x i1> %one, <256 x i1> undef, <256 x i32> zeroinitializer
65   call void @llvm.experimental.vp.strided.store.v256i32.p0.i64(<256 x i32> %val, ptr %ptr, i64 %stride, <256 x i1> %allones, i32 %evl)
66   ret void
69 define fastcc void @vp_strided_store_v256i32_ri(<256 x i32> %val, ptr %ptr, i32 %evl) {
70 ; CHECK-LABEL: vp_strided_store_v256i32_ri:
71 ; CHECK:       # %bb.0:
72 ; CHECK-NEXT:    and %s1, %s1, (32)0
73 ; CHECK-NEXT:    lvl %s1
74 ; CHECK-NEXT:    vstl %v0, 24, %s0
75 ; CHECK-NEXT:    b.l.t (, %s10)
76   %one = insertelement <256 x i1> undef, i1 1, i32 0
77   %allones = shufflevector <256 x i1> %one, <256 x i1> undef, <256 x i32> zeroinitializer
78   call void @llvm.experimental.vp.strided.store.v256i32.p0.i64(<256 x i32> %val, ptr %ptr, i64 24, <256 x i1> %allones, i32 %evl)
79   ret void
82 declare void @llvm.experimental.vp.strided.store.v256f64.p0.i64(<256 x double> %val, ptr %ptr, i64 %stride, <256 x i1> %mask, i32 %evl)
84 define fastcc void @vp_strided_store_v256f64_rrm(<256 x double> %val, ptr %ptr, i64 %stride, <256 x i1> %mask, i32 %evl) {
85 ; CHECK-LABEL: vp_strided_store_v256f64_rrm:
86 ; CHECK:       # %bb.0:
87 ; CHECK-NEXT:    and %s2, %s2, (32)0
88 ; CHECK-NEXT:    lvl %s2
89 ; CHECK-NEXT:    vst %v0, %s1, %s0, %vm1
90 ; CHECK-NEXT:    b.l.t (, %s10)
91   call void @llvm.experimental.vp.strided.store.v256f64.p0.i64(<256 x double> %val, ptr %ptr, i64 %stride, <256 x i1> %mask, i32 %evl)
92   ret void
95 define fastcc void @vp_strided_store_v256f64_rr(<256 x double> %val, ptr %ptr, i64 %stride, i32 %evl) {
96 ; CHECK-LABEL: vp_strided_store_v256f64_rr:
97 ; CHECK:       # %bb.0:
98 ; CHECK-NEXT:    and %s2, %s2, (32)0
99 ; CHECK-NEXT:    lvl %s2
100 ; CHECK-NEXT:    vst %v0, %s1, %s0
101 ; CHECK-NEXT:    b.l.t (, %s10)
102   %one = insertelement <256 x i1> undef, i1 1, i32 0
103   %allones = shufflevector <256 x i1> %one, <256 x i1> undef, <256 x i32> zeroinitializer
104   call void @llvm.experimental.vp.strided.store.v256f64.p0.i64(<256 x double> %val, ptr %ptr, i64 %stride, <256 x i1> %allones, i32 %evl)
105   ret void
108 define fastcc void @vp_strided_store_v256f64_ri(<256 x double> %val, ptr %ptr, i32 %evl) {
109 ; CHECK-LABEL: vp_strided_store_v256f64_ri:
110 ; CHECK:       # %bb.0:
111 ; CHECK-NEXT:    and %s1, %s1, (32)0
112 ; CHECK-NEXT:    lvl %s1
113 ; CHECK-NEXT:    vst %v0, 24, %s0
114 ; CHECK-NEXT:    b.l.t (, %s10)
115   %one = insertelement <256 x i1> undef, i1 1, i32 0
116   %allones = shufflevector <256 x i1> %one, <256 x i1> undef, <256 x i32> zeroinitializer
117   call void @llvm.experimental.vp.strided.store.v256f64.p0.i64(<256 x double> %val, ptr %ptr, i64 24, <256 x i1> %allones, i32 %evl)
118   ret void
121 declare void @llvm.experimental.vp.strided.store.v256i64.p0.i64(<256 x i64> %val, ptr %ptr, i64 %stride, <256 x i1> %mask, i32 %evl)
123 define fastcc void @vp_strided_store_v256i64_rrm(<256 x i64> %val, ptr %ptr, i64 %stride, <256 x i1> %mask, i32 %evl) {
124 ; CHECK-LABEL: vp_strided_store_v256i64_rrm:
125 ; CHECK:       # %bb.0:
126 ; CHECK-NEXT:    and %s2, %s2, (32)0
127 ; CHECK-NEXT:    lvl %s2
128 ; CHECK-NEXT:    vst %v0, %s1, %s0, %vm1
129 ; CHECK-NEXT:    b.l.t (, %s10)
130   call void @llvm.experimental.vp.strided.store.v256i64.p0.i64(<256 x i64> %val, ptr %ptr, i64 %stride, <256 x i1> %mask, i32 %evl)
131   ret void
134 define fastcc void @vp_strided_store_v256i64_rr(<256 x i64> %val, ptr %ptr, i64 %stride, i32 %evl) {
135 ; CHECK-LABEL: vp_strided_store_v256i64_rr:
136 ; CHECK:       # %bb.0:
137 ; CHECK-NEXT:    and %s2, %s2, (32)0
138 ; CHECK-NEXT:    lvl %s2
139 ; CHECK-NEXT:    vst %v0, %s1, %s0
140 ; CHECK-NEXT:    b.l.t (, %s10)
141   %one = insertelement <256 x i1> undef, i1 1, i32 0
142   %allones = shufflevector <256 x i1> %one, <256 x i1> undef, <256 x i32> zeroinitializer
143   call void @llvm.experimental.vp.strided.store.v256i64.p0.i64(<256 x i64> %val, ptr %ptr, i64 %stride, <256 x i1> %allones, i32 %evl)
144   ret void
147 define fastcc void @vp_strided_store_v256i64_ri(<256 x i64> %val, ptr %ptr, i32 %evl) {
148 ; CHECK-LABEL: vp_strided_store_v256i64_ri:
149 ; CHECK:       # %bb.0:
150 ; CHECK-NEXT:    and %s1, %s1, (32)0
151 ; CHECK-NEXT:    lvl %s1
152 ; CHECK-NEXT:    vst %v0, 24, %s0
153 ; CHECK-NEXT:    b.l.t (, %s10)
154   %one = insertelement <256 x i1> undef, i1 1, i32 0
155   %allones = shufflevector <256 x i1> %one, <256 x i1> undef, <256 x i32> zeroinitializer
156   call void @llvm.experimental.vp.strided.store.v256i64.p0.i64(<256 x i64> %val, ptr %ptr, i64 24, <256 x i1> %allones, i32 %evl)
157   ret void