brintos

brintos / llvm-project-archived public Read only

0
0
Text · 64.2 KiB · 99bdddc Raw
1278 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfh,+v,+m -target-abi=ilp32d \3; RUN:     -verify-machineinstrs < %s | FileCheck %s4; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfh,+v,+m -target-abi=lp64d \5; RUN:     -verify-machineinstrs < %s | FileCheck %s6 7define <2 x half> @vfmacc_vv_v2f16(<2 x half> %a, <2 x half> %b, <2 x half> %c, <2 x i1> %m, i32 zeroext %evl) {8; CHECK-LABEL: vfmacc_vv_v2f16:9; CHECK:       # %bb.0:10; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, tu, mu11; CHECK-NEXT:    vfmacc.vv v10, v8, v9, v0.t12; CHECK-NEXT:    vmv1r.v v8, v1013; CHECK-NEXT:    ret14  %v = call <2 x half> @llvm.vp.fma.v2f16(<2 x half> %a, <2 x half> %b, <2 x half> %c, <2 x i1> splat (i1 -1), i32 %evl)15  %u = call <2 x half> @llvm.vp.merge.v2f16(<2 x i1> %m, <2 x half> %v, <2 x half> %c, i32 %evl)16  ret <2 x half> %u17}18 19define <2 x half> @vfmacc_vv_v2f16_unmasked(<2 x half> %a, <2 x half> %b, <2 x half> %c, <2 x i1> %m, i32 zeroext %evl) {20; CHECK-LABEL: vfmacc_vv_v2f16_unmasked:21; CHECK:       # %bb.0:22; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, tu, ma23; CHECK-NEXT:    vfmacc.vv v10, v8, v924; CHECK-NEXT:    vmv1r.v v8, v1025; CHECK-NEXT:    ret26  %v = call <2 x half> @llvm.vp.fma.v2f16(<2 x half> %a, <2 x half> %b, <2 x half> %c, <2 x i1> splat (i1 -1), i32 %evl)27  %u = call <2 x half> @llvm.vp.merge.v2f16(<2 x i1> splat (i1 -1), <2 x half> %v, <2 x half> %c, i32 %evl)28  ret <2 x half> %u29}30 31define <2 x half> @vfmacc_vf_v2f16(<2 x half> %va, half %b, <2 x half> %c, <2 x i1> %m, i32 zeroext %evl) {32; CHECK-LABEL: vfmacc_vf_v2f16:33; CHECK:       # %bb.0:34; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, tu, mu35; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t36; CHECK-NEXT:    vmv1r.v v8, v937; CHECK-NEXT:    ret38  %elt.head = insertelement <2 x half> poison, half %b, i32 039  %vb = shufflevector <2 x half> %elt.head, <2 x half> poison, <2 x i32> zeroinitializer40  %v = call <2 x half> @llvm.vp.fma.v2f16(<2 x half> %va, <2 x half> %vb, <2 x half> %c, <2 x i1> splat (i1 -1), i32 %evl)41  %u = call <2 x half> @llvm.vp.merge.v2f16(<2 x i1> %m, <2 x half> %v, <2 x half> %c, i32 %evl)42  ret <2 x half> %u43}44 45define <2 x half> @vfmacc_vf_v2f16_commute(<2 x half> %va, half %b, <2 x half> %c, <2 x i1> %m, i32 zeroext %evl) {46; CHECK-LABEL: vfmacc_vf_v2f16_commute:47; CHECK:       # %bb.0:48; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, tu, mu49; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t50; CHECK-NEXT:    vmv1r.v v8, v951; CHECK-NEXT:    ret52  %elt.head = insertelement <2 x half> poison, half %b, i32 053  %vb = shufflevector <2 x half> %elt.head, <2 x half> poison, <2 x i32> zeroinitializer54  %v = call <2 x half> @llvm.vp.fma.v2f16(<2 x half> %vb, <2 x half> %va, <2 x half> %c, <2 x i1> splat (i1 -1), i32 %evl)55  %u = call <2 x half> @llvm.vp.merge.v2f16(<2 x i1> %m, <2 x half> %v, <2 x half> %c, i32 %evl)56  ret <2 x half> %u57}58 59define <2 x half> @vfmacc_vf_v2f16_unmasked(<2 x half> %va, half %b, <2 x half> %c, i32 zeroext %evl) {60; CHECK-LABEL: vfmacc_vf_v2f16_unmasked:61; CHECK:       # %bb.0:62; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, tu, ma63; CHECK-NEXT:    vfmacc.vf v9, fa0, v864; CHECK-NEXT:    vmv1r.v v8, v965; CHECK-NEXT:    ret66  %elt.head = insertelement <2 x half> poison, half %b, i32 067  %vb = shufflevector <2 x half> %elt.head, <2 x half> poison, <2 x i32> zeroinitializer68  %v = call <2 x half> @llvm.vp.fma.v2f16(<2 x half> %va, <2 x half> %vb, <2 x half> %c, <2 x i1> splat (i1 -1), i32 %evl)69  %u = call <2 x half> @llvm.vp.merge.v2f16(<2 x i1> splat (i1 -1), <2 x half> %v, <2 x half> %c, i32 %evl)70  ret <2 x half> %u71}72 73define <2 x half> @vfmacc_vv_v2f16_ta(<2 x half> %a, <2 x half> %b, <2 x half> %c, <2 x i1> %m, i32 zeroext %evl) {74; CHECK-LABEL: vfmacc_vv_v2f16_ta:75; CHECK:       # %bb.0:76; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu77; CHECK-NEXT:    vfmacc.vv v10, v8, v9, v0.t78; CHECK-NEXT:    vmv1r.v v8, v1079; CHECK-NEXT:    ret80  %v = call <2 x half> @llvm.vp.fma.v2f16(<2 x half> %a, <2 x half> %b, <2 x half> %c, <2 x i1> splat (i1 -1), i32 %evl)81  %u = call <2 x half> @llvm.vp.select.v2f16(<2 x i1> %m, <2 x half> %v, <2 x half> %c, i32 %evl)82  ret <2 x half> %u83}84 85define <2 x half> @vfmacc_vf_v2f16_ta(<2 x half> %va, half %b, <2 x half> %c, <2 x i1> %m, i32 zeroext %evl) {86; CHECK-LABEL: vfmacc_vf_v2f16_ta:87; CHECK:       # %bb.0:88; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu89; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t90; CHECK-NEXT:    vmv1r.v v8, v991; CHECK-NEXT:    ret92  %elt.head = insertelement <2 x half> poison, half %b, i32 093  %vb = shufflevector <2 x half> %elt.head, <2 x half> poison, <2 x i32> zeroinitializer94  %v = call <2 x half> @llvm.vp.fma.v2f16(<2 x half> %va, <2 x half> %vb, <2 x half> %c, <2 x i1> splat (i1 -1), i32 %evl)95  %u = call <2 x half> @llvm.vp.select.v2f16(<2 x i1> %m, <2 x half> %v, <2 x half> %c, i32 %evl)96  ret <2 x half> %u97}98 99define <2 x half> @vfmacc_vf_v2f16_commute_ta(<2 x half> %va, half %b, <2 x half> %c, <2 x i1> %m, i32 zeroext %evl) {100; CHECK-LABEL: vfmacc_vf_v2f16_commute_ta:101; CHECK:       # %bb.0:102; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu103; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t104; CHECK-NEXT:    vmv1r.v v8, v9105; CHECK-NEXT:    ret106  %elt.head = insertelement <2 x half> poison, half %b, i32 0107  %vb = shufflevector <2 x half> %elt.head, <2 x half> poison, <2 x i32> zeroinitializer108  %v = call <2 x half> @llvm.vp.fma.v2f16(<2 x half> %vb, <2 x half> %va, <2 x half> %c, <2 x i1> splat (i1 -1), i32 %evl)109  %u = call <2 x half> @llvm.vp.select.v2f16(<2 x i1> %m, <2 x half> %v, <2 x half> %c, i32 %evl)110  ret <2 x half> %u111}112 113define <4 x half> @vfmacc_vv_v4f16(<4 x half> %a, <4 x half> %b, <4 x half> %c, <4 x i1> %m, i32 zeroext %evl) {114; CHECK-LABEL: vfmacc_vv_v4f16:115; CHECK:       # %bb.0:116; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, tu, mu117; CHECK-NEXT:    vfmacc.vv v10, v8, v9, v0.t118; CHECK-NEXT:    vmv1r.v v8, v10119; CHECK-NEXT:    ret120  %v = call <4 x half> @llvm.vp.fma.v4f16(<4 x half> %a, <4 x half> %b, <4 x half> %c, <4 x i1> splat (i1 -1), i32 %evl)121  %u = call <4 x half> @llvm.vp.merge.v4f16(<4 x i1> %m, <4 x half> %v, <4 x half> %c, i32 %evl)122  ret <4 x half> %u123}124 125define <4 x half> @vfmacc_vv_v4f16_unmasked(<4 x half> %a, <4 x half> %b, <4 x half> %c, <4 x i1> %m, i32 zeroext %evl) {126; CHECK-LABEL: vfmacc_vv_v4f16_unmasked:127; CHECK:       # %bb.0:128; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, tu, ma129; CHECK-NEXT:    vfmacc.vv v10, v8, v9130; CHECK-NEXT:    vmv1r.v v8, v10131; CHECK-NEXT:    ret132  %v = call <4 x half> @llvm.vp.fma.v4f16(<4 x half> %a, <4 x half> %b, <4 x half> %c, <4 x i1> splat (i1 -1), i32 %evl)133  %u = call <4 x half> @llvm.vp.merge.v4f16(<4 x i1> splat (i1 -1), <4 x half> %v, <4 x half> %c, i32 %evl)134  ret <4 x half> %u135}136 137define <4 x half> @vfmacc_vf_v4f16(<4 x half> %va, half %b, <4 x half> %c, <4 x i1> %m, i32 zeroext %evl) {138; CHECK-LABEL: vfmacc_vf_v4f16:139; CHECK:       # %bb.0:140; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, tu, mu141; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t142; CHECK-NEXT:    vmv1r.v v8, v9143; CHECK-NEXT:    ret144  %elt.head = insertelement <4 x half> poison, half %b, i32 0145  %vb = shufflevector <4 x half> %elt.head, <4 x half> poison, <4 x i32> zeroinitializer146  %v = call <4 x half> @llvm.vp.fma.v4f16(<4 x half> %va, <4 x half> %vb, <4 x half> %c, <4 x i1> splat (i1 -1), i32 %evl)147  %u = call <4 x half> @llvm.vp.merge.v4f16(<4 x i1> %m, <4 x half> %v, <4 x half> %c, i32 %evl)148  ret <4 x half> %u149}150 151define <4 x half> @vfmacc_vf_v4f16_commute(<4 x half> %va, half %b, <4 x half> %c, <4 x i1> %m, i32 zeroext %evl) {152; CHECK-LABEL: vfmacc_vf_v4f16_commute:153; CHECK:       # %bb.0:154; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, tu, mu155; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t156; CHECK-NEXT:    vmv1r.v v8, v9157; CHECK-NEXT:    ret158  %elt.head = insertelement <4 x half> poison, half %b, i32 0159  %vb = shufflevector <4 x half> %elt.head, <4 x half> poison, <4 x i32> zeroinitializer160  %v = call <4 x half> @llvm.vp.fma.v4f16(<4 x half> %vb, <4 x half> %va, <4 x half> %c, <4 x i1> splat (i1 -1), i32 %evl)161  %u = call <4 x half> @llvm.vp.merge.v4f16(<4 x i1> %m, <4 x half> %v, <4 x half> %c, i32 %evl)162  ret <4 x half> %u163}164 165define <4 x half> @vfmacc_vf_v4f16_unmasked(<4 x half> %va, half %b, <4 x half> %c, i32 zeroext %evl) {166; CHECK-LABEL: vfmacc_vf_v4f16_unmasked:167; CHECK:       # %bb.0:168; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, tu, ma169; CHECK-NEXT:    vfmacc.vf v9, fa0, v8170; CHECK-NEXT:    vmv1r.v v8, v9171; CHECK-NEXT:    ret172  %elt.head = insertelement <4 x half> poison, half %b, i32 0173  %vb = shufflevector <4 x half> %elt.head, <4 x half> poison, <4 x i32> zeroinitializer174  %v = call <4 x half> @llvm.vp.fma.v4f16(<4 x half> %va, <4 x half> %vb, <4 x half> %c, <4 x i1> splat (i1 -1), i32 %evl)175  %u = call <4 x half> @llvm.vp.merge.v4f16(<4 x i1> splat (i1 -1), <4 x half> %v, <4 x half> %c, i32 %evl)176  ret <4 x half> %u177}178 179define <4 x half> @vfmacc_vv_v4f16_ta(<4 x half> %a, <4 x half> %b, <4 x half> %c, <4 x i1> %m, i32 zeroext %evl) {180; CHECK-LABEL: vfmacc_vv_v4f16_ta:181; CHECK:       # %bb.0:182; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu183; CHECK-NEXT:    vfmacc.vv v10, v8, v9, v0.t184; CHECK-NEXT:    vmv1r.v v8, v10185; CHECK-NEXT:    ret186  %v = call <4 x half> @llvm.vp.fma.v4f16(<4 x half> %a, <4 x half> %b, <4 x half> %c, <4 x i1> splat (i1 -1), i32 %evl)187  %u = call <4 x half> @llvm.vp.select.v4f16(<4 x i1> %m, <4 x half> %v, <4 x half> %c, i32 %evl)188  ret <4 x half> %u189}190 191define <4 x half> @vfmacc_vf_v4f16_ta(<4 x half> %va, half %b, <4 x half> %c, <4 x i1> %m, i32 zeroext %evl) {192; CHECK-LABEL: vfmacc_vf_v4f16_ta:193; CHECK:       # %bb.0:194; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu195; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t196; CHECK-NEXT:    vmv1r.v v8, v9197; CHECK-NEXT:    ret198  %elt.head = insertelement <4 x half> poison, half %b, i32 0199  %vb = shufflevector <4 x half> %elt.head, <4 x half> poison, <4 x i32> zeroinitializer200  %v = call <4 x half> @llvm.vp.fma.v4f16(<4 x half> %va, <4 x half> %vb, <4 x half> %c, <4 x i1> splat (i1 -1), i32 %evl)201  %u = call <4 x half> @llvm.vp.select.v4f16(<4 x i1> %m, <4 x half> %v, <4 x half> %c, i32 %evl)202  ret <4 x half> %u203}204 205define <4 x half> @vfmacc_vf_v4f16_commute_ta(<4 x half> %va, half %b, <4 x half> %c, <4 x i1> %m, i32 zeroext %evl) {206; CHECK-LABEL: vfmacc_vf_v4f16_commute_ta:207; CHECK:       # %bb.0:208; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu209; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t210; CHECK-NEXT:    vmv1r.v v8, v9211; CHECK-NEXT:    ret212  %elt.head = insertelement <4 x half> poison, half %b, i32 0213  %vb = shufflevector <4 x half> %elt.head, <4 x half> poison, <4 x i32> zeroinitializer214  %v = call <4 x half> @llvm.vp.fma.v4f16(<4 x half> %vb, <4 x half> %va, <4 x half> %c, <4 x i1> splat (i1 -1), i32 %evl)215  %u = call <4 x half> @llvm.vp.select.v4f16(<4 x i1> %m, <4 x half> %v, <4 x half> %c, i32 %evl)216  ret <4 x half> %u217}218 219define <8 x half> @vfmacc_vv_v8f16(<8 x half> %a, <8 x half> %b, <8 x half> %c, <8 x i1> %m, i32 zeroext %evl) {220; CHECK-LABEL: vfmacc_vv_v8f16:221; CHECK:       # %bb.0:222; CHECK-NEXT:    vsetvli zero, a0, e16, m1, tu, mu223; CHECK-NEXT:    vfmacc.vv v10, v8, v9, v0.t224; CHECK-NEXT:    vmv1r.v v8, v10225; CHECK-NEXT:    ret226  %v = call <8 x half> @llvm.vp.fma.v8f16(<8 x half> %a, <8 x half> %b, <8 x half> %c, <8 x i1> splat (i1 -1), i32 %evl)227  %u = call <8 x half> @llvm.vp.merge.v8f16(<8 x i1> %m, <8 x half> %v, <8 x half> %c, i32 %evl)228  ret <8 x half> %u229}230 231define <8 x half> @vfmacc_vv_v8f16_unmasked(<8 x half> %a, <8 x half> %b, <8 x half> %c, <8 x i1> %m, i32 zeroext %evl) {232; CHECK-LABEL: vfmacc_vv_v8f16_unmasked:233; CHECK:       # %bb.0:234; CHECK-NEXT:    vsetvli zero, a0, e16, m1, tu, ma235; CHECK-NEXT:    vfmacc.vv v10, v8, v9236; CHECK-NEXT:    vmv1r.v v8, v10237; CHECK-NEXT:    ret238  %v = call <8 x half> @llvm.vp.fma.v8f16(<8 x half> %a, <8 x half> %b, <8 x half> %c, <8 x i1> splat (i1 -1), i32 %evl)239  %u = call <8 x half> @llvm.vp.merge.v8f16(<8 x i1> splat (i1 -1), <8 x half> %v, <8 x half> %c, i32 %evl)240  ret <8 x half> %u241}242 243define <8 x half> @vfmacc_vf_v8f16(<8 x half> %va, half %b, <8 x half> %c, <8 x i1> %m, i32 zeroext %evl) {244; CHECK-LABEL: vfmacc_vf_v8f16:245; CHECK:       # %bb.0:246; CHECK-NEXT:    vsetvli zero, a0, e16, m1, tu, mu247; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t248; CHECK-NEXT:    vmv1r.v v8, v9249; CHECK-NEXT:    ret250  %elt.head = insertelement <8 x half> poison, half %b, i32 0251  %vb = shufflevector <8 x half> %elt.head, <8 x half> poison, <8 x i32> zeroinitializer252  %v = call <8 x half> @llvm.vp.fma.v8f16(<8 x half> %va, <8 x half> %vb, <8 x half> %c, <8 x i1> splat (i1 -1), i32 %evl)253  %u = call <8 x half> @llvm.vp.merge.v8f16(<8 x i1> %m, <8 x half> %v, <8 x half> %c, i32 %evl)254  ret <8 x half> %u255}256 257define <8 x half> @vfmacc_vf_v8f16_commute(<8 x half> %va, half %b, <8 x half> %c, <8 x i1> %m, i32 zeroext %evl) {258; CHECK-LABEL: vfmacc_vf_v8f16_commute:259; CHECK:       # %bb.0:260; CHECK-NEXT:    vsetvli zero, a0, e16, m1, tu, mu261; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t262; CHECK-NEXT:    vmv1r.v v8, v9263; CHECK-NEXT:    ret264  %elt.head = insertelement <8 x half> poison, half %b, i32 0265  %vb = shufflevector <8 x half> %elt.head, <8 x half> poison, <8 x i32> zeroinitializer266  %v = call <8 x half> @llvm.vp.fma.v8f16(<8 x half> %vb, <8 x half> %va, <8 x half> %c, <8 x i1> splat (i1 -1), i32 %evl)267  %u = call <8 x half> @llvm.vp.merge.v8f16(<8 x i1> %m, <8 x half> %v, <8 x half> %c, i32 %evl)268  ret <8 x half> %u269}270 271define <8 x half> @vfmacc_vf_v8f16_unmasked(<8 x half> %va, half %b, <8 x half> %c, i32 zeroext %evl) {272; CHECK-LABEL: vfmacc_vf_v8f16_unmasked:273; CHECK:       # %bb.0:274; CHECK-NEXT:    vsetvli zero, a0, e16, m1, tu, ma275; CHECK-NEXT:    vfmacc.vf v9, fa0, v8276; CHECK-NEXT:    vmv1r.v v8, v9277; CHECK-NEXT:    ret278  %elt.head = insertelement <8 x half> poison, half %b, i32 0279  %vb = shufflevector <8 x half> %elt.head, <8 x half> poison, <8 x i32> zeroinitializer280  %v = call <8 x half> @llvm.vp.fma.v8f16(<8 x half> %va, <8 x half> %vb, <8 x half> %c, <8 x i1> splat (i1 -1), i32 %evl)281  %u = call <8 x half> @llvm.vp.merge.v8f16(<8 x i1> splat (i1 -1), <8 x half> %v, <8 x half> %c, i32 %evl)282  ret <8 x half> %u283}284 285define <8 x half> @vfmacc_vv_v8f16_ta(<8 x half> %a, <8 x half> %b, <8 x half> %c, <8 x i1> %m, i32 zeroext %evl) {286; CHECK-LABEL: vfmacc_vv_v8f16_ta:287; CHECK:       # %bb.0:288; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu289; CHECK-NEXT:    vfmacc.vv v10, v8, v9, v0.t290; CHECK-NEXT:    vmv.v.v v8, v10291; CHECK-NEXT:    ret292  %v = call <8 x half> @llvm.vp.fma.v8f16(<8 x half> %a, <8 x half> %b, <8 x half> %c, <8 x i1> splat (i1 -1), i32 %evl)293  %u = call <8 x half> @llvm.vp.select.v8f16(<8 x i1> %m, <8 x half> %v, <8 x half> %c, i32 %evl)294  ret <8 x half> %u295}296 297define <8 x half> @vfmacc_vf_v8f16_ta(<8 x half> %va, half %b, <8 x half> %c, <8 x i1> %m, i32 zeroext %evl) {298; CHECK-LABEL: vfmacc_vf_v8f16_ta:299; CHECK:       # %bb.0:300; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu301; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t302; CHECK-NEXT:    vmv.v.v v8, v9303; CHECK-NEXT:    ret304  %elt.head = insertelement <8 x half> poison, half %b, i32 0305  %vb = shufflevector <8 x half> %elt.head, <8 x half> poison, <8 x i32> zeroinitializer306  %v = call <8 x half> @llvm.vp.fma.v8f16(<8 x half> %va, <8 x half> %vb, <8 x half> %c, <8 x i1> splat (i1 -1), i32 %evl)307  %u = call <8 x half> @llvm.vp.select.v8f16(<8 x i1> %m, <8 x half> %v, <8 x half> %c, i32 %evl)308  ret <8 x half> %u309}310 311define <8 x half> @vfmacc_vf_v8f16_commute_ta(<8 x half> %va, half %b, <8 x half> %c, <8 x i1> %m, i32 zeroext %evl) {312; CHECK-LABEL: vfmacc_vf_v8f16_commute_ta:313; CHECK:       # %bb.0:314; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu315; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t316; CHECK-NEXT:    vmv.v.v v8, v9317; CHECK-NEXT:    ret318  %elt.head = insertelement <8 x half> poison, half %b, i32 0319  %vb = shufflevector <8 x half> %elt.head, <8 x half> poison, <8 x i32> zeroinitializer320  %v = call <8 x half> @llvm.vp.fma.v8f16(<8 x half> %vb, <8 x half> %va, <8 x half> %c, <8 x i1> splat (i1 -1), i32 %evl)321  %u = call <8 x half> @llvm.vp.select.v8f16(<8 x i1> %m, <8 x half> %v, <8 x half> %c, i32 %evl)322  ret <8 x half> %u323}324 325define <16 x half> @vfmacc_vv_v16f16(<16 x half> %a, <16 x half> %b, <16 x half> %c, <16 x i1> %m, i32 zeroext %evl) {326; CHECK-LABEL: vfmacc_vv_v16f16:327; CHECK:       # %bb.0:328; CHECK-NEXT:    vsetvli zero, a0, e16, m2, tu, mu329; CHECK-NEXT:    vfmacc.vv v12, v8, v10, v0.t330; CHECK-NEXT:    vmv2r.v v8, v12331; CHECK-NEXT:    ret332  %v = call <16 x half> @llvm.vp.fma.v16f16(<16 x half> %a, <16 x half> %b, <16 x half> %c, <16 x i1> splat (i1 -1), i32 %evl)333  %u = call <16 x half> @llvm.vp.merge.v16f16(<16 x i1> %m, <16 x half> %v, <16 x half> %c, i32 %evl)334  ret <16 x half> %u335}336 337define <16 x half> @vfmacc_vv_v16f16_unmasked(<16 x half> %a, <16 x half> %b, <16 x half> %c, <16 x i1> %m, i32 zeroext %evl) {338; CHECK-LABEL: vfmacc_vv_v16f16_unmasked:339; CHECK:       # %bb.0:340; CHECK-NEXT:    vsetvli zero, a0, e16, m2, tu, ma341; CHECK-NEXT:    vfmacc.vv v12, v8, v10342; CHECK-NEXT:    vmv2r.v v8, v12343; CHECK-NEXT:    ret344  %v = call <16 x half> @llvm.vp.fma.v16f16(<16 x half> %a, <16 x half> %b, <16 x half> %c, <16 x i1> splat (i1 -1), i32 %evl)345  %u = call <16 x half> @llvm.vp.merge.v16f16(<16 x i1> splat (i1 -1), <16 x half> %v, <16 x half> %c, i32 %evl)346  ret <16 x half> %u347}348 349define <16 x half> @vfmacc_vf_v16f16(<16 x half> %va, half %b, <16 x half> %c, <16 x i1> %m, i32 zeroext %evl) {350; CHECK-LABEL: vfmacc_vf_v16f16:351; CHECK:       # %bb.0:352; CHECK-NEXT:    vsetvli zero, a0, e16, m2, tu, mu353; CHECK-NEXT:    vfmacc.vf v10, fa0, v8, v0.t354; CHECK-NEXT:    vmv2r.v v8, v10355; CHECK-NEXT:    ret356  %elt.head = insertelement <16 x half> poison, half %b, i32 0357  %vb = shufflevector <16 x half> %elt.head, <16 x half> poison, <16 x i32> zeroinitializer358  %v = call <16 x half> @llvm.vp.fma.v16f16(<16 x half> %va, <16 x half> %vb, <16 x half> %c, <16 x i1> splat (i1 -1), i32 %evl)359  %u = call <16 x half> @llvm.vp.merge.v16f16(<16 x i1> %m, <16 x half> %v, <16 x half> %c, i32 %evl)360  ret <16 x half> %u361}362 363define <16 x half> @vfmacc_vf_v16f16_commute(<16 x half> %va, half %b, <16 x half> %c, <16 x i1> %m, i32 zeroext %evl) {364; CHECK-LABEL: vfmacc_vf_v16f16_commute:365; CHECK:       # %bb.0:366; CHECK-NEXT:    vsetvli zero, a0, e16, m2, tu, mu367; CHECK-NEXT:    vfmacc.vf v10, fa0, v8, v0.t368; CHECK-NEXT:    vmv2r.v v8, v10369; CHECK-NEXT:    ret370  %elt.head = insertelement <16 x half> poison, half %b, i32 0371  %vb = shufflevector <16 x half> %elt.head, <16 x half> poison, <16 x i32> zeroinitializer372  %v = call <16 x half> @llvm.vp.fma.v16f16(<16 x half> %vb, <16 x half> %va, <16 x half> %c, <16 x i1> splat (i1 -1), i32 %evl)373  %u = call <16 x half> @llvm.vp.merge.v16f16(<16 x i1> %m, <16 x half> %v, <16 x half> %c, i32 %evl)374  ret <16 x half> %u375}376 377define <16 x half> @vfmacc_vf_v16f16_unmasked(<16 x half> %va, half %b, <16 x half> %c, i32 zeroext %evl) {378; CHECK-LABEL: vfmacc_vf_v16f16_unmasked:379; CHECK:       # %bb.0:380; CHECK-NEXT:    vsetvli zero, a0, e16, m2, tu, ma381; CHECK-NEXT:    vfmacc.vf v10, fa0, v8382; CHECK-NEXT:    vmv2r.v v8, v10383; CHECK-NEXT:    ret384  %elt.head = insertelement <16 x half> poison, half %b, i32 0385  %vb = shufflevector <16 x half> %elt.head, <16 x half> poison, <16 x i32> zeroinitializer386  %v = call <16 x half> @llvm.vp.fma.v16f16(<16 x half> %va, <16 x half> %vb, <16 x half> %c, <16 x i1> splat (i1 -1), i32 %evl)387  %u = call <16 x half> @llvm.vp.merge.v16f16(<16 x i1> splat (i1 -1), <16 x half> %v, <16 x half> %c, i32 %evl)388  ret <16 x half> %u389}390 391define <16 x half> @vfmacc_vv_v16f16_ta(<16 x half> %a, <16 x half> %b, <16 x half> %c, <16 x i1> %m, i32 zeroext %evl) {392; CHECK-LABEL: vfmacc_vv_v16f16_ta:393; CHECK:       # %bb.0:394; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu395; CHECK-NEXT:    vfmacc.vv v12, v8, v10, v0.t396; CHECK-NEXT:    vmv.v.v v8, v12397; CHECK-NEXT:    ret398  %v = call <16 x half> @llvm.vp.fma.v16f16(<16 x half> %a, <16 x half> %b, <16 x half> %c, <16 x i1> splat (i1 -1), i32 %evl)399  %u = call <16 x half> @llvm.vp.select.v16f16(<16 x i1> %m, <16 x half> %v, <16 x half> %c, i32 %evl)400  ret <16 x half> %u401}402 403define <16 x half> @vfmacc_vf_v16f16_ta(<16 x half> %va, half %b, <16 x half> %c, <16 x i1> %m, i32 zeroext %evl) {404; CHECK-LABEL: vfmacc_vf_v16f16_ta:405; CHECK:       # %bb.0:406; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu407; CHECK-NEXT:    vfmacc.vf v10, fa0, v8, v0.t408; CHECK-NEXT:    vmv.v.v v8, v10409; CHECK-NEXT:    ret410  %elt.head = insertelement <16 x half> poison, half %b, i32 0411  %vb = shufflevector <16 x half> %elt.head, <16 x half> poison, <16 x i32> zeroinitializer412  %v = call <16 x half> @llvm.vp.fma.v16f16(<16 x half> %va, <16 x half> %vb, <16 x half> %c, <16 x i1> splat (i1 -1), i32 %evl)413  %u = call <16 x half> @llvm.vp.select.v16f16(<16 x i1> %m, <16 x half> %v, <16 x half> %c, i32 %evl)414  ret <16 x half> %u415}416 417define <16 x half> @vfmacc_vf_v16f16_commute_ta(<16 x half> %va, half %b, <16 x half> %c, <16 x i1> %m, i32 zeroext %evl) {418; CHECK-LABEL: vfmacc_vf_v16f16_commute_ta:419; CHECK:       # %bb.0:420; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu421; CHECK-NEXT:    vfmacc.vf v10, fa0, v8, v0.t422; CHECK-NEXT:    vmv.v.v v8, v10423; CHECK-NEXT:    ret424  %elt.head = insertelement <16 x half> poison, half %b, i32 0425  %vb = shufflevector <16 x half> %elt.head, <16 x half> poison, <16 x i32> zeroinitializer426  %v = call <16 x half> @llvm.vp.fma.v16f16(<16 x half> %vb, <16 x half> %va, <16 x half> %c, <16 x i1> splat (i1 -1), i32 %evl)427  %u = call <16 x half> @llvm.vp.select.v16f16(<16 x i1> %m, <16 x half> %v, <16 x half> %c, i32 %evl)428  ret <16 x half> %u429}430 431define <32 x half> @vfmacc_vv_v32f16(<32 x half> %a, <32 x half> %b, <32 x half> %c, <32 x i1> %m, i32 zeroext %evl) {432; CHECK-LABEL: vfmacc_vv_v32f16:433; CHECK:       # %bb.0:434; CHECK-NEXT:    vsetvli zero, a0, e16, m4, tu, mu435; CHECK-NEXT:    vfmacc.vv v16, v8, v12, v0.t436; CHECK-NEXT:    vmv4r.v v8, v16437; CHECK-NEXT:    ret438  %v = call <32 x half> @llvm.vp.fma.v32f16(<32 x half> %a, <32 x half> %b, <32 x half> %c, <32 x i1> splat (i1 -1), i32 %evl)439  %u = call <32 x half> @llvm.vp.merge.v32f16(<32 x i1> %m, <32 x half> %v, <32 x half> %c, i32 %evl)440  ret <32 x half> %u441}442 443define <32 x half> @vfmacc_vv_v32f16_unmasked(<32 x half> %a, <32 x half> %b, <32 x half> %c, <32 x i1> %m, i32 zeroext %evl) {444; CHECK-LABEL: vfmacc_vv_v32f16_unmasked:445; CHECK:       # %bb.0:446; CHECK-NEXT:    vsetvli zero, a0, e16, m4, tu, ma447; CHECK-NEXT:    vfmacc.vv v16, v8, v12448; CHECK-NEXT:    vmv4r.v v8, v16449; CHECK-NEXT:    ret450  %v = call <32 x half> @llvm.vp.fma.v32f16(<32 x half> %a, <32 x half> %b, <32 x half> %c, <32 x i1> splat (i1 -1), i32 %evl)451  %u = call <32 x half> @llvm.vp.merge.v32f16(<32 x i1> splat (i1 -1), <32 x half> %v, <32 x half> %c, i32 %evl)452  ret <32 x half> %u453}454 455define <32 x half> @vfmacc_vf_v32f16(<32 x half> %va, half %b, <32 x half> %c, <32 x i1> %m, i32 zeroext %evl) {456; CHECK-LABEL: vfmacc_vf_v32f16:457; CHECK:       # %bb.0:458; CHECK-NEXT:    vsetvli zero, a0, e16, m4, tu, mu459; CHECK-NEXT:    vfmacc.vf v12, fa0, v8, v0.t460; CHECK-NEXT:    vmv4r.v v8, v12461; CHECK-NEXT:    ret462  %elt.head = insertelement <32 x half> poison, half %b, i32 0463  %vb = shufflevector <32 x half> %elt.head, <32 x half> poison, <32 x i32> zeroinitializer464  %v = call <32 x half> @llvm.vp.fma.v32f16(<32 x half> %va, <32 x half> %vb, <32 x half> %c, <32 x i1> splat (i1 -1), i32 %evl)465  %u = call <32 x half> @llvm.vp.merge.v32f16(<32 x i1> %m, <32 x half> %v, <32 x half> %c, i32 %evl)466  ret <32 x half> %u467}468 469define <32 x half> @vfmacc_vf_v32f16_commute(<32 x half> %va, half %b, <32 x half> %c, <32 x i1> %m, i32 zeroext %evl) {470; CHECK-LABEL: vfmacc_vf_v32f16_commute:471; CHECK:       # %bb.0:472; CHECK-NEXT:    vsetvli zero, a0, e16, m4, tu, mu473; CHECK-NEXT:    vfmacc.vf v12, fa0, v8, v0.t474; CHECK-NEXT:    vmv4r.v v8, v12475; CHECK-NEXT:    ret476  %elt.head = insertelement <32 x half> poison, half %b, i32 0477  %vb = shufflevector <32 x half> %elt.head, <32 x half> poison, <32 x i32> zeroinitializer478  %v = call <32 x half> @llvm.vp.fma.v32f16(<32 x half> %vb, <32 x half> %va, <32 x half> %c, <32 x i1> splat (i1 -1), i32 %evl)479  %u = call <32 x half> @llvm.vp.merge.v32f16(<32 x i1> %m, <32 x half> %v, <32 x half> %c, i32 %evl)480  ret <32 x half> %u481}482 483define <32 x half> @vfmacc_vf_v32f16_unmasked(<32 x half> %va, half %b, <32 x half> %c, i32 zeroext %evl) {484; CHECK-LABEL: vfmacc_vf_v32f16_unmasked:485; CHECK:       # %bb.0:486; CHECK-NEXT:    vsetvli zero, a0, e16, m4, tu, ma487; CHECK-NEXT:    vfmacc.vf v12, fa0, v8488; CHECK-NEXT:    vmv4r.v v8, v12489; CHECK-NEXT:    ret490  %elt.head = insertelement <32 x half> poison, half %b, i32 0491  %vb = shufflevector <32 x half> %elt.head, <32 x half> poison, <32 x i32> zeroinitializer492  %v = call <32 x half> @llvm.vp.fma.v32f16(<32 x half> %va, <32 x half> %vb, <32 x half> %c, <32 x i1> splat (i1 -1), i32 %evl)493  %u = call <32 x half> @llvm.vp.merge.v32f16(<32 x i1> splat (i1 -1), <32 x half> %v, <32 x half> %c, i32 %evl)494  ret <32 x half> %u495}496 497define <32 x half> @vfmacc_vv_v32f16_ta(<32 x half> %a, <32 x half> %b, <32 x half> %c, <32 x i1> %m, i32 zeroext %evl) {498; CHECK-LABEL: vfmacc_vv_v32f16_ta:499; CHECK:       # %bb.0:500; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu501; CHECK-NEXT:    vfmacc.vv v16, v8, v12, v0.t502; CHECK-NEXT:    vmv.v.v v8, v16503; CHECK-NEXT:    ret504  %v = call <32 x half> @llvm.vp.fma.v32f16(<32 x half> %a, <32 x half> %b, <32 x half> %c, <32 x i1> splat (i1 -1), i32 %evl)505  %u = call <32 x half> @llvm.vp.select.v32f16(<32 x i1> %m, <32 x half> %v, <32 x half> %c, i32 %evl)506  ret <32 x half> %u507}508 509define <32 x half> @vfmacc_vf_v32f16_ta(<32 x half> %va, half %b, <32 x half> %c, <32 x i1> %m, i32 zeroext %evl) {510; CHECK-LABEL: vfmacc_vf_v32f16_ta:511; CHECK:       # %bb.0:512; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu513; CHECK-NEXT:    vfmacc.vf v12, fa0, v8, v0.t514; CHECK-NEXT:    vmv.v.v v8, v12515; CHECK-NEXT:    ret516  %elt.head = insertelement <32 x half> poison, half %b, i32 0517  %vb = shufflevector <32 x half> %elt.head, <32 x half> poison, <32 x i32> zeroinitializer518  %v = call <32 x half> @llvm.vp.fma.v32f16(<32 x half> %va, <32 x half> %vb, <32 x half> %c, <32 x i1> splat (i1 -1), i32 %evl)519  %u = call <32 x half> @llvm.vp.select.v32f16(<32 x i1> %m, <32 x half> %v, <32 x half> %c, i32 %evl)520  ret <32 x half> %u521}522 523define <32 x half> @vfmacc_vf_v32f16_commute_ta(<32 x half> %va, half %b, <32 x half> %c, <32 x i1> %m, i32 zeroext %evl) {524; CHECK-LABEL: vfmacc_vf_v32f16_commute_ta:525; CHECK:       # %bb.0:526; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu527; CHECK-NEXT:    vfmacc.vf v12, fa0, v8, v0.t528; CHECK-NEXT:    vmv.v.v v8, v12529; CHECK-NEXT:    ret530  %elt.head = insertelement <32 x half> poison, half %b, i32 0531  %vb = shufflevector <32 x half> %elt.head, <32 x half> poison, <32 x i32> zeroinitializer532  %v = call <32 x half> @llvm.vp.fma.v32f16(<32 x half> %vb, <32 x half> %va, <32 x half> %c, <32 x i1> splat (i1 -1), i32 %evl)533  %u = call <32 x half> @llvm.vp.select.v32f16(<32 x i1> %m, <32 x half> %v, <32 x half> %c, i32 %evl)534  ret <32 x half> %u535}536 537define <2 x float> @vfmacc_vv_v2f32(<2 x float> %a, <2 x float> %b, <2 x float> %c, <2 x i1> %m, i32 zeroext %evl) {538; CHECK-LABEL: vfmacc_vv_v2f32:539; CHECK:       # %bb.0:540; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, tu, mu541; CHECK-NEXT:    vfmacc.vv v10, v8, v9, v0.t542; CHECK-NEXT:    vmv1r.v v8, v10543; CHECK-NEXT:    ret544  %v = call <2 x float> @llvm.vp.fma.v2f32(<2 x float> %a, <2 x float> %b, <2 x float> %c, <2 x i1> splat (i1 -1), i32 %evl)545  %u = call <2 x float> @llvm.vp.merge.v2f32(<2 x i1> %m, <2 x float> %v, <2 x float> %c, i32 %evl)546  ret <2 x float> %u547}548 549define <2 x float> @vfmacc_vv_v2f32_unmasked(<2 x float> %a, <2 x float> %b, <2 x float> %c, <2 x i1> %m, i32 zeroext %evl) {550; CHECK-LABEL: vfmacc_vv_v2f32_unmasked:551; CHECK:       # %bb.0:552; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, tu, ma553; CHECK-NEXT:    vfmacc.vv v10, v8, v9554; CHECK-NEXT:    vmv1r.v v8, v10555; CHECK-NEXT:    ret556  %v = call <2 x float> @llvm.vp.fma.v2f32(<2 x float> %a, <2 x float> %b, <2 x float> %c, <2 x i1> splat (i1 -1), i32 %evl)557  %u = call <2 x float> @llvm.vp.merge.v2f32(<2 x i1> splat (i1 -1), <2 x float> %v, <2 x float> %c, i32 %evl)558  ret <2 x float> %u559}560 561define <2 x float> @vfmacc_vf_v2f32(<2 x float> %va, float %b, <2 x float> %c, <2 x i1> %m, i32 zeroext %evl) {562; CHECK-LABEL: vfmacc_vf_v2f32:563; CHECK:       # %bb.0:564; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, tu, mu565; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t566; CHECK-NEXT:    vmv1r.v v8, v9567; CHECK-NEXT:    ret568  %elt.head = insertelement <2 x float> poison, float %b, i32 0569  %vb = shufflevector <2 x float> %elt.head, <2 x float> poison, <2 x i32> zeroinitializer570  %v = call <2 x float> @llvm.vp.fma.v2f32(<2 x float> %va, <2 x float> %vb, <2 x float> %c, <2 x i1> splat (i1 -1), i32 %evl)571  %u = call <2 x float> @llvm.vp.merge.v2f32(<2 x i1> %m, <2 x float> %v, <2 x float> %c, i32 %evl)572  ret <2 x float> %u573}574 575define <2 x float> @vfmacc_vf_v2f32_commute(<2 x float> %va, float %b, <2 x float> %c, <2 x i1> %m, i32 zeroext %evl) {576; CHECK-LABEL: vfmacc_vf_v2f32_commute:577; CHECK:       # %bb.0:578; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, tu, mu579; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t580; CHECK-NEXT:    vmv1r.v v8, v9581; CHECK-NEXT:    ret582  %elt.head = insertelement <2 x float> poison, float %b, i32 0583  %vb = shufflevector <2 x float> %elt.head, <2 x float> poison, <2 x i32> zeroinitializer584  %v = call <2 x float> @llvm.vp.fma.v2f32(<2 x float> %vb, <2 x float> %va, <2 x float> %c, <2 x i1> splat (i1 -1), i32 %evl)585  %u = call <2 x float> @llvm.vp.merge.v2f32(<2 x i1> %m, <2 x float> %v, <2 x float> %c, i32 %evl)586  ret <2 x float> %u587}588 589define <2 x float> @vfmacc_vf_v2f32_unmasked(<2 x float> %va, float %b, <2 x float> %c, i32 zeroext %evl) {590; CHECK-LABEL: vfmacc_vf_v2f32_unmasked:591; CHECK:       # %bb.0:592; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, tu, ma593; CHECK-NEXT:    vfmacc.vf v9, fa0, v8594; CHECK-NEXT:    vmv1r.v v8, v9595; CHECK-NEXT:    ret596  %elt.head = insertelement <2 x float> poison, float %b, i32 0597  %vb = shufflevector <2 x float> %elt.head, <2 x float> poison, <2 x i32> zeroinitializer598  %v = call <2 x float> @llvm.vp.fma.v2f32(<2 x float> %va, <2 x float> %vb, <2 x float> %c, <2 x i1> splat (i1 -1), i32 %evl)599  %u = call <2 x float> @llvm.vp.merge.v2f32(<2 x i1> splat (i1 -1), <2 x float> %v, <2 x float> %c, i32 %evl)600  ret <2 x float> %u601}602 603define <2 x float> @vfmacc_vv_v2f32_ta(<2 x float> %a, <2 x float> %b, <2 x float> %c, <2 x i1> %m, i32 zeroext %evl) {604; CHECK-LABEL: vfmacc_vv_v2f32_ta:605; CHECK:       # %bb.0:606; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu607; CHECK-NEXT:    vfmacc.vv v10, v8, v9, v0.t608; CHECK-NEXT:    vmv1r.v v8, v10609; CHECK-NEXT:    ret610  %v = call <2 x float> @llvm.vp.fma.v2f32(<2 x float> %a, <2 x float> %b, <2 x float> %c, <2 x i1> splat (i1 -1), i32 %evl)611  %u = call <2 x float> @llvm.vp.select.v2f32(<2 x i1> %m, <2 x float> %v, <2 x float> %c, i32 %evl)612  ret <2 x float> %u613}614 615define <2 x float> @vfmacc_vf_v2f32_ta(<2 x float> %va, float %b, <2 x float> %c, <2 x i1> %m, i32 zeroext %evl) {616; CHECK-LABEL: vfmacc_vf_v2f32_ta:617; CHECK:       # %bb.0:618; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu619; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t620; CHECK-NEXT:    vmv1r.v v8, v9621; CHECK-NEXT:    ret622  %elt.head = insertelement <2 x float> poison, float %b, i32 0623  %vb = shufflevector <2 x float> %elt.head, <2 x float> poison, <2 x i32> zeroinitializer624  %v = call <2 x float> @llvm.vp.fma.v2f32(<2 x float> %va, <2 x float> %vb, <2 x float> %c, <2 x i1> splat (i1 -1), i32 %evl)625  %u = call <2 x float> @llvm.vp.select.v2f32(<2 x i1> %m, <2 x float> %v, <2 x float> %c, i32 %evl)626  ret <2 x float> %u627}628 629define <2 x float> @vfmacc_vf_v2f32_commute_ta(<2 x float> %va, float %b, <2 x float> %c, <2 x i1> %m, i32 zeroext %evl) {630; CHECK-LABEL: vfmacc_vf_v2f32_commute_ta:631; CHECK:       # %bb.0:632; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu633; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t634; CHECK-NEXT:    vmv1r.v v8, v9635; CHECK-NEXT:    ret636  %elt.head = insertelement <2 x float> poison, float %b, i32 0637  %vb = shufflevector <2 x float> %elt.head, <2 x float> poison, <2 x i32> zeroinitializer638  %v = call <2 x float> @llvm.vp.fma.v2f32(<2 x float> %vb, <2 x float> %va, <2 x float> %c, <2 x i1> splat (i1 -1), i32 %evl)639  %u = call <2 x float> @llvm.vp.select.v2f32(<2 x i1> %m, <2 x float> %v, <2 x float> %c, i32 %evl)640  ret <2 x float> %u641}642 643define <4 x float> @vfmacc_vv_v4f32(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x i1> %m, i32 zeroext %evl) {644; CHECK-LABEL: vfmacc_vv_v4f32:645; CHECK:       # %bb.0:646; CHECK-NEXT:    vsetvli zero, a0, e32, m1, tu, mu647; CHECK-NEXT:    vfmacc.vv v10, v8, v9, v0.t648; CHECK-NEXT:    vmv1r.v v8, v10649; CHECK-NEXT:    ret650  %v = call <4 x float> @llvm.vp.fma.v4f32(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x i1> splat (i1 -1), i32 %evl)651  %u = call <4 x float> @llvm.vp.merge.v4f32(<4 x i1> %m, <4 x float> %v, <4 x float> %c, i32 %evl)652  ret <4 x float> %u653}654 655define <4 x float> @vfmacc_vv_v4f32_unmasked(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x i1> %m, i32 zeroext %evl) {656; CHECK-LABEL: vfmacc_vv_v4f32_unmasked:657; CHECK:       # %bb.0:658; CHECK-NEXT:    vsetvli zero, a0, e32, m1, tu, ma659; CHECK-NEXT:    vfmacc.vv v10, v8, v9660; CHECK-NEXT:    vmv1r.v v8, v10661; CHECK-NEXT:    ret662  %v = call <4 x float> @llvm.vp.fma.v4f32(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x i1> splat (i1 -1), i32 %evl)663  %u = call <4 x float> @llvm.vp.merge.v4f32(<4 x i1> splat (i1 -1), <4 x float> %v, <4 x float> %c, i32 %evl)664  ret <4 x float> %u665}666 667define <4 x float> @vfmacc_vf_v4f32(<4 x float> %va, float %b, <4 x float> %c, <4 x i1> %m, i32 zeroext %evl) {668; CHECK-LABEL: vfmacc_vf_v4f32:669; CHECK:       # %bb.0:670; CHECK-NEXT:    vsetvli zero, a0, e32, m1, tu, mu671; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t672; CHECK-NEXT:    vmv1r.v v8, v9673; CHECK-NEXT:    ret674  %elt.head = insertelement <4 x float> poison, float %b, i32 0675  %vb = shufflevector <4 x float> %elt.head, <4 x float> poison, <4 x i32> zeroinitializer676  %v = call <4 x float> @llvm.vp.fma.v4f32(<4 x float> %va, <4 x float> %vb, <4 x float> %c, <4 x i1> splat (i1 -1), i32 %evl)677  %u = call <4 x float> @llvm.vp.merge.v4f32(<4 x i1> %m, <4 x float> %v, <4 x float> %c, i32 %evl)678  ret <4 x float> %u679}680 681define <4 x float> @vfmacc_vf_v4f32_commute(<4 x float> %va, float %b, <4 x float> %c, <4 x i1> %m, i32 zeroext %evl) {682; CHECK-LABEL: vfmacc_vf_v4f32_commute:683; CHECK:       # %bb.0:684; CHECK-NEXT:    vsetvli zero, a0, e32, m1, tu, mu685; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t686; CHECK-NEXT:    vmv1r.v v8, v9687; CHECK-NEXT:    ret688  %elt.head = insertelement <4 x float> poison, float %b, i32 0689  %vb = shufflevector <4 x float> %elt.head, <4 x float> poison, <4 x i32> zeroinitializer690  %v = call <4 x float> @llvm.vp.fma.v4f32(<4 x float> %vb, <4 x float> %va, <4 x float> %c, <4 x i1> splat (i1 -1), i32 %evl)691  %u = call <4 x float> @llvm.vp.merge.v4f32(<4 x i1> %m, <4 x float> %v, <4 x float> %c, i32 %evl)692  ret <4 x float> %u693}694 695define <4 x float> @vfmacc_vf_v4f32_unmasked(<4 x float> %va, float %b, <4 x float> %c, i32 zeroext %evl) {696; CHECK-LABEL: vfmacc_vf_v4f32_unmasked:697; CHECK:       # %bb.0:698; CHECK-NEXT:    vsetvli zero, a0, e32, m1, tu, ma699; CHECK-NEXT:    vfmacc.vf v9, fa0, v8700; CHECK-NEXT:    vmv1r.v v8, v9701; CHECK-NEXT:    ret702  %elt.head = insertelement <4 x float> poison, float %b, i32 0703  %vb = shufflevector <4 x float> %elt.head, <4 x float> poison, <4 x i32> zeroinitializer704  %v = call <4 x float> @llvm.vp.fma.v4f32(<4 x float> %va, <4 x float> %vb, <4 x float> %c, <4 x i1> splat (i1 -1), i32 %evl)705  %u = call <4 x float> @llvm.vp.merge.v4f32(<4 x i1> splat (i1 -1), <4 x float> %v, <4 x float> %c, i32 %evl)706  ret <4 x float> %u707}708 709define <4 x float> @vfmacc_vv_v4f32_ta(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x i1> %m, i32 zeroext %evl) {710; CHECK-LABEL: vfmacc_vv_v4f32_ta:711; CHECK:       # %bb.0:712; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu713; CHECK-NEXT:    vfmacc.vv v10, v8, v9, v0.t714; CHECK-NEXT:    vmv.v.v v8, v10715; CHECK-NEXT:    ret716  %v = call <4 x float> @llvm.vp.fma.v4f32(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x i1> splat (i1 -1), i32 %evl)717  %u = call <4 x float> @llvm.vp.select.v4f32(<4 x i1> %m, <4 x float> %v, <4 x float> %c, i32 %evl)718  ret <4 x float> %u719}720 721define <4 x float> @vfmacc_vf_v4f32_ta(<4 x float> %va, float %b, <4 x float> %c, <4 x i1> %m, i32 zeroext %evl) {722; CHECK-LABEL: vfmacc_vf_v4f32_ta:723; CHECK:       # %bb.0:724; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu725; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t726; CHECK-NEXT:    vmv.v.v v8, v9727; CHECK-NEXT:    ret728  %elt.head = insertelement <4 x float> poison, float %b, i32 0729  %vb = shufflevector <4 x float> %elt.head, <4 x float> poison, <4 x i32> zeroinitializer730  %v = call <4 x float> @llvm.vp.fma.v4f32(<4 x float> %va, <4 x float> %vb, <4 x float> %c, <4 x i1> splat (i1 -1), i32 %evl)731  %u = call <4 x float> @llvm.vp.select.v4f32(<4 x i1> %m, <4 x float> %v, <4 x float> %c, i32 %evl)732  ret <4 x float> %u733}734 735define <4 x float> @vfmacc_vf_v4f32_commute_ta(<4 x float> %va, float %b, <4 x float> %c, <4 x i1> %m, i32 zeroext %evl) {736; CHECK-LABEL: vfmacc_vf_v4f32_commute_ta:737; CHECK:       # %bb.0:738; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu739; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t740; CHECK-NEXT:    vmv.v.v v8, v9741; CHECK-NEXT:    ret742  %elt.head = insertelement <4 x float> poison, float %b, i32 0743  %vb = shufflevector <4 x float> %elt.head, <4 x float> poison, <4 x i32> zeroinitializer744  %v = call <4 x float> @llvm.vp.fma.v4f32(<4 x float> %vb, <4 x float> %va, <4 x float> %c, <4 x i1> splat (i1 -1), i32 %evl)745  %u = call <4 x float> @llvm.vp.select.v4f32(<4 x i1> %m, <4 x float> %v, <4 x float> %c, i32 %evl)746  ret <4 x float> %u747}748 749define <8 x float> @vfmacc_vv_v8f32(<8 x float> %a, <8 x float> %b, <8 x float> %c, <8 x i1> %m, i32 zeroext %evl) {750; CHECK-LABEL: vfmacc_vv_v8f32:751; CHECK:       # %bb.0:752; CHECK-NEXT:    vsetvli zero, a0, e32, m2, tu, mu753; CHECK-NEXT:    vfmacc.vv v12, v8, v10, v0.t754; CHECK-NEXT:    vmv2r.v v8, v12755; CHECK-NEXT:    ret756  %v = call <8 x float> @llvm.vp.fma.v8f32(<8 x float> %a, <8 x float> %b, <8 x float> %c, <8 x i1> splat (i1 -1), i32 %evl)757  %u = call <8 x float> @llvm.vp.merge.v8f32(<8 x i1> %m, <8 x float> %v, <8 x float> %c, i32 %evl)758  ret <8 x float> %u759}760 761define <8 x float> @vfmacc_vv_v8f32_unmasked(<8 x float> %a, <8 x float> %b, <8 x float> %c, <8 x i1> %m, i32 zeroext %evl) {762; CHECK-LABEL: vfmacc_vv_v8f32_unmasked:763; CHECK:       # %bb.0:764; CHECK-NEXT:    vsetvli zero, a0, e32, m2, tu, ma765; CHECK-NEXT:    vfmacc.vv v12, v8, v10766; CHECK-NEXT:    vmv2r.v v8, v12767; CHECK-NEXT:    ret768  %v = call <8 x float> @llvm.vp.fma.v8f32(<8 x float> %a, <8 x float> %b, <8 x float> %c, <8 x i1> splat (i1 -1), i32 %evl)769  %u = call <8 x float> @llvm.vp.merge.v8f32(<8 x i1> splat (i1 -1), <8 x float> %v, <8 x float> %c, i32 %evl)770  ret <8 x float> %u771}772 773define <8 x float> @vfmacc_vf_v8f32(<8 x float> %va, float %b, <8 x float> %c, <8 x i1> %m, i32 zeroext %evl) {774; CHECK-LABEL: vfmacc_vf_v8f32:775; CHECK:       # %bb.0:776; CHECK-NEXT:    vsetvli zero, a0, e32, m2, tu, mu777; CHECK-NEXT:    vfmacc.vf v10, fa0, v8, v0.t778; CHECK-NEXT:    vmv2r.v v8, v10779; CHECK-NEXT:    ret780  %elt.head = insertelement <8 x float> poison, float %b, i32 0781  %vb = shufflevector <8 x float> %elt.head, <8 x float> poison, <8 x i32> zeroinitializer782  %v = call <8 x float> @llvm.vp.fma.v8f32(<8 x float> %va, <8 x float> %vb, <8 x float> %c, <8 x i1> splat (i1 -1), i32 %evl)783  %u = call <8 x float> @llvm.vp.merge.v8f32(<8 x i1> %m, <8 x float> %v, <8 x float> %c, i32 %evl)784  ret <8 x float> %u785}786 787define <8 x float> @vfmacc_vf_v8f32_commute(<8 x float> %va, float %b, <8 x float> %c, <8 x i1> %m, i32 zeroext %evl) {788; CHECK-LABEL: vfmacc_vf_v8f32_commute:789; CHECK:       # %bb.0:790; CHECK-NEXT:    vsetvli zero, a0, e32, m2, tu, mu791; CHECK-NEXT:    vfmacc.vf v10, fa0, v8, v0.t792; CHECK-NEXT:    vmv2r.v v8, v10793; CHECK-NEXT:    ret794  %elt.head = insertelement <8 x float> poison, float %b, i32 0795  %vb = shufflevector <8 x float> %elt.head, <8 x float> poison, <8 x i32> zeroinitializer796  %v = call <8 x float> @llvm.vp.fma.v8f32(<8 x float> %vb, <8 x float> %va, <8 x float> %c, <8 x i1> splat (i1 -1), i32 %evl)797  %u = call <8 x float> @llvm.vp.merge.v8f32(<8 x i1> %m, <8 x float> %v, <8 x float> %c, i32 %evl)798  ret <8 x float> %u799}800 801define <8 x float> @vfmacc_vf_v8f32_unmasked(<8 x float> %va, float %b, <8 x float> %c, i32 zeroext %evl) {802; CHECK-LABEL: vfmacc_vf_v8f32_unmasked:803; CHECK:       # %bb.0:804; CHECK-NEXT:    vsetvli zero, a0, e32, m2, tu, ma805; CHECK-NEXT:    vfmacc.vf v10, fa0, v8806; CHECK-NEXT:    vmv2r.v v8, v10807; CHECK-NEXT:    ret808  %elt.head = insertelement <8 x float> poison, float %b, i32 0809  %vb = shufflevector <8 x float> %elt.head, <8 x float> poison, <8 x i32> zeroinitializer810  %v = call <8 x float> @llvm.vp.fma.v8f32(<8 x float> %va, <8 x float> %vb, <8 x float> %c, <8 x i1> splat (i1 -1), i32 %evl)811  %u = call <8 x float> @llvm.vp.merge.v8f32(<8 x i1> splat (i1 -1), <8 x float> %v, <8 x float> %c, i32 %evl)812  ret <8 x float> %u813}814 815define <8 x float> @vfmacc_vv_v8f32_ta(<8 x float> %a, <8 x float> %b, <8 x float> %c, <8 x i1> %m, i32 zeroext %evl) {816; CHECK-LABEL: vfmacc_vv_v8f32_ta:817; CHECK:       # %bb.0:818; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu819; CHECK-NEXT:    vfmacc.vv v12, v8, v10, v0.t820; CHECK-NEXT:    vmv.v.v v8, v12821; CHECK-NEXT:    ret822  %v = call <8 x float> @llvm.vp.fma.v8f32(<8 x float> %a, <8 x float> %b, <8 x float> %c, <8 x i1> splat (i1 -1), i32 %evl)823  %u = call <8 x float> @llvm.vp.select.v8f32(<8 x i1> %m, <8 x float> %v, <8 x float> %c, i32 %evl)824  ret <8 x float> %u825}826 827define <8 x float> @vfmacc_vf_v8f32_ta(<8 x float> %va, float %b, <8 x float> %c, <8 x i1> %m, i32 zeroext %evl) {828; CHECK-LABEL: vfmacc_vf_v8f32_ta:829; CHECK:       # %bb.0:830; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu831; CHECK-NEXT:    vfmacc.vf v10, fa0, v8, v0.t832; CHECK-NEXT:    vmv.v.v v8, v10833; CHECK-NEXT:    ret834  %elt.head = insertelement <8 x float> poison, float %b, i32 0835  %vb = shufflevector <8 x float> %elt.head, <8 x float> poison, <8 x i32> zeroinitializer836  %v = call <8 x float> @llvm.vp.fma.v8f32(<8 x float> %va, <8 x float> %vb, <8 x float> %c, <8 x i1> splat (i1 -1), i32 %evl)837  %u = call <8 x float> @llvm.vp.select.v8f32(<8 x i1> %m, <8 x float> %v, <8 x float> %c, i32 %evl)838  ret <8 x float> %u839}840 841define <8 x float> @vfmacc_vf_v8f32_commute_ta(<8 x float> %va, float %b, <8 x float> %c, <8 x i1> %m, i32 zeroext %evl) {842; CHECK-LABEL: vfmacc_vf_v8f32_commute_ta:843; CHECK:       # %bb.0:844; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu845; CHECK-NEXT:    vfmacc.vf v10, fa0, v8, v0.t846; CHECK-NEXT:    vmv.v.v v8, v10847; CHECK-NEXT:    ret848  %elt.head = insertelement <8 x float> poison, float %b, i32 0849  %vb = shufflevector <8 x float> %elt.head, <8 x float> poison, <8 x i32> zeroinitializer850  %v = call <8 x float> @llvm.vp.fma.v8f32(<8 x float> %vb, <8 x float> %va, <8 x float> %c, <8 x i1> splat (i1 -1), i32 %evl)851  %u = call <8 x float> @llvm.vp.select.v8f32(<8 x i1> %m, <8 x float> %v, <8 x float> %c, i32 %evl)852  ret <8 x float> %u853}854 855define <16 x float> @vfmacc_vv_v16f32(<16 x float> %a, <16 x float> %b, <16 x float> %c, <16 x i1> %m, i32 zeroext %evl) {856; CHECK-LABEL: vfmacc_vv_v16f32:857; CHECK:       # %bb.0:858; CHECK-NEXT:    vsetvli zero, a0, e32, m4, tu, mu859; CHECK-NEXT:    vfmacc.vv v16, v8, v12, v0.t860; CHECK-NEXT:    vmv4r.v v8, v16861; CHECK-NEXT:    ret862  %v = call <16 x float> @llvm.vp.fma.v16f32(<16 x float> %a, <16 x float> %b, <16 x float> %c, <16 x i1> splat (i1 -1), i32 %evl)863  %u = call <16 x float> @llvm.vp.merge.v16f32(<16 x i1> %m, <16 x float> %v, <16 x float> %c, i32 %evl)864  ret <16 x float> %u865}866 867define <16 x float> @vfmacc_vv_v16f32_unmasked(<16 x float> %a, <16 x float> %b, <16 x float> %c, <16 x i1> %m, i32 zeroext %evl) {868; CHECK-LABEL: vfmacc_vv_v16f32_unmasked:869; CHECK:       # %bb.0:870; CHECK-NEXT:    vsetvli zero, a0, e32, m4, tu, ma871; CHECK-NEXT:    vfmacc.vv v16, v8, v12872; CHECK-NEXT:    vmv4r.v v8, v16873; CHECK-NEXT:    ret874  %v = call <16 x float> @llvm.vp.fma.v16f32(<16 x float> %a, <16 x float> %b, <16 x float> %c, <16 x i1> splat (i1 -1), i32 %evl)875  %u = call <16 x float> @llvm.vp.merge.v16f32(<16 x i1> splat (i1 -1), <16 x float> %v, <16 x float> %c, i32 %evl)876  ret <16 x float> %u877}878 879define <16 x float> @vfmacc_vf_v16f32(<16 x float> %va, float %b, <16 x float> %c, <16 x i1> %m, i32 zeroext %evl) {880; CHECK-LABEL: vfmacc_vf_v16f32:881; CHECK:       # %bb.0:882; CHECK-NEXT:    vsetvli zero, a0, e32, m4, tu, mu883; CHECK-NEXT:    vfmacc.vf v12, fa0, v8, v0.t884; CHECK-NEXT:    vmv4r.v v8, v12885; CHECK-NEXT:    ret886  %elt.head = insertelement <16 x float> poison, float %b, i32 0887  %vb = shufflevector <16 x float> %elt.head, <16 x float> poison, <16 x i32> zeroinitializer888  %v = call <16 x float> @llvm.vp.fma.v16f32(<16 x float> %va, <16 x float> %vb, <16 x float> %c, <16 x i1> splat (i1 -1), i32 %evl)889  %u = call <16 x float> @llvm.vp.merge.v16f32(<16 x i1> %m, <16 x float> %v, <16 x float> %c, i32 %evl)890  ret <16 x float> %u891}892 893define <16 x float> @vfmacc_vf_v16f32_commute(<16 x float> %va, float %b, <16 x float> %c, <16 x i1> %m, i32 zeroext %evl) {894; CHECK-LABEL: vfmacc_vf_v16f32_commute:895; CHECK:       # %bb.0:896; CHECK-NEXT:    vsetvli zero, a0, e32, m4, tu, mu897; CHECK-NEXT:    vfmacc.vf v12, fa0, v8, v0.t898; CHECK-NEXT:    vmv4r.v v8, v12899; CHECK-NEXT:    ret900  %elt.head = insertelement <16 x float> poison, float %b, i32 0901  %vb = shufflevector <16 x float> %elt.head, <16 x float> poison, <16 x i32> zeroinitializer902  %v = call <16 x float> @llvm.vp.fma.v16f32(<16 x float> %vb, <16 x float> %va, <16 x float> %c, <16 x i1> splat (i1 -1), i32 %evl)903  %u = call <16 x float> @llvm.vp.merge.v16f32(<16 x i1> %m, <16 x float> %v, <16 x float> %c, i32 %evl)904  ret <16 x float> %u905}906 907define <16 x float> @vfmacc_vf_v16f32_unmasked(<16 x float> %va, float %b, <16 x float> %c, i32 zeroext %evl) {908; CHECK-LABEL: vfmacc_vf_v16f32_unmasked:909; CHECK:       # %bb.0:910; CHECK-NEXT:    vsetvli zero, a0, e32, m4, tu, ma911; CHECK-NEXT:    vfmacc.vf v12, fa0, v8912; CHECK-NEXT:    vmv4r.v v8, v12913; CHECK-NEXT:    ret914  %elt.head = insertelement <16 x float> poison, float %b, i32 0915  %vb = shufflevector <16 x float> %elt.head, <16 x float> poison, <16 x i32> zeroinitializer916  %v = call <16 x float> @llvm.vp.fma.v16f32(<16 x float> %va, <16 x float> %vb, <16 x float> %c, <16 x i1> splat (i1 -1), i32 %evl)917  %u = call <16 x float> @llvm.vp.merge.v16f32(<16 x i1> splat (i1 -1), <16 x float> %v, <16 x float> %c, i32 %evl)918  ret <16 x float> %u919}920 921define <16 x float> @vfmacc_vv_v16f32_ta(<16 x float> %a, <16 x float> %b, <16 x float> %c, <16 x i1> %m, i32 zeroext %evl) {922; CHECK-LABEL: vfmacc_vv_v16f32_ta:923; CHECK:       # %bb.0:924; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu925; CHECK-NEXT:    vfmacc.vv v16, v8, v12, v0.t926; CHECK-NEXT:    vmv.v.v v8, v16927; CHECK-NEXT:    ret928  %v = call <16 x float> @llvm.vp.fma.v16f32(<16 x float> %a, <16 x float> %b, <16 x float> %c, <16 x i1> splat (i1 -1), i32 %evl)929  %u = call <16 x float> @llvm.vp.select.v16f32(<16 x i1> %m, <16 x float> %v, <16 x float> %c, i32 %evl)930  ret <16 x float> %u931}932 933define <16 x float> @vfmacc_vf_v16f32_ta(<16 x float> %va, float %b, <16 x float> %c, <16 x i1> %m, i32 zeroext %evl) {934; CHECK-LABEL: vfmacc_vf_v16f32_ta:935; CHECK:       # %bb.0:936; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu937; CHECK-NEXT:    vfmacc.vf v12, fa0, v8, v0.t938; CHECK-NEXT:    vmv.v.v v8, v12939; CHECK-NEXT:    ret940  %elt.head = insertelement <16 x float> poison, float %b, i32 0941  %vb = shufflevector <16 x float> %elt.head, <16 x float> poison, <16 x i32> zeroinitializer942  %v = call <16 x float> @llvm.vp.fma.v16f32(<16 x float> %va, <16 x float> %vb, <16 x float> %c, <16 x i1> splat (i1 -1), i32 %evl)943  %u = call <16 x float> @llvm.vp.select.v16f32(<16 x i1> %m, <16 x float> %v, <16 x float> %c, i32 %evl)944  ret <16 x float> %u945}946 947define <16 x float> @vfmacc_vf_v16f32_commute_ta(<16 x float> %va, float %b, <16 x float> %c, <16 x i1> %m, i32 zeroext %evl) {948; CHECK-LABEL: vfmacc_vf_v16f32_commute_ta:949; CHECK:       # %bb.0:950; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu951; CHECK-NEXT:    vfmacc.vf v12, fa0, v8, v0.t952; CHECK-NEXT:    vmv.v.v v8, v12953; CHECK-NEXT:    ret954  %elt.head = insertelement <16 x float> poison, float %b, i32 0955  %vb = shufflevector <16 x float> %elt.head, <16 x float> poison, <16 x i32> zeroinitializer956  %v = call <16 x float> @llvm.vp.fma.v16f32(<16 x float> %vb, <16 x float> %va, <16 x float> %c, <16 x i1> splat (i1 -1), i32 %evl)957  %u = call <16 x float> @llvm.vp.select.v16f32(<16 x i1> %m, <16 x float> %v, <16 x float> %c, i32 %evl)958  ret <16 x float> %u959}960 961define <2 x double> @vfmacc_vv_v2f64(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x i1> %m, i32 zeroext %evl) {962; CHECK-LABEL: vfmacc_vv_v2f64:963; CHECK:       # %bb.0:964; CHECK-NEXT:    vsetvli zero, a0, e64, m1, tu, mu965; CHECK-NEXT:    vfmacc.vv v10, v8, v9, v0.t966; CHECK-NEXT:    vmv1r.v v8, v10967; CHECK-NEXT:    ret968  %v = call <2 x double> @llvm.vp.fma.v2f64(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x i1> splat (i1 -1), i32 %evl)969  %u = call <2 x double> @llvm.vp.merge.v2f64(<2 x i1> %m, <2 x double> %v, <2 x double> %c, i32 %evl)970  ret <2 x double> %u971}972 973define <2 x double> @vfmacc_vv_v2f64_unmasked(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x i1> %m, i32 zeroext %evl) {974; CHECK-LABEL: vfmacc_vv_v2f64_unmasked:975; CHECK:       # %bb.0:976; CHECK-NEXT:    vsetvli zero, a0, e64, m1, tu, ma977; CHECK-NEXT:    vfmacc.vv v10, v8, v9978; CHECK-NEXT:    vmv1r.v v8, v10979; CHECK-NEXT:    ret980  %v = call <2 x double> @llvm.vp.fma.v2f64(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x i1> splat (i1 -1), i32 %evl)981  %u = call <2 x double> @llvm.vp.merge.v2f64(<2 x i1> splat (i1 -1), <2 x double> %v, <2 x double> %c, i32 %evl)982  ret <2 x double> %u983}984 985define <2 x double> @vfmacc_vf_v2f64(<2 x double> %va, double %b, <2 x double> %c, <2 x i1> %m, i32 zeroext %evl) {986; CHECK-LABEL: vfmacc_vf_v2f64:987; CHECK:       # %bb.0:988; CHECK-NEXT:    vsetvli zero, a0, e64, m1, tu, mu989; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t990; CHECK-NEXT:    vmv1r.v v8, v9991; CHECK-NEXT:    ret992  %elt.head = insertelement <2 x double> poison, double %b, i32 0993  %vb = shufflevector <2 x double> %elt.head, <2 x double> poison, <2 x i32> zeroinitializer994  %v = call <2 x double> @llvm.vp.fma.v2f64(<2 x double> %va, <2 x double> %vb, <2 x double> %c, <2 x i1> splat (i1 -1), i32 %evl)995  %u = call <2 x double> @llvm.vp.merge.v2f64(<2 x i1> %m, <2 x double> %v, <2 x double> %c, i32 %evl)996  ret <2 x double> %u997}998 999define <2 x double> @vfmacc_vf_v2f64_commute(<2 x double> %va, double %b, <2 x double> %c, <2 x i1> %m, i32 zeroext %evl) {1000; CHECK-LABEL: vfmacc_vf_v2f64_commute:1001; CHECK:       # %bb.0:1002; CHECK-NEXT:    vsetvli zero, a0, e64, m1, tu, mu1003; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t1004; CHECK-NEXT:    vmv1r.v v8, v91005; CHECK-NEXT:    ret1006  %elt.head = insertelement <2 x double> poison, double %b, i32 01007  %vb = shufflevector <2 x double> %elt.head, <2 x double> poison, <2 x i32> zeroinitializer1008  %v = call <2 x double> @llvm.vp.fma.v2f64(<2 x double> %vb, <2 x double> %va, <2 x double> %c, <2 x i1> splat (i1 -1), i32 %evl)1009  %u = call <2 x double> @llvm.vp.merge.v2f64(<2 x i1> %m, <2 x double> %v, <2 x double> %c, i32 %evl)1010  ret <2 x double> %u1011}1012 1013define <2 x double> @vfmacc_vf_v2f64_unmasked(<2 x double> %va, double %b, <2 x double> %c, i32 zeroext %evl) {1014; CHECK-LABEL: vfmacc_vf_v2f64_unmasked:1015; CHECK:       # %bb.0:1016; CHECK-NEXT:    vsetvli zero, a0, e64, m1, tu, ma1017; CHECK-NEXT:    vfmacc.vf v9, fa0, v81018; CHECK-NEXT:    vmv1r.v v8, v91019; CHECK-NEXT:    ret1020  %elt.head = insertelement <2 x double> poison, double %b, i32 01021  %vb = shufflevector <2 x double> %elt.head, <2 x double> poison, <2 x i32> zeroinitializer1022  %v = call <2 x double> @llvm.vp.fma.v2f64(<2 x double> %va, <2 x double> %vb, <2 x double> %c, <2 x i1> splat (i1 -1), i32 %evl)1023  %u = call <2 x double> @llvm.vp.merge.v2f64(<2 x i1> splat (i1 -1), <2 x double> %v, <2 x double> %c, i32 %evl)1024  ret <2 x double> %u1025}1026 1027define <2 x double> @vfmacc_vv_v2f64_ta(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x i1> %m, i32 zeroext %evl) {1028; CHECK-LABEL: vfmacc_vv_v2f64_ta:1029; CHECK:       # %bb.0:1030; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu1031; CHECK-NEXT:    vfmacc.vv v10, v8, v9, v0.t1032; CHECK-NEXT:    vmv.v.v v8, v101033; CHECK-NEXT:    ret1034  %v = call <2 x double> @llvm.vp.fma.v2f64(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x i1> splat (i1 -1), i32 %evl)1035  %u = call <2 x double> @llvm.vp.select.v2f64(<2 x i1> %m, <2 x double> %v, <2 x double> %c, i32 %evl)1036  ret <2 x double> %u1037}1038 1039define <2 x double> @vfmacc_vf_v2f64_ta(<2 x double> %va, double %b, <2 x double> %c, <2 x i1> %m, i32 zeroext %evl) {1040; CHECK-LABEL: vfmacc_vf_v2f64_ta:1041; CHECK:       # %bb.0:1042; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu1043; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t1044; CHECK-NEXT:    vmv.v.v v8, v91045; CHECK-NEXT:    ret1046  %elt.head = insertelement <2 x double> poison, double %b, i32 01047  %vb = shufflevector <2 x double> %elt.head, <2 x double> poison, <2 x i32> zeroinitializer1048  %v = call <2 x double> @llvm.vp.fma.v2f64(<2 x double> %va, <2 x double> %vb, <2 x double> %c, <2 x i1> splat (i1 -1), i32 %evl)1049  %u = call <2 x double> @llvm.vp.select.v2f64(<2 x i1> %m, <2 x double> %v, <2 x double> %c, i32 %evl)1050  ret <2 x double> %u1051}1052 1053define <2 x double> @vfmacc_vf_v2f64_commute_ta(<2 x double> %va, double %b, <2 x double> %c, <2 x i1> %m, i32 zeroext %evl) {1054; CHECK-LABEL: vfmacc_vf_v2f64_commute_ta:1055; CHECK:       # %bb.0:1056; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu1057; CHECK-NEXT:    vfmacc.vf v9, fa0, v8, v0.t1058; CHECK-NEXT:    vmv.v.v v8, v91059; CHECK-NEXT:    ret1060  %elt.head = insertelement <2 x double> poison, double %b, i32 01061  %vb = shufflevector <2 x double> %elt.head, <2 x double> poison, <2 x i32> zeroinitializer1062  %v = call <2 x double> @llvm.vp.fma.v2f64(<2 x double> %vb, <2 x double> %va, <2 x double> %c, <2 x i1> splat (i1 -1), i32 %evl)1063  %u = call <2 x double> @llvm.vp.select.v2f64(<2 x i1> %m, <2 x double> %v, <2 x double> %c, i32 %evl)1064  ret <2 x double> %u1065}1066 1067define <4 x double> @vfmacc_vv_v4f64(<4 x double> %a, <4 x double> %b, <4 x double> %c, <4 x i1> %m, i32 zeroext %evl) {1068; CHECK-LABEL: vfmacc_vv_v4f64:1069; CHECK:       # %bb.0:1070; CHECK-NEXT:    vsetvli zero, a0, e64, m2, tu, mu1071; CHECK-NEXT:    vfmacc.vv v12, v8, v10, v0.t1072; CHECK-NEXT:    vmv2r.v v8, v121073; CHECK-NEXT:    ret1074  %v = call <4 x double> @llvm.vp.fma.v4f64(<4 x double> %a, <4 x double> %b, <4 x double> %c, <4 x i1> splat (i1 -1), i32 %evl)1075  %u = call <4 x double> @llvm.vp.merge.v4f64(<4 x i1> %m, <4 x double> %v, <4 x double> %c, i32 %evl)1076  ret <4 x double> %u1077}1078 1079define <4 x double> @vfmacc_vv_v4f64_unmasked(<4 x double> %a, <4 x double> %b, <4 x double> %c, <4 x i1> %m, i32 zeroext %evl) {1080; CHECK-LABEL: vfmacc_vv_v4f64_unmasked:1081; CHECK:       # %bb.0:1082; CHECK-NEXT:    vsetvli zero, a0, e64, m2, tu, ma1083; CHECK-NEXT:    vfmacc.vv v12, v8, v101084; CHECK-NEXT:    vmv2r.v v8, v121085; CHECK-NEXT:    ret1086  %v = call <4 x double> @llvm.vp.fma.v4f64(<4 x double> %a, <4 x double> %b, <4 x double> %c, <4 x i1> splat (i1 -1), i32 %evl)1087  %u = call <4 x double> @llvm.vp.merge.v4f64(<4 x i1> splat (i1 -1), <4 x double> %v, <4 x double> %c, i32 %evl)1088  ret <4 x double> %u1089}1090 1091define <4 x double> @vfmacc_vf_v4f64(<4 x double> %va, double %b, <4 x double> %c, <4 x i1> %m, i32 zeroext %evl) {1092; CHECK-LABEL: vfmacc_vf_v4f64:1093; CHECK:       # %bb.0:1094; CHECK-NEXT:    vsetvli zero, a0, e64, m2, tu, mu1095; CHECK-NEXT:    vfmacc.vf v10, fa0, v8, v0.t1096; CHECK-NEXT:    vmv2r.v v8, v101097; CHECK-NEXT:    ret1098  %elt.head = insertelement <4 x double> poison, double %b, i32 01099  %vb = shufflevector <4 x double> %elt.head, <4 x double> poison, <4 x i32> zeroinitializer1100  %v = call <4 x double> @llvm.vp.fma.v4f64(<4 x double> %va, <4 x double> %vb, <4 x double> %c, <4 x i1> splat (i1 -1), i32 %evl)1101  %u = call <4 x double> @llvm.vp.merge.v4f64(<4 x i1> %m, <4 x double> %v, <4 x double> %c, i32 %evl)1102  ret <4 x double> %u1103}1104 1105define <4 x double> @vfmacc_vf_v4f64_commute(<4 x double> %va, double %b, <4 x double> %c, <4 x i1> %m, i32 zeroext %evl) {1106; CHECK-LABEL: vfmacc_vf_v4f64_commute:1107; CHECK:       # %bb.0:1108; CHECK-NEXT:    vsetvli zero, a0, e64, m2, tu, mu1109; CHECK-NEXT:    vfmacc.vf v10, fa0, v8, v0.t1110; CHECK-NEXT:    vmv2r.v v8, v101111; CHECK-NEXT:    ret1112  %elt.head = insertelement <4 x double> poison, double %b, i32 01113  %vb = shufflevector <4 x double> %elt.head, <4 x double> poison, <4 x i32> zeroinitializer1114  %v = call <4 x double> @llvm.vp.fma.v4f64(<4 x double> %vb, <4 x double> %va, <4 x double> %c, <4 x i1> splat (i1 -1), i32 %evl)1115  %u = call <4 x double> @llvm.vp.merge.v4f64(<4 x i1> %m, <4 x double> %v, <4 x double> %c, i32 %evl)1116  ret <4 x double> %u1117}1118 1119define <4 x double> @vfmacc_vf_v4f64_unmasked(<4 x double> %va, double %b, <4 x double> %c, i32 zeroext %evl) {1120; CHECK-LABEL: vfmacc_vf_v4f64_unmasked:1121; CHECK:       # %bb.0:1122; CHECK-NEXT:    vsetvli zero, a0, e64, m2, tu, ma1123; CHECK-NEXT:    vfmacc.vf v10, fa0, v81124; CHECK-NEXT:    vmv2r.v v8, v101125; CHECK-NEXT:    ret1126  %elt.head = insertelement <4 x double> poison, double %b, i32 01127  %vb = shufflevector <4 x double> %elt.head, <4 x double> poison, <4 x i32> zeroinitializer1128  %v = call <4 x double> @llvm.vp.fma.v4f64(<4 x double> %va, <4 x double> %vb, <4 x double> %c, <4 x i1> splat (i1 -1), i32 %evl)1129  %u = call <4 x double> @llvm.vp.merge.v4f64(<4 x i1> splat (i1 -1), <4 x double> %v, <4 x double> %c, i32 %evl)1130  ret <4 x double> %u1131}1132 1133define <4 x double> @vfmacc_vv_v4f64_ta(<4 x double> %a, <4 x double> %b, <4 x double> %c, <4 x i1> %m, i32 zeroext %evl) {1134; CHECK-LABEL: vfmacc_vv_v4f64_ta:1135; CHECK:       # %bb.0:1136; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu1137; CHECK-NEXT:    vfmacc.vv v12, v8, v10, v0.t1138; CHECK-NEXT:    vmv.v.v v8, v121139; CHECK-NEXT:    ret1140  %v = call <4 x double> @llvm.vp.fma.v4f64(<4 x double> %a, <4 x double> %b, <4 x double> %c, <4 x i1> splat (i1 -1), i32 %evl)1141  %u = call <4 x double> @llvm.vp.select.v4f64(<4 x i1> %m, <4 x double> %v, <4 x double> %c, i32 %evl)1142  ret <4 x double> %u1143}1144 1145define <4 x double> @vfmacc_vf_v4f64_ta(<4 x double> %va, double %b, <4 x double> %c, <4 x i1> %m, i32 zeroext %evl) {1146; CHECK-LABEL: vfmacc_vf_v4f64_ta:1147; CHECK:       # %bb.0:1148; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu1149; CHECK-NEXT:    vfmacc.vf v10, fa0, v8, v0.t1150; CHECK-NEXT:    vmv.v.v v8, v101151; CHECK-NEXT:    ret1152  %elt.head = insertelement <4 x double> poison, double %b, i32 01153  %vb = shufflevector <4 x double> %elt.head, <4 x double> poison, <4 x i32> zeroinitializer1154  %v = call <4 x double> @llvm.vp.fma.v4f64(<4 x double> %va, <4 x double> %vb, <4 x double> %c, <4 x i1> splat (i1 -1), i32 %evl)1155  %u = call <4 x double> @llvm.vp.select.v4f64(<4 x i1> %m, <4 x double> %v, <4 x double> %c, i32 %evl)1156  ret <4 x double> %u1157}1158 1159define <4 x double> @vfmacc_vf_v4f64_commute_ta(<4 x double> %va, double %b, <4 x double> %c, <4 x i1> %m, i32 zeroext %evl) {1160; CHECK-LABEL: vfmacc_vf_v4f64_commute_ta:1161; CHECK:       # %bb.0:1162; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu1163; CHECK-NEXT:    vfmacc.vf v10, fa0, v8, v0.t1164; CHECK-NEXT:    vmv.v.v v8, v101165; CHECK-NEXT:    ret1166  %elt.head = insertelement <4 x double> poison, double %b, i32 01167  %vb = shufflevector <4 x double> %elt.head, <4 x double> poison, <4 x i32> zeroinitializer1168  %v = call <4 x double> @llvm.vp.fma.v4f64(<4 x double> %vb, <4 x double> %va, <4 x double> %c, <4 x i1> splat (i1 -1), i32 %evl)1169  %u = call <4 x double> @llvm.vp.select.v4f64(<4 x i1> %m, <4 x double> %v, <4 x double> %c, i32 %evl)1170  ret <4 x double> %u1171}1172 1173define <8 x double> @vfmacc_vv_v8f64(<8 x double> %a, <8 x double> %b, <8 x double> %c, <8 x i1> %m, i32 zeroext %evl) {1174; CHECK-LABEL: vfmacc_vv_v8f64:1175; CHECK:       # %bb.0:1176; CHECK-NEXT:    vsetvli zero, a0, e64, m4, tu, mu1177; CHECK-NEXT:    vfmacc.vv v16, v8, v12, v0.t1178; CHECK-NEXT:    vmv4r.v v8, v161179; CHECK-NEXT:    ret1180  %v = call <8 x double> @llvm.vp.fma.v8f64(<8 x double> %a, <8 x double> %b, <8 x double> %c, <8 x i1> splat (i1 -1), i32 %evl)1181  %u = call <8 x double> @llvm.vp.merge.v8f64(<8 x i1> %m, <8 x double> %v, <8 x double> %c, i32 %evl)1182  ret <8 x double> %u1183}1184 1185define <8 x double> @vfmacc_vv_v8f64_unmasked(<8 x double> %a, <8 x double> %b, <8 x double> %c, <8 x i1> %m, i32 zeroext %evl) {1186; CHECK-LABEL: vfmacc_vv_v8f64_unmasked:1187; CHECK:       # %bb.0:1188; CHECK-NEXT:    vsetvli zero, a0, e64, m4, tu, ma1189; CHECK-NEXT:    vfmacc.vv v16, v8, v121190; CHECK-NEXT:    vmv4r.v v8, v161191; CHECK-NEXT:    ret1192  %v = call <8 x double> @llvm.vp.fma.v8f64(<8 x double> %a, <8 x double> %b, <8 x double> %c, <8 x i1> splat (i1 -1), i32 %evl)1193  %u = call <8 x double> @llvm.vp.merge.v8f64(<8 x i1> splat (i1 -1), <8 x double> %v, <8 x double> %c, i32 %evl)1194  ret <8 x double> %u1195}1196 1197define <8 x double> @vfmacc_vf_v8f64(<8 x double> %va, double %b, <8 x double> %c, <8 x i1> %m, i32 zeroext %evl) {1198; CHECK-LABEL: vfmacc_vf_v8f64:1199; CHECK:       # %bb.0:1200; CHECK-NEXT:    vsetvli zero, a0, e64, m4, tu, mu1201; CHECK-NEXT:    vfmacc.vf v12, fa0, v8, v0.t1202; CHECK-NEXT:    vmv4r.v v8, v121203; CHECK-NEXT:    ret1204  %elt.head = insertelement <8 x double> poison, double %b, i32 01205  %vb = shufflevector <8 x double> %elt.head, <8 x double> poison, <8 x i32> zeroinitializer1206  %v = call <8 x double> @llvm.vp.fma.v8f64(<8 x double> %va, <8 x double> %vb, <8 x double> %c, <8 x i1> splat (i1 -1), i32 %evl)1207  %u = call <8 x double> @llvm.vp.merge.v8f64(<8 x i1> %m, <8 x double> %v, <8 x double> %c, i32 %evl)1208  ret <8 x double> %u1209}1210 1211define <8 x double> @vfmacc_vf_v8f64_commute(<8 x double> %va, double %b, <8 x double> %c, <8 x i1> %m, i32 zeroext %evl) {1212; CHECK-LABEL: vfmacc_vf_v8f64_commute:1213; CHECK:       # %bb.0:1214; CHECK-NEXT:    vsetvli zero, a0, e64, m4, tu, mu1215; CHECK-NEXT:    vfmacc.vf v12, fa0, v8, v0.t1216; CHECK-NEXT:    vmv4r.v v8, v121217; CHECK-NEXT:    ret1218  %elt.head = insertelement <8 x double> poison, double %b, i32 01219  %vb = shufflevector <8 x double> %elt.head, <8 x double> poison, <8 x i32> zeroinitializer1220  %v = call <8 x double> @llvm.vp.fma.v8f64(<8 x double> %vb, <8 x double> %va, <8 x double> %c, <8 x i1> splat (i1 -1), i32 %evl)1221  %u = call <8 x double> @llvm.vp.merge.v8f64(<8 x i1> %m, <8 x double> %v, <8 x double> %c, i32 %evl)1222  ret <8 x double> %u1223}1224 1225define <8 x double> @vfmacc_vf_v8f64_unmasked(<8 x double> %va, double %b, <8 x double> %c, i32 zeroext %evl) {1226; CHECK-LABEL: vfmacc_vf_v8f64_unmasked:1227; CHECK:       # %bb.0:1228; CHECK-NEXT:    vsetvli zero, a0, e64, m4, tu, ma1229; CHECK-NEXT:    vfmacc.vf v12, fa0, v81230; CHECK-NEXT:    vmv4r.v v8, v121231; CHECK-NEXT:    ret1232  %elt.head = insertelement <8 x double> poison, double %b, i32 01233  %vb = shufflevector <8 x double> %elt.head, <8 x double> poison, <8 x i32> zeroinitializer1234  %v = call <8 x double> @llvm.vp.fma.v8f64(<8 x double> %va, <8 x double> %vb, <8 x double> %c, <8 x i1> splat (i1 -1), i32 %evl)1235  %u = call <8 x double> @llvm.vp.merge.v8f64(<8 x i1> splat (i1 -1), <8 x double> %v, <8 x double> %c, i32 %evl)1236  ret <8 x double> %u1237}1238 1239define <8 x double> @vfmacc_vv_v8f64_ta(<8 x double> %a, <8 x double> %b, <8 x double> %c, <8 x i1> %m, i32 zeroext %evl) {1240; CHECK-LABEL: vfmacc_vv_v8f64_ta:1241; CHECK:       # %bb.0:1242; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu1243; CHECK-NEXT:    vfmacc.vv v16, v8, v12, v0.t1244; CHECK-NEXT:    vmv.v.v v8, v161245; CHECK-NEXT:    ret1246  %v = call <8 x double> @llvm.vp.fma.v8f64(<8 x double> %a, <8 x double> %b, <8 x double> %c, <8 x i1> splat (i1 -1), i32 %evl)1247  %u = call <8 x double> @llvm.vp.select.v8f64(<8 x i1> %m, <8 x double> %v, <8 x double> %c, i32 %evl)1248  ret <8 x double> %u1249}1250 1251define <8 x double> @vfmacc_vf_v8f64_ta(<8 x double> %va, double %b, <8 x double> %c, <8 x i1> %m, i32 zeroext %evl) {1252; CHECK-LABEL: vfmacc_vf_v8f64_ta:1253; CHECK:       # %bb.0:1254; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu1255; CHECK-NEXT:    vfmacc.vf v12, fa0, v8, v0.t1256; CHECK-NEXT:    vmv.v.v v8, v121257; CHECK-NEXT:    ret1258  %elt.head = insertelement <8 x double> poison, double %b, i32 01259  %vb = shufflevector <8 x double> %elt.head, <8 x double> poison, <8 x i32> zeroinitializer1260  %v = call <8 x double> @llvm.vp.fma.v8f64(<8 x double> %va, <8 x double> %vb, <8 x double> %c, <8 x i1> splat (i1 -1), i32 %evl)1261  %u = call <8 x double> @llvm.vp.select.v8f64(<8 x i1> %m, <8 x double> %v, <8 x double> %c, i32 %evl)1262  ret <8 x double> %u1263}1264 1265define <8 x double> @vfmacc_vf_v8f64_commute_ta(<8 x double> %va, double %b, <8 x double> %c, <8 x i1> %m, i32 zeroext %evl) {1266; CHECK-LABEL: vfmacc_vf_v8f64_commute_ta:1267; CHECK:       # %bb.0:1268; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu1269; CHECK-NEXT:    vfmacc.vf v12, fa0, v8, v0.t1270; CHECK-NEXT:    vmv.v.v v8, v121271; CHECK-NEXT:    ret1272  %elt.head = insertelement <8 x double> poison, double %b, i32 01273  %vb = shufflevector <8 x double> %elt.head, <8 x double> poison, <8 x i32> zeroinitializer1274  %v = call <8 x double> @llvm.vp.fma.v8f64(<8 x double> %vb, <8 x double> %va, <8 x double> %c, <8 x i1> splat (i1 -1), i32 %evl)1275  %u = call <8 x double> @llvm.vp.select.v8f64(<8 x i1> %m, <8 x double> %v, <8 x double> %c, i32 %evl)1276  ret <8 x double> %u1277}1278