brintos

brintos / llvm-project-archived public Read only

0
0
Text · 32.6 KiB · 2a65f57 Raw
783 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfh,+v -target-abi=ilp32d \3; RUN:   -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH4; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfh,+v -target-abi=lp64d \5; RUN:   -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH6; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfhmin,+v -target-abi=ilp32d \7; RUN:   -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN8; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfhmin,+v -target-abi=lp64d \9; RUN:   -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN10 11define <2 x half> @vfadd_vv_v2f16(<2 x half> %va, <2 x half> %b, <2 x i1> %m, i32 zeroext %evl) {12; ZVFH-LABEL: vfadd_vv_v2f16:13; ZVFH:       # %bb.0:14; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma15; ZVFH-NEXT:    vfadd.vv v8, v8, v9, v0.t16; ZVFH-NEXT:    ret17;18; ZVFHMIN-LABEL: vfadd_vv_v2f16:19; ZVFHMIN:       # %bb.0:20; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma21; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9, v0.t22; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8, v0.t23; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma24; ZVFHMIN-NEXT:    vfadd.vv v9, v9, v10, v0.t25; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma26; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9, v0.t27; ZVFHMIN-NEXT:    ret28  %v = call <2 x half> @llvm.vp.fadd.v2f16(<2 x half> %va, <2 x half> %b, <2 x i1> %m, i32 %evl)29  ret <2 x half> %v30}31 32define <2 x half> @vfadd_vv_v2f16_unmasked(<2 x half> %va, <2 x half> %b, i32 zeroext %evl) {33; ZVFH-LABEL: vfadd_vv_v2f16_unmasked:34; ZVFH:       # %bb.0:35; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma36; ZVFH-NEXT:    vfadd.vv v8, v8, v937; ZVFH-NEXT:    ret38;39; ZVFHMIN-LABEL: vfadd_vv_v2f16_unmasked:40; ZVFHMIN:       # %bb.0:41; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma42; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v943; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v844; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma45; ZVFHMIN-NEXT:    vfadd.vv v9, v9, v1046; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma47; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v948; ZVFHMIN-NEXT:    ret49  %v = call <2 x half> @llvm.vp.fadd.v2f16(<2 x half> %va, <2 x half> %b, <2 x i1> splat (i1 true), i32 %evl)50  ret <2 x half> %v51}52 53define <2 x half> @vfadd_vf_v2f16(<2 x half> %va, half %b, <2 x i1> %m, i32 zeroext %evl) {54; ZVFH-LABEL: vfadd_vf_v2f16:55; ZVFH:       # %bb.0:56; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma57; ZVFH-NEXT:    vfadd.vf v8, v8, fa0, v0.t58; ZVFH-NEXT:    ret59;60; ZVFHMIN-LABEL: vfadd_vf_v2f16:61; ZVFHMIN:       # %bb.0:62; ZVFHMIN-NEXT:    fmv.x.h a1, fa063; ZVFHMIN-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma64; ZVFHMIN-NEXT:    vmv.v.x v9, a165; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma66; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8, v0.t67; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v9, v0.t68; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma69; ZVFHMIN-NEXT:    vfadd.vv v9, v10, v8, v0.t70; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma71; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9, v0.t72; ZVFHMIN-NEXT:    ret73  %elt.head = insertelement <2 x half> poison, half %b, i32 074  %vb = shufflevector <2 x half> %elt.head, <2 x half> poison, <2 x i32> zeroinitializer75  %v = call <2 x half> @llvm.vp.fadd.v2f16(<2 x half> %va, <2 x half> %vb, <2 x i1> %m, i32 %evl)76  ret <2 x half> %v77}78 79define <2 x half> @vfadd_vf_v2f16_unmasked(<2 x half> %va, half %b, i32 zeroext %evl) {80; ZVFH-LABEL: vfadd_vf_v2f16_unmasked:81; ZVFH:       # %bb.0:82; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma83; ZVFH-NEXT:    vfadd.vf v8, v8, fa084; ZVFH-NEXT:    ret85;86; ZVFHMIN-LABEL: vfadd_vf_v2f16_unmasked:87; ZVFHMIN:       # %bb.0:88; ZVFHMIN-NEXT:    fmv.x.h a1, fa089; ZVFHMIN-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma90; ZVFHMIN-NEXT:    vmv.v.x v9, a191; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma92; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v893; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v994; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma95; ZVFHMIN-NEXT:    vfadd.vv v9, v10, v896; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma97; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v998; ZVFHMIN-NEXT:    ret99  %elt.head = insertelement <2 x half> poison, half %b, i32 0100  %vb = shufflevector <2 x half> %elt.head, <2 x half> poison, <2 x i32> zeroinitializer101  %v = call <2 x half> @llvm.vp.fadd.v2f16(<2 x half> %va, <2 x half> %vb, <2 x i1> splat (i1 true), i32 %evl)102  ret <2 x half> %v103}104 105define <3 x half> @vfadd_vv_v3f16(<3 x half> %va, <3 x half> %b, <3 x i1> %m, i32 zeroext %evl) {106; ZVFH-LABEL: vfadd_vv_v3f16:107; ZVFH:       # %bb.0:108; ZVFH-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma109; ZVFH-NEXT:    vfadd.vv v8, v8, v9, v0.t110; ZVFH-NEXT:    ret111;112; ZVFHMIN-LABEL: vfadd_vv_v3f16:113; ZVFHMIN:       # %bb.0:114; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma115; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9, v0.t116; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8, v0.t117; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m1, ta, ma118; ZVFHMIN-NEXT:    vfadd.vv v9, v9, v10, v0.t119; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma120; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9, v0.t121; ZVFHMIN-NEXT:    ret122  %v = call <3 x half> @llvm.vp.fadd.v3f16(<3 x half> %va, <3 x half> %b, <3 x i1> %m, i32 %evl)123  ret <3 x half> %v124}125 126define <4 x half> @vfadd_vv_v4f16(<4 x half> %va, <4 x half> %b, <4 x i1> %m, i32 zeroext %evl) {127; ZVFH-LABEL: vfadd_vv_v4f16:128; ZVFH:       # %bb.0:129; ZVFH-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma130; ZVFH-NEXT:    vfadd.vv v8, v8, v9, v0.t131; ZVFH-NEXT:    ret132;133; ZVFHMIN-LABEL: vfadd_vv_v4f16:134; ZVFHMIN:       # %bb.0:135; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma136; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9, v0.t137; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8, v0.t138; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m1, ta, ma139; ZVFHMIN-NEXT:    vfadd.vv v9, v9, v10, v0.t140; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma141; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9, v0.t142; ZVFHMIN-NEXT:    ret143  %v = call <4 x half> @llvm.vp.fadd.v4f16(<4 x half> %va, <4 x half> %b, <4 x i1> %m, i32 %evl)144  ret <4 x half> %v145}146 147define <4 x half> @vfadd_vv_v4f16_unmasked(<4 x half> %va, <4 x half> %b, i32 zeroext %evl) {148; ZVFH-LABEL: vfadd_vv_v4f16_unmasked:149; ZVFH:       # %bb.0:150; ZVFH-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma151; ZVFH-NEXT:    vfadd.vv v8, v8, v9152; ZVFH-NEXT:    ret153;154; ZVFHMIN-LABEL: vfadd_vv_v4f16_unmasked:155; ZVFHMIN:       # %bb.0:156; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma157; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9158; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8159; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m1, ta, ma160; ZVFHMIN-NEXT:    vfadd.vv v9, v9, v10161; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma162; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9163; ZVFHMIN-NEXT:    ret164  %v = call <4 x half> @llvm.vp.fadd.v4f16(<4 x half> %va, <4 x half> %b, <4 x i1> splat (i1 true), i32 %evl)165  ret <4 x half> %v166}167 168define <4 x half> @vfadd_vf_v4f16(<4 x half> %va, half %b, <4 x i1> %m, i32 zeroext %evl) {169; ZVFH-LABEL: vfadd_vf_v4f16:170; ZVFH:       # %bb.0:171; ZVFH-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma172; ZVFH-NEXT:    vfadd.vf v8, v8, fa0, v0.t173; ZVFH-NEXT:    ret174;175; ZVFHMIN-LABEL: vfadd_vf_v4f16:176; ZVFHMIN:       # %bb.0:177; ZVFHMIN-NEXT:    fmv.x.h a1, fa0178; ZVFHMIN-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma179; ZVFHMIN-NEXT:    vmv.v.x v9, a1180; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma181; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8, v0.t182; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v9, v0.t183; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m1, ta, ma184; ZVFHMIN-NEXT:    vfadd.vv v9, v10, v8, v0.t185; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma186; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9, v0.t187; ZVFHMIN-NEXT:    ret188  %elt.head = insertelement <4 x half> poison, half %b, i32 0189  %vb = shufflevector <4 x half> %elt.head, <4 x half> poison, <4 x i32> zeroinitializer190  %v = call <4 x half> @llvm.vp.fadd.v4f16(<4 x half> %va, <4 x half> %vb, <4 x i1> %m, i32 %evl)191  ret <4 x half> %v192}193 194define <4 x half> @vfadd_vf_v4f16_unmasked(<4 x half> %va, half %b, i32 zeroext %evl) {195; ZVFH-LABEL: vfadd_vf_v4f16_unmasked:196; ZVFH:       # %bb.0:197; ZVFH-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma198; ZVFH-NEXT:    vfadd.vf v8, v8, fa0199; ZVFH-NEXT:    ret200;201; ZVFHMIN-LABEL: vfadd_vf_v4f16_unmasked:202; ZVFHMIN:       # %bb.0:203; ZVFHMIN-NEXT:    fmv.x.h a1, fa0204; ZVFHMIN-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma205; ZVFHMIN-NEXT:    vmv.v.x v9, a1206; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma207; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8208; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v9209; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m1, ta, ma210; ZVFHMIN-NEXT:    vfadd.vv v9, v10, v8211; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma212; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9213; ZVFHMIN-NEXT:    ret214  %elt.head = insertelement <4 x half> poison, half %b, i32 0215  %vb = shufflevector <4 x half> %elt.head, <4 x half> poison, <4 x i32> zeroinitializer216  %v = call <4 x half> @llvm.vp.fadd.v4f16(<4 x half> %va, <4 x half> %vb, <4 x i1> splat (i1 true), i32 %evl)217  ret <4 x half> %v218}219 220define <8 x half> @vfadd_vv_v8f16(<8 x half> %va, <8 x half> %b, <8 x i1> %m, i32 zeroext %evl) {221; ZVFH-LABEL: vfadd_vv_v8f16:222; ZVFH:       # %bb.0:223; ZVFH-NEXT:    vsetvli zero, a0, e16, m1, ta, ma224; ZVFH-NEXT:    vfadd.vv v8, v8, v9, v0.t225; ZVFH-NEXT:    ret226;227; ZVFHMIN-LABEL: vfadd_vv_v8f16:228; ZVFHMIN:       # %bb.0:229; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, m1, ta, ma230; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9, v0.t231; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8, v0.t232; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m2, ta, ma233; ZVFHMIN-NEXT:    vfadd.vv v10, v12, v10, v0.t234; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m1, ta, ma235; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v10, v0.t236; ZVFHMIN-NEXT:    ret237  %v = call <8 x half> @llvm.vp.fadd.v8f16(<8 x half> %va, <8 x half> %b, <8 x i1> %m, i32 %evl)238  ret <8 x half> %v239}240 241define <8 x half> @vfadd_vv_v8f16_unmasked(<8 x half> %va, <8 x half> %b, i32 zeroext %evl) {242; ZVFH-LABEL: vfadd_vv_v8f16_unmasked:243; ZVFH:       # %bb.0:244; ZVFH-NEXT:    vsetvli zero, a0, e16, m1, ta, ma245; ZVFH-NEXT:    vfadd.vv v8, v8, v9246; ZVFH-NEXT:    ret247;248; ZVFHMIN-LABEL: vfadd_vv_v8f16_unmasked:249; ZVFHMIN:       # %bb.0:250; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, m1, ta, ma251; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9252; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8253; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m2, ta, ma254; ZVFHMIN-NEXT:    vfadd.vv v10, v12, v10255; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m1, ta, ma256; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v10257; ZVFHMIN-NEXT:    ret258  %v = call <8 x half> @llvm.vp.fadd.v8f16(<8 x half> %va, <8 x half> %b, <8 x i1> splat (i1 true), i32 %evl)259  ret <8 x half> %v260}261 262define <8 x half> @vfadd_vf_v8f16(<8 x half> %va, half %b, <8 x i1> %m, i32 zeroext %evl) {263; ZVFH-LABEL: vfadd_vf_v8f16:264; ZVFH:       # %bb.0:265; ZVFH-NEXT:    vsetvli zero, a0, e16, m1, ta, ma266; ZVFH-NEXT:    vfadd.vf v8, v8, fa0, v0.t267; ZVFH-NEXT:    ret268;269; ZVFHMIN-LABEL: vfadd_vf_v8f16:270; ZVFHMIN:       # %bb.0:271; ZVFHMIN-NEXT:    fmv.x.h a1, fa0272; ZVFHMIN-NEXT:    vsetivli zero, 8, e16, m1, ta, ma273; ZVFHMIN-NEXT:    vmv.v.x v12, a1274; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, m1, ta, ma275; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8, v0.t276; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v12, v0.t277; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m2, ta, ma278; ZVFHMIN-NEXT:    vfadd.vv v10, v10, v8, v0.t279; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m1, ta, ma280; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v10, v0.t281; ZVFHMIN-NEXT:    ret282  %elt.head = insertelement <8 x half> poison, half %b, i32 0283  %vb = shufflevector <8 x half> %elt.head, <8 x half> poison, <8 x i32> zeroinitializer284  %v = call <8 x half> @llvm.vp.fadd.v8f16(<8 x half> %va, <8 x half> %vb, <8 x i1> %m, i32 %evl)285  ret <8 x half> %v286}287 288define <8 x half> @vfadd_vf_v8f16_unmasked(<8 x half> %va, half %b, i32 zeroext %evl) {289; ZVFH-LABEL: vfadd_vf_v8f16_unmasked:290; ZVFH:       # %bb.0:291; ZVFH-NEXT:    vsetvli zero, a0, e16, m1, ta, ma292; ZVFH-NEXT:    vfadd.vf v8, v8, fa0293; ZVFH-NEXT:    ret294;295; ZVFHMIN-LABEL: vfadd_vf_v8f16_unmasked:296; ZVFHMIN:       # %bb.0:297; ZVFHMIN-NEXT:    fmv.x.h a1, fa0298; ZVFHMIN-NEXT:    vsetivli zero, 8, e16, m1, ta, ma299; ZVFHMIN-NEXT:    vmv.v.x v12, a1300; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, m1, ta, ma301; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8302; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v12303; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m2, ta, ma304; ZVFHMIN-NEXT:    vfadd.vv v10, v10, v8305; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m1, ta, ma306; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v10307; ZVFHMIN-NEXT:    ret308  %elt.head = insertelement <8 x half> poison, half %b, i32 0309  %vb = shufflevector <8 x half> %elt.head, <8 x half> poison, <8 x i32> zeroinitializer310  %v = call <8 x half> @llvm.vp.fadd.v8f16(<8 x half> %va, <8 x half> %vb, <8 x i1> splat (i1 true), i32 %evl)311  ret <8 x half> %v312}313 314define <16 x half> @vfadd_vv_v16f16(<16 x half> %va, <16 x half> %b, <16 x i1> %m, i32 zeroext %evl) {315; ZVFH-LABEL: vfadd_vv_v16f16:316; ZVFH:       # %bb.0:317; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma318; ZVFH-NEXT:    vfadd.vv v8, v8, v10, v0.t319; ZVFH-NEXT:    ret320;321; ZVFHMIN-LABEL: vfadd_vv_v16f16:322; ZVFHMIN:       # %bb.0:323; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, m2, ta, ma324; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10, v0.t325; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v8, v0.t326; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m4, ta, ma327; ZVFHMIN-NEXT:    vfadd.vv v12, v16, v12, v0.t328; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma329; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v12, v0.t330; ZVFHMIN-NEXT:    ret331  %v = call <16 x half> @llvm.vp.fadd.v16f16(<16 x half> %va, <16 x half> %b, <16 x i1> %m, i32 %evl)332  ret <16 x half> %v333}334 335define <16 x half> @vfadd_vv_v16f16_unmasked(<16 x half> %va, <16 x half> %b, i32 zeroext %evl) {336; ZVFH-LABEL: vfadd_vv_v16f16_unmasked:337; ZVFH:       # %bb.0:338; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma339; ZVFH-NEXT:    vfadd.vv v8, v8, v10340; ZVFH-NEXT:    ret341;342; ZVFHMIN-LABEL: vfadd_vv_v16f16_unmasked:343; ZVFHMIN:       # %bb.0:344; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, m2, ta, ma345; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10346; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v8347; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m4, ta, ma348; ZVFHMIN-NEXT:    vfadd.vv v12, v16, v12349; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma350; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v12351; ZVFHMIN-NEXT:    ret352  %v = call <16 x half> @llvm.vp.fadd.v16f16(<16 x half> %va, <16 x half> %b, <16 x i1> splat (i1 true), i32 %evl)353  ret <16 x half> %v354}355 356define <16 x half> @vfadd_vf_v16f16(<16 x half> %va, half %b, <16 x i1> %m, i32 zeroext %evl) {357; ZVFH-LABEL: vfadd_vf_v16f16:358; ZVFH:       # %bb.0:359; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma360; ZVFH-NEXT:    vfadd.vf v8, v8, fa0, v0.t361; ZVFH-NEXT:    ret362;363; ZVFHMIN-LABEL: vfadd_vf_v16f16:364; ZVFHMIN:       # %bb.0:365; ZVFHMIN-NEXT:    fmv.x.h a1, fa0366; ZVFHMIN-NEXT:    vsetivli zero, 16, e16, m2, ta, ma367; ZVFHMIN-NEXT:    vmv.v.x v16, a1368; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, m2, ta, ma369; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8, v0.t370; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v16, v0.t371; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m4, ta, ma372; ZVFHMIN-NEXT:    vfadd.vv v12, v12, v8, v0.t373; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma374; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v12, v0.t375; ZVFHMIN-NEXT:    ret376  %elt.head = insertelement <16 x half> poison, half %b, i32 0377  %vb = shufflevector <16 x half> %elt.head, <16 x half> poison, <16 x i32> zeroinitializer378  %v = call <16 x half> @llvm.vp.fadd.v16f16(<16 x half> %va, <16 x half> %vb, <16 x i1> %m, i32 %evl)379  ret <16 x half> %v380}381 382define <16 x half> @vfadd_vf_v16f16_unmasked(<16 x half> %va, half %b, i32 zeroext %evl) {383; ZVFH-LABEL: vfadd_vf_v16f16_unmasked:384; ZVFH:       # %bb.0:385; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma386; ZVFH-NEXT:    vfadd.vf v8, v8, fa0387; ZVFH-NEXT:    ret388;389; ZVFHMIN-LABEL: vfadd_vf_v16f16_unmasked:390; ZVFHMIN:       # %bb.0:391; ZVFHMIN-NEXT:    fmv.x.h a1, fa0392; ZVFHMIN-NEXT:    vsetivli zero, 16, e16, m2, ta, ma393; ZVFHMIN-NEXT:    vmv.v.x v16, a1394; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, m2, ta, ma395; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8396; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v16397; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m4, ta, ma398; ZVFHMIN-NEXT:    vfadd.vv v12, v12, v8399; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma400; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v12401; ZVFHMIN-NEXT:    ret402  %elt.head = insertelement <16 x half> poison, half %b, i32 0403  %vb = shufflevector <16 x half> %elt.head, <16 x half> poison, <16 x i32> zeroinitializer404  %v = call <16 x half> @llvm.vp.fadd.v16f16(<16 x half> %va, <16 x half> %vb, <16 x i1> splat (i1 true), i32 %evl)405  ret <16 x half> %v406}407 408define <2 x float> @vfadd_vv_v2f32(<2 x float> %va, <2 x float> %b, <2 x i1> %m, i32 zeroext %evl) {409; CHECK-LABEL: vfadd_vv_v2f32:410; CHECK:       # %bb.0:411; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma412; CHECK-NEXT:    vfadd.vv v8, v8, v9, v0.t413; CHECK-NEXT:    ret414  %v = call <2 x float> @llvm.vp.fadd.v2f32(<2 x float> %va, <2 x float> %b, <2 x i1> %m, i32 %evl)415  ret <2 x float> %v416}417 418define <2 x float> @vfadd_vv_v2f32_unmasked(<2 x float> %va, <2 x float> %b, i32 zeroext %evl) {419; CHECK-LABEL: vfadd_vv_v2f32_unmasked:420; CHECK:       # %bb.0:421; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma422; CHECK-NEXT:    vfadd.vv v8, v8, v9423; CHECK-NEXT:    ret424  %v = call <2 x float> @llvm.vp.fadd.v2f32(<2 x float> %va, <2 x float> %b, <2 x i1> splat (i1 true), i32 %evl)425  ret <2 x float> %v426}427 428define <2 x float> @vfadd_vf_v2f32(<2 x float> %va, float %b, <2 x i1> %m, i32 zeroext %evl) {429; CHECK-LABEL: vfadd_vf_v2f32:430; CHECK:       # %bb.0:431; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma432; CHECK-NEXT:    vfadd.vf v8, v8, fa0, v0.t433; CHECK-NEXT:    ret434  %elt.head = insertelement <2 x float> poison, float %b, i32 0435  %vb = shufflevector <2 x float> %elt.head, <2 x float> poison, <2 x i32> zeroinitializer436  %v = call <2 x float> @llvm.vp.fadd.v2f32(<2 x float> %va, <2 x float> %vb, <2 x i1> %m, i32 %evl)437  ret <2 x float> %v438}439 440define <2 x float> @vfadd_vf_v2f32_commute(<2 x float> %va, float %b, <2 x i1> %m, i32 zeroext %evl) {441; CHECK-LABEL: vfadd_vf_v2f32_commute:442; CHECK:       # %bb.0:443; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma444; CHECK-NEXT:    vfadd.vf v8, v8, fa0, v0.t445; CHECK-NEXT:    ret446  %elt.head = insertelement <2 x float> poison, float %b, i32 0447  %vb = shufflevector <2 x float> %elt.head, <2 x float> poison, <2 x i32> zeroinitializer448  %v = call <2 x float> @llvm.vp.fadd.v2f32(<2 x float> %vb, <2 x float> %va, <2 x i1> %m, i32 %evl)449  ret <2 x float> %v450}451 452define <2 x float> @vfadd_vf_v2f32_unmasked(<2 x float> %va, float %b, i32 zeroext %evl) {453; CHECK-LABEL: vfadd_vf_v2f32_unmasked:454; CHECK:       # %bb.0:455; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma456; CHECK-NEXT:    vfadd.vf v8, v8, fa0457; CHECK-NEXT:    ret458  %elt.head = insertelement <2 x float> poison, float %b, i32 0459  %vb = shufflevector <2 x float> %elt.head, <2 x float> poison, <2 x i32> zeroinitializer460  %v = call <2 x float> @llvm.vp.fadd.v2f32(<2 x float> %va, <2 x float> %vb, <2 x i1> splat (i1 true), i32 %evl)461  ret <2 x float> %v462}463 464define <2 x float> @vfadd_vf_v2f32_unmasked_commute(<2 x float> %va, float %b, i32 zeroext %evl) {465; CHECK-LABEL: vfadd_vf_v2f32_unmasked_commute:466; CHECK:       # %bb.0:467; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma468; CHECK-NEXT:    vfadd.vf v8, v8, fa0469; CHECK-NEXT:    ret470  %elt.head = insertelement <2 x float> poison, float %b, i32 0471  %vb = shufflevector <2 x float> %elt.head, <2 x float> poison, <2 x i32> zeroinitializer472  %v = call <2 x float> @llvm.vp.fadd.v2f32(<2 x float> %vb, <2 x float> %va, <2 x i1> splat (i1 true), i32 %evl)473  ret <2 x float> %v474}475 476define <4 x float> @vfadd_vv_v4f32(<4 x float> %va, <4 x float> %b, <4 x i1> %m, i32 zeroext %evl) {477; CHECK-LABEL: vfadd_vv_v4f32:478; CHECK:       # %bb.0:479; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma480; CHECK-NEXT:    vfadd.vv v8, v8, v9, v0.t481; CHECK-NEXT:    ret482  %v = call <4 x float> @llvm.vp.fadd.v4f32(<4 x float> %va, <4 x float> %b, <4 x i1> %m, i32 %evl)483  ret <4 x float> %v484}485 486define <4 x float> @vfadd_vv_v4f32_unmasked(<4 x float> %va, <4 x float> %b, i32 zeroext %evl) {487; CHECK-LABEL: vfadd_vv_v4f32_unmasked:488; CHECK:       # %bb.0:489; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma490; CHECK-NEXT:    vfadd.vv v8, v8, v9491; CHECK-NEXT:    ret492  %v = call <4 x float> @llvm.vp.fadd.v4f32(<4 x float> %va, <4 x float> %b, <4 x i1> splat (i1 true), i32 %evl)493  ret <4 x float> %v494}495 496define <4 x float> @vfadd_vf_v4f32(<4 x float> %va, float %b, <4 x i1> %m, i32 zeroext %evl) {497; CHECK-LABEL: vfadd_vf_v4f32:498; CHECK:       # %bb.0:499; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma500; CHECK-NEXT:    vfadd.vf v8, v8, fa0, v0.t501; CHECK-NEXT:    ret502  %elt.head = insertelement <4 x float> poison, float %b, i32 0503  %vb = shufflevector <4 x float> %elt.head, <4 x float> poison, <4 x i32> zeroinitializer504  %v = call <4 x float> @llvm.vp.fadd.v4f32(<4 x float> %va, <4 x float> %vb, <4 x i1> %m, i32 %evl)505  ret <4 x float> %v506}507 508define <4 x float> @vfadd_vf_v4f32_unmasked(<4 x float> %va, float %b, i32 zeroext %evl) {509; CHECK-LABEL: vfadd_vf_v4f32_unmasked:510; CHECK:       # %bb.0:511; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma512; CHECK-NEXT:    vfadd.vf v8, v8, fa0513; CHECK-NEXT:    ret514  %elt.head = insertelement <4 x float> poison, float %b, i32 0515  %vb = shufflevector <4 x float> %elt.head, <4 x float> poison, <4 x i32> zeroinitializer516  %v = call <4 x float> @llvm.vp.fadd.v4f32(<4 x float> %va, <4 x float> %vb, <4 x i1> splat (i1 true), i32 %evl)517  ret <4 x float> %v518}519 520define <8 x float> @vfadd_vv_v8f32(<8 x float> %va, <8 x float> %b, <8 x i1> %m, i32 zeroext %evl) {521; CHECK-LABEL: vfadd_vv_v8f32:522; CHECK:       # %bb.0:523; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma524; CHECK-NEXT:    vfadd.vv v8, v8, v10, v0.t525; CHECK-NEXT:    ret526  %v = call <8 x float> @llvm.vp.fadd.v8f32(<8 x float> %va, <8 x float> %b, <8 x i1> %m, i32 %evl)527  ret <8 x float> %v528}529 530define <8 x float> @vfadd_vv_v8f32_unmasked(<8 x float> %va, <8 x float> %b, i32 zeroext %evl) {531; CHECK-LABEL: vfadd_vv_v8f32_unmasked:532; CHECK:       # %bb.0:533; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma534; CHECK-NEXT:    vfadd.vv v8, v8, v10535; CHECK-NEXT:    ret536  %v = call <8 x float> @llvm.vp.fadd.v8f32(<8 x float> %va, <8 x float> %b, <8 x i1> splat (i1 true), i32 %evl)537  ret <8 x float> %v538}539 540define <8 x float> @vfadd_vf_v8f32(<8 x float> %va, float %b, <8 x i1> %m, i32 zeroext %evl) {541; CHECK-LABEL: vfadd_vf_v8f32:542; CHECK:       # %bb.0:543; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma544; CHECK-NEXT:    vfadd.vf v8, v8, fa0, v0.t545; CHECK-NEXT:    ret546  %elt.head = insertelement <8 x float> poison, float %b, i32 0547  %vb = shufflevector <8 x float> %elt.head, <8 x float> poison, <8 x i32> zeroinitializer548  %v = call <8 x float> @llvm.vp.fadd.v8f32(<8 x float> %va, <8 x float> %vb, <8 x i1> %m, i32 %evl)549  ret <8 x float> %v550}551 552define <8 x float> @vfadd_vf_v8f32_unmasked(<8 x float> %va, float %b, i32 zeroext %evl) {553; CHECK-LABEL: vfadd_vf_v8f32_unmasked:554; CHECK:       # %bb.0:555; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma556; CHECK-NEXT:    vfadd.vf v8, v8, fa0557; CHECK-NEXT:    ret558  %elt.head = insertelement <8 x float> poison, float %b, i32 0559  %vb = shufflevector <8 x float> %elt.head, <8 x float> poison, <8 x i32> zeroinitializer560  %v = call <8 x float> @llvm.vp.fadd.v8f32(<8 x float> %va, <8 x float> %vb, <8 x i1> splat (i1 true), i32 %evl)561  ret <8 x float> %v562}563 564define <16 x float> @vfadd_vv_v16f32(<16 x float> %va, <16 x float> %b, <16 x i1> %m, i32 zeroext %evl) {565; CHECK-LABEL: vfadd_vv_v16f32:566; CHECK:       # %bb.0:567; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma568; CHECK-NEXT:    vfadd.vv v8, v8, v12, v0.t569; CHECK-NEXT:    ret570  %v = call <16 x float> @llvm.vp.fadd.v16f32(<16 x float> %va, <16 x float> %b, <16 x i1> %m, i32 %evl)571  ret <16 x float> %v572}573 574define <16 x float> @vfadd_vv_v16f32_unmasked(<16 x float> %va, <16 x float> %b, i32 zeroext %evl) {575; CHECK-LABEL: vfadd_vv_v16f32_unmasked:576; CHECK:       # %bb.0:577; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma578; CHECK-NEXT:    vfadd.vv v8, v8, v12579; CHECK-NEXT:    ret580  %v = call <16 x float> @llvm.vp.fadd.v16f32(<16 x float> %va, <16 x float> %b, <16 x i1> splat (i1 true), i32 %evl)581  ret <16 x float> %v582}583 584define <16 x float> @vfadd_vf_v16f32(<16 x float> %va, float %b, <16 x i1> %m, i32 zeroext %evl) {585; CHECK-LABEL: vfadd_vf_v16f32:586; CHECK:       # %bb.0:587; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma588; CHECK-NEXT:    vfadd.vf v8, v8, fa0, v0.t589; CHECK-NEXT:    ret590  %elt.head = insertelement <16 x float> poison, float %b, i32 0591  %vb = shufflevector <16 x float> %elt.head, <16 x float> poison, <16 x i32> zeroinitializer592  %v = call <16 x float> @llvm.vp.fadd.v16f32(<16 x float> %va, <16 x float> %vb, <16 x i1> %m, i32 %evl)593  ret <16 x float> %v594}595 596define <16 x float> @vfadd_vf_v16f32_unmasked(<16 x float> %va, float %b, i32 zeroext %evl) {597; CHECK-LABEL: vfadd_vf_v16f32_unmasked:598; CHECK:       # %bb.0:599; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma600; CHECK-NEXT:    vfadd.vf v8, v8, fa0601; CHECK-NEXT:    ret602  %elt.head = insertelement <16 x float> poison, float %b, i32 0603  %vb = shufflevector <16 x float> %elt.head, <16 x float> poison, <16 x i32> zeroinitializer604  %v = call <16 x float> @llvm.vp.fadd.v16f32(<16 x float> %va, <16 x float> %vb, <16 x i1> splat (i1 true), i32 %evl)605  ret <16 x float> %v606}607 608define <2 x double> @vfadd_vv_v2f64(<2 x double> %va, <2 x double> %b, <2 x i1> %m, i32 zeroext %evl) {609; CHECK-LABEL: vfadd_vv_v2f64:610; CHECK:       # %bb.0:611; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma612; CHECK-NEXT:    vfadd.vv v8, v8, v9, v0.t613; CHECK-NEXT:    ret614  %v = call <2 x double> @llvm.vp.fadd.v2f64(<2 x double> %va, <2 x double> %b, <2 x i1> %m, i32 %evl)615  ret <2 x double> %v616}617 618define <2 x double> @vfadd_vv_v2f64_unmasked(<2 x double> %va, <2 x double> %b, i32 zeroext %evl) {619; CHECK-LABEL: vfadd_vv_v2f64_unmasked:620; CHECK:       # %bb.0:621; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma622; CHECK-NEXT:    vfadd.vv v8, v8, v9623; CHECK-NEXT:    ret624  %v = call <2 x double> @llvm.vp.fadd.v2f64(<2 x double> %va, <2 x double> %b, <2 x i1> splat (i1 true), i32 %evl)625  ret <2 x double> %v626}627 628define <2 x double> @vfadd_vf_v2f64(<2 x double> %va, double %b, <2 x i1> %m, i32 zeroext %evl) {629; CHECK-LABEL: vfadd_vf_v2f64:630; CHECK:       # %bb.0:631; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma632; CHECK-NEXT:    vfadd.vf v8, v8, fa0, v0.t633; CHECK-NEXT:    ret634  %elt.head = insertelement <2 x double> poison, double %b, i32 0635  %vb = shufflevector <2 x double> %elt.head, <2 x double> poison, <2 x i32> zeroinitializer636  %v = call <2 x double> @llvm.vp.fadd.v2f64(<2 x double> %va, <2 x double> %vb, <2 x i1> %m, i32 %evl)637  ret <2 x double> %v638}639 640define <2 x double> @vfadd_vf_v2f64_unmasked(<2 x double> %va, double %b, i32 zeroext %evl) {641; CHECK-LABEL: vfadd_vf_v2f64_unmasked:642; CHECK:       # %bb.0:643; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma644; CHECK-NEXT:    vfadd.vf v8, v8, fa0645; CHECK-NEXT:    ret646  %elt.head = insertelement <2 x double> poison, double %b, i32 0647  %vb = shufflevector <2 x double> %elt.head, <2 x double> poison, <2 x i32> zeroinitializer648  %v = call <2 x double> @llvm.vp.fadd.v2f64(<2 x double> %va, <2 x double> %vb, <2 x i1> splat (i1 true), i32 %evl)649  ret <2 x double> %v650}651 652define <4 x double> @vfadd_vv_v4f64(<4 x double> %va, <4 x double> %b, <4 x i1> %m, i32 zeroext %evl) {653; CHECK-LABEL: vfadd_vv_v4f64:654; CHECK:       # %bb.0:655; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma656; CHECK-NEXT:    vfadd.vv v8, v8, v10, v0.t657; CHECK-NEXT:    ret658  %v = call <4 x double> @llvm.vp.fadd.v4f64(<4 x double> %va, <4 x double> %b, <4 x i1> %m, i32 %evl)659  ret <4 x double> %v660}661 662define <4 x double> @vfadd_vv_v4f64_unmasked(<4 x double> %va, <4 x double> %b, i32 zeroext %evl) {663; CHECK-LABEL: vfadd_vv_v4f64_unmasked:664; CHECK:       # %bb.0:665; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma666; CHECK-NEXT:    vfadd.vv v8, v8, v10667; CHECK-NEXT:    ret668  %v = call <4 x double> @llvm.vp.fadd.v4f64(<4 x double> %va, <4 x double> %b, <4 x i1> splat (i1 true), i32 %evl)669  ret <4 x double> %v670}671 672define <4 x double> @vfadd_vf_v4f64(<4 x double> %va, double %b, <4 x i1> %m, i32 zeroext %evl) {673; CHECK-LABEL: vfadd_vf_v4f64:674; CHECK:       # %bb.0:675; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma676; CHECK-NEXT:    vfadd.vf v8, v8, fa0, v0.t677; CHECK-NEXT:    ret678  %elt.head = insertelement <4 x double> poison, double %b, i32 0679  %vb = shufflevector <4 x double> %elt.head, <4 x double> poison, <4 x i32> zeroinitializer680  %v = call <4 x double> @llvm.vp.fadd.v4f64(<4 x double> %va, <4 x double> %vb, <4 x i1> %m, i32 %evl)681  ret <4 x double> %v682}683 684define <4 x double> @vfadd_vf_v4f64_unmasked(<4 x double> %va, double %b, i32 zeroext %evl) {685; CHECK-LABEL: vfadd_vf_v4f64_unmasked:686; CHECK:       # %bb.0:687; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma688; CHECK-NEXT:    vfadd.vf v8, v8, fa0689; CHECK-NEXT:    ret690  %elt.head = insertelement <4 x double> poison, double %b, i32 0691  %vb = shufflevector <4 x double> %elt.head, <4 x double> poison, <4 x i32> zeroinitializer692  %v = call <4 x double> @llvm.vp.fadd.v4f64(<4 x double> %va, <4 x double> %vb, <4 x i1> splat (i1 true), i32 %evl)693  ret <4 x double> %v694}695 696define <8 x double> @vfadd_vv_v8f64(<8 x double> %va, <8 x double> %b, <8 x i1> %m, i32 zeroext %evl) {697; CHECK-LABEL: vfadd_vv_v8f64:698; CHECK:       # %bb.0:699; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma700; CHECK-NEXT:    vfadd.vv v8, v8, v12, v0.t701; CHECK-NEXT:    ret702  %v = call <8 x double> @llvm.vp.fadd.v8f64(<8 x double> %va, <8 x double> %b, <8 x i1> %m, i32 %evl)703  ret <8 x double> %v704}705 706define <8 x double> @vfadd_vv_v8f64_unmasked(<8 x double> %va, <8 x double> %b, i32 zeroext %evl) {707; CHECK-LABEL: vfadd_vv_v8f64_unmasked:708; CHECK:       # %bb.0:709; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma710; CHECK-NEXT:    vfadd.vv v8, v8, v12711; CHECK-NEXT:    ret712  %v = call <8 x double> @llvm.vp.fadd.v8f64(<8 x double> %va, <8 x double> %b, <8 x i1> splat (i1 true), i32 %evl)713  ret <8 x double> %v714}715 716define <8 x double> @vfadd_vf_v8f64(<8 x double> %va, double %b, <8 x i1> %m, i32 zeroext %evl) {717; CHECK-LABEL: vfadd_vf_v8f64:718; CHECK:       # %bb.0:719; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma720; CHECK-NEXT:    vfadd.vf v8, v8, fa0, v0.t721; CHECK-NEXT:    ret722  %elt.head = insertelement <8 x double> poison, double %b, i32 0723  %vb = shufflevector <8 x double> %elt.head, <8 x double> poison, <8 x i32> zeroinitializer724  %v = call <8 x double> @llvm.vp.fadd.v8f64(<8 x double> %va, <8 x double> %vb, <8 x i1> %m, i32 %evl)725  ret <8 x double> %v726}727 728define <8 x double> @vfadd_vf_v8f64_unmasked(<8 x double> %va, double %b, i32 zeroext %evl) {729; CHECK-LABEL: vfadd_vf_v8f64_unmasked:730; CHECK:       # %bb.0:731; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma732; CHECK-NEXT:    vfadd.vf v8, v8, fa0733; CHECK-NEXT:    ret734  %elt.head = insertelement <8 x double> poison, double %b, i32 0735  %vb = shufflevector <8 x double> %elt.head, <8 x double> poison, <8 x i32> zeroinitializer736  %v = call <8 x double> @llvm.vp.fadd.v8f64(<8 x double> %va, <8 x double> %vb, <8 x i1> splat (i1 true), i32 %evl)737  ret <8 x double> %v738}739 740define <16 x double> @vfadd_vv_v16f64(<16 x double> %va, <16 x double> %b, <16 x i1> %m, i32 zeroext %evl) {741; CHECK-LABEL: vfadd_vv_v16f64:742; CHECK:       # %bb.0:743; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma744; CHECK-NEXT:    vfadd.vv v8, v8, v16, v0.t745; CHECK-NEXT:    ret746  %v = call <16 x double> @llvm.vp.fadd.v16f64(<16 x double> %va, <16 x double> %b, <16 x i1> %m, i32 %evl)747  ret <16 x double> %v748}749 750define <16 x double> @vfadd_vv_v16f64_unmasked(<16 x double> %va, <16 x double> %b, i32 zeroext %evl) {751; CHECK-LABEL: vfadd_vv_v16f64_unmasked:752; CHECK:       # %bb.0:753; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma754; CHECK-NEXT:    vfadd.vv v8, v8, v16755; CHECK-NEXT:    ret756  %v = call <16 x double> @llvm.vp.fadd.v16f64(<16 x double> %va, <16 x double> %b, <16 x i1> splat (i1 true), i32 %evl)757  ret <16 x double> %v758}759 760define <16 x double> @vfadd_vf_v16f64(<16 x double> %va, double %b, <16 x i1> %m, i32 zeroext %evl) {761; CHECK-LABEL: vfadd_vf_v16f64:762; CHECK:       # %bb.0:763; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma764; CHECK-NEXT:    vfadd.vf v8, v8, fa0, v0.t765; CHECK-NEXT:    ret766  %elt.head = insertelement <16 x double> poison, double %b, i32 0767  %vb = shufflevector <16 x double> %elt.head, <16 x double> poison, <16 x i32> zeroinitializer768  %v = call <16 x double> @llvm.vp.fadd.v16f64(<16 x double> %va, <16 x double> %vb, <16 x i1> %m, i32 %evl)769  ret <16 x double> %v770}771 772define <16 x double> @vfadd_vf_v16f64_unmasked(<16 x double> %va, double %b, i32 zeroext %evl) {773; CHECK-LABEL: vfadd_vf_v16f64_unmasked:774; CHECK:       # %bb.0:775; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma776; CHECK-NEXT:    vfadd.vf v8, v8, fa0777; CHECK-NEXT:    ret778  %elt.head = insertelement <16 x double> poison, double %b, i32 0779  %vb = shufflevector <16 x double> %elt.head, <16 x double> poison, <16 x i32> zeroinitializer780  %v = call <16 x double> @llvm.vp.fadd.v16f64(<16 x double> %va, <16 x double> %vb, <16 x i1> splat (i1 true), i32 %evl)781  ret <16 x double> %v782}783