xref: /llvm-project/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fmaximum-vp.ll (revision 8ce81f17a16b8b689895c7c093d0401a75c09882)
158cfd563SSimeon K; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
21cb59983SLuke Lau; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfh,+v,+m -target-abi=ilp32d \
358cfd563SSimeon K; RUN:   -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH
41cb59983SLuke Lau; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfh,+v,+m -target-abi=lp64d \
558cfd563SSimeon K; RUN:   -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH
61cb59983SLuke Lau; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfhmin,+v,+m -target-abi=ilp32d \
758cfd563SSimeon K; RUN:   -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN
81cb59983SLuke Lau; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfhmin,+v,+m -target-abi=lp64d \
958cfd563SSimeon K; RUN:   -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN
1058cfd563SSimeon K
1158cfd563SSimeon Kdeclare <2 x half> @llvm.vp.maximum.v2f16(<2 x half>, <2 x half>, <2 x i1>, i32)
1258cfd563SSimeon K
1358cfd563SSimeon Kdefine <2 x half> @vfmax_vv_v2f16(<2 x half> %va, <2 x half> %vb, <2 x i1> %m, i32 zeroext %evl) {
1458cfd563SSimeon K; ZVFH-LABEL: vfmax_vv_v2f16:
1558cfd563SSimeon K; ZVFH:       # %bb.0:
1658cfd563SSimeon K; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
17b6c0f1bfSLuke Lau; ZVFH-NEXT:    vmv1r.v v10, v0
1858cfd563SSimeon K; ZVFH-NEXT:    vmfeq.vv v0, v8, v8, v0.t
1958cfd563SSimeon K; ZVFH-NEXT:    vmerge.vvm v11, v8, v9, v0
2058cfd563SSimeon K; ZVFH-NEXT:    vmv1r.v v0, v10
2158cfd563SSimeon K; ZVFH-NEXT:    vmfeq.vv v0, v9, v9, v0.t
2258cfd563SSimeon K; ZVFH-NEXT:    vmerge.vvm v8, v9, v8, v0
2358cfd563SSimeon K; ZVFH-NEXT:    vmv1r.v v0, v10
2458cfd563SSimeon K; ZVFH-NEXT:    vfmax.vv v8, v8, v11, v0.t
2558cfd563SSimeon K; ZVFH-NEXT:    ret
2658cfd563SSimeon K;
2758cfd563SSimeon K; ZVFHMIN-LABEL: vfmax_vv_v2f16:
2858cfd563SSimeon K; ZVFHMIN:       # %bb.0:
29*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
30b6c0f1bfSLuke Lau; ZVFHMIN-NEXT:    vmv1r.v v10, v0
31*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vfwcvt.f.f.v v11, v9, v0.t
32*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8, v0.t
33*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma
34*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vmfeq.vv v0, v9, v9, v0.t
35*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vmerge.vvm v8, v9, v11, v0
36*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vmv1r.v v0, v10
3758cfd563SSimeon K; ZVFHMIN-NEXT:    vmfeq.vv v0, v11, v11, v0.t
38*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vmerge.vvm v9, v11, v9, v0
3958cfd563SSimeon K; ZVFHMIN-NEXT:    vmv1r.v v0, v10
40*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vfmax.vv v9, v9, v8, v0.t
41*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
42*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9, v0.t
4358cfd563SSimeon K; ZVFHMIN-NEXT:    ret
4458cfd563SSimeon K  %v = call <2 x half> @llvm.vp.maximum.v2f16(<2 x half> %va, <2 x half> %vb, <2 x i1> %m, i32 %evl)
4558cfd563SSimeon K  ret <2 x half> %v
4658cfd563SSimeon K}
4758cfd563SSimeon K
4858cfd563SSimeon Kdefine <2 x half> @vfmax_vv_v2f16_unmasked(<2 x half> %va, <2 x half> %vb, i32 zeroext %evl) {
4958cfd563SSimeon K; ZVFH-LABEL: vfmax_vv_v2f16_unmasked:
5058cfd563SSimeon K; ZVFH:       # %bb.0:
5158cfd563SSimeon K; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
5258cfd563SSimeon K; ZVFH-NEXT:    vmfeq.vv v0, v8, v8
5301a15dcaSPengcheng Wang; ZVFH-NEXT:    vmerge.vvm v10, v8, v9, v0
5401a15dcaSPengcheng Wang; ZVFH-NEXT:    vmfeq.vv v0, v9, v9
5558cfd563SSimeon K; ZVFH-NEXT:    vmerge.vvm v8, v9, v8, v0
5601a15dcaSPengcheng Wang; ZVFH-NEXT:    vfmax.vv v8, v8, v10
5758cfd563SSimeon K; ZVFH-NEXT:    ret
5858cfd563SSimeon K;
5958cfd563SSimeon K; ZVFHMIN-LABEL: vfmax_vv_v2f16_unmasked:
6058cfd563SSimeon K; ZVFHMIN:       # %bb.0:
61*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
6258cfd563SSimeon K; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8
63*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma
649122c523SPengcheng Wang; ZVFHMIN-NEXT:    vmfeq.vv v0, v10, v10
65*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
6601a15dcaSPengcheng Wang; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v9
67*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma
6801a15dcaSPengcheng Wang; ZVFHMIN-NEXT:    vmerge.vvm v9, v10, v8, v0
6901a15dcaSPengcheng Wang; ZVFHMIN-NEXT:    vmfeq.vv v0, v8, v8
7001a15dcaSPengcheng Wang; ZVFHMIN-NEXT:    vmerge.vvm v8, v8, v10, v0
7158cfd563SSimeon K; ZVFHMIN-NEXT:    vfmax.vv v9, v8, v9
72*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
7358cfd563SSimeon K; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9
7458cfd563SSimeon K; ZVFHMIN-NEXT:    ret
75d8d131dfSLuke Lau  %v = call <2 x half> @llvm.vp.maximum.v2f16(<2 x half> %va, <2 x half> %vb, <2 x i1> splat (i1 true), i32 %evl)
7658cfd563SSimeon K  ret <2 x half> %v
7758cfd563SSimeon K}
7858cfd563SSimeon K
7958cfd563SSimeon Kdeclare <4 x half> @llvm.vp.maximum.v4f16(<4 x half>, <4 x half>, <4 x i1>, i32)
8058cfd563SSimeon K
8158cfd563SSimeon Kdefine <4 x half> @vfmax_vv_v4f16(<4 x half> %va, <4 x half> %vb, <4 x i1> %m, i32 zeroext %evl) {
8258cfd563SSimeon K; ZVFH-LABEL: vfmax_vv_v4f16:
8358cfd563SSimeon K; ZVFH:       # %bb.0:
8458cfd563SSimeon K; ZVFH-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
85b6c0f1bfSLuke Lau; ZVFH-NEXT:    vmv1r.v v10, v0
8658cfd563SSimeon K; ZVFH-NEXT:    vmfeq.vv v0, v8, v8, v0.t
8758cfd563SSimeon K; ZVFH-NEXT:    vmerge.vvm v11, v8, v9, v0
8858cfd563SSimeon K; ZVFH-NEXT:    vmv1r.v v0, v10
8958cfd563SSimeon K; ZVFH-NEXT:    vmfeq.vv v0, v9, v9, v0.t
9058cfd563SSimeon K; ZVFH-NEXT:    vmerge.vvm v8, v9, v8, v0
9158cfd563SSimeon K; ZVFH-NEXT:    vmv1r.v v0, v10
9258cfd563SSimeon K; ZVFH-NEXT:    vfmax.vv v8, v8, v11, v0.t
9358cfd563SSimeon K; ZVFH-NEXT:    ret
9458cfd563SSimeon K;
9558cfd563SSimeon K; ZVFHMIN-LABEL: vfmax_vv_v4f16:
9658cfd563SSimeon K; ZVFHMIN:       # %bb.0:
97*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
98b6c0f1bfSLuke Lau; ZVFHMIN-NEXT:    vmv1r.v v10, v0
99*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vfwcvt.f.f.v v11, v9, v0.t
100*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8, v0.t
101*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m1, ta, ma
102*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vmfeq.vv v0, v9, v9, v0.t
103*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vmerge.vvm v8, v9, v11, v0
104*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vmv1r.v v0, v10
10558cfd563SSimeon K; ZVFHMIN-NEXT:    vmfeq.vv v0, v11, v11, v0.t
106*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vmerge.vvm v9, v11, v9, v0
10758cfd563SSimeon K; ZVFHMIN-NEXT:    vmv1r.v v0, v10
108*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vfmax.vv v9, v9, v8, v0.t
109*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma
110*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9, v0.t
11158cfd563SSimeon K; ZVFHMIN-NEXT:    ret
11258cfd563SSimeon K  %v = call <4 x half> @llvm.vp.maximum.v4f16(<4 x half> %va, <4 x half> %vb, <4 x i1> %m, i32 %evl)
11358cfd563SSimeon K  ret <4 x half> %v
11458cfd563SSimeon K}
11558cfd563SSimeon K
11658cfd563SSimeon Kdefine <4 x half> @vfmax_vv_v4f16_unmasked(<4 x half> %va, <4 x half> %vb, i32 zeroext %evl) {
11758cfd563SSimeon K; ZVFH-LABEL: vfmax_vv_v4f16_unmasked:
11858cfd563SSimeon K; ZVFH:       # %bb.0:
11958cfd563SSimeon K; ZVFH-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
12058cfd563SSimeon K; ZVFH-NEXT:    vmfeq.vv v0, v8, v8
12101a15dcaSPengcheng Wang; ZVFH-NEXT:    vmerge.vvm v10, v8, v9, v0
12201a15dcaSPengcheng Wang; ZVFH-NEXT:    vmfeq.vv v0, v9, v9
12358cfd563SSimeon K; ZVFH-NEXT:    vmerge.vvm v8, v9, v8, v0
12401a15dcaSPengcheng Wang; ZVFH-NEXT:    vfmax.vv v8, v8, v10
12558cfd563SSimeon K; ZVFH-NEXT:    ret
12658cfd563SSimeon K;
12758cfd563SSimeon K; ZVFHMIN-LABEL: vfmax_vv_v4f16_unmasked:
12858cfd563SSimeon K; ZVFHMIN:       # %bb.0:
129*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
13058cfd563SSimeon K; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8
131*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m1, ta, ma
1329122c523SPengcheng Wang; ZVFHMIN-NEXT:    vmfeq.vv v0, v10, v10
133*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma
13401a15dcaSPengcheng Wang; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v9
135*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m1, ta, ma
13601a15dcaSPengcheng Wang; ZVFHMIN-NEXT:    vmerge.vvm v9, v10, v8, v0
13701a15dcaSPengcheng Wang; ZVFHMIN-NEXT:    vmfeq.vv v0, v8, v8
13801a15dcaSPengcheng Wang; ZVFHMIN-NEXT:    vmerge.vvm v8, v8, v10, v0
13958cfd563SSimeon K; ZVFHMIN-NEXT:    vfmax.vv v9, v8, v9
140*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma
14158cfd563SSimeon K; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9
14258cfd563SSimeon K; ZVFHMIN-NEXT:    ret
143d8d131dfSLuke Lau  %v = call <4 x half> @llvm.vp.maximum.v4f16(<4 x half> %va, <4 x half> %vb, <4 x i1> splat (i1 true), i32 %evl)
14458cfd563SSimeon K  ret <4 x half> %v
14558cfd563SSimeon K}
14658cfd563SSimeon K
14758cfd563SSimeon Kdeclare <8 x half> @llvm.vp.maximum.v8f16(<8 x half>, <8 x half>, <8 x i1>, i32)
14858cfd563SSimeon K
14958cfd563SSimeon Kdefine <8 x half> @vfmax_vv_v8f16(<8 x half> %va, <8 x half> %vb, <8 x i1> %m, i32 zeroext %evl) {
15058cfd563SSimeon K; ZVFH-LABEL: vfmax_vv_v8f16:
15158cfd563SSimeon K; ZVFH:       # %bb.0:
15258cfd563SSimeon K; ZVFH-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
153b6c0f1bfSLuke Lau; ZVFH-NEXT:    vmv1r.v v10, v0
15458cfd563SSimeon K; ZVFH-NEXT:    vmfeq.vv v0, v8, v8, v0.t
15558cfd563SSimeon K; ZVFH-NEXT:    vmerge.vvm v11, v8, v9, v0
15658cfd563SSimeon K; ZVFH-NEXT:    vmv1r.v v0, v10
15758cfd563SSimeon K; ZVFH-NEXT:    vmfeq.vv v0, v9, v9, v0.t
15858cfd563SSimeon K; ZVFH-NEXT:    vmerge.vvm v8, v9, v8, v0
15958cfd563SSimeon K; ZVFH-NEXT:    vmv1r.v v0, v10
16058cfd563SSimeon K; ZVFH-NEXT:    vfmax.vv v8, v8, v11, v0.t
16158cfd563SSimeon K; ZVFH-NEXT:    ret
16258cfd563SSimeon K;
16358cfd563SSimeon K; ZVFHMIN-LABEL: vfmax_vv_v8f16:
16458cfd563SSimeon K; ZVFHMIN:       # %bb.0:
165*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
166b6c0f1bfSLuke Lau; ZVFHMIN-NEXT:    vmv1r.v v10, v0
167*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v9, v0.t
168*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vfwcvt.f.f.v v14, v8, v0.t
169*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m2, ta, ma
17058cfd563SSimeon K; ZVFHMIN-NEXT:    vmfeq.vv v8, v14, v14, v0.t
17158cfd563SSimeon K; ZVFHMIN-NEXT:    vmv1r.v v0, v8
172*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vmerge.vvm v16, v14, v12, v0
17358cfd563SSimeon K; ZVFHMIN-NEXT:    vmv1r.v v0, v10
174*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vmfeq.vv v8, v12, v12, v0.t
175*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vmv1r.v v0, v8
176*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vmerge.vvm v8, v12, v14, v0
177*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vmv1r.v v0, v10
178*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vfmax.vv v12, v8, v16, v0.t
179*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m1, ta, ma
180*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v12, v0.t
18158cfd563SSimeon K; ZVFHMIN-NEXT:    ret
18258cfd563SSimeon K  %v = call <8 x half> @llvm.vp.maximum.v8f16(<8 x half> %va, <8 x half> %vb, <8 x i1> %m, i32 %evl)
18358cfd563SSimeon K  ret <8 x half> %v
18458cfd563SSimeon K}
18558cfd563SSimeon K
18658cfd563SSimeon Kdefine <8 x half> @vfmax_vv_v8f16_unmasked(<8 x half> %va, <8 x half> %vb, i32 zeroext %evl) {
18758cfd563SSimeon K; ZVFH-LABEL: vfmax_vv_v8f16_unmasked:
18858cfd563SSimeon K; ZVFH:       # %bb.0:
18958cfd563SSimeon K; ZVFH-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
19058cfd563SSimeon K; ZVFH-NEXT:    vmfeq.vv v0, v8, v8
19101a15dcaSPengcheng Wang; ZVFH-NEXT:    vmerge.vvm v10, v8, v9, v0
19201a15dcaSPengcheng Wang; ZVFH-NEXT:    vmfeq.vv v0, v9, v9
19358cfd563SSimeon K; ZVFH-NEXT:    vmerge.vvm v8, v9, v8, v0
19401a15dcaSPengcheng Wang; ZVFH-NEXT:    vfmax.vv v8, v8, v10
19558cfd563SSimeon K; ZVFH-NEXT:    ret
19658cfd563SSimeon K;
19758cfd563SSimeon K; ZVFHMIN-LABEL: vfmax_vv_v8f16_unmasked:
19858cfd563SSimeon K; ZVFHMIN:       # %bb.0:
199*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
20058cfd563SSimeon K; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8
201*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m2, ta, ma
2029122c523SPengcheng Wang; ZVFHMIN-NEXT:    vmfeq.vv v0, v10, v10
203*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m1, ta, ma
20401a15dcaSPengcheng Wang; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v9
205*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m2, ta, ma
20601a15dcaSPengcheng Wang; ZVFHMIN-NEXT:    vmerge.vvm v8, v10, v12, v0
20701a15dcaSPengcheng Wang; ZVFHMIN-NEXT:    vmfeq.vv v0, v12, v12
20801a15dcaSPengcheng Wang; ZVFHMIN-NEXT:    vmerge.vvm v10, v12, v10, v0
20901a15dcaSPengcheng Wang; ZVFHMIN-NEXT:    vfmax.vv v10, v10, v8
210*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m1, ta, ma
21158cfd563SSimeon K; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v10
21258cfd563SSimeon K; ZVFHMIN-NEXT:    ret
213d8d131dfSLuke Lau  %v = call <8 x half> @llvm.vp.maximum.v8f16(<8 x half> %va, <8 x half> %vb, <8 x i1> splat (i1 true), i32 %evl)
21458cfd563SSimeon K  ret <8 x half> %v
21558cfd563SSimeon K}
21658cfd563SSimeon K
21758cfd563SSimeon Kdeclare <16 x half> @llvm.vp.maximum.v16f16(<16 x half>, <16 x half>, <16 x i1>, i32)
21858cfd563SSimeon K
21958cfd563SSimeon Kdefine <16 x half> @vfmax_vv_v16f16(<16 x half> %va, <16 x half> %vb, <16 x i1> %m, i32 zeroext %evl) {
22058cfd563SSimeon K; ZVFH-LABEL: vfmax_vv_v16f16:
22158cfd563SSimeon K; ZVFH:       # %bb.0:
22258cfd563SSimeon K; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
223b6c0f1bfSLuke Lau; ZVFH-NEXT:    vmv1r.v v12, v0
22458cfd563SSimeon K; ZVFH-NEXT:    vmfeq.vv v13, v8, v8, v0.t
22558cfd563SSimeon K; ZVFH-NEXT:    vmv1r.v v0, v13
22658cfd563SSimeon K; ZVFH-NEXT:    vmerge.vvm v14, v8, v10, v0
22758cfd563SSimeon K; ZVFH-NEXT:    vmv1r.v v0, v12
22858cfd563SSimeon K; ZVFH-NEXT:    vmfeq.vv v13, v10, v10, v0.t
22958cfd563SSimeon K; ZVFH-NEXT:    vmv1r.v v0, v13
23058cfd563SSimeon K; ZVFH-NEXT:    vmerge.vvm v8, v10, v8, v0
23158cfd563SSimeon K; ZVFH-NEXT:    vmv1r.v v0, v12
23258cfd563SSimeon K; ZVFH-NEXT:    vfmax.vv v8, v8, v14, v0.t
23358cfd563SSimeon K; ZVFH-NEXT:    ret
23458cfd563SSimeon K;
23558cfd563SSimeon K; ZVFHMIN-LABEL: vfmax_vv_v16f16:
23658cfd563SSimeon K; ZVFHMIN:       # %bb.0:
237*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
238b6c0f1bfSLuke Lau; ZVFHMIN-NEXT:    vmv1r.v v12, v0
239*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10, v0.t
240*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vfwcvt.f.f.v v20, v8, v0.t
241*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m4, ta, ma
24258cfd563SSimeon K; ZVFHMIN-NEXT:    vmfeq.vv v8, v20, v20, v0.t
24358cfd563SSimeon K; ZVFHMIN-NEXT:    vmv1r.v v0, v8
244*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vmerge.vvm v24, v20, v16, v0
24558cfd563SSimeon K; ZVFHMIN-NEXT:    vmv1r.v v0, v12
246*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vmfeq.vv v8, v16, v16, v0.t
247*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vmv1r.v v0, v8
248*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vmerge.vvm v8, v16, v20, v0
249*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vmv1r.v v0, v12
250*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vfmax.vv v16, v8, v24, v0.t
251*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
252*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v16, v0.t
25358cfd563SSimeon K; ZVFHMIN-NEXT:    ret
25458cfd563SSimeon K  %v = call <16 x half> @llvm.vp.maximum.v16f16(<16 x half> %va, <16 x half> %vb, <16 x i1> %m, i32 %evl)
25558cfd563SSimeon K  ret <16 x half> %v
25658cfd563SSimeon K}
25758cfd563SSimeon K
25858cfd563SSimeon Kdefine <16 x half> @vfmax_vv_v16f16_unmasked(<16 x half> %va, <16 x half> %vb, i32 zeroext %evl) {
25958cfd563SSimeon K; ZVFH-LABEL: vfmax_vv_v16f16_unmasked:
26058cfd563SSimeon K; ZVFH:       # %bb.0:
26158cfd563SSimeon K; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
26258cfd563SSimeon K; ZVFH-NEXT:    vmfeq.vv v0, v8, v8
26301a15dcaSPengcheng Wang; ZVFH-NEXT:    vmerge.vvm v12, v8, v10, v0
26401a15dcaSPengcheng Wang; ZVFH-NEXT:    vmfeq.vv v0, v10, v10
26558cfd563SSimeon K; ZVFH-NEXT:    vmerge.vvm v8, v10, v8, v0
26601a15dcaSPengcheng Wang; ZVFH-NEXT:    vfmax.vv v8, v8, v12
26758cfd563SSimeon K; ZVFH-NEXT:    ret
26858cfd563SSimeon K;
26958cfd563SSimeon K; ZVFHMIN-LABEL: vfmax_vv_v16f16_unmasked:
27058cfd563SSimeon K; ZVFHMIN:       # %bb.0:
271*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
27258cfd563SSimeon K; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
273*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m4, ta, ma
2749122c523SPengcheng Wang; ZVFHMIN-NEXT:    vmfeq.vv v0, v12, v12
275*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
27601a15dcaSPengcheng Wang; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
277*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m4, ta, ma
27801a15dcaSPengcheng Wang; ZVFHMIN-NEXT:    vmerge.vvm v8, v12, v16, v0
27901a15dcaSPengcheng Wang; ZVFHMIN-NEXT:    vmfeq.vv v0, v16, v16
28001a15dcaSPengcheng Wang; ZVFHMIN-NEXT:    vmerge.vvm v12, v16, v12, v0
28101a15dcaSPengcheng Wang; ZVFHMIN-NEXT:    vfmax.vv v12, v12, v8
282*8ce81f17SCraig Topper; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
28358cfd563SSimeon K; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v12
28458cfd563SSimeon K; ZVFHMIN-NEXT:    ret
285d8d131dfSLuke Lau  %v = call <16 x half> @llvm.vp.maximum.v16f16(<16 x half> %va, <16 x half> %vb, <16 x i1> splat (i1 true), i32 %evl)
28658cfd563SSimeon K  ret <16 x half> %v
28758cfd563SSimeon K}
28858cfd563SSimeon K
28958cfd563SSimeon Kdeclare <2 x float> @llvm.vp.maximum.v2f32(<2 x float>, <2 x float>, <2 x i1>, i32)
29058cfd563SSimeon K
29158cfd563SSimeon Kdefine <2 x float> @vfmax_vv_v2f32(<2 x float> %va, <2 x float> %vb, <2 x i1> %m, i32 zeroext %evl) {
29258cfd563SSimeon K; CHECK-LABEL: vfmax_vv_v2f32:
29358cfd563SSimeon K; CHECK:       # %bb.0:
29458cfd563SSimeon K; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
295b6c0f1bfSLuke Lau; CHECK-NEXT:    vmv1r.v v10, v0
29658cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v0, v8, v8, v0.t
29758cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v11, v8, v9, v0
29858cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v10
29958cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v0, v9, v9, v0.t
30058cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v8, v9, v8, v0
30158cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v10
30258cfd563SSimeon K; CHECK-NEXT:    vfmax.vv v8, v8, v11, v0.t
30358cfd563SSimeon K; CHECK-NEXT:    ret
30458cfd563SSimeon K  %v = call <2 x float> @llvm.vp.maximum.v2f32(<2 x float> %va, <2 x float> %vb, <2 x i1> %m, i32 %evl)
30558cfd563SSimeon K  ret <2 x float> %v
30658cfd563SSimeon K}
30758cfd563SSimeon K
30858cfd563SSimeon Kdefine <2 x float> @vfmax_vv_v2f32_unmasked(<2 x float> %va, <2 x float> %vb, i32 zeroext %evl) {
30958cfd563SSimeon K; CHECK-LABEL: vfmax_vv_v2f32_unmasked:
31058cfd563SSimeon K; CHECK:       # %bb.0:
31158cfd563SSimeon K; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
31258cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v0, v8, v8
31301a15dcaSPengcheng Wang; CHECK-NEXT:    vmerge.vvm v10, v8, v9, v0
31401a15dcaSPengcheng Wang; CHECK-NEXT:    vmfeq.vv v0, v9, v9
31558cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v8, v9, v8, v0
31601a15dcaSPengcheng Wang; CHECK-NEXT:    vfmax.vv v8, v8, v10
31758cfd563SSimeon K; CHECK-NEXT:    ret
318d8d131dfSLuke Lau  %v = call <2 x float> @llvm.vp.maximum.v2f32(<2 x float> %va, <2 x float> %vb, <2 x i1> splat (i1 true), i32 %evl)
31958cfd563SSimeon K  ret <2 x float> %v
32058cfd563SSimeon K}
32158cfd563SSimeon K
32258cfd563SSimeon Kdeclare <4 x float> @llvm.vp.maximum.v4f32(<4 x float>, <4 x float>, <4 x i1>, i32)
32358cfd563SSimeon K
32458cfd563SSimeon Kdefine <4 x float> @vfmax_vv_v4f32(<4 x float> %va, <4 x float> %vb, <4 x i1> %m, i32 zeroext %evl) {
32558cfd563SSimeon K; CHECK-LABEL: vfmax_vv_v4f32:
32658cfd563SSimeon K; CHECK:       # %bb.0:
32758cfd563SSimeon K; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
328b6c0f1bfSLuke Lau; CHECK-NEXT:    vmv1r.v v10, v0
32958cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v0, v8, v8, v0.t
33058cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v11, v8, v9, v0
33158cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v10
33258cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v0, v9, v9, v0.t
33358cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v8, v9, v8, v0
33458cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v10
33558cfd563SSimeon K; CHECK-NEXT:    vfmax.vv v8, v8, v11, v0.t
33658cfd563SSimeon K; CHECK-NEXT:    ret
33758cfd563SSimeon K  %v = call <4 x float> @llvm.vp.maximum.v4f32(<4 x float> %va, <4 x float> %vb, <4 x i1> %m, i32 %evl)
33858cfd563SSimeon K  ret <4 x float> %v
33958cfd563SSimeon K}
34058cfd563SSimeon K
34158cfd563SSimeon Kdefine <4 x float> @vfmax_vv_v4f32_unmasked(<4 x float> %va, <4 x float> %vb, i32 zeroext %evl) {
34258cfd563SSimeon K; CHECK-LABEL: vfmax_vv_v4f32_unmasked:
34358cfd563SSimeon K; CHECK:       # %bb.0:
34458cfd563SSimeon K; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
34558cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v0, v8, v8
34601a15dcaSPengcheng Wang; CHECK-NEXT:    vmerge.vvm v10, v8, v9, v0
34701a15dcaSPengcheng Wang; CHECK-NEXT:    vmfeq.vv v0, v9, v9
34858cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v8, v9, v8, v0
34901a15dcaSPengcheng Wang; CHECK-NEXT:    vfmax.vv v8, v8, v10
35058cfd563SSimeon K; CHECK-NEXT:    ret
351d8d131dfSLuke Lau  %v = call <4 x float> @llvm.vp.maximum.v4f32(<4 x float> %va, <4 x float> %vb, <4 x i1> splat (i1 true), i32 %evl)
35258cfd563SSimeon K  ret <4 x float> %v
35358cfd563SSimeon K}
35458cfd563SSimeon K
35558cfd563SSimeon Kdeclare <8 x float> @llvm.vp.maximum.v8f32(<8 x float>, <8 x float>, <8 x i1>, i32)
35658cfd563SSimeon K
35758cfd563SSimeon Kdefine <8 x float> @vfmax_vv_v8f32(<8 x float> %va, <8 x float> %vb, <8 x i1> %m, i32 zeroext %evl) {
35858cfd563SSimeon K; CHECK-LABEL: vfmax_vv_v8f32:
35958cfd563SSimeon K; CHECK:       # %bb.0:
36058cfd563SSimeon K; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
361b6c0f1bfSLuke Lau; CHECK-NEXT:    vmv1r.v v12, v0
36258cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v13, v8, v8, v0.t
36358cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v13
36458cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v14, v8, v10, v0
36558cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v12
36658cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v13, v10, v10, v0.t
36758cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v13
36858cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v8, v10, v8, v0
36958cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v12
37058cfd563SSimeon K; CHECK-NEXT:    vfmax.vv v8, v8, v14, v0.t
37158cfd563SSimeon K; CHECK-NEXT:    ret
37258cfd563SSimeon K  %v = call <8 x float> @llvm.vp.maximum.v8f32(<8 x float> %va, <8 x float> %vb, <8 x i1> %m, i32 %evl)
37358cfd563SSimeon K  ret <8 x float> %v
37458cfd563SSimeon K}
37558cfd563SSimeon K
37658cfd563SSimeon Kdefine <8 x float> @vfmax_vv_v8f32_unmasked(<8 x float> %va, <8 x float> %vb, i32 zeroext %evl) {
37758cfd563SSimeon K; CHECK-LABEL: vfmax_vv_v8f32_unmasked:
37858cfd563SSimeon K; CHECK:       # %bb.0:
37958cfd563SSimeon K; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
38058cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v0, v8, v8
38101a15dcaSPengcheng Wang; CHECK-NEXT:    vmerge.vvm v12, v8, v10, v0
38201a15dcaSPengcheng Wang; CHECK-NEXT:    vmfeq.vv v0, v10, v10
38358cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v8, v10, v8, v0
38401a15dcaSPengcheng Wang; CHECK-NEXT:    vfmax.vv v8, v8, v12
38558cfd563SSimeon K; CHECK-NEXT:    ret
386d8d131dfSLuke Lau  %v = call <8 x float> @llvm.vp.maximum.v8f32(<8 x float> %va, <8 x float> %vb, <8 x i1> splat (i1 true), i32 %evl)
38758cfd563SSimeon K  ret <8 x float> %v
38858cfd563SSimeon K}
38958cfd563SSimeon K
39058cfd563SSimeon Kdeclare <16 x float> @llvm.vp.maximum.v16f32(<16 x float>, <16 x float>, <16 x i1>, i32)
39158cfd563SSimeon K
39258cfd563SSimeon Kdefine <16 x float> @vfmax_vv_v16f32(<16 x float> %va, <16 x float> %vb, <16 x i1> %m, i32 zeroext %evl) {
39358cfd563SSimeon K; CHECK-LABEL: vfmax_vv_v16f32:
39458cfd563SSimeon K; CHECK:       # %bb.0:
39558cfd563SSimeon K; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
396b6c0f1bfSLuke Lau; CHECK-NEXT:    vmv1r.v v16, v0
39758cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v17, v8, v8, v0.t
39858cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v17
39958cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v20, v8, v12, v0
40058cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v16
40158cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v17, v12, v12, v0.t
40258cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v17
40358cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v8, v12, v8, v0
40458cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v16
40558cfd563SSimeon K; CHECK-NEXT:    vfmax.vv v8, v8, v20, v0.t
40658cfd563SSimeon K; CHECK-NEXT:    ret
40758cfd563SSimeon K  %v = call <16 x float> @llvm.vp.maximum.v16f32(<16 x float> %va, <16 x float> %vb, <16 x i1> %m, i32 %evl)
40858cfd563SSimeon K  ret <16 x float> %v
40958cfd563SSimeon K}
41058cfd563SSimeon K
41158cfd563SSimeon Kdefine <16 x float> @vfmax_vv_v16f32_unmasked(<16 x float> %va, <16 x float> %vb, i32 zeroext %evl) {
41258cfd563SSimeon K; CHECK-LABEL: vfmax_vv_v16f32_unmasked:
41358cfd563SSimeon K; CHECK:       # %bb.0:
41458cfd563SSimeon K; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
41558cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v0, v8, v8
41601a15dcaSPengcheng Wang; CHECK-NEXT:    vmerge.vvm v16, v8, v12, v0
41701a15dcaSPengcheng Wang; CHECK-NEXT:    vmfeq.vv v0, v12, v12
41858cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v8, v12, v8, v0
41901a15dcaSPengcheng Wang; CHECK-NEXT:    vfmax.vv v8, v8, v16
42058cfd563SSimeon K; CHECK-NEXT:    ret
421d8d131dfSLuke Lau  %v = call <16 x float> @llvm.vp.maximum.v16f32(<16 x float> %va, <16 x float> %vb, <16 x i1> splat (i1 true), i32 %evl)
42258cfd563SSimeon K  ret <16 x float> %v
42358cfd563SSimeon K}
42458cfd563SSimeon K
42558cfd563SSimeon Kdeclare <2 x double> @llvm.vp.maximum.v2f64(<2 x double>, <2 x double>, <2 x i1>, i32)
42658cfd563SSimeon K
42758cfd563SSimeon Kdefine <2 x double> @vfmax_vv_v2f64(<2 x double> %va, <2 x double> %vb, <2 x i1> %m, i32 zeroext %evl) {
42858cfd563SSimeon K; CHECK-LABEL: vfmax_vv_v2f64:
42958cfd563SSimeon K; CHECK:       # %bb.0:
43058cfd563SSimeon K; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
431b6c0f1bfSLuke Lau; CHECK-NEXT:    vmv1r.v v10, v0
43258cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v0, v8, v8, v0.t
43358cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v11, v8, v9, v0
43458cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v10
43558cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v0, v9, v9, v0.t
43658cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v8, v9, v8, v0
43758cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v10
43858cfd563SSimeon K; CHECK-NEXT:    vfmax.vv v8, v8, v11, v0.t
43958cfd563SSimeon K; CHECK-NEXT:    ret
44058cfd563SSimeon K  %v = call <2 x double> @llvm.vp.maximum.v2f64(<2 x double> %va, <2 x double> %vb, <2 x i1> %m, i32 %evl)
44158cfd563SSimeon K  ret <2 x double> %v
44258cfd563SSimeon K}
44358cfd563SSimeon K
44458cfd563SSimeon Kdefine <2 x double> @vfmax_vv_v2f64_unmasked(<2 x double> %va, <2 x double> %vb, i32 zeroext %evl) {
44558cfd563SSimeon K; CHECK-LABEL: vfmax_vv_v2f64_unmasked:
44658cfd563SSimeon K; CHECK:       # %bb.0:
44758cfd563SSimeon K; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
44858cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v0, v8, v8
44901a15dcaSPengcheng Wang; CHECK-NEXT:    vmerge.vvm v10, v8, v9, v0
45001a15dcaSPengcheng Wang; CHECK-NEXT:    vmfeq.vv v0, v9, v9
45158cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v8, v9, v8, v0
45201a15dcaSPengcheng Wang; CHECK-NEXT:    vfmax.vv v8, v8, v10
45358cfd563SSimeon K; CHECK-NEXT:    ret
454d8d131dfSLuke Lau  %v = call <2 x double> @llvm.vp.maximum.v2f64(<2 x double> %va, <2 x double> %vb, <2 x i1> splat (i1 true), i32 %evl)
45558cfd563SSimeon K  ret <2 x double> %v
45658cfd563SSimeon K}
45758cfd563SSimeon K
45858cfd563SSimeon Kdeclare <4 x double> @llvm.vp.maximum.v4f64(<4 x double>, <4 x double>, <4 x i1>, i32)
45958cfd563SSimeon K
46058cfd563SSimeon Kdefine <4 x double> @vfmax_vv_v4f64(<4 x double> %va, <4 x double> %vb, <4 x i1> %m, i32 zeroext %evl) {
46158cfd563SSimeon K; CHECK-LABEL: vfmax_vv_v4f64:
46258cfd563SSimeon K; CHECK:       # %bb.0:
46358cfd563SSimeon K; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
464b6c0f1bfSLuke Lau; CHECK-NEXT:    vmv1r.v v12, v0
46558cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v13, v8, v8, v0.t
46658cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v13
46758cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v14, v8, v10, v0
46858cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v12
46958cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v13, v10, v10, v0.t
47058cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v13
47158cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v8, v10, v8, v0
47258cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v12
47358cfd563SSimeon K; CHECK-NEXT:    vfmax.vv v8, v8, v14, v0.t
47458cfd563SSimeon K; CHECK-NEXT:    ret
47558cfd563SSimeon K  %v = call <4 x double> @llvm.vp.maximum.v4f64(<4 x double> %va, <4 x double> %vb, <4 x i1> %m, i32 %evl)
47658cfd563SSimeon K  ret <4 x double> %v
47758cfd563SSimeon K}
47858cfd563SSimeon K
47958cfd563SSimeon Kdefine <4 x double> @vfmax_vv_v4f64_unmasked(<4 x double> %va, <4 x double> %vb, i32 zeroext %evl) {
48058cfd563SSimeon K; CHECK-LABEL: vfmax_vv_v4f64_unmasked:
48158cfd563SSimeon K; CHECK:       # %bb.0:
48258cfd563SSimeon K; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
48358cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v0, v8, v8
48401a15dcaSPengcheng Wang; CHECK-NEXT:    vmerge.vvm v12, v8, v10, v0
48501a15dcaSPengcheng Wang; CHECK-NEXT:    vmfeq.vv v0, v10, v10
48658cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v8, v10, v8, v0
48701a15dcaSPengcheng Wang; CHECK-NEXT:    vfmax.vv v8, v8, v12
48858cfd563SSimeon K; CHECK-NEXT:    ret
489d8d131dfSLuke Lau  %v = call <4 x double> @llvm.vp.maximum.v4f64(<4 x double> %va, <4 x double> %vb, <4 x i1> splat (i1 true), i32 %evl)
49058cfd563SSimeon K  ret <4 x double> %v
49158cfd563SSimeon K}
49258cfd563SSimeon K
49358cfd563SSimeon Kdeclare <8 x double> @llvm.vp.maximum.v8f64(<8 x double>, <8 x double>, <8 x i1>, i32)
49458cfd563SSimeon K
49558cfd563SSimeon Kdefine <8 x double> @vfmax_vv_v8f64(<8 x double> %va, <8 x double> %vb, <8 x i1> %m, i32 zeroext %evl) {
49658cfd563SSimeon K; CHECK-LABEL: vfmax_vv_v8f64:
49758cfd563SSimeon K; CHECK:       # %bb.0:
49858cfd563SSimeon K; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
499b6c0f1bfSLuke Lau; CHECK-NEXT:    vmv1r.v v16, v0
50058cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v17, v8, v8, v0.t
50158cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v17
50258cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v20, v8, v12, v0
50358cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v16
50458cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v17, v12, v12, v0.t
50558cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v17
50658cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v8, v12, v8, v0
50758cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v16
50858cfd563SSimeon K; CHECK-NEXT:    vfmax.vv v8, v8, v20, v0.t
50958cfd563SSimeon K; CHECK-NEXT:    ret
51058cfd563SSimeon K  %v = call <8 x double> @llvm.vp.maximum.v8f64(<8 x double> %va, <8 x double> %vb, <8 x i1> %m, i32 %evl)
51158cfd563SSimeon K  ret <8 x double> %v
51258cfd563SSimeon K}
51358cfd563SSimeon K
51458cfd563SSimeon Kdefine <8 x double> @vfmax_vv_v8f64_unmasked(<8 x double> %va, <8 x double> %vb, i32 zeroext %evl) {
51558cfd563SSimeon K; CHECK-LABEL: vfmax_vv_v8f64_unmasked:
51658cfd563SSimeon K; CHECK:       # %bb.0:
51758cfd563SSimeon K; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
51858cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v0, v8, v8
51901a15dcaSPengcheng Wang; CHECK-NEXT:    vmerge.vvm v16, v8, v12, v0
52001a15dcaSPengcheng Wang; CHECK-NEXT:    vmfeq.vv v0, v12, v12
52158cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v8, v12, v8, v0
52201a15dcaSPengcheng Wang; CHECK-NEXT:    vfmax.vv v8, v8, v16
52358cfd563SSimeon K; CHECK-NEXT:    ret
524d8d131dfSLuke Lau  %v = call <8 x double> @llvm.vp.maximum.v8f64(<8 x double> %va, <8 x double> %vb, <8 x i1> splat (i1 true), i32 %evl)
52558cfd563SSimeon K  ret <8 x double> %v
52658cfd563SSimeon K}
52758cfd563SSimeon K
52858cfd563SSimeon Kdeclare <16 x double> @llvm.vp.maximum.v16f64(<16 x double>, <16 x double>, <16 x i1>, i32)
52958cfd563SSimeon K
53058cfd563SSimeon Kdefine <16 x double> @vfmax_vv_v16f64(<16 x double> %va, <16 x double> %vb, <16 x i1> %m, i32 zeroext %evl) {
53158cfd563SSimeon K; CHECK-LABEL: vfmax_vv_v16f64:
53258cfd563SSimeon K; CHECK:       # %bb.0:
53358cfd563SSimeon K; CHECK-NEXT:    addi sp, sp, -16
53458cfd563SSimeon K; CHECK-NEXT:    .cfi_def_cfa_offset 16
53558cfd563SSimeon K; CHECK-NEXT:    csrr a1, vlenb
53658cfd563SSimeon K; CHECK-NEXT:    slli a1, a1, 3
53758cfd563SSimeon K; CHECK-NEXT:    sub sp, sp, a1
53858cfd563SSimeon K; CHECK-NEXT:    .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x08, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 8 * vlenb
53958cfd563SSimeon K; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
540b6c0f1bfSLuke Lau; CHECK-NEXT:    vmv1r.v v7, v0
54158cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v25, v8, v8, v0.t
54258cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v25
54358cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v24, v8, v16, v0
54458cfd563SSimeon K; CHECK-NEXT:    addi a0, sp, 16
54558cfd563SSimeon K; CHECK-NEXT:    vs8r.v v24, (a0) # Unknown-size Folded Spill
5462023a230SWang Pengcheng; CHECK-NEXT:    vmv1r.v v0, v7
54758cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v25, v16, v16, v0.t
54858cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v25
54958cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v8, v16, v8, v0
5502023a230SWang Pengcheng; CHECK-NEXT:    vmv1r.v v0, v7
55158cfd563SSimeon K; CHECK-NEXT:    vl8r.v v16, (a0) # Unknown-size Folded Reload
55258cfd563SSimeon K; CHECK-NEXT:    vfmax.vv v8, v8, v16, v0.t
55358cfd563SSimeon K; CHECK-NEXT:    csrr a0, vlenb
55458cfd563SSimeon K; CHECK-NEXT:    slli a0, a0, 3
55558cfd563SSimeon K; CHECK-NEXT:    add sp, sp, a0
55697982a8cSdlav-sc; CHECK-NEXT:    .cfi_def_cfa sp, 16
55758cfd563SSimeon K; CHECK-NEXT:    addi sp, sp, 16
55897982a8cSdlav-sc; CHECK-NEXT:    .cfi_def_cfa_offset 0
55958cfd563SSimeon K; CHECK-NEXT:    ret
56058cfd563SSimeon K  %v = call <16 x double> @llvm.vp.maximum.v16f64(<16 x double> %va, <16 x double> %vb, <16 x i1> %m, i32 %evl)
56158cfd563SSimeon K  ret <16 x double> %v
56258cfd563SSimeon K}
56358cfd563SSimeon K
56458cfd563SSimeon Kdefine <16 x double> @vfmax_vv_v16f64_unmasked(<16 x double> %va, <16 x double> %vb, i32 zeroext %evl) {
56558cfd563SSimeon K; CHECK-LABEL: vfmax_vv_v16f64_unmasked:
56658cfd563SSimeon K; CHECK:       # %bb.0:
56758cfd563SSimeon K; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
56858cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v0, v8, v8
5692023a230SWang Pengcheng; CHECK-NEXT:    vmfeq.vv v7, v16, v16
57058cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v24, v8, v16, v0
5712023a230SWang Pengcheng; CHECK-NEXT:    vmv1r.v v0, v7
57258cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v8, v16, v8, v0
57358cfd563SSimeon K; CHECK-NEXT:    vfmax.vv v8, v8, v24
57458cfd563SSimeon K; CHECK-NEXT:    ret
575d8d131dfSLuke Lau  %v = call <16 x double> @llvm.vp.maximum.v16f64(<16 x double> %va, <16 x double> %vb, <16 x i1> splat (i1 true), i32 %evl)
57658cfd563SSimeon K  ret <16 x double> %v
57758cfd563SSimeon K}
57858cfd563SSimeon K
57958cfd563SSimeon Kdeclare <32 x double> @llvm.vp.maximum.v32f64(<32 x double>, <32 x double>, <32 x i1>, i32)
58058cfd563SSimeon K
58158cfd563SSimeon Kdefine <32 x double> @vfmax_vv_v32f64(<32 x double> %va, <32 x double> %vb, <32 x i1> %m, i32 zeroext %evl) {
58258cfd563SSimeon K; CHECK-LABEL: vfmax_vv_v32f64:
58358cfd563SSimeon K; CHECK:       # %bb.0:
58458cfd563SSimeon K; CHECK-NEXT:    addi sp, sp, -16
58558cfd563SSimeon K; CHECK-NEXT:    .cfi_def_cfa_offset 16
58658cfd563SSimeon K; CHECK-NEXT:    csrr a1, vlenb
58758cfd563SSimeon K; CHECK-NEXT:    slli a1, a1, 5
58858cfd563SSimeon K; CHECK-NEXT:    sub sp, sp, a1
58958cfd563SSimeon K; CHECK-NEXT:    .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x20, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 32 * vlenb
590b6c0f1bfSLuke Lau; CHECK-NEXT:    vsetivli zero, 16, e64, m8, ta, ma
5919122c523SPengcheng Wang; CHECK-NEXT:    vmv1r.v v25, v0
5929122c523SPengcheng Wang; CHECK-NEXT:    csrr a1, vlenb
5939122c523SPengcheng Wang; CHECK-NEXT:    slli a1, a1, 4
5949122c523SPengcheng Wang; CHECK-NEXT:    add a1, sp, a1
5959122c523SPengcheng Wang; CHECK-NEXT:    addi a1, a1, 16
5969122c523SPengcheng Wang; CHECK-NEXT:    vs8r.v v16, (a1) # Unknown-size Folded Spill
59758cfd563SSimeon K; CHECK-NEXT:    csrr a1, vlenb
59858cfd563SSimeon K; CHECK-NEXT:    li a3, 24
59958cfd563SSimeon K; CHECK-NEXT:    mul a1, a1, a3
60058cfd563SSimeon K; CHECK-NEXT:    add a1, sp, a1
60158cfd563SSimeon K; CHECK-NEXT:    addi a1, a1, 16
6029122c523SPengcheng Wang; CHECK-NEXT:    vs8r.v v8, (a1) # Unknown-size Folded Spill
6039122c523SPengcheng Wang; CHECK-NEXT:    addi a1, a0, 128
6049122c523SPengcheng Wang; CHECK-NEXT:    vle64.v v16, (a1)
6059122c523SPengcheng Wang; CHECK-NEXT:    csrr a1, vlenb
6069122c523SPengcheng Wang; CHECK-NEXT:    slli a1, a1, 3
6079122c523SPengcheng Wang; CHECK-NEXT:    add a1, sp, a1
6089122c523SPengcheng Wang; CHECK-NEXT:    addi a1, a1, 16
6099122c523SPengcheng Wang; CHECK-NEXT:    vs8r.v v16, (a1) # Unknown-size Folded Spill
6109122c523SPengcheng Wang; CHECK-NEXT:    vle64.v v16, (a0)
611675e7bd1SPiyou Chen; CHECK-NEXT:    li a1, 16
6129122c523SPengcheng Wang; CHECK-NEXT:    mv a0, a2
613675e7bd1SPiyou Chen; CHECK-NEXT:    vsetivli zero, 2, e8, mf4, ta, ma
614675e7bd1SPiyou Chen; CHECK-NEXT:    vslidedown.vi v7, v0, 2
61558cfd563SSimeon K; CHECK-NEXT:    bltu a2, a1, .LBB24_2
61658cfd563SSimeon K; CHECK-NEXT:  # %bb.1:
61758cfd563SSimeon K; CHECK-NEXT:    li a0, 16
61858cfd563SSimeon K; CHECK-NEXT:  .LBB24_2:
6199122c523SPengcheng Wang; CHECK-NEXT:    vmv1r.v v0, v25
6209122c523SPengcheng Wang; CHECK-NEXT:    csrr a1, vlenb
6219122c523SPengcheng Wang; CHECK-NEXT:    li a3, 24
6229122c523SPengcheng Wang; CHECK-NEXT:    mul a1, a1, a3
6239122c523SPengcheng Wang; CHECK-NEXT:    add a1, sp, a1
6249122c523SPengcheng Wang; CHECK-NEXT:    addi a1, a1, 16
6259122c523SPengcheng Wang; CHECK-NEXT:    vl8r.v v8, (a1) # Unknown-size Folded Reload
626675e7bd1SPiyou Chen; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
62758cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v26, v8, v8, v0.t
62858cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v26
6299122c523SPengcheng Wang; CHECK-NEXT:    vmv8r.v v8, v16
63058cfd563SSimeon K; CHECK-NEXT:    csrr a0, vlenb
6319122c523SPengcheng Wang; CHECK-NEXT:    li a1, 24
6329122c523SPengcheng Wang; CHECK-NEXT:    mul a0, a0, a1
63358cfd563SSimeon K; CHECK-NEXT:    add a0, sp, a0
63458cfd563SSimeon K; CHECK-NEXT:    addi a0, a0, 16
63558cfd563SSimeon K; CHECK-NEXT:    vl8r.v v16, (a0) # Unknown-size Folded Reload
6369122c523SPengcheng Wang; CHECK-NEXT:    vmerge.vvm v16, v16, v8, v0
63758cfd563SSimeon K; CHECK-NEXT:    addi a0, sp, 16
6389122c523SPengcheng Wang; CHECK-NEXT:    vs8r.v v16, (a0) # Unknown-size Folded Spill
6399122c523SPengcheng Wang; CHECK-NEXT:    vmv1r.v v0, v25
6409122c523SPengcheng Wang; CHECK-NEXT:    vmfeq.vv v26, v8, v8, v0.t
64158cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v26
6429122c523SPengcheng Wang; CHECK-NEXT:    csrr a0, vlenb
6439122c523SPengcheng Wang; CHECK-NEXT:    li a1, 24
6449122c523SPengcheng Wang; CHECK-NEXT:    mul a0, a0, a1
6459122c523SPengcheng Wang; CHECK-NEXT:    add a0, sp, a0
6469122c523SPengcheng Wang; CHECK-NEXT:    addi a0, a0, 16
6479122c523SPengcheng Wang; CHECK-NEXT:    vl8r.v v16, (a0) # Unknown-size Folded Reload
6489122c523SPengcheng Wang; CHECK-NEXT:    vmerge.vvm v8, v8, v16, v0
6499122c523SPengcheng Wang; CHECK-NEXT:    vmv1r.v v0, v25
6509122c523SPengcheng Wang; CHECK-NEXT:    addi a0, sp, 16
65158cfd563SSimeon K; CHECK-NEXT:    vl8r.v v16, (a0) # Unknown-size Folded Reload
65258cfd563SSimeon K; CHECK-NEXT:    vfmax.vv v8, v8, v16, v0.t
65358cfd563SSimeon K; CHECK-NEXT:    csrr a0, vlenb
6549122c523SPengcheng Wang; CHECK-NEXT:    li a1, 24
6559122c523SPengcheng Wang; CHECK-NEXT:    mul a0, a0, a1
65658cfd563SSimeon K; CHECK-NEXT:    add a0, sp, a0
65758cfd563SSimeon K; CHECK-NEXT:    addi a0, a0, 16
65858cfd563SSimeon K; CHECK-NEXT:    vs8r.v v8, (a0) # Unknown-size Folded Spill
65958cfd563SSimeon K; CHECK-NEXT:    addi a0, a2, -16
66058cfd563SSimeon K; CHECK-NEXT:    sltu a1, a2, a0
66158cfd563SSimeon K; CHECK-NEXT:    addi a1, a1, -1
66258cfd563SSimeon K; CHECK-NEXT:    and a0, a1, a0
6632023a230SWang Pengcheng; CHECK-NEXT:    vmv1r.v v0, v7
664675e7bd1SPiyou Chen; CHECK-NEXT:    csrr a1, vlenb
6659122c523SPengcheng Wang; CHECK-NEXT:    slli a1, a1, 4
666675e7bd1SPiyou Chen; CHECK-NEXT:    add a1, sp, a1
667675e7bd1SPiyou Chen; CHECK-NEXT:    addi a1, a1, 16
668675e7bd1SPiyou Chen; CHECK-NEXT:    vl8r.v v16, (a1) # Unknown-size Folded Reload
669675e7bd1SPiyou Chen; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
67058cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v25, v16, v16, v0.t
67158cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v25
67258cfd563SSimeon K; CHECK-NEXT:    csrr a0, vlenb
6739122c523SPengcheng Wang; CHECK-NEXT:    slli a0, a0, 3
67458cfd563SSimeon K; CHECK-NEXT:    add a0, sp, a0
67558cfd563SSimeon K; CHECK-NEXT:    addi a0, a0, 16
67658cfd563SSimeon K; CHECK-NEXT:    vl8r.v v8, (a0) # Unknown-size Folded Reload
67758cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v24, v16, v8, v0
67858cfd563SSimeon K; CHECK-NEXT:    addi a0, sp, 16
67958cfd563SSimeon K; CHECK-NEXT:    vs8r.v v24, (a0) # Unknown-size Folded Spill
6802023a230SWang Pengcheng; CHECK-NEXT:    vmv1r.v v0, v7
68158cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v25, v8, v8, v0.t
68258cfd563SSimeon K; CHECK-NEXT:    vmv1r.v v0, v25
6839122c523SPengcheng Wang; CHECK-NEXT:    vmerge.vvm v8, v8, v16, v0
6842023a230SWang Pengcheng; CHECK-NEXT:    vmv1r.v v0, v7
6859122c523SPengcheng Wang; CHECK-NEXT:    vl8r.v v16, (a0) # Unknown-size Folded Reload
6869122c523SPengcheng Wang; CHECK-NEXT:    vfmax.vv v16, v8, v16, v0.t
68758cfd563SSimeon K; CHECK-NEXT:    csrr a0, vlenb
6889122c523SPengcheng Wang; CHECK-NEXT:    li a1, 24
6899122c523SPengcheng Wang; CHECK-NEXT:    mul a0, a0, a1
69058cfd563SSimeon K; CHECK-NEXT:    add a0, sp, a0
69158cfd563SSimeon K; CHECK-NEXT:    addi a0, a0, 16
69258cfd563SSimeon K; CHECK-NEXT:    vl8r.v v8, (a0) # Unknown-size Folded Reload
69358cfd563SSimeon K; CHECK-NEXT:    csrr a0, vlenb
69458cfd563SSimeon K; CHECK-NEXT:    slli a0, a0, 5
69558cfd563SSimeon K; CHECK-NEXT:    add sp, sp, a0
69697982a8cSdlav-sc; CHECK-NEXT:    .cfi_def_cfa sp, 16
69758cfd563SSimeon K; CHECK-NEXT:    addi sp, sp, 16
69897982a8cSdlav-sc; CHECK-NEXT:    .cfi_def_cfa_offset 0
69958cfd563SSimeon K; CHECK-NEXT:    ret
70058cfd563SSimeon K  %v = call <32 x double> @llvm.vp.maximum.v32f64(<32 x double> %va, <32 x double> %vb, <32 x i1> %m, i32 %evl)
70158cfd563SSimeon K  ret <32 x double> %v
70258cfd563SSimeon K}
70358cfd563SSimeon K
70458cfd563SSimeon Kdefine <32 x double> @vfmax_vv_v32f64_unmasked(<32 x double> %va, <32 x double> %vb, i32 zeroext %evl) {
70558cfd563SSimeon K; CHECK-LABEL: vfmax_vv_v32f64_unmasked:
70658cfd563SSimeon K; CHECK:       # %bb.0:
70758cfd563SSimeon K; CHECK-NEXT:    addi sp, sp, -16
70858cfd563SSimeon K; CHECK-NEXT:    .cfi_def_cfa_offset 16
70958cfd563SSimeon K; CHECK-NEXT:    csrr a1, vlenb
71058cfd563SSimeon K; CHECK-NEXT:    li a3, 24
71158cfd563SSimeon K; CHECK-NEXT:    mul a1, a1, a3
71258cfd563SSimeon K; CHECK-NEXT:    sub sp, sp, a1
71358cfd563SSimeon K; CHECK-NEXT:    .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x18, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 24 * vlenb
71458cfd563SSimeon K; CHECK-NEXT:    csrr a1, vlenb
71558cfd563SSimeon K; CHECK-NEXT:    slli a1, a1, 4
71658cfd563SSimeon K; CHECK-NEXT:    add a1, sp, a1
71758cfd563SSimeon K; CHECK-NEXT:    addi a1, a1, 16
7189122c523SPengcheng Wang; CHECK-NEXT:    vs8r.v v16, (a1) # Unknown-size Folded Spill
7199122c523SPengcheng Wang; CHECK-NEXT:    addi a1, a0, 128
7209122c523SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 16, e64, m8, ta, ma
7219122c523SPengcheng Wang; CHECK-NEXT:    vle64.v v16, (a1)
7229122c523SPengcheng Wang; CHECK-NEXT:    csrr a1, vlenb
7239122c523SPengcheng Wang; CHECK-NEXT:    slli a1, a1, 3
7249122c523SPengcheng Wang; CHECK-NEXT:    add a1, sp, a1
7259122c523SPengcheng Wang; CHECK-NEXT:    addi a1, a1, 16
7269122c523SPengcheng Wang; CHECK-NEXT:    vs8r.v v16, (a1) # Unknown-size Folded Spill
72758cfd563SSimeon K; CHECK-NEXT:    vle64.v v24, (a0)
72858cfd563SSimeon K; CHECK-NEXT:    li a1, 16
72958cfd563SSimeon K; CHECK-NEXT:    mv a0, a2
73058cfd563SSimeon K; CHECK-NEXT:    bltu a2, a1, .LBB25_2
73158cfd563SSimeon K; CHECK-NEXT:  # %bb.1:
73258cfd563SSimeon K; CHECK-NEXT:    li a0, 16
73358cfd563SSimeon K; CHECK-NEXT:  .LBB25_2:
73458cfd563SSimeon K; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
73558cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v0, v8, v8
7362023a230SWang Pengcheng; CHECK-NEXT:    vmfeq.vv v7, v24, v24
7379122c523SPengcheng Wang; CHECK-NEXT:    vmerge.vvm v16, v8, v24, v0
7382023a230SWang Pengcheng; CHECK-NEXT:    vmv1r.v v0, v7
7399122c523SPengcheng Wang; CHECK-NEXT:    vmerge.vvm v8, v24, v8, v0
7409122c523SPengcheng Wang; CHECK-NEXT:    vfmax.vv v8, v8, v16
7419122c523SPengcheng Wang; CHECK-NEXT:    addi a0, sp, 16
74258cfd563SSimeon K; CHECK-NEXT:    vs8r.v v8, (a0) # Unknown-size Folded Spill
74358cfd563SSimeon K; CHECK-NEXT:    addi a0, a2, -16
74458cfd563SSimeon K; CHECK-NEXT:    sltu a1, a2, a0
74558cfd563SSimeon K; CHECK-NEXT:    addi a1, a1, -1
74658cfd563SSimeon K; CHECK-NEXT:    and a0, a1, a0
7479122c523SPengcheng Wang; CHECK-NEXT:    csrr a1, vlenb
7489122c523SPengcheng Wang; CHECK-NEXT:    slli a1, a1, 4
7499122c523SPengcheng Wang; CHECK-NEXT:    add a1, sp, a1
7509122c523SPengcheng Wang; CHECK-NEXT:    addi a1, a1, 16
751675e7bd1SPiyou Chen; CHECK-NEXT:    vl8r.v v16, (a1) # Unknown-size Folded Reload
75258cfd563SSimeon K; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
75358cfd563SSimeon K; CHECK-NEXT:    vmfeq.vv v0, v16, v16
75458cfd563SSimeon K; CHECK-NEXT:    csrr a0, vlenb
7559122c523SPengcheng Wang; CHECK-NEXT:    slli a0, a0, 3
75658cfd563SSimeon K; CHECK-NEXT:    add a0, sp, a0
75758cfd563SSimeon K; CHECK-NEXT:    addi a0, a0, 16
75858cfd563SSimeon K; CHECK-NEXT:    vl8r.v v8, (a0) # Unknown-size Folded Reload
7592023a230SWang Pengcheng; CHECK-NEXT:    vmfeq.vv v7, v8, v8
76058cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v24, v16, v8, v0
7612023a230SWang Pengcheng; CHECK-NEXT:    vmv1r.v v0, v7
76258cfd563SSimeon K; CHECK-NEXT:    vmerge.vvm v16, v8, v16, v0
76358cfd563SSimeon K; CHECK-NEXT:    vfmax.vv v16, v16, v24
7649122c523SPengcheng Wang; CHECK-NEXT:    addi a0, sp, 16
76558cfd563SSimeon K; CHECK-NEXT:    vl8r.v v8, (a0) # Unknown-size Folded Reload
76658cfd563SSimeon K; CHECK-NEXT:    csrr a0, vlenb
76758cfd563SSimeon K; CHECK-NEXT:    li a1, 24
76858cfd563SSimeon K; CHECK-NEXT:    mul a0, a0, a1
76958cfd563SSimeon K; CHECK-NEXT:    add sp, sp, a0
77097982a8cSdlav-sc; CHECK-NEXT:    .cfi_def_cfa sp, 16
77158cfd563SSimeon K; CHECK-NEXT:    addi sp, sp, 16
77297982a8cSdlav-sc; CHECK-NEXT:    .cfi_def_cfa_offset 0
77358cfd563SSimeon K; CHECK-NEXT:    ret
774d8d131dfSLuke Lau  %v = call <32 x double> @llvm.vp.maximum.v32f64(<32 x double> %va, <32 x double> %vb, <32 x i1> splat (i1 true), i32 %evl)
77558cfd563SSimeon K  ret <32 x double> %v
77658cfd563SSimeon K}
777