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