366 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfh,+v -target-abi=ilp32d \3; RUN: -verify-machineinstrs < %s | FileCheck %s4; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfh,+v -target-abi=lp64d \5; RUN: -verify-machineinstrs < %s | FileCheck %s6 7define <vscale x 1 x half> @vfrdiv_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {8; CHECK-LABEL: vfrdiv_vf_nxv1f16:9; CHECK: # %bb.0:10; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma11; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t12; CHECK-NEXT: ret13 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 014 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer15 %v = call <vscale x 1 x half> @llvm.vp.fdiv.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, <vscale x 1 x i1> %m, i32 %evl)16 ret <vscale x 1 x half> %v17}18 19define <vscale x 1 x half> @vfrdiv_vf_nxv1f16_unmasked(<vscale x 1 x half> %va, half %b, i32 zeroext %evl) {20; CHECK-LABEL: vfrdiv_vf_nxv1f16_unmasked:21; CHECK: # %bb.0:22; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma23; CHECK-NEXT: vfrdiv.vf v8, v8, fa024; CHECK-NEXT: ret25 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 026 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer27 %v = call <vscale x 1 x half> @llvm.vp.fdiv.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)28 ret <vscale x 1 x half> %v29}30 31define <vscale x 2 x half> @vfrdiv_vf_nxv2f16(<vscale x 2 x half> %va, half %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {32; CHECK-LABEL: vfrdiv_vf_nxv2f16:33; CHECK: # %bb.0:34; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma35; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t36; CHECK-NEXT: ret37 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 038 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer39 %v = call <vscale x 2 x half> @llvm.vp.fdiv.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %va, <vscale x 2 x i1> %m, i32 %evl)40 ret <vscale x 2 x half> %v41}42 43define <vscale x 2 x half> @vfrdiv_vf_nxv2f16_unmasked(<vscale x 2 x half> %va, half %b, i32 zeroext %evl) {44; CHECK-LABEL: vfrdiv_vf_nxv2f16_unmasked:45; CHECK: # %bb.0:46; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma47; CHECK-NEXT: vfrdiv.vf v8, v8, fa048; CHECK-NEXT: ret49 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 050 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer51 %v = call <vscale x 2 x half> @llvm.vp.fdiv.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)52 ret <vscale x 2 x half> %v53}54 55define <vscale x 4 x half> @vfrdiv_vf_nxv4f16(<vscale x 4 x half> %va, half %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {56; CHECK-LABEL: vfrdiv_vf_nxv4f16:57; CHECK: # %bb.0:58; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma59; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t60; CHECK-NEXT: ret61 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 062 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer63 %v = call <vscale x 4 x half> @llvm.vp.fdiv.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %va, <vscale x 4 x i1> %m, i32 %evl)64 ret <vscale x 4 x half> %v65}66 67define <vscale x 4 x half> @vfrdiv_vf_nxv4f16_unmasked(<vscale x 4 x half> %va, half %b, i32 zeroext %evl) {68; CHECK-LABEL: vfrdiv_vf_nxv4f16_unmasked:69; CHECK: # %bb.0:70; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma71; CHECK-NEXT: vfrdiv.vf v8, v8, fa072; CHECK-NEXT: ret73 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 074 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer75 %v = call <vscale x 4 x half> @llvm.vp.fdiv.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)76 ret <vscale x 4 x half> %v77}78 79define <vscale x 8 x half> @vfrdiv_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {80; CHECK-LABEL: vfrdiv_vf_nxv8f16:81; CHECK: # %bb.0:82; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma83; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t84; CHECK-NEXT: ret85 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 086 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer87 %v = call <vscale x 8 x half> @llvm.vp.fdiv.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, <vscale x 8 x i1> %m, i32 %evl)88 ret <vscale x 8 x half> %v89}90 91define <vscale x 8 x half> @vfrdiv_vf_nxv8f16_unmasked(<vscale x 8 x half> %va, half %b, i32 zeroext %evl) {92; CHECK-LABEL: vfrdiv_vf_nxv8f16_unmasked:93; CHECK: # %bb.0:94; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma95; CHECK-NEXT: vfrdiv.vf v8, v8, fa096; CHECK-NEXT: ret97 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 098 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer99 %v = call <vscale x 8 x half> @llvm.vp.fdiv.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)100 ret <vscale x 8 x half> %v101}102 103define <vscale x 16 x half> @vfrdiv_vf_nxv16f16(<vscale x 16 x half> %va, half %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {104; CHECK-LABEL: vfrdiv_vf_nxv16f16:105; CHECK: # %bb.0:106; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma107; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t108; CHECK-NEXT: ret109 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0110 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer111 %v = call <vscale x 16 x half> @llvm.vp.fdiv.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %va, <vscale x 16 x i1> %m, i32 %evl)112 ret <vscale x 16 x half> %v113}114 115define <vscale x 16 x half> @vfrdiv_vf_nxv16f16_unmasked(<vscale x 16 x half> %va, half %b, i32 zeroext %evl) {116; CHECK-LABEL: vfrdiv_vf_nxv16f16_unmasked:117; CHECK: # %bb.0:118; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma119; CHECK-NEXT: vfrdiv.vf v8, v8, fa0120; CHECK-NEXT: ret121 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0122 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer123 %v = call <vscale x 16 x half> @llvm.vp.fdiv.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %va, <vscale x 16 x i1> splat (i1 true), i32 %evl)124 ret <vscale x 16 x half> %v125}126 127define <vscale x 32 x half> @vfrdiv_vf_nxv32f16(<vscale x 32 x half> %va, half %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {128; CHECK-LABEL: vfrdiv_vf_nxv32f16:129; CHECK: # %bb.0:130; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma131; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t132; CHECK-NEXT: ret133 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0134 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer135 %v = call <vscale x 32 x half> @llvm.vp.fdiv.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %va, <vscale x 32 x i1> %m, i32 %evl)136 ret <vscale x 32 x half> %v137}138 139define <vscale x 32 x half> @vfrdiv_vf_nxv32f16_unmasked(<vscale x 32 x half> %va, half %b, i32 zeroext %evl) {140; CHECK-LABEL: vfrdiv_vf_nxv32f16_unmasked:141; CHECK: # %bb.0:142; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma143; CHECK-NEXT: vfrdiv.vf v8, v8, fa0144; CHECK-NEXT: ret145 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0146 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer147 %v = call <vscale x 32 x half> @llvm.vp.fdiv.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %va, <vscale x 32 x i1> splat (i1 true), i32 %evl)148 ret <vscale x 32 x half> %v149}150 151define <vscale x 1 x float> @vfrdiv_vf_nxv1f32(<vscale x 1 x float> %va, float %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {152; CHECK-LABEL: vfrdiv_vf_nxv1f32:153; CHECK: # %bb.0:154; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma155; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t156; CHECK-NEXT: ret157 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0158 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer159 %v = call <vscale x 1 x float> @llvm.vp.fdiv.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %va, <vscale x 1 x i1> %m, i32 %evl)160 ret <vscale x 1 x float> %v161}162 163define <vscale x 1 x float> @vfrdiv_vf_nxv1f32_unmasked(<vscale x 1 x float> %va, float %b, i32 zeroext %evl) {164; CHECK-LABEL: vfrdiv_vf_nxv1f32_unmasked:165; CHECK: # %bb.0:166; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma167; CHECK-NEXT: vfrdiv.vf v8, v8, fa0168; CHECK-NEXT: ret169 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0170 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer171 %v = call <vscale x 1 x float> @llvm.vp.fdiv.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)172 ret <vscale x 1 x float> %v173}174 175define <vscale x 2 x float> @vfrdiv_vf_nxv2f32(<vscale x 2 x float> %va, float %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {176; CHECK-LABEL: vfrdiv_vf_nxv2f32:177; CHECK: # %bb.0:178; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma179; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t180; CHECK-NEXT: ret181 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0182 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer183 %v = call <vscale x 2 x float> @llvm.vp.fdiv.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %va, <vscale x 2 x i1> %m, i32 %evl)184 ret <vscale x 2 x float> %v185}186 187define <vscale x 2 x float> @vfrdiv_vf_nxv2f32_unmasked(<vscale x 2 x float> %va, float %b, i32 zeroext %evl) {188; CHECK-LABEL: vfrdiv_vf_nxv2f32_unmasked:189; CHECK: # %bb.0:190; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma191; CHECK-NEXT: vfrdiv.vf v8, v8, fa0192; CHECK-NEXT: ret193 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0194 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer195 %v = call <vscale x 2 x float> @llvm.vp.fdiv.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)196 ret <vscale x 2 x float> %v197}198 199define <vscale x 4 x float> @vfrdiv_vf_nxv4f32(<vscale x 4 x float> %va, float %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {200; CHECK-LABEL: vfrdiv_vf_nxv4f32:201; CHECK: # %bb.0:202; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma203; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t204; CHECK-NEXT: ret205 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0206 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer207 %v = call <vscale x 4 x float> @llvm.vp.fdiv.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %va, <vscale x 4 x i1> %m, i32 %evl)208 ret <vscale x 4 x float> %v209}210 211define <vscale x 4 x float> @vfrdiv_vf_nxv4f32_unmasked(<vscale x 4 x float> %va, float %b, i32 zeroext %evl) {212; CHECK-LABEL: vfrdiv_vf_nxv4f32_unmasked:213; CHECK: # %bb.0:214; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma215; CHECK-NEXT: vfrdiv.vf v8, v8, fa0216; CHECK-NEXT: ret217 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0218 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer219 %v = call <vscale x 4 x float> @llvm.vp.fdiv.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)220 ret <vscale x 4 x float> %v221}222 223define <vscale x 8 x float> @vfrdiv_vf_nxv8f32(<vscale x 8 x float> %va, float %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {224; CHECK-LABEL: vfrdiv_vf_nxv8f32:225; CHECK: # %bb.0:226; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma227; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t228; CHECK-NEXT: ret229 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0230 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer231 %v = call <vscale x 8 x float> @llvm.vp.fdiv.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %va, <vscale x 8 x i1> %m, i32 %evl)232 ret <vscale x 8 x float> %v233}234 235define <vscale x 8 x float> @vfrdiv_vf_nxv8f32_unmasked(<vscale x 8 x float> %va, float %b, i32 zeroext %evl) {236; CHECK-LABEL: vfrdiv_vf_nxv8f32_unmasked:237; CHECK: # %bb.0:238; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma239; CHECK-NEXT: vfrdiv.vf v8, v8, fa0240; CHECK-NEXT: ret241 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0242 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer243 %v = call <vscale x 8 x float> @llvm.vp.fdiv.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)244 ret <vscale x 8 x float> %v245}246 247define <vscale x 16 x float> @vfrdiv_vf_nxv16f32(<vscale x 16 x float> %va, float %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {248; CHECK-LABEL: vfrdiv_vf_nxv16f32:249; CHECK: # %bb.0:250; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma251; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t252; CHECK-NEXT: ret253 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0254 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer255 %v = call <vscale x 16 x float> @llvm.vp.fdiv.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %va, <vscale x 16 x i1> %m, i32 %evl)256 ret <vscale x 16 x float> %v257}258 259define <vscale x 16 x float> @vfrdiv_vf_nxv16f32_unmasked(<vscale x 16 x float> %va, float %b, i32 zeroext %evl) {260; CHECK-LABEL: vfrdiv_vf_nxv16f32_unmasked:261; CHECK: # %bb.0:262; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma263; CHECK-NEXT: vfrdiv.vf v8, v8, fa0264; CHECK-NEXT: ret265 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0266 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer267 %v = call <vscale x 16 x float> @llvm.vp.fdiv.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %va, <vscale x 16 x i1> splat (i1 true), i32 %evl)268 ret <vscale x 16 x float> %v269}270 271define <vscale x 1 x double> @vfrdiv_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {272; CHECK-LABEL: vfrdiv_vf_nxv1f64:273; CHECK: # %bb.0:274; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma275; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t276; CHECK-NEXT: ret277 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0278 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer279 %v = call <vscale x 1 x double> @llvm.vp.fdiv.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, <vscale x 1 x i1> %m, i32 %evl)280 ret <vscale x 1 x double> %v281}282 283define <vscale x 1 x double> @vfrdiv_vf_nxv1f64_unmasked(<vscale x 1 x double> %va, double %b, i32 zeroext %evl) {284; CHECK-LABEL: vfrdiv_vf_nxv1f64_unmasked:285; CHECK: # %bb.0:286; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma287; CHECK-NEXT: vfrdiv.vf v8, v8, fa0288; CHECK-NEXT: ret289 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0290 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer291 %v = call <vscale x 1 x double> @llvm.vp.fdiv.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, <vscale x 1 x i1> splat (i1 true), i32 %evl)292 ret <vscale x 1 x double> %v293}294 295define <vscale x 2 x double> @vfrdiv_vf_nxv2f64(<vscale x 2 x double> %va, double %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {296; CHECK-LABEL: vfrdiv_vf_nxv2f64:297; CHECK: # %bb.0:298; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma299; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t300; CHECK-NEXT: ret301 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0302 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer303 %v = call <vscale x 2 x double> @llvm.vp.fdiv.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %va, <vscale x 2 x i1> %m, i32 %evl)304 ret <vscale x 2 x double> %v305}306 307define <vscale x 2 x double> @vfrdiv_vf_nxv2f64_unmasked(<vscale x 2 x double> %va, double %b, i32 zeroext %evl) {308; CHECK-LABEL: vfrdiv_vf_nxv2f64_unmasked:309; CHECK: # %bb.0:310; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma311; CHECK-NEXT: vfrdiv.vf v8, v8, fa0312; CHECK-NEXT: ret313 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0314 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer315 %v = call <vscale x 2 x double> @llvm.vp.fdiv.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)316 ret <vscale x 2 x double> %v317}318 319define <vscale x 4 x double> @vfrdiv_vf_nxv4f64(<vscale x 4 x double> %va, double %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {320; CHECK-LABEL: vfrdiv_vf_nxv4f64:321; CHECK: # %bb.0:322; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma323; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t324; CHECK-NEXT: ret325 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0326 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer327 %v = call <vscale x 4 x double> @llvm.vp.fdiv.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %va, <vscale x 4 x i1> %m, i32 %evl)328 ret <vscale x 4 x double> %v329}330 331define <vscale x 4 x double> @vfrdiv_vf_nxv4f64_unmasked(<vscale x 4 x double> %va, double %b, i32 zeroext %evl) {332; CHECK-LABEL: vfrdiv_vf_nxv4f64_unmasked:333; CHECK: # %bb.0:334; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma335; CHECK-NEXT: vfrdiv.vf v8, v8, fa0336; CHECK-NEXT: ret337 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0338 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer339 %v = call <vscale x 4 x double> @llvm.vp.fdiv.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %va, <vscale x 4 x i1> splat (i1 true), i32 %evl)340 ret <vscale x 4 x double> %v341}342 343define <vscale x 8 x double> @vfrdiv_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {344; CHECK-LABEL: vfrdiv_vf_nxv8f64:345; CHECK: # %bb.0:346; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma347; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t348; CHECK-NEXT: ret349 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0350 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer351 %v = call <vscale x 8 x double> @llvm.vp.fdiv.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, <vscale x 8 x i1> %m, i32 %evl)352 ret <vscale x 8 x double> %v353}354 355define <vscale x 8 x double> @vfrdiv_vf_nxv8f64_unmasked(<vscale x 8 x double> %va, double %b, i32 zeroext %evl) {356; CHECK-LABEL: vfrdiv_vf_nxv8f64_unmasked:357; CHECK: # %bb.0:358; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma359; CHECK-NEXT: vfrdiv.vf v8, v8, fa0360; CHECK-NEXT: ret361 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0362 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer363 %v = call <vscale x 8 x double> @llvm.vp.fdiv.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, <vscale x 8 x i1> splat (i1 true), i32 %evl)364 ret <vscale x 8 x double> %v365}366