Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / fixed-vectors-vcopysign-vp.ll
blob77a095303675f595a0162b3258627ad85a62c922
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+m,+d,+zfh,+zvfh,+v -target-abi=ilp32d \
3 ; RUN:   -verify-machineinstrs < %s | FileCheck %s
4 ; RUN: llc -mtriple=riscv64 -mattr=+m,+d,+zfh,+zvfh,+v -target-abi=lp64d \
5 ; RUN:   -verify-machineinstrs < %s | FileCheck %s
7 declare <2 x half> @llvm.vp.copysign.v2f16(<2 x half>, <2 x half>, <2 x i1>, i32)
9 define <2 x half> @vfsgnj_vv_v2f16(<2 x half> %va, <2 x half> %vb, <2 x i1> %m, i32 zeroext %evl) {
10 ; CHECK-LABEL: vfsgnj_vv_v2f16:
11 ; CHECK:       # %bb.0:
12 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
13 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v9, v0.t
14 ; CHECK-NEXT:    ret
15   %v = call <2 x half> @llvm.vp.copysign.v2f16(<2 x half> %va, <2 x half> %vb, <2 x i1> %m, i32 %evl)
16   ret <2 x half> %v
19 define <2 x half> @vfsgnj_vv_v2f16_unmasked(<2 x half> %va, <2 x half> %vb, i32 zeroext %evl) {
20 ; CHECK-LABEL: vfsgnj_vv_v2f16_unmasked:
21 ; CHECK:       # %bb.0:
22 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
23 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v9
24 ; CHECK-NEXT:    ret
25   %v = call <2 x half> @llvm.vp.copysign.v2f16(<2 x half> %va, <2 x half> %vb, <2 x i1> splat (i1 true), i32 %evl)
26   ret <2 x half> %v
29 declare <4 x half> @llvm.vp.copysign.v4f16(<4 x half>, <4 x half>, <4 x i1>, i32)
31 define <4 x half> @vfsgnj_vv_v4f16(<4 x half> %va, <4 x half> %vb, <4 x i1> %m, i32 zeroext %evl) {
32 ; CHECK-LABEL: vfsgnj_vv_v4f16:
33 ; CHECK:       # %bb.0:
34 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
35 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v9, v0.t
36 ; CHECK-NEXT:    ret
37   %v = call <4 x half> @llvm.vp.copysign.v4f16(<4 x half> %va, <4 x half> %vb, <4 x i1> %m, i32 %evl)
38   ret <4 x half> %v
41 define <4 x half> @vfsgnj_vv_v4f16_unmasked(<4 x half> %va, <4 x half> %vb, i32 zeroext %evl) {
42 ; CHECK-LABEL: vfsgnj_vv_v4f16_unmasked:
43 ; CHECK:       # %bb.0:
44 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
45 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v9
46 ; CHECK-NEXT:    ret
47   %v = call <4 x half> @llvm.vp.copysign.v4f16(<4 x half> %va, <4 x half> %vb, <4 x i1> splat (i1 true), i32 %evl)
48   ret <4 x half> %v
51 declare <8 x half> @llvm.vp.copysign.v8f16(<8 x half>, <8 x half>, <8 x i1>, i32)
53 define <8 x half> @vfsgnj_vv_v8f16(<8 x half> %va, <8 x half> %vb, <8 x i1> %m, i32 zeroext %evl) {
54 ; CHECK-LABEL: vfsgnj_vv_v8f16:
55 ; CHECK:       # %bb.0:
56 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
57 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v9, v0.t
58 ; CHECK-NEXT:    ret
59   %v = call <8 x half> @llvm.vp.copysign.v8f16(<8 x half> %va, <8 x half> %vb, <8 x i1> %m, i32 %evl)
60   ret <8 x half> %v
63 define <8 x half> @vfsgnj_vv_v8f16_unmasked(<8 x half> %va, <8 x half> %vb, i32 zeroext %evl) {
64 ; CHECK-LABEL: vfsgnj_vv_v8f16_unmasked:
65 ; CHECK:       # %bb.0:
66 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
67 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v9
68 ; CHECK-NEXT:    ret
69   %v = call <8 x half> @llvm.vp.copysign.v8f16(<8 x half> %va, <8 x half> %vb, <8 x i1> splat (i1 true), i32 %evl)
70   ret <8 x half> %v
73 declare <16 x half> @llvm.vp.copysign.v16f16(<16 x half>, <16 x half>, <16 x i1>, i32)
75 define <16 x half> @vfsgnj_vv_v16f16(<16 x half> %va, <16 x half> %vb, <16 x i1> %m, i32 zeroext %evl) {
76 ; CHECK-LABEL: vfsgnj_vv_v16f16:
77 ; CHECK:       # %bb.0:
78 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
79 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v10, v0.t
80 ; CHECK-NEXT:    ret
81   %v = call <16 x half> @llvm.vp.copysign.v16f16(<16 x half> %va, <16 x half> %vb, <16 x i1> %m, i32 %evl)
82   ret <16 x half> %v
85 define <16 x half> @vfsgnj_vv_v16f16_unmasked(<16 x half> %va, <16 x half> %vb, i32 zeroext %evl) {
86 ; CHECK-LABEL: vfsgnj_vv_v16f16_unmasked:
87 ; CHECK:       # %bb.0:
88 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
89 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v10
90 ; CHECK-NEXT:    ret
91   %v = call <16 x half> @llvm.vp.copysign.v16f16(<16 x half> %va, <16 x half> %vb, <16 x i1> splat (i1 true), i32 %evl)
92   ret <16 x half> %v
95 declare <2 x float> @llvm.vp.copysign.v2f32(<2 x float>, <2 x float>, <2 x i1>, i32)
97 define <2 x float> @vfsgnj_vv_v2f32(<2 x float> %va, <2 x float> %vb, <2 x i1> %m, i32 zeroext %evl) {
98 ; CHECK-LABEL: vfsgnj_vv_v2f32:
99 ; CHECK:       # %bb.0:
100 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
101 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v9, v0.t
102 ; CHECK-NEXT:    ret
103   %v = call <2 x float> @llvm.vp.copysign.v2f32(<2 x float> %va, <2 x float> %vb, <2 x i1> %m, i32 %evl)
104   ret <2 x float> %v
107 define <2 x float> @vfsgnj_vv_v2f32_unmasked(<2 x float> %va, <2 x float> %vb, i32 zeroext %evl) {
108 ; CHECK-LABEL: vfsgnj_vv_v2f32_unmasked:
109 ; CHECK:       # %bb.0:
110 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
111 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v9
112 ; CHECK-NEXT:    ret
113   %v = call <2 x float> @llvm.vp.copysign.v2f32(<2 x float> %va, <2 x float> %vb, <2 x i1> splat (i1 true), i32 %evl)
114   ret <2 x float> %v
117 declare <4 x float> @llvm.vp.copysign.v4f32(<4 x float>, <4 x float>, <4 x i1>, i32)
119 define <4 x float> @vfsgnj_vv_v4f32(<4 x float> %va, <4 x float> %vb, <4 x i1> %m, i32 zeroext %evl) {
120 ; CHECK-LABEL: vfsgnj_vv_v4f32:
121 ; CHECK:       # %bb.0:
122 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
123 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v9, v0.t
124 ; CHECK-NEXT:    ret
125   %v = call <4 x float> @llvm.vp.copysign.v4f32(<4 x float> %va, <4 x float> %vb, <4 x i1> %m, i32 %evl)
126   ret <4 x float> %v
129 define <4 x float> @vfsgnj_vv_v4f32_unmasked(<4 x float> %va, <4 x float> %vb, i32 zeroext %evl) {
130 ; CHECK-LABEL: vfsgnj_vv_v4f32_unmasked:
131 ; CHECK:       # %bb.0:
132 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
133 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v9
134 ; CHECK-NEXT:    ret
135   %v = call <4 x float> @llvm.vp.copysign.v4f32(<4 x float> %va, <4 x float> %vb, <4 x i1> splat (i1 true), i32 %evl)
136   ret <4 x float> %v
139 declare <8 x float> @llvm.vp.copysign.v8f32(<8 x float>, <8 x float>, <8 x i1>, i32)
141 define <8 x float> @vfsgnj_vv_v8f32(<8 x float> %va, <8 x float> %vb, <8 x i1> %m, i32 zeroext %evl) {
142 ; CHECK-LABEL: vfsgnj_vv_v8f32:
143 ; CHECK:       # %bb.0:
144 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
145 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v10, v0.t
146 ; CHECK-NEXT:    ret
147   %v = call <8 x float> @llvm.vp.copysign.v8f32(<8 x float> %va, <8 x float> %vb, <8 x i1> %m, i32 %evl)
148   ret <8 x float> %v
151 define <8 x float> @vfsgnj_vv_v8f32_unmasked(<8 x float> %va, <8 x float> %vb, i32 zeroext %evl) {
152 ; CHECK-LABEL: vfsgnj_vv_v8f32_unmasked:
153 ; CHECK:       # %bb.0:
154 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
155 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v10
156 ; CHECK-NEXT:    ret
157   %v = call <8 x float> @llvm.vp.copysign.v8f32(<8 x float> %va, <8 x float> %vb, <8 x i1> splat (i1 true), i32 %evl)
158   ret <8 x float> %v
161 declare <16 x float> @llvm.vp.copysign.v16f32(<16 x float>, <16 x float>, <16 x i1>, i32)
163 define <16 x float> @vfsgnj_vv_v16f32(<16 x float> %va, <16 x float> %vb, <16 x i1> %m, i32 zeroext %evl) {
164 ; CHECK-LABEL: vfsgnj_vv_v16f32:
165 ; CHECK:       # %bb.0:
166 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
167 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v12, v0.t
168 ; CHECK-NEXT:    ret
169   %v = call <16 x float> @llvm.vp.copysign.v16f32(<16 x float> %va, <16 x float> %vb, <16 x i1> %m, i32 %evl)
170   ret <16 x float> %v
173 define <16 x float> @vfsgnj_vv_v16f32_unmasked(<16 x float> %va, <16 x float> %vb, i32 zeroext %evl) {
174 ; CHECK-LABEL: vfsgnj_vv_v16f32_unmasked:
175 ; CHECK:       # %bb.0:
176 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
177 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v12
178 ; CHECK-NEXT:    ret
179   %v = call <16 x float> @llvm.vp.copysign.v16f32(<16 x float> %va, <16 x float> %vb, <16 x i1> splat (i1 true), i32 %evl)
180   ret <16 x float> %v
183 declare <2 x double> @llvm.vp.copysign.v2f64(<2 x double>, <2 x double>, <2 x i1>, i32)
185 define <2 x double> @vfsgnj_vv_v2f64(<2 x double> %va, <2 x double> %vb, <2 x i1> %m, i32 zeroext %evl) {
186 ; CHECK-LABEL: vfsgnj_vv_v2f64:
187 ; CHECK:       # %bb.0:
188 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
189 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v9, v0.t
190 ; CHECK-NEXT:    ret
191   %v = call <2 x double> @llvm.vp.copysign.v2f64(<2 x double> %va, <2 x double> %vb, <2 x i1> %m, i32 %evl)
192   ret <2 x double> %v
195 define <2 x double> @vfsgnj_vv_v2f64_unmasked(<2 x double> %va, <2 x double> %vb, i32 zeroext %evl) {
196 ; CHECK-LABEL: vfsgnj_vv_v2f64_unmasked:
197 ; CHECK:       # %bb.0:
198 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
199 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v9
200 ; CHECK-NEXT:    ret
201   %v = call <2 x double> @llvm.vp.copysign.v2f64(<2 x double> %va, <2 x double> %vb, <2 x i1> splat (i1 true), i32 %evl)
202   ret <2 x double> %v
205 declare <4 x double> @llvm.vp.copysign.v4f64(<4 x double>, <4 x double>, <4 x i1>, i32)
207 define <4 x double> @vfsgnj_vv_v4f64(<4 x double> %va, <4 x double> %vb, <4 x i1> %m, i32 zeroext %evl) {
208 ; CHECK-LABEL: vfsgnj_vv_v4f64:
209 ; CHECK:       # %bb.0:
210 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
211 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v10, v0.t
212 ; CHECK-NEXT:    ret
213   %v = call <4 x double> @llvm.vp.copysign.v4f64(<4 x double> %va, <4 x double> %vb, <4 x i1> %m, i32 %evl)
214   ret <4 x double> %v
217 define <4 x double> @vfsgnj_vv_v4f64_unmasked(<4 x double> %va, <4 x double> %vb, i32 zeroext %evl) {
218 ; CHECK-LABEL: vfsgnj_vv_v4f64_unmasked:
219 ; CHECK:       # %bb.0:
220 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
221 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v10
222 ; CHECK-NEXT:    ret
223   %v = call <4 x double> @llvm.vp.copysign.v4f64(<4 x double> %va, <4 x double> %vb, <4 x i1> splat (i1 true), i32 %evl)
224   ret <4 x double> %v
227 declare <8 x double> @llvm.vp.copysign.v8f64(<8 x double>, <8 x double>, <8 x i1>, i32)
229 define <8 x double> @vfsgnj_vv_v8f64(<8 x double> %va, <8 x double> %vb, <8 x i1> %m, i32 zeroext %evl) {
230 ; CHECK-LABEL: vfsgnj_vv_v8f64:
231 ; CHECK:       # %bb.0:
232 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
233 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v12, v0.t
234 ; CHECK-NEXT:    ret
235   %v = call <8 x double> @llvm.vp.copysign.v8f64(<8 x double> %va, <8 x double> %vb, <8 x i1> %m, i32 %evl)
236   ret <8 x double> %v
239 define <8 x double> @vfsgnj_vv_v8f64_unmasked(<8 x double> %va, <8 x double> %vb, i32 zeroext %evl) {
240 ; CHECK-LABEL: vfsgnj_vv_v8f64_unmasked:
241 ; CHECK:       # %bb.0:
242 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
243 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v12
244 ; CHECK-NEXT:    ret
245   %v = call <8 x double> @llvm.vp.copysign.v8f64(<8 x double> %va, <8 x double> %vb, <8 x i1> splat (i1 true), i32 %evl)
246   ret <8 x double> %v
249 declare <15 x double> @llvm.vp.copysign.v15f64(<15 x double>, <15 x double>, <15 x i1>, i32)
251 define <15 x double> @vfsgnj_vv_v15f64(<15 x double> %va, <15 x double> %vb, <15 x i1> %m, i32 zeroext %evl) {
252 ; CHECK-LABEL: vfsgnj_vv_v15f64:
253 ; CHECK:       # %bb.0:
254 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
255 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v16, v0.t
256 ; CHECK-NEXT:    ret
257   %v = call <15 x double> @llvm.vp.copysign.v15f64(<15 x double> %va, <15 x double> %vb, <15 x i1> %m, i32 %evl)
258   ret <15 x double> %v
261 define <15 x double> @vfsgnj_vv_v15f64_unmasked(<15 x double> %va, <15 x double> %vb, i32 zeroext %evl) {
262 ; CHECK-LABEL: vfsgnj_vv_v15f64_unmasked:
263 ; CHECK:       # %bb.0:
264 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
265 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v16
266 ; CHECK-NEXT:    ret
267   %v = call <15 x double> @llvm.vp.copysign.v15f64(<15 x double> %va, <15 x double> %vb, <15 x i1> splat (i1 true), i32 %evl)
268   ret <15 x double> %v
271 declare <16 x double> @llvm.vp.copysign.v16f64(<16 x double>, <16 x double>, <16 x i1>, i32)
273 define <16 x double> @vfsgnj_vv_v16f64(<16 x double> %va, <16 x double> %vb, <16 x i1> %m, i32 zeroext %evl) {
274 ; CHECK-LABEL: vfsgnj_vv_v16f64:
275 ; CHECK:       # %bb.0:
276 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
277 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v16, v0.t
278 ; CHECK-NEXT:    ret
279   %v = call <16 x double> @llvm.vp.copysign.v16f64(<16 x double> %va, <16 x double> %vb, <16 x i1> %m, i32 %evl)
280   ret <16 x double> %v
283 define <16 x double> @vfsgnj_vv_v16f64_unmasked(<16 x double> %va, <16 x double> %vb, i32 zeroext %evl) {
284 ; CHECK-LABEL: vfsgnj_vv_v16f64_unmasked:
285 ; CHECK:       # %bb.0:
286 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
287 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v16
288 ; CHECK-NEXT:    ret
289   %v = call <16 x double> @llvm.vp.copysign.v16f64(<16 x double> %va, <16 x double> %vb, <16 x i1> splat (i1 true), i32 %evl)
290   ret <16 x double> %v
293 declare <32 x double> @llvm.vp.copysign.v32f64(<32 x double>, <32 x double>, <32 x i1>, i32)
295 define <32 x double> @vfsgnj_vv_v32f64(<32 x double> %va, <32 x double> %vb, <32 x i1> %m, i32 zeroext %evl) {
296 ; CHECK-LABEL: vfsgnj_vv_v32f64:
297 ; CHECK:       # %bb.0:
298 ; CHECK-NEXT:    addi sp, sp, -16
299 ; CHECK-NEXT:    .cfi_def_cfa_offset 16
300 ; CHECK-NEXT:    csrr a1, vlenb
301 ; CHECK-NEXT:    slli a1, a1, 4
302 ; CHECK-NEXT:    sub sp, sp, a1
303 ; CHECK-NEXT:    .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x10, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 16 * vlenb
304 ; CHECK-NEXT:    addi a1, a0, 128
305 ; CHECK-NEXT:    vsetivli zero, 16, e64, m8, ta, ma
306 ; CHECK-NEXT:    vle64.v v24, (a1)
307 ; CHECK-NEXT:    csrr a1, vlenb
308 ; CHECK-NEXT:    slli a1, a1, 3
309 ; CHECK-NEXT:    add a1, sp, a1
310 ; CHECK-NEXT:    addi a1, a1, 16
311 ; CHECK-NEXT:    vs8r.v v24, (a1) # Unknown-size Folded Spill
312 ; CHECK-NEXT:    vle64.v v24, (a0)
313 ; CHECK-NEXT:    addi a0, sp, 16
314 ; CHECK-NEXT:    vs8r.v v24, (a0) # Unknown-size Folded Spill
315 ; CHECK-NEXT:    li a1, 16
316 ; CHECK-NEXT:    vsetivli zero, 2, e8, mf4, ta, ma
317 ; CHECK-NEXT:    vslidedown.vi v7, v0, 2
318 ; CHECK-NEXT:    mv a0, a2
319 ; CHECK-NEXT:    bltu a2, a1, .LBB26_2
320 ; CHECK-NEXT:  # %bb.1:
321 ; CHECK-NEXT:    li a0, 16
322 ; CHECK-NEXT:  .LBB26_2:
323 ; CHECK-NEXT:    addi a1, sp, 16
324 ; CHECK-NEXT:    vl8r.v v24, (a1) # Unknown-size Folded Reload
325 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
326 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v24, v0.t
327 ; CHECK-NEXT:    addi a0, a2, -16
328 ; CHECK-NEXT:    sltu a1, a2, a0
329 ; CHECK-NEXT:    addi a1, a1, -1
330 ; CHECK-NEXT:    and a0, a1, a0
331 ; CHECK-NEXT:    vmv1r.v v0, v7
332 ; CHECK-NEXT:    csrr a1, vlenb
333 ; CHECK-NEXT:    slli a1, a1, 3
334 ; CHECK-NEXT:    add a1, sp, a1
335 ; CHECK-NEXT:    addi a1, a1, 16
336 ; CHECK-NEXT:    vl8r.v v24, (a1) # Unknown-size Folded Reload
337 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
338 ; CHECK-NEXT:    vfsgnj.vv v16, v16, v24, v0.t
339 ; CHECK-NEXT:    csrr a0, vlenb
340 ; CHECK-NEXT:    slli a0, a0, 4
341 ; CHECK-NEXT:    add sp, sp, a0
342 ; CHECK-NEXT:    addi sp, sp, 16
343 ; CHECK-NEXT:    ret
344   %v = call <32 x double> @llvm.vp.copysign.v32f64(<32 x double> %va, <32 x double> %vb, <32 x i1> %m, i32 %evl)
345   ret <32 x double> %v
348 define <32 x double> @vfsgnj_vv_v32f64_unmasked(<32 x double> %va, <32 x double> %vb, i32 zeroext %evl) {
349 ; CHECK-LABEL: vfsgnj_vv_v32f64_unmasked:
350 ; CHECK:       # %bb.0:
351 ; CHECK-NEXT:    addi a1, a0, 128
352 ; CHECK-NEXT:    vsetivli zero, 16, e64, m8, ta, ma
353 ; CHECK-NEXT:    vle64.v v24, (a1)
354 ; CHECK-NEXT:    vle64.v v0, (a0)
355 ; CHECK-NEXT:    li a1, 16
356 ; CHECK-NEXT:    mv a0, a2
357 ; CHECK-NEXT:    bltu a2, a1, .LBB27_2
358 ; CHECK-NEXT:  # %bb.1:
359 ; CHECK-NEXT:    li a0, 16
360 ; CHECK-NEXT:  .LBB27_2:
361 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
362 ; CHECK-NEXT:    vfsgnj.vv v8, v8, v0
363 ; CHECK-NEXT:    addi a0, a2, -16
364 ; CHECK-NEXT:    sltu a1, a2, a0
365 ; CHECK-NEXT:    addi a1, a1, -1
366 ; CHECK-NEXT:    and a0, a1, a0
367 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
368 ; CHECK-NEXT:    vfsgnj.vv v16, v16, v24
369 ; CHECK-NEXT:    ret
370   %v = call <32 x double> @llvm.vp.copysign.v32f64(<32 x double> %va, <32 x double> %vb, <32 x i1> splat (i1 true), i32 %evl)
371   ret <32 x double> %v