brintos

brintos / llvm-project-archived public Read only

0
0
Text · 32.7 KiB · 60b4987 Raw
818 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfh,+zfbfmin,+zvfbfmin,+v -target-abi=ilp32d \3; RUN:     -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH4; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfh,+zfbfmin,+zvfbfmin,+v -target-abi=lp64d \5; RUN:     -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH6; RUN: llc -mtriple=riscv32 -mattr=+d,+zfhmin,+zvfhmin,+zfbfmin,+zvfbfmin,+v -target-abi=ilp32d \7; RUN:     -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN8; RUN: llc -mtriple=riscv64 -mattr=+d,+zfhmin,+zvfhmin,+zfbfmin,+zvfbfmin,+v -target-abi=lp64d \9; RUN:     -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN10 11define <vscale x 1 x bfloat> @vfdiv_vv_nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb) {12; CHECK-LABEL: vfdiv_vv_nxv1bf16:13; CHECK:       # %bb.0:14; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma15; CHECK-NEXT:    vfwcvtbf16.f.f.v v10, v916; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v817; CHECK-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma18; CHECK-NEXT:    vfdiv.vv v9, v9, v1019; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma20; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v921; CHECK-NEXT:    ret22  %vc = fdiv <vscale x 1 x bfloat> %va, %vb23  ret <vscale x 1 x bfloat> %vc24}25 26define <vscale x 1 x bfloat> @vfdiv_vf_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b) {27; CHECK-LABEL: vfdiv_vf_nxv1bf16:28; CHECK:       # %bb.0:29; CHECK-NEXT:    fcvt.s.bf16 fa5, fa030; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma31; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v832; CHECK-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma33; CHECK-NEXT:    vfdiv.vf v9, v9, fa534; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma35; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v936; CHECK-NEXT:    ret37  %head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 038  %splat = shufflevector <vscale x 1 x bfloat> %head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer39  %vc = fdiv <vscale x 1 x bfloat> %va, %splat40  ret <vscale x 1 x bfloat> %vc41}42 43define <vscale x 2 x bfloat> @vfdiv_vv_nxv2bf16(<vscale x 2 x bfloat> %va, <vscale x 2 x bfloat> %vb) {44; CHECK-LABEL: vfdiv_vv_nxv2bf16:45; CHECK:       # %bb.0:46; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma47; CHECK-NEXT:    vfwcvtbf16.f.f.v v10, v948; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v849; CHECK-NEXT:    vsetvli zero, zero, e32, m1, ta, ma50; CHECK-NEXT:    vfdiv.vv v9, v9, v1051; CHECK-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma52; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v953; CHECK-NEXT:    ret54  %vc = fdiv <vscale x 2 x bfloat> %va, %vb55  ret <vscale x 2 x bfloat> %vc56}57 58define <vscale x 2 x bfloat> @vfdiv_vf_nxv2bf16(<vscale x 2 x bfloat> %va, bfloat %b) {59; CHECK-LABEL: vfdiv_vf_nxv2bf16:60; CHECK:       # %bb.0:61; CHECK-NEXT:    fcvt.s.bf16 fa5, fa062; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma63; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v864; CHECK-NEXT:    vsetvli zero, zero, e32, m1, ta, ma65; CHECK-NEXT:    vfdiv.vf v9, v9, fa566; CHECK-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma67; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v968; CHECK-NEXT:    ret69  %head = insertelement <vscale x 2 x bfloat> poison, bfloat %b, i32 070  %splat = shufflevector <vscale x 2 x bfloat> %head, <vscale x 2 x bfloat> poison, <vscale x 2 x i32> zeroinitializer71  %vc = fdiv <vscale x 2 x bfloat> %va, %splat72  ret <vscale x 2 x bfloat> %vc73}74 75define <vscale x 4 x bfloat> @vfdiv_vv_nxv4bf16(<vscale x 4 x bfloat> %va, <vscale x 4 x bfloat> %vb) {76; CHECK-LABEL: vfdiv_vv_nxv4bf16:77; CHECK:       # %bb.0:78; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma79; CHECK-NEXT:    vfwcvtbf16.f.f.v v10, v980; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v881; CHECK-NEXT:    vsetvli zero, zero, e32, m2, ta, ma82; CHECK-NEXT:    vfdiv.vv v10, v12, v1083; CHECK-NEXT:    vsetvli zero, zero, e16, m1, ta, ma84; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v1085; CHECK-NEXT:    ret86  %vc = fdiv <vscale x 4 x bfloat> %va, %vb87  ret <vscale x 4 x bfloat> %vc88}89 90define <vscale x 4 x bfloat> @vfdiv_vf_nxv4bf16(<vscale x 4 x bfloat> %va, bfloat %b) {91; CHECK-LABEL: vfdiv_vf_nxv4bf16:92; CHECK:       # %bb.0:93; CHECK-NEXT:    fcvt.s.bf16 fa5, fa094; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma95; CHECK-NEXT:    vfwcvtbf16.f.f.v v10, v896; CHECK-NEXT:    vsetvli zero, zero, e32, m2, ta, ma97; CHECK-NEXT:    vfdiv.vf v10, v10, fa598; CHECK-NEXT:    vsetvli zero, zero, e16, m1, ta, ma99; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v10100; CHECK-NEXT:    ret101  %head = insertelement <vscale x 4 x bfloat> poison, bfloat %b, i32 0102  %splat = shufflevector <vscale x 4 x bfloat> %head, <vscale x 4 x bfloat> poison, <vscale x 4 x i32> zeroinitializer103  %vc = fdiv <vscale x 4 x bfloat> %va, %splat104  ret <vscale x 4 x bfloat> %vc105}106 107define <vscale x 8 x bfloat> @vfdiv_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb) {108; CHECK-LABEL: vfdiv_vv_nxv8bf16:109; CHECK:       # %bb.0:110; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma111; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v10112; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v8113; CHECK-NEXT:    vsetvli zero, zero, e32, m4, ta, ma114; CHECK-NEXT:    vfdiv.vv v12, v16, v12115; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma116; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v12117; CHECK-NEXT:    ret118  %vc = fdiv <vscale x 8 x bfloat> %va, %vb119  ret <vscale x 8 x bfloat> %vc120}121 122define <vscale x 8 x bfloat> @vfdiv_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {123; CHECK-LABEL: vfdiv_vf_nxv8bf16:124; CHECK:       # %bb.0:125; CHECK-NEXT:    fcvt.s.bf16 fa5, fa0126; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma127; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v8128; CHECK-NEXT:    vsetvli zero, zero, e32, m4, ta, ma129; CHECK-NEXT:    vfdiv.vf v12, v12, fa5130; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma131; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v12132; CHECK-NEXT:    ret133  %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0134  %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer135  %vc = fdiv <vscale x 8 x bfloat> %va, %splat136  ret <vscale x 8 x bfloat> %vc137}138 139define <vscale x 8 x bfloat> @vfdiv_fv_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b) {140; CHECK-LABEL: vfdiv_fv_nxv8bf16:141; CHECK:       # %bb.0:142; CHECK-NEXT:    fcvt.s.bf16 fa5, fa0143; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma144; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v8145; CHECK-NEXT:    vsetvli zero, zero, e32, m4, ta, ma146; CHECK-NEXT:    vfrdiv.vf v12, v12, fa5147; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma148; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v12149; CHECK-NEXT:    ret150  %head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0151  %splat = shufflevector <vscale x 8 x bfloat> %head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer152  %vc = fdiv <vscale x 8 x bfloat> %splat, %va153  ret <vscale x 8 x bfloat> %vc154}155 156define <vscale x 16 x bfloat> @vfdiv_vv_nxv16bf16(<vscale x 16 x bfloat> %va, <vscale x 16 x bfloat> %vb) {157; CHECK-LABEL: vfdiv_vv_nxv16bf16:158; CHECK:       # %bb.0:159; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma160; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v12161; CHECK-NEXT:    vfwcvtbf16.f.f.v v24, v8162; CHECK-NEXT:    vsetvli zero, zero, e32, m8, ta, ma163; CHECK-NEXT:    vfdiv.vv v16, v24, v16164; CHECK-NEXT:    vsetvli zero, zero, e16, m4, ta, ma165; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16166; CHECK-NEXT:    ret167  %vc = fdiv <vscale x 16 x bfloat> %va, %vb168  ret <vscale x 16 x bfloat> %vc169}170 171define <vscale x 16 x bfloat> @vfdiv_vf_nxv16bf16(<vscale x 16 x bfloat> %va, bfloat %b) {172; CHECK-LABEL: vfdiv_vf_nxv16bf16:173; CHECK:       # %bb.0:174; CHECK-NEXT:    fcvt.s.bf16 fa5, fa0175; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma176; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v8177; CHECK-NEXT:    vsetvli zero, zero, e32, m8, ta, ma178; CHECK-NEXT:    vfdiv.vf v16, v16, fa5179; CHECK-NEXT:    vsetvli zero, zero, e16, m4, ta, ma180; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16181; CHECK-NEXT:    ret182  %head = insertelement <vscale x 16 x bfloat> poison, bfloat %b, i32 0183  %splat = shufflevector <vscale x 16 x bfloat> %head, <vscale x 16 x bfloat> poison, <vscale x 16 x i32> zeroinitializer184  %vc = fdiv <vscale x 16 x bfloat> %va, %splat185  ret <vscale x 16 x bfloat> %vc186}187 188define <vscale x 32 x bfloat> @vfdiv_vv_nxv32bf16(<vscale x 32 x bfloat> %va, <vscale x 32 x bfloat> %vb) {189; CHECK-LABEL: vfdiv_vv_nxv32bf16:190; CHECK:       # %bb.0:191; CHECK-NEXT:    addi sp, sp, -16192; CHECK-NEXT:    .cfi_def_cfa_offset 16193; CHECK-NEXT:    csrr a0, vlenb194; CHECK-NEXT:    slli a0, a0, 3195; CHECK-NEXT:    sub sp, sp, a0196; CHECK-NEXT:    .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x08, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 8 * vlenb197; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma198; CHECK-NEXT:    vfwcvtbf16.f.f.v v24, v16199; CHECK-NEXT:    addi a0, sp, 16200; CHECK-NEXT:    vs8r.v v24, (a0) # vscale x 64-byte Folded Spill201; CHECK-NEXT:    vfwcvtbf16.f.f.v v0, v8202; CHECK-NEXT:    vfwcvtbf16.f.f.v v24, v20203; CHECK-NEXT:    vl8r.v v16, (a0) # vscale x 64-byte Folded Reload204; CHECK-NEXT:    vsetvli zero, zero, e32, m8, ta, ma205; CHECK-NEXT:    vfdiv.vv v16, v0, v16206; CHECK-NEXT:    vsetvli zero, zero, e16, m4, ta, ma207; CHECK-NEXT:    vfwcvtbf16.f.f.v v0, v12208; CHECK-NEXT:    vsetvli zero, zero, e32, m8, ta, ma209; CHECK-NEXT:    vfdiv.vv v24, v0, v24210; CHECK-NEXT:    vsetvli zero, zero, e16, m4, ta, ma211; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16212; CHECK-NEXT:    vfncvtbf16.f.f.w v12, v24213; CHECK-NEXT:    csrr a0, vlenb214; CHECK-NEXT:    slli a0, a0, 3215; CHECK-NEXT:    add sp, sp, a0216; CHECK-NEXT:    .cfi_def_cfa sp, 16217; CHECK-NEXT:    addi sp, sp, 16218; CHECK-NEXT:    .cfi_def_cfa_offset 0219; CHECK-NEXT:    ret220  %vc = fdiv <vscale x 32 x bfloat> %va, %vb221  ret <vscale x 32 x bfloat> %vc222}223 224define <vscale x 32 x bfloat> @vfdiv_vf_nxv32bf16(<vscale x 32 x bfloat> %va, bfloat %b) {225; CHECK-LABEL: vfdiv_vf_nxv32bf16:226; CHECK:       # %bb.0:227; CHECK-NEXT:    fmv.x.h a0, fa0228; CHECK-NEXT:    vsetvli a1, zero, e16, m4, ta, ma229; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v8230; CHECK-NEXT:    vfwcvtbf16.f.f.v v24, v12231; CHECK-NEXT:    vsetvli a1, zero, e16, m8, ta, ma232; CHECK-NEXT:    vmv.v.x v8, a0233; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma234; CHECK-NEXT:    vfwcvtbf16.f.f.v v0, v8235; CHECK-NEXT:    vsetvli zero, zero, e32, m8, ta, ma236; CHECK-NEXT:    vfdiv.vv v16, v16, v0237; CHECK-NEXT:    vsetvli zero, zero, e16, m4, ta, ma238; CHECK-NEXT:    vfwcvtbf16.f.f.v v0, v12239; CHECK-NEXT:    vsetvli zero, zero, e32, m8, ta, ma240; CHECK-NEXT:    vfdiv.vv v24, v24, v0241; CHECK-NEXT:    vsetvli zero, zero, e16, m4, ta, ma242; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16243; CHECK-NEXT:    vfncvtbf16.f.f.w v12, v24244; CHECK-NEXT:    ret245  %head = insertelement <vscale x 32 x bfloat> poison, bfloat %b, i32 0246  %splat = shufflevector <vscale x 32 x bfloat> %head, <vscale x 32 x bfloat> poison, <vscale x 32 x i32> zeroinitializer247  %vc = fdiv <vscale x 32 x bfloat> %va, %splat248  ret <vscale x 32 x bfloat> %vc249}250 251define <vscale x 1 x half> @vfdiv_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) {252; ZVFH-LABEL: vfdiv_vv_nxv1f16:253; ZVFH:       # %bb.0:254; ZVFH-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma255; ZVFH-NEXT:    vfdiv.vv v8, v8, v9256; ZVFH-NEXT:    ret257;258; ZVFHMIN-LABEL: vfdiv_vv_nxv1f16:259; ZVFHMIN:       # %bb.0:260; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma261; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9262; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8263; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma264; ZVFHMIN-NEXT:    vfdiv.vv v9, v9, v10265; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma266; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9267; ZVFHMIN-NEXT:    ret268  %vc = fdiv <vscale x 1 x half> %va, %vb269  ret <vscale x 1 x half> %vc270}271 272define <vscale x 1 x half> @vfdiv_vf_nxv1f16(<vscale x 1 x half> %va, half %b) {273; ZVFH-LABEL: vfdiv_vf_nxv1f16:274; ZVFH:       # %bb.0:275; ZVFH-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma276; ZVFH-NEXT:    vfdiv.vf v8, v8, fa0277; ZVFH-NEXT:    ret278;279; ZVFHMIN-LABEL: vfdiv_vf_nxv1f16:280; ZVFHMIN:       # %bb.0:281; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0282; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma283; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8284; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma285; ZVFHMIN-NEXT:    vfdiv.vf v9, v9, fa5286; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma287; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9288; ZVFHMIN-NEXT:    ret289  %head = insertelement <vscale x 1 x half> poison, half %b, i32 0290  %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer291  %vc = fdiv <vscale x 1 x half> %va, %splat292  ret <vscale x 1 x half> %vc293}294 295define <vscale x 2 x half> @vfdiv_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) {296; ZVFH-LABEL: vfdiv_vv_nxv2f16:297; ZVFH:       # %bb.0:298; ZVFH-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma299; ZVFH-NEXT:    vfdiv.vv v8, v8, v9300; ZVFH-NEXT:    ret301;302; ZVFHMIN-LABEL: vfdiv_vv_nxv2f16:303; ZVFHMIN:       # %bb.0:304; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma305; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9306; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8307; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m1, ta, ma308; ZVFHMIN-NEXT:    vfdiv.vv v9, v9, v10309; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma310; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9311; ZVFHMIN-NEXT:    ret312  %vc = fdiv <vscale x 2 x half> %va, %vb313  ret <vscale x 2 x half> %vc314}315 316define <vscale x 2 x half> @vfdiv_vf_nxv2f16(<vscale x 2 x half> %va, half %b) {317; ZVFH-LABEL: vfdiv_vf_nxv2f16:318; ZVFH:       # %bb.0:319; ZVFH-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma320; ZVFH-NEXT:    vfdiv.vf v8, v8, fa0321; ZVFH-NEXT:    ret322;323; ZVFHMIN-LABEL: vfdiv_vf_nxv2f16:324; ZVFHMIN:       # %bb.0:325; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0326; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma327; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8328; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m1, ta, ma329; ZVFHMIN-NEXT:    vfdiv.vf v9, v9, fa5330; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma331; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9332; ZVFHMIN-NEXT:    ret333  %head = insertelement <vscale x 2 x half> poison, half %b, i32 0334  %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer335  %vc = fdiv <vscale x 2 x half> %va, %splat336  ret <vscale x 2 x half> %vc337}338 339define <vscale x 4 x half> @vfdiv_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) {340; ZVFH-LABEL: vfdiv_vv_nxv4f16:341; ZVFH:       # %bb.0:342; ZVFH-NEXT:    vsetvli a0, zero, e16, m1, ta, ma343; ZVFH-NEXT:    vfdiv.vv v8, v8, v9344; ZVFH-NEXT:    ret345;346; ZVFHMIN-LABEL: vfdiv_vv_nxv4f16:347; ZVFHMIN:       # %bb.0:348; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m1, ta, ma349; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9350; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8351; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m2, ta, ma352; ZVFHMIN-NEXT:    vfdiv.vv v10, v12, v10353; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m1, ta, ma354; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v10355; ZVFHMIN-NEXT:    ret356  %vc = fdiv <vscale x 4 x half> %va, %vb357  ret <vscale x 4 x half> %vc358}359 360define <vscale x 4 x half> @vfdiv_vf_nxv4f16(<vscale x 4 x half> %va, half %b) {361; ZVFH-LABEL: vfdiv_vf_nxv4f16:362; ZVFH:       # %bb.0:363; ZVFH-NEXT:    vsetvli a0, zero, e16, m1, ta, ma364; ZVFH-NEXT:    vfdiv.vf v8, v8, fa0365; ZVFH-NEXT:    ret366;367; ZVFHMIN-LABEL: vfdiv_vf_nxv4f16:368; ZVFHMIN:       # %bb.0:369; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0370; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m1, ta, ma371; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8372; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m2, ta, ma373; ZVFHMIN-NEXT:    vfdiv.vf v10, v10, fa5374; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m1, ta, ma375; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v10376; ZVFHMIN-NEXT:    ret377  %head = insertelement <vscale x 4 x half> poison, half %b, i32 0378  %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer379  %vc = fdiv <vscale x 4 x half> %va, %splat380  ret <vscale x 4 x half> %vc381}382 383define <vscale x 8 x half> @vfdiv_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {384; ZVFH-LABEL: vfdiv_vv_nxv8f16:385; ZVFH:       # %bb.0:386; ZVFH-NEXT:    vsetvli a0, zero, e16, m2, ta, ma387; ZVFH-NEXT:    vfdiv.vv v8, v8, v10388; ZVFH-NEXT:    ret389;390; ZVFHMIN-LABEL: vfdiv_vv_nxv8f16:391; ZVFHMIN:       # %bb.0:392; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m2, ta, ma393; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10394; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v8395; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m4, ta, ma396; ZVFHMIN-NEXT:    vfdiv.vv v12, v16, v12397; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma398; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v12399; ZVFHMIN-NEXT:    ret400  %vc = fdiv <vscale x 8 x half> %va, %vb401  ret <vscale x 8 x half> %vc402}403 404define <vscale x 8 x half> @vfdiv_vf_nxv8f16(<vscale x 8 x half> %va, half %b) {405; ZVFH-LABEL: vfdiv_vf_nxv8f16:406; ZVFH:       # %bb.0:407; ZVFH-NEXT:    vsetvli a0, zero, e16, m2, ta, ma408; ZVFH-NEXT:    vfdiv.vf v8, v8, fa0409; ZVFH-NEXT:    ret410;411; ZVFHMIN-LABEL: vfdiv_vf_nxv8f16:412; ZVFHMIN:       # %bb.0:413; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0414; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m2, ta, ma415; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8416; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m4, ta, ma417; ZVFHMIN-NEXT:    vfdiv.vf v12, v12, fa5418; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma419; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v12420; ZVFHMIN-NEXT:    ret421  %head = insertelement <vscale x 8 x half> poison, half %b, i32 0422  %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer423  %vc = fdiv <vscale x 8 x half> %va, %splat424  ret <vscale x 8 x half> %vc425}426 427define <vscale x 8 x half> @vfdiv_fv_nxv8f16(<vscale x 8 x half> %va, half %b) {428; ZVFH-LABEL: vfdiv_fv_nxv8f16:429; ZVFH:       # %bb.0:430; ZVFH-NEXT:    vsetvli a0, zero, e16, m2, ta, ma431; ZVFH-NEXT:    vfrdiv.vf v8, v8, fa0432; ZVFH-NEXT:    ret433;434; ZVFHMIN-LABEL: vfdiv_fv_nxv8f16:435; ZVFHMIN:       # %bb.0:436; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0437; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m2, ta, ma438; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8439; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m4, ta, ma440; ZVFHMIN-NEXT:    vfrdiv.vf v12, v12, fa5441; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma442; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v12443; ZVFHMIN-NEXT:    ret444  %head = insertelement <vscale x 8 x half> poison, half %b, i32 0445  %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer446  %vc = fdiv <vscale x 8 x half> %splat, %va447  ret <vscale x 8 x half> %vc448}449 450define <vscale x 16 x half> @vfdiv_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) {451; ZVFH-LABEL: vfdiv_vv_nxv16f16:452; ZVFH:       # %bb.0:453; ZVFH-NEXT:    vsetvli a0, zero, e16, m4, ta, ma454; ZVFH-NEXT:    vfdiv.vv v8, v8, v12455; ZVFH-NEXT:    ret456;457; ZVFHMIN-LABEL: vfdiv_vv_nxv16f16:458; ZVFHMIN:       # %bb.0:459; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma460; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v12461; ZVFHMIN-NEXT:    vfwcvt.f.f.v v24, v8462; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m8, ta, ma463; ZVFHMIN-NEXT:    vfdiv.vv v16, v24, v16464; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m4, ta, ma465; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v16466; ZVFHMIN-NEXT:    ret467  %vc = fdiv <vscale x 16 x half> %va, %vb468  ret <vscale x 16 x half> %vc469}470 471define <vscale x 16 x half> @vfdiv_vf_nxv16f16(<vscale x 16 x half> %va, half %b) {472; ZVFH-LABEL: vfdiv_vf_nxv16f16:473; ZVFH:       # %bb.0:474; ZVFH-NEXT:    vsetvli a0, zero, e16, m4, ta, ma475; ZVFH-NEXT:    vfdiv.vf v8, v8, fa0476; ZVFH-NEXT:    ret477;478; ZVFHMIN-LABEL: vfdiv_vf_nxv16f16:479; ZVFHMIN:       # %bb.0:480; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0481; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma482; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v8483; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m8, ta, ma484; ZVFHMIN-NEXT:    vfdiv.vf v16, v16, fa5485; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m4, ta, ma486; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v16487; ZVFHMIN-NEXT:    ret488  %head = insertelement <vscale x 16 x half> poison, half %b, i32 0489  %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer490  %vc = fdiv <vscale x 16 x half> %va, %splat491  ret <vscale x 16 x half> %vc492}493 494define <vscale x 32 x half> @vfdiv_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) {495; ZVFH-LABEL: vfdiv_vv_nxv32f16:496; ZVFH:       # %bb.0:497; ZVFH-NEXT:    vsetvli a0, zero, e16, m8, ta, ma498; ZVFH-NEXT:    vfdiv.vv v8, v8, v16499; ZVFH-NEXT:    ret500;501; ZVFHMIN-LABEL: vfdiv_vv_nxv32f16:502; ZVFHMIN:       # %bb.0:503; ZVFHMIN-NEXT:    addi sp, sp, -16504; ZVFHMIN-NEXT:    .cfi_def_cfa_offset 16505; ZVFHMIN-NEXT:    csrr a0, vlenb506; ZVFHMIN-NEXT:    slli a0, a0, 3507; ZVFHMIN-NEXT:    sub sp, sp, a0508; ZVFHMIN-NEXT:    .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x08, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 8 * vlenb509; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma510; ZVFHMIN-NEXT:    vfwcvt.f.f.v v24, v16511; ZVFHMIN-NEXT:    addi a0, sp, 16512; ZVFHMIN-NEXT:    vs8r.v v24, (a0) # vscale x 64-byte Folded Spill513; ZVFHMIN-NEXT:    vfwcvt.f.f.v v0, v8514; ZVFHMIN-NEXT:    vfwcvt.f.f.v v24, v20515; ZVFHMIN-NEXT:    vl8r.v v16, (a0) # vscale x 64-byte Folded Reload516; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m8, ta, ma517; ZVFHMIN-NEXT:    vfdiv.vv v16, v0, v16518; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m4, ta, ma519; ZVFHMIN-NEXT:    vfwcvt.f.f.v v0, v12520; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m8, ta, ma521; ZVFHMIN-NEXT:    vfdiv.vv v24, v0, v24522; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m4, ta, ma523; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v16524; ZVFHMIN-NEXT:    vfncvt.f.f.w v12, v24525; ZVFHMIN-NEXT:    csrr a0, vlenb526; ZVFHMIN-NEXT:    slli a0, a0, 3527; ZVFHMIN-NEXT:    add sp, sp, a0528; ZVFHMIN-NEXT:    .cfi_def_cfa sp, 16529; ZVFHMIN-NEXT:    addi sp, sp, 16530; ZVFHMIN-NEXT:    .cfi_def_cfa_offset 0531; ZVFHMIN-NEXT:    ret532  %vc = fdiv <vscale x 32 x half> %va, %vb533  ret <vscale x 32 x half> %vc534}535 536define <vscale x 32 x half> @vfdiv_vf_nxv32f16(<vscale x 32 x half> %va, half %b) {537; ZVFH-LABEL: vfdiv_vf_nxv32f16:538; ZVFH:       # %bb.0:539; ZVFH-NEXT:    vsetvli a0, zero, e16, m8, ta, ma540; ZVFH-NEXT:    vfdiv.vf v8, v8, fa0541; ZVFH-NEXT:    ret542;543; ZVFHMIN-LABEL: vfdiv_vf_nxv32f16:544; ZVFHMIN:       # %bb.0:545; ZVFHMIN-NEXT:    fmv.x.h a0, fa0546; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m4, ta, ma547; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v8548; ZVFHMIN-NEXT:    vfwcvt.f.f.v v24, v12549; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m8, ta, ma550; ZVFHMIN-NEXT:    vmv.v.x v8, a0551; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma552; ZVFHMIN-NEXT:    vfwcvt.f.f.v v0, v8553; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m8, ta, ma554; ZVFHMIN-NEXT:    vfdiv.vv v16, v16, v0555; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m4, ta, ma556; ZVFHMIN-NEXT:    vfwcvt.f.f.v v0, v12557; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m8, ta, ma558; ZVFHMIN-NEXT:    vfdiv.vv v24, v24, v0559; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m4, ta, ma560; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v16561; ZVFHMIN-NEXT:    vfncvt.f.f.w v12, v24562; ZVFHMIN-NEXT:    ret563  %head = insertelement <vscale x 32 x half> poison, half %b, i32 0564  %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer565  %vc = fdiv <vscale x 32 x half> %va, %splat566  ret <vscale x 32 x half> %vc567}568 569define <vscale x 1 x float> @vfdiv_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) {570; CHECK-LABEL: vfdiv_vv_nxv1f32:571; CHECK:       # %bb.0:572; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma573; CHECK-NEXT:    vfdiv.vv v8, v8, v9574; CHECK-NEXT:    ret575  %vc = fdiv <vscale x 1 x float> %va, %vb576  ret <vscale x 1 x float> %vc577}578 579define <vscale x 1 x float> @vfdiv_vf_nxv1f32(<vscale x 1 x float> %va, float %b) {580; CHECK-LABEL: vfdiv_vf_nxv1f32:581; CHECK:       # %bb.0:582; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma583; CHECK-NEXT:    vfdiv.vf v8, v8, fa0584; CHECK-NEXT:    ret585  %head = insertelement <vscale x 1 x float> poison, float %b, i32 0586  %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer587  %vc = fdiv <vscale x 1 x float> %va, %splat588  ret <vscale x 1 x float> %vc589}590 591define <vscale x 2 x float> @vfdiv_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) {592; CHECK-LABEL: vfdiv_vv_nxv2f32:593; CHECK:       # %bb.0:594; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma595; CHECK-NEXT:    vfdiv.vv v8, v8, v9596; CHECK-NEXT:    ret597  %vc = fdiv <vscale x 2 x float> %va, %vb598  ret <vscale x 2 x float> %vc599}600 601define <vscale x 2 x float> @vfdiv_vf_nxv2f32(<vscale x 2 x float> %va, float %b) {602; CHECK-LABEL: vfdiv_vf_nxv2f32:603; CHECK:       # %bb.0:604; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma605; CHECK-NEXT:    vfdiv.vf v8, v8, fa0606; CHECK-NEXT:    ret607  %head = insertelement <vscale x 2 x float> poison, float %b, i32 0608  %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer609  %vc = fdiv <vscale x 2 x float> %va, %splat610  ret <vscale x 2 x float> %vc611}612 613define <vscale x 4 x float> @vfdiv_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) {614; CHECK-LABEL: vfdiv_vv_nxv4f32:615; CHECK:       # %bb.0:616; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma617; CHECK-NEXT:    vfdiv.vv v8, v8, v10618; CHECK-NEXT:    ret619  %vc = fdiv <vscale x 4 x float> %va, %vb620  ret <vscale x 4 x float> %vc621}622 623define <vscale x 4 x float> @vfdiv_vf_nxv4f32(<vscale x 4 x float> %va, float %b) {624; CHECK-LABEL: vfdiv_vf_nxv4f32:625; CHECK:       # %bb.0:626; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma627; CHECK-NEXT:    vfdiv.vf v8, v8, fa0628; CHECK-NEXT:    ret629  %head = insertelement <vscale x 4 x float> poison, float %b, i32 0630  %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer631  %vc = fdiv <vscale x 4 x float> %va, %splat632  ret <vscale x 4 x float> %vc633}634 635define <vscale x 8 x float> @vfdiv_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) {636; CHECK-LABEL: vfdiv_vv_nxv8f32:637; CHECK:       # %bb.0:638; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma639; CHECK-NEXT:    vfdiv.vv v8, v8, v12640; CHECK-NEXT:    ret641  %vc = fdiv <vscale x 8 x float> %va, %vb642  ret <vscale x 8 x float> %vc643}644 645define <vscale x 8 x float> @vfdiv_vf_nxv8f32(<vscale x 8 x float> %va, float %b) {646; CHECK-LABEL: vfdiv_vf_nxv8f32:647; CHECK:       # %bb.0:648; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma649; CHECK-NEXT:    vfdiv.vf v8, v8, fa0650; CHECK-NEXT:    ret651  %head = insertelement <vscale x 8 x float> poison, float %b, i32 0652  %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer653  %vc = fdiv <vscale x 8 x float> %va, %splat654  ret <vscale x 8 x float> %vc655}656 657define <vscale x 8 x float> @vfdiv_fv_nxv8f32(<vscale x 8 x float> %va, float %b) {658; CHECK-LABEL: vfdiv_fv_nxv8f32:659; CHECK:       # %bb.0:660; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma661; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0662; CHECK-NEXT:    ret663  %head = insertelement <vscale x 8 x float> poison, float %b, i32 0664  %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer665  %vc = fdiv <vscale x 8 x float> %splat, %va666  ret <vscale x 8 x float> %vc667}668 669define <vscale x 16 x float> @vfdiv_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) {670; CHECK-LABEL: vfdiv_vv_nxv16f32:671; CHECK:       # %bb.0:672; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma673; CHECK-NEXT:    vfdiv.vv v8, v8, v16674; CHECK-NEXT:    ret675  %vc = fdiv <vscale x 16 x float> %va, %vb676  ret <vscale x 16 x float> %vc677}678 679define <vscale x 16 x float> @vfdiv_vf_nxv16f32(<vscale x 16 x float> %va, float %b) {680; CHECK-LABEL: vfdiv_vf_nxv16f32:681; CHECK:       # %bb.0:682; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma683; CHECK-NEXT:    vfdiv.vf v8, v8, fa0684; CHECK-NEXT:    ret685  %head = insertelement <vscale x 16 x float> poison, float %b, i32 0686  %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer687  %vc = fdiv <vscale x 16 x float> %va, %splat688  ret <vscale x 16 x float> %vc689}690 691define <vscale x 1 x double> @vfdiv_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) {692; CHECK-LABEL: vfdiv_vv_nxv1f64:693; CHECK:       # %bb.0:694; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma695; CHECK-NEXT:    vfdiv.vv v8, v8, v9696; CHECK-NEXT:    ret697  %vc = fdiv <vscale x 1 x double> %va, %vb698  ret <vscale x 1 x double> %vc699}700 701define <vscale x 1 x double> @vfdiv_vf_nxv1f64(<vscale x 1 x double> %va, double %b) {702; CHECK-LABEL: vfdiv_vf_nxv1f64:703; CHECK:       # %bb.0:704; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma705; CHECK-NEXT:    vfdiv.vf v8, v8, fa0706; CHECK-NEXT:    ret707  %head = insertelement <vscale x 1 x double> poison, double %b, i32 0708  %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer709  %vc = fdiv <vscale x 1 x double> %va, %splat710  ret <vscale x 1 x double> %vc711}712 713define <vscale x 2 x double> @vfdiv_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) {714; CHECK-LABEL: vfdiv_vv_nxv2f64:715; CHECK:       # %bb.0:716; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma717; CHECK-NEXT:    vfdiv.vv v8, v8, v10718; CHECK-NEXT:    ret719  %vc = fdiv <vscale x 2 x double> %va, %vb720  ret <vscale x 2 x double> %vc721}722 723define <vscale x 2 x double> @vfdiv_vf_nxv2f64(<vscale x 2 x double> %va, double %b) {724; CHECK-LABEL: vfdiv_vf_nxv2f64:725; CHECK:       # %bb.0:726; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma727; CHECK-NEXT:    vfdiv.vf v8, v8, fa0728; CHECK-NEXT:    ret729  %head = insertelement <vscale x 2 x double> poison, double %b, i32 0730  %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer731  %vc = fdiv <vscale x 2 x double> %va, %splat732  ret <vscale x 2 x double> %vc733}734 735define <vscale x 4 x double> @vfdiv_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) {736; CHECK-LABEL: vfdiv_vv_nxv4f64:737; CHECK:       # %bb.0:738; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma739; CHECK-NEXT:    vfdiv.vv v8, v8, v12740; CHECK-NEXT:    ret741  %vc = fdiv <vscale x 4 x double> %va, %vb742  ret <vscale x 4 x double> %vc743}744 745define <vscale x 4 x double> @vfdiv_vf_nxv4f64(<vscale x 4 x double> %va, double %b) {746; CHECK-LABEL: vfdiv_vf_nxv4f64:747; CHECK:       # %bb.0:748; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma749; CHECK-NEXT:    vfdiv.vf v8, v8, fa0750; CHECK-NEXT:    ret751  %head = insertelement <vscale x 4 x double> poison, double %b, i32 0752  %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer753  %vc = fdiv <vscale x 4 x double> %va, %splat754  ret <vscale x 4 x double> %vc755}756 757define <vscale x 8 x double> @vfdiv_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) {758; CHECK-LABEL: vfdiv_vv_nxv8f64:759; CHECK:       # %bb.0:760; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma761; CHECK-NEXT:    vfdiv.vv v8, v8, v16762; CHECK-NEXT:    ret763  %vc = fdiv <vscale x 8 x double> %va, %vb764  ret <vscale x 8 x double> %vc765}766 767define <vscale x 8 x double> @vfdiv_vf_nxv8f64(<vscale x 8 x double> %va, double %b) {768; CHECK-LABEL: vfdiv_vf_nxv8f64:769; CHECK:       # %bb.0:770; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma771; CHECK-NEXT:    vfdiv.vf v8, v8, fa0772; CHECK-NEXT:    ret773  %head = insertelement <vscale x 8 x double> poison, double %b, i32 0774  %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer775  %vc = fdiv <vscale x 8 x double> %va, %splat776  ret <vscale x 8 x double> %vc777}778 779define <vscale x 8 x double> @vfdiv_fv_nxv8f64(<vscale x 8 x double> %va, double %b) {780; CHECK-LABEL: vfdiv_fv_nxv8f64:781; CHECK:       # %bb.0:782; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma783; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0784; CHECK-NEXT:    ret785  %head = insertelement <vscale x 8 x double> poison, double %b, i32 0786  %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer787  %vc = fdiv <vscale x 8 x double> %splat, %va788  ret <vscale x 8 x double> %vc789}790 791define <vscale x 8 x float> @vfdiv_vv_mask_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, <vscale x 8 x i1> %mask) {792; CHECK-LABEL: vfdiv_vv_mask_nxv8f32:793; CHECK:       # %bb.0:794; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma795; CHECK-NEXT:    vmv.v.i v16, 0796; CHECK-NEXT:    vmerge.vvm v12, v16, v12, v0797; CHECK-NEXT:    vfdiv.vv v8, v8, v12798; CHECK-NEXT:    ret799  %vs = select <vscale x 8 x i1> %mask, <vscale x 8 x float> %vb, <vscale x 8 x float> splat (float 0.0)800  %vc = fdiv <vscale x 8 x float> %va, %vs801  ret <vscale x 8 x float> %vc802}803 804define <vscale x 8 x float> @vfdiv_vf_mask_nxv8f32(<vscale x 8 x float> %va, float %b, <vscale x 8 x i1> %mask) {805; CHECK-LABEL: vfdiv_vf_mask_nxv8f32:806; CHECK:       # %bb.0:807; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma808; CHECK-NEXT:    vmv.v.i v12, 0809; CHECK-NEXT:    vfmerge.vfm v12, v12, fa0, v0810; CHECK-NEXT:    vfdiv.vv v8, v8, v12811; CHECK-NEXT:    ret812  %head1 = insertelement <vscale x 8 x float> poison, float %b, i32 0813  %splat1 = shufflevector <vscale x 8 x float> %head1, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer814  %vs = select <vscale x 8 x i1> %mask, <vscale x 8 x float> %splat1, <vscale x 8 x float> splat (float 0.0)815  %vc = fdiv <vscale x 8 x float> %va, %vs816  ret <vscale x 8 x float> %vc817}818