brintos

brintos / llvm-project-archived public Read only

0
0
Text · 94.8 KiB · 95b1c35 Raw
2728 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfh,+v,+zvfbfmin \3; RUN:     -target-abi=ilp32d -verify-machineinstrs < %s | FileCheck %s \4; RUN:     --check-prefixes=CHECK,ZVFH5; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfh,+v,+zvfbfmin \6; RUN:     -target-abi=lp64d -verify-machineinstrs < %s | FileCheck %s \7; RUN:     --check-prefixes=CHECK,ZVFH8; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfhmin,+v,+zvfbfmin \9; RUN:     -target-abi=ilp32d -verify-machineinstrs < %s | FileCheck %s \10; RUN:     --check-prefixes=CHECK,ZVFHMIN11; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfhmin,+v,+zvfbfmin \12; RUN:     -target-abi=lp64d -verify-machineinstrs < %s | FileCheck %s \13; RUN:     --check-prefixes=CHECK,ZVFHMIN14 15define <vscale x 1 x bfloat> @vsitofp_nxv1i1_nxv1bf16(<vscale x 1 x i1> %va) {16; CHECK-LABEL: vsitofp_nxv1i1_nxv1bf16:17; CHECK:       # %bb.0:18; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma19; CHECK-NEXT:    vmv.v.i v8, 020; CHECK-NEXT:    vmerge.vim v8, v8, -1, v021; CHECK-NEXT:    vfwcvt.f.x.v v9, v822; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v923; CHECK-NEXT:    ret24  %evec = sitofp <vscale x 1 x i1> %va to <vscale x 1 x bfloat>25  ret <vscale x 1 x bfloat> %evec26}27 28define <vscale x 1 x bfloat> @vuitofp_nxv1i1_nxv1bf16(<vscale x 1 x i1> %va) {29; CHECK-LABEL: vuitofp_nxv1i1_nxv1bf16:30; CHECK:       # %bb.0:31; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma32; CHECK-NEXT:    vmv.v.i v8, 033; CHECK-NEXT:    vmerge.vim v8, v8, 1, v034; CHECK-NEXT:    vfwcvt.f.xu.v v9, v835; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v936; CHECK-NEXT:    ret37  %evec = uitofp <vscale x 1 x i1> %va to <vscale x 1 x bfloat>38  ret <vscale x 1 x bfloat> %evec39}40 41define <vscale x 2 x bfloat> @vsitofp_nxv2i1_nxv2bf16(<vscale x 2 x i1> %va) {42; CHECK-LABEL: vsitofp_nxv2i1_nxv2bf16:43; CHECK:       # %bb.0:44; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma45; CHECK-NEXT:    vmv.v.i v8, 046; CHECK-NEXT:    vmerge.vim v8, v8, -1, v047; CHECK-NEXT:    vfwcvt.f.x.v v9, v848; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v949; CHECK-NEXT:    ret50  %evec = sitofp <vscale x 2 x i1> %va to <vscale x 2 x bfloat>51  ret <vscale x 2 x bfloat> %evec52}53 54define <vscale x 2 x bfloat> @vuitofp_nxv2i1_nxv2bf16(<vscale x 2 x i1> %va) {55; CHECK-LABEL: vuitofp_nxv2i1_nxv2bf16:56; CHECK:       # %bb.0:57; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma58; CHECK-NEXT:    vmv.v.i v8, 059; CHECK-NEXT:    vmerge.vim v8, v8, 1, v060; CHECK-NEXT:    vfwcvt.f.xu.v v9, v861; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v962; CHECK-NEXT:    ret63  %evec = uitofp <vscale x 2 x i1> %va to <vscale x 2 x bfloat>64  ret <vscale x 2 x bfloat> %evec65}66 67define <vscale x 4 x bfloat> @vsitofp_nxv4i1_nxv4bf16(<vscale x 4 x i1> %va) {68; CHECK-LABEL: vsitofp_nxv4i1_nxv4bf16:69; CHECK:       # %bb.0:70; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma71; CHECK-NEXT:    vmv.v.i v8, 072; CHECK-NEXT:    vmerge.vim v8, v8, -1, v073; CHECK-NEXT:    vfwcvt.f.x.v v10, v874; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v1075; CHECK-NEXT:    ret76  %evec = sitofp <vscale x 4 x i1> %va to <vscale x 4 x bfloat>77  ret <vscale x 4 x bfloat> %evec78}79 80define <vscale x 4 x bfloat> @vuitofp_nxv4i1_nxv4bf16(<vscale x 4 x i1> %va) {81; CHECK-LABEL: vuitofp_nxv4i1_nxv4bf16:82; CHECK:       # %bb.0:83; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma84; CHECK-NEXT:    vmv.v.i v8, 085; CHECK-NEXT:    vmerge.vim v8, v8, 1, v086; CHECK-NEXT:    vfwcvt.f.xu.v v10, v887; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v1088; CHECK-NEXT:    ret89  %evec = uitofp <vscale x 4 x i1> %va to <vscale x 4 x bfloat>90  ret <vscale x 4 x bfloat> %evec91}92 93define <vscale x 8 x bfloat> @vsitofp_nxv8i1_nxv8bf16(<vscale x 8 x i1> %va) {94; CHECK-LABEL: vsitofp_nxv8i1_nxv8bf16:95; CHECK:       # %bb.0:96; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma97; CHECK-NEXT:    vmv.v.i v8, 098; CHECK-NEXT:    vmerge.vim v8, v8, -1, v099; CHECK-NEXT:    vfwcvt.f.x.v v12, v8100; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v12101; CHECK-NEXT:    ret102  %evec = sitofp <vscale x 8 x i1> %va to <vscale x 8 x bfloat>103  ret <vscale x 8 x bfloat> %evec104}105 106define <vscale x 8 x bfloat> @vuitofp_nxv8i1_nxv8bf16(<vscale x 8 x i1> %va) {107; CHECK-LABEL: vuitofp_nxv8i1_nxv8bf16:108; CHECK:       # %bb.0:109; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma110; CHECK-NEXT:    vmv.v.i v8, 0111; CHECK-NEXT:    vmerge.vim v8, v8, 1, v0112; CHECK-NEXT:    vfwcvt.f.xu.v v12, v8113; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v12114; CHECK-NEXT:    ret115  %evec = uitofp <vscale x 8 x i1> %va to <vscale x 8 x bfloat>116  ret <vscale x 8 x bfloat> %evec117}118 119define <vscale x 16 x bfloat> @vsitofp_nxv16i1_nxv16bf16(<vscale x 16 x i1> %va) {120; CHECK-LABEL: vsitofp_nxv16i1_nxv16bf16:121; CHECK:       # %bb.0:122; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma123; CHECK-NEXT:    vmv.v.i v8, 0124; CHECK-NEXT:    vmerge.vim v8, v8, -1, v0125; CHECK-NEXT:    vfwcvt.f.x.v v16, v8126; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16127; CHECK-NEXT:    ret128  %evec = sitofp <vscale x 16 x i1> %va to <vscale x 16 x bfloat>129  ret <vscale x 16 x bfloat> %evec130}131 132define <vscale x 16 x bfloat> @vuitofp_nxv16i1_nxv16bf16(<vscale x 16 x i1> %va) {133; CHECK-LABEL: vuitofp_nxv16i1_nxv16bf16:134; CHECK:       # %bb.0:135; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma136; CHECK-NEXT:    vmv.v.i v8, 0137; CHECK-NEXT:    vmerge.vim v8, v8, 1, v0138; CHECK-NEXT:    vfwcvt.f.xu.v v16, v8139; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16140; CHECK-NEXT:    ret141  %evec = uitofp <vscale x 16 x i1> %va to <vscale x 16 x bfloat>142  ret <vscale x 16 x bfloat> %evec143}144 145define <vscale x 32 x bfloat> @vsitofp_nxv32i1_nxv32bf16(<vscale x 32 x i1> %va) {146; CHECK-LABEL: vsitofp_nxv32i1_nxv32bf16:147; CHECK:       # %bb.0:148; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma149; CHECK-NEXT:    vmv.v.i v12, 0150; CHECK-NEXT:    csrr a0, vlenb151; CHECK-NEXT:    vmerge.vim v8, v12, -1, v0152; CHECK-NEXT:    srli a0, a0, 2153; CHECK-NEXT:    vfwcvt.f.x.v v16, v8154; CHECK-NEXT:    vsetvli a1, zero, e8, mf2, ta, ma155; CHECK-NEXT:    vslidedown.vx v0, v0, a0156; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma157; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16158; CHECK-NEXT:    vmerge.vim v12, v12, -1, v0159; CHECK-NEXT:    vfwcvt.f.x.v v16, v12160; CHECK-NEXT:    vfncvtbf16.f.f.w v12, v16161; CHECK-NEXT:    ret162  %evec = sitofp <vscale x 32 x i1> %va to <vscale x 32 x bfloat>163  ret <vscale x 32 x bfloat> %evec164}165 166define <vscale x 32 x bfloat> @vuitofp_nxv32i1_nxv32bf16(<vscale x 32 x i1> %va) {167; CHECK-LABEL: vuitofp_nxv32i1_nxv32bf16:168; CHECK:       # %bb.0:169; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma170; CHECK-NEXT:    vmv.v.i v12, 0171; CHECK-NEXT:    csrr a0, vlenb172; CHECK-NEXT:    vmerge.vim v8, v12, 1, v0173; CHECK-NEXT:    srli a0, a0, 2174; CHECK-NEXT:    vfwcvt.f.xu.v v16, v8175; CHECK-NEXT:    vsetvli a1, zero, e8, mf2, ta, ma176; CHECK-NEXT:    vslidedown.vx v0, v0, a0177; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma178; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16179; CHECK-NEXT:    vmerge.vim v12, v12, 1, v0180; CHECK-NEXT:    vfwcvt.f.xu.v v16, v12181; CHECK-NEXT:    vfncvtbf16.f.f.w v12, v16182; CHECK-NEXT:    ret183  %evec = uitofp <vscale x 32 x i1> %va to <vscale x 32 x bfloat>184  ret <vscale x 32 x bfloat> %evec185}186 187define <vscale x 1 x bfloat> @vsitofp_nxv1i8_nxv1bf16(<vscale x 1 x i8> %va) {188; CHECK-LABEL: vsitofp_nxv1i8_nxv1bf16:189; CHECK:       # %bb.0:190; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma191; CHECK-NEXT:    vsext.vf2 v9, v8192; CHECK-NEXT:    vfwcvt.f.x.v v10, v9193; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v10194; CHECK-NEXT:    ret195  %evec = sitofp <vscale x 1 x i8> %va to <vscale x 1 x bfloat>196  ret <vscale x 1 x bfloat> %evec197}198 199define <vscale x 1 x bfloat> @vsitofp_nxv1i7_nxv1bf16(<vscale x 1 x i7> %va) {200; CHECK-LABEL: vsitofp_nxv1i7_nxv1bf16:201; CHECK:       # %bb.0:202; CHECK-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma203; CHECK-NEXT:    vadd.vv v8, v8, v8204; CHECK-NEXT:    vsra.vi v8, v8, 1205; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma206; CHECK-NEXT:    vsext.vf2 v9, v8207; CHECK-NEXT:    vfwcvt.f.x.v v10, v9208; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v10209; CHECK-NEXT:    ret210  %evec = sitofp <vscale x 1 x i7> %va to <vscale x 1 x bfloat>211  ret <vscale x 1 x bfloat> %evec212}213 214define <vscale x 1 x bfloat> @vuitofp_nxv1i7_nxv1bf16(<vscale x 1 x i7> %va) {215; CHECK-LABEL: vuitofp_nxv1i7_nxv1bf16:216; CHECK:       # %bb.0:217; CHECK-NEXT:    li a0, 127218; CHECK-NEXT:    vsetvli a1, zero, e8, mf8, ta, ma219; CHECK-NEXT:    vand.vx v8, v8, a0220; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma221; CHECK-NEXT:    vzext.vf2 v9, v8222; CHECK-NEXT:    vfwcvt.f.xu.v v10, v9223; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v10224; CHECK-NEXT:    ret225  %evec = uitofp <vscale x 1 x i7> %va to <vscale x 1 x bfloat>226  ret <vscale x 1 x bfloat> %evec227}228 229define <vscale x 1 x bfloat> @vuitofp_nxv1i8_nxv1bf16(<vscale x 1 x i8> %va) {230; CHECK-LABEL: vuitofp_nxv1i8_nxv1bf16:231; CHECK:       # %bb.0:232; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma233; CHECK-NEXT:    vzext.vf2 v9, v8234; CHECK-NEXT:    vfwcvt.f.xu.v v10, v9235; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v10236; CHECK-NEXT:    ret237  %evec = uitofp <vscale x 1 x i8> %va to <vscale x 1 x bfloat>238  ret <vscale x 1 x bfloat> %evec239}240 241define <vscale x 2 x bfloat> @vsitofp_nxv2i8_nxv2bf16(<vscale x 2 x i8> %va) {242; CHECK-LABEL: vsitofp_nxv2i8_nxv2bf16:243; CHECK:       # %bb.0:244; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma245; CHECK-NEXT:    vsext.vf2 v9, v8246; CHECK-NEXT:    vfwcvt.f.x.v v10, v9247; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v10248; CHECK-NEXT:    ret249  %evec = sitofp <vscale x 2 x i8> %va to <vscale x 2 x bfloat>250  ret <vscale x 2 x bfloat> %evec251}252 253define <vscale x 2 x bfloat> @vuitofp_nxv2i8_nxv2bf16(<vscale x 2 x i8> %va) {254; CHECK-LABEL: vuitofp_nxv2i8_nxv2bf16:255; CHECK:       # %bb.0:256; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma257; CHECK-NEXT:    vzext.vf2 v9, v8258; CHECK-NEXT:    vfwcvt.f.xu.v v10, v9259; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v10260; CHECK-NEXT:    ret261  %evec = uitofp <vscale x 2 x i8> %va to <vscale x 2 x bfloat>262  ret <vscale x 2 x bfloat> %evec263}264 265define <vscale x 4 x bfloat> @vsitofp_nxv4i8_nxv4bf16(<vscale x 4 x i8> %va) {266; CHECK-LABEL: vsitofp_nxv4i8_nxv4bf16:267; CHECK:       # %bb.0:268; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma269; CHECK-NEXT:    vsext.vf2 v9, v8270; CHECK-NEXT:    vfwcvt.f.x.v v10, v9271; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v10272; CHECK-NEXT:    ret273  %evec = sitofp <vscale x 4 x i8> %va to <vscale x 4 x bfloat>274  ret <vscale x 4 x bfloat> %evec275}276 277define <vscale x 4 x bfloat> @vuitofp_nxv4i8_nxv4bf16(<vscale x 4 x i8> %va) {278; CHECK-LABEL: vuitofp_nxv4i8_nxv4bf16:279; CHECK:       # %bb.0:280; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma281; CHECK-NEXT:    vzext.vf2 v9, v8282; CHECK-NEXT:    vfwcvt.f.xu.v v10, v9283; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v10284; CHECK-NEXT:    ret285  %evec = uitofp <vscale x 4 x i8> %va to <vscale x 4 x bfloat>286  ret <vscale x 4 x bfloat> %evec287}288 289define <vscale x 8 x bfloat> @vsitofp_nxv8i8_nxv8bf16(<vscale x 8 x i8> %va) {290; CHECK-LABEL: vsitofp_nxv8i8_nxv8bf16:291; CHECK:       # %bb.0:292; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma293; CHECK-NEXT:    vsext.vf2 v10, v8294; CHECK-NEXT:    vfwcvt.f.x.v v12, v10295; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v12296; CHECK-NEXT:    ret297  %evec = sitofp <vscale x 8 x i8> %va to <vscale x 8 x bfloat>298  ret <vscale x 8 x bfloat> %evec299}300 301define <vscale x 8 x bfloat> @vuitofp_nxv8i8_nxv8bf16(<vscale x 8 x i8> %va) {302; CHECK-LABEL: vuitofp_nxv8i8_nxv8bf16:303; CHECK:       # %bb.0:304; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma305; CHECK-NEXT:    vzext.vf2 v10, v8306; CHECK-NEXT:    vfwcvt.f.xu.v v12, v10307; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v12308; CHECK-NEXT:    ret309  %evec = uitofp <vscale x 8 x i8> %va to <vscale x 8 x bfloat>310  ret <vscale x 8 x bfloat> %evec311}312 313define <vscale x 16 x bfloat> @vsitofp_nxv16i8_nxv16bf16(<vscale x 16 x i8> %va) {314; CHECK-LABEL: vsitofp_nxv16i8_nxv16bf16:315; CHECK:       # %bb.0:316; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma317; CHECK-NEXT:    vsext.vf2 v12, v8318; CHECK-NEXT:    vfwcvt.f.x.v v16, v12319; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16320; CHECK-NEXT:    ret321  %evec = sitofp <vscale x 16 x i8> %va to <vscale x 16 x bfloat>322  ret <vscale x 16 x bfloat> %evec323}324 325define <vscale x 16 x bfloat> @vuitofp_nxv16i8_nxv16bf16(<vscale x 16 x i8> %va) {326; CHECK-LABEL: vuitofp_nxv16i8_nxv16bf16:327; CHECK:       # %bb.0:328; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma329; CHECK-NEXT:    vzext.vf2 v12, v8330; CHECK-NEXT:    vfwcvt.f.xu.v v16, v12331; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16332; CHECK-NEXT:    ret333  %evec = uitofp <vscale x 16 x i8> %va to <vscale x 16 x bfloat>334  ret <vscale x 16 x bfloat> %evec335}336 337define <vscale x 32 x bfloat> @vsitofp_nxv32i8_nxv32bf16(<vscale x 32 x i8> %va) {338; CHECK-LABEL: vsitofp_nxv32i8_nxv32bf16:339; CHECK:       # %bb.0:340; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma341; CHECK-NEXT:    vsext.vf2 v12, v8342; CHECK-NEXT:    vsext.vf2 v24, v10343; CHECK-NEXT:    vfwcvt.f.x.v v16, v12344; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16345; CHECK-NEXT:    vfwcvt.f.x.v v16, v24346; CHECK-NEXT:    vfncvtbf16.f.f.w v12, v16347; CHECK-NEXT:    ret348  %evec = sitofp <vscale x 32 x i8> %va to <vscale x 32 x bfloat>349  ret <vscale x 32 x bfloat> %evec350}351 352define <vscale x 32 x bfloat> @vuitofp_nxv32i8_nxv32bf16(<vscale x 32 x i8> %va) {353; CHECK-LABEL: vuitofp_nxv32i8_nxv32bf16:354; CHECK:       # %bb.0:355; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma356; CHECK-NEXT:    vzext.vf2 v12, v8357; CHECK-NEXT:    vzext.vf2 v24, v10358; CHECK-NEXT:    vfwcvt.f.xu.v v16, v12359; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16360; CHECK-NEXT:    vfwcvt.f.xu.v v16, v24361; CHECK-NEXT:    vfncvtbf16.f.f.w v12, v16362; CHECK-NEXT:    ret363  %evec = uitofp <vscale x 32 x i8> %va to <vscale x 32 x bfloat>364  ret <vscale x 32 x bfloat> %evec365}366 367define <vscale x 1 x bfloat> @vsitofp_nxv1i16_nxv1bf16(<vscale x 1 x i16> %va) {368; CHECK-LABEL: vsitofp_nxv1i16_nxv1bf16:369; CHECK:       # %bb.0:370; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma371; CHECK-NEXT:    vfwcvt.f.x.v v9, v8372; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v9373; CHECK-NEXT:    ret374  %evec = sitofp <vscale x 1 x i16> %va to <vscale x 1 x bfloat>375  ret <vscale x 1 x bfloat> %evec376}377 378define <vscale x 1 x bfloat> @vuitofp_nxv1i16_nxv1bf16(<vscale x 1 x i16> %va) {379; CHECK-LABEL: vuitofp_nxv1i16_nxv1bf16:380; CHECK:       # %bb.0:381; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma382; CHECK-NEXT:    vfwcvt.f.xu.v v9, v8383; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v9384; CHECK-NEXT:    ret385  %evec = uitofp <vscale x 1 x i16> %va to <vscale x 1 x bfloat>386  ret <vscale x 1 x bfloat> %evec387}388 389define <vscale x 2 x bfloat> @vsitofp_nxv2i16_nxv2bf16(<vscale x 2 x i16> %va) {390; CHECK-LABEL: vsitofp_nxv2i16_nxv2bf16:391; CHECK:       # %bb.0:392; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma393; CHECK-NEXT:    vfwcvt.f.x.v v9, v8394; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v9395; CHECK-NEXT:    ret396  %evec = sitofp <vscale x 2 x i16> %va to <vscale x 2 x bfloat>397  ret <vscale x 2 x bfloat> %evec398}399 400define <vscale x 2 x bfloat> @vuitofp_nxv2i16_nxv2bf16(<vscale x 2 x i16> %va) {401; CHECK-LABEL: vuitofp_nxv2i16_nxv2bf16:402; CHECK:       # %bb.0:403; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma404; CHECK-NEXT:    vfwcvt.f.xu.v v9, v8405; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v9406; CHECK-NEXT:    ret407  %evec = uitofp <vscale x 2 x i16> %va to <vscale x 2 x bfloat>408  ret <vscale x 2 x bfloat> %evec409}410 411define <vscale x 4 x bfloat> @vsitofp_nxv4i16_nxv4bf16(<vscale x 4 x i16> %va) {412; CHECK-LABEL: vsitofp_nxv4i16_nxv4bf16:413; CHECK:       # %bb.0:414; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma415; CHECK-NEXT:    vfwcvt.f.x.v v10, v8416; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v10417; CHECK-NEXT:    ret418  %evec = sitofp <vscale x 4 x i16> %va to <vscale x 4 x bfloat>419  ret <vscale x 4 x bfloat> %evec420}421 422define <vscale x 4 x bfloat> @vuitofp_nxv4i16_nxv4bf16(<vscale x 4 x i16> %va) {423; CHECK-LABEL: vuitofp_nxv4i16_nxv4bf16:424; CHECK:       # %bb.0:425; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma426; CHECK-NEXT:    vfwcvt.f.xu.v v10, v8427; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v10428; CHECK-NEXT:    ret429  %evec = uitofp <vscale x 4 x i16> %va to <vscale x 4 x bfloat>430  ret <vscale x 4 x bfloat> %evec431}432 433define <vscale x 8 x bfloat> @vsitofp_nxv8i16_nxv8bf16(<vscale x 8 x i16> %va) {434; CHECK-LABEL: vsitofp_nxv8i16_nxv8bf16:435; CHECK:       # %bb.0:436; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma437; CHECK-NEXT:    vfwcvt.f.x.v v12, v8438; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v12439; CHECK-NEXT:    ret440  %evec = sitofp <vscale x 8 x i16> %va to <vscale x 8 x bfloat>441  ret <vscale x 8 x bfloat> %evec442}443 444define <vscale x 8 x bfloat> @vuitofp_nxv8i16_nxv8bf16(<vscale x 8 x i16> %va) {445; CHECK-LABEL: vuitofp_nxv8i16_nxv8bf16:446; CHECK:       # %bb.0:447; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma448; CHECK-NEXT:    vfwcvt.f.xu.v v12, v8449; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v12450; CHECK-NEXT:    ret451  %evec = uitofp <vscale x 8 x i16> %va to <vscale x 8 x bfloat>452  ret <vscale x 8 x bfloat> %evec453}454 455define <vscale x 16 x bfloat> @vsitofp_nxv16i16_nxv16bf16(<vscale x 16 x i16> %va) {456; CHECK-LABEL: vsitofp_nxv16i16_nxv16bf16:457; CHECK:       # %bb.0:458; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma459; CHECK-NEXT:    vfwcvt.f.x.v v16, v8460; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16461; CHECK-NEXT:    ret462  %evec = sitofp <vscale x 16 x i16> %va to <vscale x 16 x bfloat>463  ret <vscale x 16 x bfloat> %evec464}465 466define <vscale x 16 x bfloat> @vuitofp_nxv16i16_nxv16bf16(<vscale x 16 x i16> %va) {467; CHECK-LABEL: vuitofp_nxv16i16_nxv16bf16:468; CHECK:       # %bb.0:469; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma470; CHECK-NEXT:    vfwcvt.f.xu.v v16, v8471; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16472; CHECK-NEXT:    ret473  %evec = uitofp <vscale x 16 x i16> %va to <vscale x 16 x bfloat>474  ret <vscale x 16 x bfloat> %evec475}476 477define <vscale x 32 x bfloat> @vsitofp_nxv32i16_nxv32bf16(<vscale x 32 x i16> %va) {478; CHECK-LABEL: vsitofp_nxv32i16_nxv32bf16:479; CHECK:       # %bb.0:480; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma481; CHECK-NEXT:    vfwcvt.f.x.v v16, v8482; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16483; CHECK-NEXT:    vfwcvt.f.x.v v16, v12484; CHECK-NEXT:    vfncvtbf16.f.f.w v12, v16485; CHECK-NEXT:    ret486  %evec = sitofp <vscale x 32 x i16> %va to <vscale x 32 x bfloat>487  ret <vscale x 32 x bfloat> %evec488}489 490define <vscale x 32 x bfloat> @vuitofp_nxv32i16_nxv32bf16(<vscale x 32 x i16> %va) {491; CHECK-LABEL: vuitofp_nxv32i16_nxv32bf16:492; CHECK:       # %bb.0:493; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma494; CHECK-NEXT:    vfwcvt.f.xu.v v16, v8495; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16496; CHECK-NEXT:    vfwcvt.f.xu.v v16, v12497; CHECK-NEXT:    vfncvtbf16.f.f.w v12, v16498; CHECK-NEXT:    ret499  %evec = uitofp <vscale x 32 x i16> %va to <vscale x 32 x bfloat>500  ret <vscale x 32 x bfloat> %evec501}502 503define <vscale x 1 x bfloat> @vsitofp_nxv1i32_nxv1bf16(<vscale x 1 x i32> %va) {504; CHECK-LABEL: vsitofp_nxv1i32_nxv1bf16:505; CHECK:       # %bb.0:506; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma507; CHECK-NEXT:    vfcvt.f.x.v v9, v8508; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma509; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v9510; CHECK-NEXT:    ret511  %evec = sitofp <vscale x 1 x i32> %va to <vscale x 1 x bfloat>512  ret <vscale x 1 x bfloat> %evec513}514 515define <vscale x 1 x bfloat> @vuitofp_nxv1i32_nxv1bf16(<vscale x 1 x i32> %va) {516; CHECK-LABEL: vuitofp_nxv1i32_nxv1bf16:517; CHECK:       # %bb.0:518; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma519; CHECK-NEXT:    vfcvt.f.xu.v v9, v8520; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma521; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v9522; CHECK-NEXT:    ret523  %evec = uitofp <vscale x 1 x i32> %va to <vscale x 1 x bfloat>524  ret <vscale x 1 x bfloat> %evec525}526 527define <vscale x 2 x bfloat> @vsitofp_nxv2i32_nxv2bf16(<vscale x 2 x i32> %va) {528; CHECK-LABEL: vsitofp_nxv2i32_nxv2bf16:529; CHECK:       # %bb.0:530; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma531; CHECK-NEXT:    vfcvt.f.x.v v9, v8532; CHECK-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma533; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v9534; CHECK-NEXT:    ret535  %evec = sitofp <vscale x 2 x i32> %va to <vscale x 2 x bfloat>536  ret <vscale x 2 x bfloat> %evec537}538 539define <vscale x 2 x bfloat> @vuitofp_nxv2i32_nxv2bf16(<vscale x 2 x i32> %va) {540; CHECK-LABEL: vuitofp_nxv2i32_nxv2bf16:541; CHECK:       # %bb.0:542; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma543; CHECK-NEXT:    vfcvt.f.xu.v v9, v8544; CHECK-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma545; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v9546; CHECK-NEXT:    ret547  %evec = uitofp <vscale x 2 x i32> %va to <vscale x 2 x bfloat>548  ret <vscale x 2 x bfloat> %evec549}550 551define <vscale x 4 x bfloat> @vsitofp_nxv4i32_nxv4bf16(<vscale x 4 x i32> %va) {552; CHECK-LABEL: vsitofp_nxv4i32_nxv4bf16:553; CHECK:       # %bb.0:554; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma555; CHECK-NEXT:    vfcvt.f.x.v v10, v8556; CHECK-NEXT:    vsetvli zero, zero, e16, m1, ta, ma557; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v10558; CHECK-NEXT:    ret559  %evec = sitofp <vscale x 4 x i32> %va to <vscale x 4 x bfloat>560  ret <vscale x 4 x bfloat> %evec561}562 563define <vscale x 4 x bfloat> @vuitofp_nxv4i32_nxv4bf16(<vscale x 4 x i32> %va) {564; CHECK-LABEL: vuitofp_nxv4i32_nxv4bf16:565; CHECK:       # %bb.0:566; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma567; CHECK-NEXT:    vfcvt.f.xu.v v10, v8568; CHECK-NEXT:    vsetvli zero, zero, e16, m1, ta, ma569; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v10570; CHECK-NEXT:    ret571  %evec = uitofp <vscale x 4 x i32> %va to <vscale x 4 x bfloat>572  ret <vscale x 4 x bfloat> %evec573}574 575define <vscale x 8 x bfloat> @vsitofp_nxv8i32_nxv8bf16(<vscale x 8 x i32> %va) {576; CHECK-LABEL: vsitofp_nxv8i32_nxv8bf16:577; CHECK:       # %bb.0:578; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma579; CHECK-NEXT:    vfcvt.f.x.v v12, v8580; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma581; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v12582; CHECK-NEXT:    ret583  %evec = sitofp <vscale x 8 x i32> %va to <vscale x 8 x bfloat>584  ret <vscale x 8 x bfloat> %evec585}586 587define <vscale x 8 x bfloat> @vuitofp_nxv8i32_nxv8bf16(<vscale x 8 x i32> %va) {588; CHECK-LABEL: vuitofp_nxv8i32_nxv8bf16:589; CHECK:       # %bb.0:590; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma591; CHECK-NEXT:    vfcvt.f.xu.v v12, v8592; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma593; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v12594; CHECK-NEXT:    ret595  %evec = uitofp <vscale x 8 x i32> %va to <vscale x 8 x bfloat>596  ret <vscale x 8 x bfloat> %evec597}598 599define <vscale x 16 x bfloat> @vsitofp_nxv16i32_nxv16bf16(<vscale x 16 x i32> %va) {600; CHECK-LABEL: vsitofp_nxv16i32_nxv16bf16:601; CHECK:       # %bb.0:602; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma603; CHECK-NEXT:    vfcvt.f.x.v v16, v8604; CHECK-NEXT:    vsetvli zero, zero, e16, m4, ta, ma605; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16606; CHECK-NEXT:    ret607  %evec = sitofp <vscale x 16 x i32> %va to <vscale x 16 x bfloat>608  ret <vscale x 16 x bfloat> %evec609}610 611define <vscale x 16 x bfloat> @vuitofp_nxv16i32_nxv16bf16(<vscale x 16 x i32> %va) {612; CHECK-LABEL: vuitofp_nxv16i32_nxv16bf16:613; CHECK:       # %bb.0:614; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma615; CHECK-NEXT:    vfcvt.f.xu.v v16, v8616; CHECK-NEXT:    vsetvli zero, zero, e16, m4, ta, ma617; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16618; CHECK-NEXT:    ret619  %evec = uitofp <vscale x 16 x i32> %va to <vscale x 16 x bfloat>620  ret <vscale x 16 x bfloat> %evec621}622 623define <vscale x 1 x bfloat> @vsitofp_nxv1i64_nxv1bf16(<vscale x 1 x i64> %va) {624; CHECK-LABEL: vsitofp_nxv1i64_nxv1bf16:625; CHECK:       # %bb.0:626; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma627; CHECK-NEXT:    vfncvt.f.x.w v9, v8628; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma629; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v9630; CHECK-NEXT:    ret631  %evec = sitofp <vscale x 1 x i64> %va to <vscale x 1 x bfloat>632  ret <vscale x 1 x bfloat> %evec633}634 635define <vscale x 1 x bfloat> @vuitofp_nxv1i64_nxv1bf16(<vscale x 1 x i64> %va) {636; CHECK-LABEL: vuitofp_nxv1i64_nxv1bf16:637; CHECK:       # %bb.0:638; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma639; CHECK-NEXT:    vfncvt.f.xu.w v9, v8640; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma641; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v9642; CHECK-NEXT:    ret643  %evec = uitofp <vscale x 1 x i64> %va to <vscale x 1 x bfloat>644  ret <vscale x 1 x bfloat> %evec645}646 647define <vscale x 2 x bfloat> @vsitofp_nxv2i64_nxv2bf16(<vscale x 2 x i64> %va) {648; CHECK-LABEL: vsitofp_nxv2i64_nxv2bf16:649; CHECK:       # %bb.0:650; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma651; CHECK-NEXT:    vfncvt.f.x.w v10, v8652; CHECK-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma653; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v10654; CHECK-NEXT:    ret655  %evec = sitofp <vscale x 2 x i64> %va to <vscale x 2 x bfloat>656  ret <vscale x 2 x bfloat> %evec657}658 659define <vscale x 2 x bfloat> @vuitofp_nxv2i64_nxv2bf16(<vscale x 2 x i64> %va) {660; CHECK-LABEL: vuitofp_nxv2i64_nxv2bf16:661; CHECK:       # %bb.0:662; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma663; CHECK-NEXT:    vfncvt.f.xu.w v10, v8664; CHECK-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma665; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v10666; CHECK-NEXT:    ret667  %evec = uitofp <vscale x 2 x i64> %va to <vscale x 2 x bfloat>668  ret <vscale x 2 x bfloat> %evec669}670 671define <vscale x 4 x bfloat> @vsitofp_nxv4i64_nxv4bf16(<vscale x 4 x i64> %va) {672; CHECK-LABEL: vsitofp_nxv4i64_nxv4bf16:673; CHECK:       # %bb.0:674; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma675; CHECK-NEXT:    vfncvt.f.x.w v12, v8676; CHECK-NEXT:    vsetvli zero, zero, e16, m1, ta, ma677; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v12678; CHECK-NEXT:    ret679  %evec = sitofp <vscale x 4 x i64> %va to <vscale x 4 x bfloat>680  ret <vscale x 4 x bfloat> %evec681}682 683define <vscale x 4 x bfloat> @vuitofp_nxv4i64_nxv4bf16(<vscale x 4 x i64> %va) {684; CHECK-LABEL: vuitofp_nxv4i64_nxv4bf16:685; CHECK:       # %bb.0:686; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma687; CHECK-NEXT:    vfncvt.f.xu.w v12, v8688; CHECK-NEXT:    vsetvli zero, zero, e16, m1, ta, ma689; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v12690; CHECK-NEXT:    ret691  %evec = uitofp <vscale x 4 x i64> %va to <vscale x 4 x bfloat>692  ret <vscale x 4 x bfloat> %evec693}694 695define <vscale x 8 x bfloat> @vsitofp_nxv8i64_nxv8bf16(<vscale x 8 x i64> %va) {696; CHECK-LABEL: vsitofp_nxv8i64_nxv8bf16:697; CHECK:       # %bb.0:698; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma699; CHECK-NEXT:    vfncvt.f.x.w v16, v8700; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma701; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16702; CHECK-NEXT:    ret703  %evec = sitofp <vscale x 8 x i64> %va to <vscale x 8 x bfloat>704  ret <vscale x 8 x bfloat> %evec705}706 707define <vscale x 8 x bfloat> @vuitofp_nxv8i64_nxv8bf16(<vscale x 8 x i64> %va) {708; CHECK-LABEL: vuitofp_nxv8i64_nxv8bf16:709; CHECK:       # %bb.0:710; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma711; CHECK-NEXT:    vfncvt.f.xu.w v16, v8712; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma713; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v16714; CHECK-NEXT:    ret715  %evec = uitofp <vscale x 8 x i64> %va to <vscale x 8 x bfloat>716  ret <vscale x 8 x bfloat> %evec717}718 719define <vscale x 1 x half> @vsitofp_nxv1i1_nxv1f16(<vscale x 1 x i1> %va) {720; ZVFH-LABEL: vsitofp_nxv1i1_nxv1f16:721; ZVFH:       # %bb.0:722; ZVFH-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma723; ZVFH-NEXT:    vmv.v.i v8, 0724; ZVFH-NEXT:    vmerge.vim v9, v8, -1, v0725; ZVFH-NEXT:    vfwcvt.f.x.v v8, v9726; ZVFH-NEXT:    ret727;728; ZVFHMIN-LABEL: vsitofp_nxv1i1_nxv1f16:729; ZVFHMIN:       # %bb.0:730; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma731; ZVFHMIN-NEXT:    vmv.v.i v8, 0732; ZVFHMIN-NEXT:    vmerge.vim v8, v8, -1, v0733; ZVFHMIN-NEXT:    vfwcvt.f.x.v v9, v8734; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9735; ZVFHMIN-NEXT:    ret736  %evec = sitofp <vscale x 1 x i1> %va to <vscale x 1 x half>737  ret <vscale x 1 x half> %evec738}739 740define <vscale x 1 x half> @vuitofp_nxv1i1_nxv1f16(<vscale x 1 x i1> %va) {741; ZVFH-LABEL: vuitofp_nxv1i1_nxv1f16:742; ZVFH:       # %bb.0:743; ZVFH-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma744; ZVFH-NEXT:    vmv.v.i v8, 0745; ZVFH-NEXT:    vmerge.vim v9, v8, 1, v0746; ZVFH-NEXT:    vfwcvt.f.xu.v v8, v9747; ZVFH-NEXT:    ret748;749; ZVFHMIN-LABEL: vuitofp_nxv1i1_nxv1f16:750; ZVFHMIN:       # %bb.0:751; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma752; ZVFHMIN-NEXT:    vmv.v.i v8, 0753; ZVFHMIN-NEXT:    vmerge.vim v8, v8, 1, v0754; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v9, v8755; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9756; ZVFHMIN-NEXT:    ret757  %evec = uitofp <vscale x 1 x i1> %va to <vscale x 1 x half>758  ret <vscale x 1 x half> %evec759}760 761define <vscale x 1 x float> @vsitofp_nxv1i1_nxv1f32(<vscale x 1 x i1> %va) {762; CHECK-LABEL: vsitofp_nxv1i1_nxv1f32:763; CHECK:       # %bb.0:764; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma765; CHECK-NEXT:    vmv.v.i v8, 0766; CHECK-NEXT:    vmerge.vim v9, v8, -1, v0767; CHECK-NEXT:    vfwcvt.f.x.v v8, v9768; CHECK-NEXT:    ret769  %evec = sitofp <vscale x 1 x i1> %va to <vscale x 1 x float>770  ret <vscale x 1 x float> %evec771}772 773define <vscale x 1 x float> @vuitofp_nxv1i1_nxv1f32(<vscale x 1 x i1> %va) {774; CHECK-LABEL: vuitofp_nxv1i1_nxv1f32:775; CHECK:       # %bb.0:776; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma777; CHECK-NEXT:    vmv.v.i v8, 0778; CHECK-NEXT:    vmerge.vim v9, v8, 1, v0779; CHECK-NEXT:    vfwcvt.f.xu.v v8, v9780; CHECK-NEXT:    ret781  %evec = uitofp <vscale x 1 x i1> %va to <vscale x 1 x float>782  ret <vscale x 1 x float> %evec783}784 785define <vscale x 1 x double> @vsitofp_nxv1i1_nxv1f64(<vscale x 1 x i1> %va) {786; CHECK-LABEL: vsitofp_nxv1i1_nxv1f64:787; CHECK:       # %bb.0:788; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma789; CHECK-NEXT:    vmv.v.i v8, 0790; CHECK-NEXT:    vmerge.vim v9, v8, -1, v0791; CHECK-NEXT:    vfwcvt.f.x.v v8, v9792; CHECK-NEXT:    ret793  %evec = sitofp <vscale x 1 x i1> %va to <vscale x 1 x double>794  ret <vscale x 1 x double> %evec795}796 797define <vscale x 1 x double> @vuitofp_nxv1i1_nxv1f64(<vscale x 1 x i1> %va) {798; CHECK-LABEL: vuitofp_nxv1i1_nxv1f64:799; CHECK:       # %bb.0:800; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma801; CHECK-NEXT:    vmv.v.i v8, 0802; CHECK-NEXT:    vmerge.vim v9, v8, 1, v0803; CHECK-NEXT:    vfwcvt.f.xu.v v8, v9804; CHECK-NEXT:    ret805  %evec = uitofp <vscale x 1 x i1> %va to <vscale x 1 x double>806  ret <vscale x 1 x double> %evec807}808 809define <vscale x 2 x half> @vsitofp_nxv2i1_nxv2f16(<vscale x 2 x i1> %va) {810; ZVFH-LABEL: vsitofp_nxv2i1_nxv2f16:811; ZVFH:       # %bb.0:812; ZVFH-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma813; ZVFH-NEXT:    vmv.v.i v8, 0814; ZVFH-NEXT:    vmerge.vim v9, v8, -1, v0815; ZVFH-NEXT:    vfwcvt.f.x.v v8, v9816; ZVFH-NEXT:    ret817;818; ZVFHMIN-LABEL: vsitofp_nxv2i1_nxv2f16:819; ZVFHMIN:       # %bb.0:820; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma821; ZVFHMIN-NEXT:    vmv.v.i v8, 0822; ZVFHMIN-NEXT:    vmerge.vim v8, v8, -1, v0823; ZVFHMIN-NEXT:    vfwcvt.f.x.v v9, v8824; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9825; ZVFHMIN-NEXT:    ret826  %evec = sitofp <vscale x 2 x i1> %va to <vscale x 2 x half>827  ret <vscale x 2 x half> %evec828}829 830define <vscale x 2 x half> @vuitofp_nxv2i1_nxv2f16(<vscale x 2 x i1> %va) {831; ZVFH-LABEL: vuitofp_nxv2i1_nxv2f16:832; ZVFH:       # %bb.0:833; ZVFH-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma834; ZVFH-NEXT:    vmv.v.i v8, 0835; ZVFH-NEXT:    vmerge.vim v9, v8, 1, v0836; ZVFH-NEXT:    vfwcvt.f.xu.v v8, v9837; ZVFH-NEXT:    ret838;839; ZVFHMIN-LABEL: vuitofp_nxv2i1_nxv2f16:840; ZVFHMIN:       # %bb.0:841; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma842; ZVFHMIN-NEXT:    vmv.v.i v8, 0843; ZVFHMIN-NEXT:    vmerge.vim v8, v8, 1, v0844; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v9, v8845; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v9846; ZVFHMIN-NEXT:    ret847  %evec = uitofp <vscale x 2 x i1> %va to <vscale x 2 x half>848  ret <vscale x 2 x half> %evec849}850 851define <vscale x 2 x float> @vsitofp_nxv2i1_nxv2f32(<vscale x 2 x i1> %va) {852; CHECK-LABEL: vsitofp_nxv2i1_nxv2f32:853; CHECK:       # %bb.0:854; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma855; CHECK-NEXT:    vmv.v.i v8, 0856; CHECK-NEXT:    vmerge.vim v9, v8, -1, v0857; CHECK-NEXT:    vfwcvt.f.x.v v8, v9858; CHECK-NEXT:    ret859  %evec = sitofp <vscale x 2 x i1> %va to <vscale x 2 x float>860  ret <vscale x 2 x float> %evec861}862 863define <vscale x 2 x float> @vuitofp_nxv2i1_nxv2f32(<vscale x 2 x i1> %va) {864; CHECK-LABEL: vuitofp_nxv2i1_nxv2f32:865; CHECK:       # %bb.0:866; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma867; CHECK-NEXT:    vmv.v.i v8, 0868; CHECK-NEXT:    vmerge.vim v9, v8, 1, v0869; CHECK-NEXT:    vfwcvt.f.xu.v v8, v9870; CHECK-NEXT:    ret871  %evec = uitofp <vscale x 2 x i1> %va to <vscale x 2 x float>872  ret <vscale x 2 x float> %evec873}874 875define <vscale x 2 x double> @vsitofp_nxv2i1_nxv2f64(<vscale x 2 x i1> %va) {876; CHECK-LABEL: vsitofp_nxv2i1_nxv2f64:877; CHECK:       # %bb.0:878; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma879; CHECK-NEXT:    vmv.v.i v8, 0880; CHECK-NEXT:    vmerge.vim v10, v8, -1, v0881; CHECK-NEXT:    vfwcvt.f.x.v v8, v10882; CHECK-NEXT:    ret883  %evec = sitofp <vscale x 2 x i1> %va to <vscale x 2 x double>884  ret <vscale x 2 x double> %evec885}886 887define <vscale x 2 x double> @vuitofp_nxv2i1_nxv2f64(<vscale x 2 x i1> %va) {888; CHECK-LABEL: vuitofp_nxv2i1_nxv2f64:889; CHECK:       # %bb.0:890; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma891; CHECK-NEXT:    vmv.v.i v8, 0892; CHECK-NEXT:    vmerge.vim v10, v8, 1, v0893; CHECK-NEXT:    vfwcvt.f.xu.v v8, v10894; CHECK-NEXT:    ret895  %evec = uitofp <vscale x 2 x i1> %va to <vscale x 2 x double>896  ret <vscale x 2 x double> %evec897}898 899define <vscale x 4 x half> @vsitofp_nxv4i1_nxv4f16(<vscale x 4 x i1> %va) {900; ZVFH-LABEL: vsitofp_nxv4i1_nxv4f16:901; ZVFH:       # %bb.0:902; ZVFH-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma903; ZVFH-NEXT:    vmv.v.i v8, 0904; ZVFH-NEXT:    vmerge.vim v9, v8, -1, v0905; ZVFH-NEXT:    vfwcvt.f.x.v v8, v9906; ZVFH-NEXT:    ret907;908; ZVFHMIN-LABEL: vsitofp_nxv4i1_nxv4f16:909; ZVFHMIN:       # %bb.0:910; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m1, ta, ma911; ZVFHMIN-NEXT:    vmv.v.i v8, 0912; ZVFHMIN-NEXT:    vmerge.vim v8, v8, -1, v0913; ZVFHMIN-NEXT:    vfwcvt.f.x.v v10, v8914; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v10915; ZVFHMIN-NEXT:    ret916  %evec = sitofp <vscale x 4 x i1> %va to <vscale x 4 x half>917  ret <vscale x 4 x half> %evec918}919 920define <vscale x 4 x half> @vuitofp_nxv4i1_nxv4f16(<vscale x 4 x i1> %va) {921; ZVFH-LABEL: vuitofp_nxv4i1_nxv4f16:922; ZVFH:       # %bb.0:923; ZVFH-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma924; ZVFH-NEXT:    vmv.v.i v8, 0925; ZVFH-NEXT:    vmerge.vim v9, v8, 1, v0926; ZVFH-NEXT:    vfwcvt.f.xu.v v8, v9927; ZVFH-NEXT:    ret928;929; ZVFHMIN-LABEL: vuitofp_nxv4i1_nxv4f16:930; ZVFHMIN:       # %bb.0:931; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m1, ta, ma932; ZVFHMIN-NEXT:    vmv.v.i v8, 0933; ZVFHMIN-NEXT:    vmerge.vim v8, v8, 1, v0934; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v10, v8935; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v10936; ZVFHMIN-NEXT:    ret937  %evec = uitofp <vscale x 4 x i1> %va to <vscale x 4 x half>938  ret <vscale x 4 x half> %evec939}940 941define <vscale x 4 x float> @vsitofp_nxv4i1_nxv4f32(<vscale x 4 x i1> %va) {942; CHECK-LABEL: vsitofp_nxv4i1_nxv4f32:943; CHECK:       # %bb.0:944; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma945; CHECK-NEXT:    vmv.v.i v8, 0946; CHECK-NEXT:    vmerge.vim v10, v8, -1, v0947; CHECK-NEXT:    vfwcvt.f.x.v v8, v10948; CHECK-NEXT:    ret949  %evec = sitofp <vscale x 4 x i1> %va to <vscale x 4 x float>950  ret <vscale x 4 x float> %evec951}952 953define <vscale x 4 x float> @vuitofp_nxv4i1_nxv4f32(<vscale x 4 x i1> %va) {954; CHECK-LABEL: vuitofp_nxv4i1_nxv4f32:955; CHECK:       # %bb.0:956; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma957; CHECK-NEXT:    vmv.v.i v8, 0958; CHECK-NEXT:    vmerge.vim v10, v8, 1, v0959; CHECK-NEXT:    vfwcvt.f.xu.v v8, v10960; CHECK-NEXT:    ret961  %evec = uitofp <vscale x 4 x i1> %va to <vscale x 4 x float>962  ret <vscale x 4 x float> %evec963}964 965define <vscale x 4 x double> @vsitofp_nxv4i1_nxv4f64(<vscale x 4 x i1> %va) {966; CHECK-LABEL: vsitofp_nxv4i1_nxv4f64:967; CHECK:       # %bb.0:968; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma969; CHECK-NEXT:    vmv.v.i v8, 0970; CHECK-NEXT:    vmerge.vim v12, v8, -1, v0971; CHECK-NEXT:    vfwcvt.f.x.v v8, v12972; CHECK-NEXT:    ret973  %evec = sitofp <vscale x 4 x i1> %va to <vscale x 4 x double>974  ret <vscale x 4 x double> %evec975}976 977define <vscale x 4 x double> @vuitofp_nxv4i1_nxv4f64(<vscale x 4 x i1> %va) {978; CHECK-LABEL: vuitofp_nxv4i1_nxv4f64:979; CHECK:       # %bb.0:980; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma981; CHECK-NEXT:    vmv.v.i v8, 0982; CHECK-NEXT:    vmerge.vim v12, v8, 1, v0983; CHECK-NEXT:    vfwcvt.f.xu.v v8, v12984; CHECK-NEXT:    ret985  %evec = uitofp <vscale x 4 x i1> %va to <vscale x 4 x double>986  ret <vscale x 4 x double> %evec987}988 989define <vscale x 8 x half> @vsitofp_nxv8i1_nxv8f16(<vscale x 8 x i1> %va) {990; ZVFH-LABEL: vsitofp_nxv8i1_nxv8f16:991; ZVFH:       # %bb.0:992; ZVFH-NEXT:    vsetvli a0, zero, e8, m1, ta, ma993; ZVFH-NEXT:    vmv.v.i v8, 0994; ZVFH-NEXT:    vmerge.vim v10, v8, -1, v0995; ZVFH-NEXT:    vfwcvt.f.x.v v8, v10996; ZVFH-NEXT:    ret997;998; ZVFHMIN-LABEL: vsitofp_nxv8i1_nxv8f16:999; ZVFHMIN:       # %bb.0:1000; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1001; ZVFHMIN-NEXT:    vmv.v.i v8, 01002; ZVFHMIN-NEXT:    vmerge.vim v8, v8, -1, v01003; ZVFHMIN-NEXT:    vfwcvt.f.x.v v12, v81004; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v121005; ZVFHMIN-NEXT:    ret1006  %evec = sitofp <vscale x 8 x i1> %va to <vscale x 8 x half>1007  ret <vscale x 8 x half> %evec1008}1009 1010define <vscale x 8 x half> @vuitofp_nxv8i1_nxv8f16(<vscale x 8 x i1> %va) {1011; ZVFH-LABEL: vuitofp_nxv8i1_nxv8f16:1012; ZVFH:       # %bb.0:1013; ZVFH-NEXT:    vsetvli a0, zero, e8, m1, ta, ma1014; ZVFH-NEXT:    vmv.v.i v8, 01015; ZVFH-NEXT:    vmerge.vim v10, v8, 1, v01016; ZVFH-NEXT:    vfwcvt.f.xu.v v8, v101017; ZVFH-NEXT:    ret1018;1019; ZVFHMIN-LABEL: vuitofp_nxv8i1_nxv8f16:1020; ZVFHMIN:       # %bb.0:1021; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1022; ZVFHMIN-NEXT:    vmv.v.i v8, 01023; ZVFHMIN-NEXT:    vmerge.vim v8, v8, 1, v01024; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v12, v81025; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v121026; ZVFHMIN-NEXT:    ret1027  %evec = uitofp <vscale x 8 x i1> %va to <vscale x 8 x half>1028  ret <vscale x 8 x half> %evec1029}1030 1031define <vscale x 8 x float> @vsitofp_nxv8i1_nxv8f32(<vscale x 8 x i1> %va) {1032; CHECK-LABEL: vsitofp_nxv8i1_nxv8f32:1033; CHECK:       # %bb.0:1034; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1035; CHECK-NEXT:    vmv.v.i v8, 01036; CHECK-NEXT:    vmerge.vim v12, v8, -1, v01037; CHECK-NEXT:    vfwcvt.f.x.v v8, v121038; CHECK-NEXT:    ret1039  %evec = sitofp <vscale x 8 x i1> %va to <vscale x 8 x float>1040  ret <vscale x 8 x float> %evec1041}1042 1043define <vscale x 8 x float> @vuitofp_nxv8i1_nxv8f32(<vscale x 8 x i1> %va) {1044; CHECK-LABEL: vuitofp_nxv8i1_nxv8f32:1045; CHECK:       # %bb.0:1046; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1047; CHECK-NEXT:    vmv.v.i v8, 01048; CHECK-NEXT:    vmerge.vim v12, v8, 1, v01049; CHECK-NEXT:    vfwcvt.f.xu.v v8, v121050; CHECK-NEXT:    ret1051  %evec = uitofp <vscale x 8 x i1> %va to <vscale x 8 x float>1052  ret <vscale x 8 x float> %evec1053}1054 1055define <vscale x 8 x double> @vsitofp_nxv8i1_nxv8f64(<vscale x 8 x i1> %va) {1056; CHECK-LABEL: vsitofp_nxv8i1_nxv8f64:1057; CHECK:       # %bb.0:1058; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1059; CHECK-NEXT:    vmv.v.i v8, 01060; CHECK-NEXT:    vmerge.vim v16, v8, -1, v01061; CHECK-NEXT:    vfwcvt.f.x.v v8, v161062; CHECK-NEXT:    ret1063  %evec = sitofp <vscale x 8 x i1> %va to <vscale x 8 x double>1064  ret <vscale x 8 x double> %evec1065}1066 1067define <vscale x 8 x double> @vuitofp_nxv8i1_nxv8f64(<vscale x 8 x i1> %va) {1068; CHECK-LABEL: vuitofp_nxv8i1_nxv8f64:1069; CHECK:       # %bb.0:1070; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1071; CHECK-NEXT:    vmv.v.i v8, 01072; CHECK-NEXT:    vmerge.vim v16, v8, 1, v01073; CHECK-NEXT:    vfwcvt.f.xu.v v8, v161074; CHECK-NEXT:    ret1075  %evec = uitofp <vscale x 8 x i1> %va to <vscale x 8 x double>1076  ret <vscale x 8 x double> %evec1077}1078 1079define <vscale x 16 x half> @vsitofp_nxv16i1_nxv16f16(<vscale x 16 x i1> %va) {1080; ZVFH-LABEL: vsitofp_nxv16i1_nxv16f16:1081; ZVFH:       # %bb.0:1082; ZVFH-NEXT:    vsetvli a0, zero, e8, m2, ta, ma1083; ZVFH-NEXT:    vmv.v.i v8, 01084; ZVFH-NEXT:    vmerge.vim v12, v8, -1, v01085; ZVFH-NEXT:    vfwcvt.f.x.v v8, v121086; ZVFH-NEXT:    ret1087;1088; ZVFHMIN-LABEL: vsitofp_nxv16i1_nxv16f16:1089; ZVFHMIN:       # %bb.0:1090; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1091; ZVFHMIN-NEXT:    vmv.v.i v8, 01092; ZVFHMIN-NEXT:    vmerge.vim v8, v8, -1, v01093; ZVFHMIN-NEXT:    vfwcvt.f.x.v v16, v81094; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v161095; ZVFHMIN-NEXT:    ret1096  %evec = sitofp <vscale x 16 x i1> %va to <vscale x 16 x half>1097  ret <vscale x 16 x half> %evec1098}1099 1100define <vscale x 16 x half> @vuitofp_nxv16i1_nxv16f16(<vscale x 16 x i1> %va) {1101; ZVFH-LABEL: vuitofp_nxv16i1_nxv16f16:1102; ZVFH:       # %bb.0:1103; ZVFH-NEXT:    vsetvli a0, zero, e8, m2, ta, ma1104; ZVFH-NEXT:    vmv.v.i v8, 01105; ZVFH-NEXT:    vmerge.vim v12, v8, 1, v01106; ZVFH-NEXT:    vfwcvt.f.xu.v v8, v121107; ZVFH-NEXT:    ret1108;1109; ZVFHMIN-LABEL: vuitofp_nxv16i1_nxv16f16:1110; ZVFHMIN:       # %bb.0:1111; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1112; ZVFHMIN-NEXT:    vmv.v.i v8, 01113; ZVFHMIN-NEXT:    vmerge.vim v8, v8, 1, v01114; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v16, v81115; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v161116; ZVFHMIN-NEXT:    ret1117  %evec = uitofp <vscale x 16 x i1> %va to <vscale x 16 x half>1118  ret <vscale x 16 x half> %evec1119}1120 1121define <vscale x 16 x float> @vsitofp_nxv16i1_nxv16f32(<vscale x 16 x i1> %va) {1122; CHECK-LABEL: vsitofp_nxv16i1_nxv16f32:1123; CHECK:       # %bb.0:1124; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1125; CHECK-NEXT:    vmv.v.i v8, 01126; CHECK-NEXT:    vmerge.vim v16, v8, -1, v01127; CHECK-NEXT:    vfwcvt.f.x.v v8, v161128; CHECK-NEXT:    ret1129  %evec = sitofp <vscale x 16 x i1> %va to <vscale x 16 x float>1130  ret <vscale x 16 x float> %evec1131}1132 1133define <vscale x 16 x float> @vuitofp_nxv16i1_nxv16f32(<vscale x 16 x i1> %va) {1134; CHECK-LABEL: vuitofp_nxv16i1_nxv16f32:1135; CHECK:       # %bb.0:1136; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1137; CHECK-NEXT:    vmv.v.i v8, 01138; CHECK-NEXT:    vmerge.vim v16, v8, 1, v01139; CHECK-NEXT:    vfwcvt.f.xu.v v8, v161140; CHECK-NEXT:    ret1141  %evec = uitofp <vscale x 16 x i1> %va to <vscale x 16 x float>1142  ret <vscale x 16 x float> %evec1143}1144 1145define <vscale x 32 x half> @vsitofp_nxv32i1_nxv32f16(<vscale x 32 x i1> %va) {1146; ZVFH-LABEL: vsitofp_nxv32i1_nxv32f16:1147; ZVFH:       # %bb.0:1148; ZVFH-NEXT:    vsetvli a0, zero, e8, m4, ta, ma1149; ZVFH-NEXT:    vmv.v.i v8, 01150; ZVFH-NEXT:    vmerge.vim v16, v8, -1, v01151; ZVFH-NEXT:    vfwcvt.f.x.v v8, v161152; ZVFH-NEXT:    ret1153;1154; ZVFHMIN-LABEL: vsitofp_nxv32i1_nxv32f16:1155; ZVFHMIN:       # %bb.0:1156; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1157; ZVFHMIN-NEXT:    vmv.v.i v12, 01158; ZVFHMIN-NEXT:    csrr a0, vlenb1159; ZVFHMIN-NEXT:    vmerge.vim v8, v12, -1, v01160; ZVFHMIN-NEXT:    srli a0, a0, 21161; ZVFHMIN-NEXT:    vfwcvt.f.x.v v16, v81162; ZVFHMIN-NEXT:    vsetvli a1, zero, e8, mf2, ta, ma1163; ZVFHMIN-NEXT:    vslidedown.vx v0, v0, a01164; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1165; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v161166; ZVFHMIN-NEXT:    vmerge.vim v12, v12, -1, v01167; ZVFHMIN-NEXT:    vfwcvt.f.x.v v16, v121168; ZVFHMIN-NEXT:    vfncvt.f.f.w v12, v161169; ZVFHMIN-NEXT:    ret1170  %evec = sitofp <vscale x 32 x i1> %va to <vscale x 32 x half>1171  ret <vscale x 32 x half> %evec1172}1173 1174define <vscale x 32 x half> @vuitofp_nxv32i1_nxv32f16(<vscale x 32 x i1> %va) {1175; ZVFH-LABEL: vuitofp_nxv32i1_nxv32f16:1176; ZVFH:       # %bb.0:1177; ZVFH-NEXT:    vsetvli a0, zero, e8, m4, ta, ma1178; ZVFH-NEXT:    vmv.v.i v8, 01179; ZVFH-NEXT:    vmerge.vim v16, v8, 1, v01180; ZVFH-NEXT:    vfwcvt.f.xu.v v8, v161181; ZVFH-NEXT:    ret1182;1183; ZVFHMIN-LABEL: vuitofp_nxv32i1_nxv32f16:1184; ZVFHMIN:       # %bb.0:1185; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1186; ZVFHMIN-NEXT:    vmv.v.i v12, 01187; ZVFHMIN-NEXT:    csrr a0, vlenb1188; ZVFHMIN-NEXT:    vmerge.vim v8, v12, 1, v01189; ZVFHMIN-NEXT:    srli a0, a0, 21190; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v16, v81191; ZVFHMIN-NEXT:    vsetvli a1, zero, e8, mf2, ta, ma1192; ZVFHMIN-NEXT:    vslidedown.vx v0, v0, a01193; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1194; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v161195; ZVFHMIN-NEXT:    vmerge.vim v12, v12, 1, v01196; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v16, v121197; ZVFHMIN-NEXT:    vfncvt.f.f.w v12, v161198; ZVFHMIN-NEXT:    ret1199  %evec = uitofp <vscale x 32 x i1> %va to <vscale x 32 x half>1200  ret <vscale x 32 x half> %evec1201}1202 1203define <vscale x 1 x half> @vsitofp_nxv1i8_nxv1f16(<vscale x 1 x i8> %va) {1204; ZVFH-LABEL: vsitofp_nxv1i8_nxv1f16:1205; ZVFH:       # %bb.0:1206; ZVFH-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma1207; ZVFH-NEXT:    vfwcvt.f.x.v v9, v81208; ZVFH-NEXT:    vmv1r.v v8, v91209; ZVFH-NEXT:    ret1210;1211; ZVFHMIN-LABEL: vsitofp_nxv1i8_nxv1f16:1212; ZVFHMIN:       # %bb.0:1213; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma1214; ZVFHMIN-NEXT:    vsext.vf2 v9, v81215; ZVFHMIN-NEXT:    vfwcvt.f.x.v v10, v91216; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v101217; ZVFHMIN-NEXT:    ret1218  %evec = sitofp <vscale x 1 x i8> %va to <vscale x 1 x half>1219  ret <vscale x 1 x half> %evec1220}1221 1222define <vscale x 1 x half> @vsitofp_nxv1i7_nxv1f16(<vscale x 1 x i7> %va) {1223; ZVFH-LABEL: vsitofp_nxv1i7_nxv1f16:1224; ZVFH:       # %bb.0:1225; ZVFH-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma1226; ZVFH-NEXT:    vadd.vv v8, v8, v81227; ZVFH-NEXT:    vsra.vi v9, v8, 11228; ZVFH-NEXT:    vfwcvt.f.x.v v8, v91229; ZVFH-NEXT:    ret1230;1231; ZVFHMIN-LABEL: vsitofp_nxv1i7_nxv1f16:1232; ZVFHMIN:       # %bb.0:1233; ZVFHMIN-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma1234; ZVFHMIN-NEXT:    vadd.vv v8, v8, v81235; ZVFHMIN-NEXT:    vsra.vi v8, v8, 11236; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma1237; ZVFHMIN-NEXT:    vsext.vf2 v9, v81238; ZVFHMIN-NEXT:    vfwcvt.f.x.v v10, v91239; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v101240; ZVFHMIN-NEXT:    ret1241  %evec = sitofp <vscale x 1 x i7> %va to <vscale x 1 x half>1242  ret <vscale x 1 x half> %evec1243}1244 1245define <vscale x 1 x half> @vuitofp_nxv1i7_nxv1f16(<vscale x 1 x i7> %va) {1246; ZVFH-LABEL: vuitofp_nxv1i7_nxv1f16:1247; ZVFH:       # %bb.0:1248; ZVFH-NEXT:    li a0, 1271249; ZVFH-NEXT:    vsetvli a1, zero, e8, mf8, ta, ma1250; ZVFH-NEXT:    vand.vx v9, v8, a01251; ZVFH-NEXT:    vfwcvt.f.xu.v v8, v91252; ZVFH-NEXT:    ret1253;1254; ZVFHMIN-LABEL: vuitofp_nxv1i7_nxv1f16:1255; ZVFHMIN:       # %bb.0:1256; ZVFHMIN-NEXT:    li a0, 1271257; ZVFHMIN-NEXT:    vsetvli a1, zero, e8, mf8, ta, ma1258; ZVFHMIN-NEXT:    vand.vx v8, v8, a01259; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma1260; ZVFHMIN-NEXT:    vzext.vf2 v9, v81261; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v10, v91262; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v101263; ZVFHMIN-NEXT:    ret1264  %evec = uitofp <vscale x 1 x i7> %va to <vscale x 1 x half>1265  ret <vscale x 1 x half> %evec1266}1267 1268define <vscale x 1 x half> @vuitofp_nxv1i8_nxv1f16(<vscale x 1 x i8> %va) {1269; ZVFH-LABEL: vuitofp_nxv1i8_nxv1f16:1270; ZVFH:       # %bb.0:1271; ZVFH-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma1272; ZVFH-NEXT:    vfwcvt.f.xu.v v9, v81273; ZVFH-NEXT:    vmv1r.v v8, v91274; ZVFH-NEXT:    ret1275;1276; ZVFHMIN-LABEL: vuitofp_nxv1i8_nxv1f16:1277; ZVFHMIN:       # %bb.0:1278; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma1279; ZVFHMIN-NEXT:    vzext.vf2 v9, v81280; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v10, v91281; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v101282; ZVFHMIN-NEXT:    ret1283  %evec = uitofp <vscale x 1 x i8> %va to <vscale x 1 x half>1284  ret <vscale x 1 x half> %evec1285}1286 1287define <vscale x 1 x float> @vsitofp_nxv1i8_nxv1f32(<vscale x 1 x i8> %va) {1288; CHECK-LABEL: vsitofp_nxv1i8_nxv1f32:1289; CHECK:       # %bb.0:1290; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma1291; CHECK-NEXT:    vsext.vf2 v9, v81292; CHECK-NEXT:    vfwcvt.f.x.v v8, v91293; CHECK-NEXT:    ret1294  %evec = sitofp <vscale x 1 x i8> %va to <vscale x 1 x float>1295  ret <vscale x 1 x float> %evec1296}1297 1298define <vscale x 1 x float> @vuitofp_nxv1i8_nxv1f32(<vscale x 1 x i8> %va) {1299; CHECK-LABEL: vuitofp_nxv1i8_nxv1f32:1300; CHECK:       # %bb.0:1301; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma1302; CHECK-NEXT:    vzext.vf2 v9, v81303; CHECK-NEXT:    vfwcvt.f.xu.v v8, v91304; CHECK-NEXT:    ret1305  %evec = uitofp <vscale x 1 x i8> %va to <vscale x 1 x float>1306  ret <vscale x 1 x float> %evec1307}1308 1309define <vscale x 1 x double> @vsitofp_nxv1i8_nxv1f64(<vscale x 1 x i8> %va) {1310; CHECK-LABEL: vsitofp_nxv1i8_nxv1f64:1311; CHECK:       # %bb.0:1312; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma1313; CHECK-NEXT:    vsext.vf4 v9, v81314; CHECK-NEXT:    vfwcvt.f.x.v v8, v91315; CHECK-NEXT:    ret1316  %evec = sitofp <vscale x 1 x i8> %va to <vscale x 1 x double>1317  ret <vscale x 1 x double> %evec1318}1319 1320define <vscale x 1 x double> @vuitofp_nxv1i8_nxv1f64(<vscale x 1 x i8> %va) {1321; CHECK-LABEL: vuitofp_nxv1i8_nxv1f64:1322; CHECK:       # %bb.0:1323; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma1324; CHECK-NEXT:    vzext.vf4 v9, v81325; CHECK-NEXT:    vfwcvt.f.xu.v v8, v91326; CHECK-NEXT:    ret1327  %evec = uitofp <vscale x 1 x i8> %va to <vscale x 1 x double>1328  ret <vscale x 1 x double> %evec1329}1330 1331define <vscale x 2 x half> @vsitofp_nxv2i8_nxv2f16(<vscale x 2 x i8> %va) {1332; ZVFH-LABEL: vsitofp_nxv2i8_nxv2f16:1333; ZVFH:       # %bb.0:1334; ZVFH-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma1335; ZVFH-NEXT:    vfwcvt.f.x.v v9, v81336; ZVFH-NEXT:    vmv1r.v v8, v91337; ZVFH-NEXT:    ret1338;1339; ZVFHMIN-LABEL: vsitofp_nxv2i8_nxv2f16:1340; ZVFHMIN:       # %bb.0:1341; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1342; ZVFHMIN-NEXT:    vsext.vf2 v9, v81343; ZVFHMIN-NEXT:    vfwcvt.f.x.v v10, v91344; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v101345; ZVFHMIN-NEXT:    ret1346  %evec = sitofp <vscale x 2 x i8> %va to <vscale x 2 x half>1347  ret <vscale x 2 x half> %evec1348}1349 1350define <vscale x 2 x half> @vuitofp_nxv2i8_nxv2f16(<vscale x 2 x i8> %va) {1351; ZVFH-LABEL: vuitofp_nxv2i8_nxv2f16:1352; ZVFH:       # %bb.0:1353; ZVFH-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma1354; ZVFH-NEXT:    vfwcvt.f.xu.v v9, v81355; ZVFH-NEXT:    vmv1r.v v8, v91356; ZVFH-NEXT:    ret1357;1358; ZVFHMIN-LABEL: vuitofp_nxv2i8_nxv2f16:1359; ZVFHMIN:       # %bb.0:1360; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1361; ZVFHMIN-NEXT:    vzext.vf2 v9, v81362; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v10, v91363; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v101364; ZVFHMIN-NEXT:    ret1365  %evec = uitofp <vscale x 2 x i8> %va to <vscale x 2 x half>1366  ret <vscale x 2 x half> %evec1367}1368 1369define <vscale x 2 x float> @vsitofp_nxv2i8_nxv2f32(<vscale x 2 x i8> %va) {1370; CHECK-LABEL: vsitofp_nxv2i8_nxv2f32:1371; CHECK:       # %bb.0:1372; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1373; CHECK-NEXT:    vsext.vf2 v9, v81374; CHECK-NEXT:    vfwcvt.f.x.v v8, v91375; CHECK-NEXT:    ret1376  %evec = sitofp <vscale x 2 x i8> %va to <vscale x 2 x float>1377  ret <vscale x 2 x float> %evec1378}1379 1380define <vscale x 2 x float> @vuitofp_nxv2i8_nxv2f32(<vscale x 2 x i8> %va) {1381; CHECK-LABEL: vuitofp_nxv2i8_nxv2f32:1382; CHECK:       # %bb.0:1383; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1384; CHECK-NEXT:    vzext.vf2 v9, v81385; CHECK-NEXT:    vfwcvt.f.xu.v v8, v91386; CHECK-NEXT:    ret1387  %evec = uitofp <vscale x 2 x i8> %va to <vscale x 2 x float>1388  ret <vscale x 2 x float> %evec1389}1390 1391define <vscale x 2 x double> @vsitofp_nxv2i8_nxv2f64(<vscale x 2 x i8> %va) {1392; CHECK-LABEL: vsitofp_nxv2i8_nxv2f64:1393; CHECK:       # %bb.0:1394; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma1395; CHECK-NEXT:    vsext.vf4 v10, v81396; CHECK-NEXT:    vfwcvt.f.x.v v8, v101397; CHECK-NEXT:    ret1398  %evec = sitofp <vscale x 2 x i8> %va to <vscale x 2 x double>1399  ret <vscale x 2 x double> %evec1400}1401 1402define <vscale x 2 x double> @vuitofp_nxv2i8_nxv2f64(<vscale x 2 x i8> %va) {1403; CHECK-LABEL: vuitofp_nxv2i8_nxv2f64:1404; CHECK:       # %bb.0:1405; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma1406; CHECK-NEXT:    vzext.vf4 v10, v81407; CHECK-NEXT:    vfwcvt.f.xu.v v8, v101408; CHECK-NEXT:    ret1409  %evec = uitofp <vscale x 2 x i8> %va to <vscale x 2 x double>1410  ret <vscale x 2 x double> %evec1411}1412 1413define <vscale x 4 x half> @vsitofp_nxv4i8_nxv4f16(<vscale x 4 x i8> %va) {1414; ZVFH-LABEL: vsitofp_nxv4i8_nxv4f16:1415; ZVFH:       # %bb.0:1416; ZVFH-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma1417; ZVFH-NEXT:    vfwcvt.f.x.v v9, v81418; ZVFH-NEXT:    vmv1r.v v8, v91419; ZVFH-NEXT:    ret1420;1421; ZVFHMIN-LABEL: vsitofp_nxv4i8_nxv4f16:1422; ZVFHMIN:       # %bb.0:1423; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1424; ZVFHMIN-NEXT:    vsext.vf2 v9, v81425; ZVFHMIN-NEXT:    vfwcvt.f.x.v v10, v91426; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v101427; ZVFHMIN-NEXT:    ret1428  %evec = sitofp <vscale x 4 x i8> %va to <vscale x 4 x half>1429  ret <vscale x 4 x half> %evec1430}1431 1432define <vscale x 4 x half> @vuitofp_nxv4i8_nxv4f16(<vscale x 4 x i8> %va) {1433; ZVFH-LABEL: vuitofp_nxv4i8_nxv4f16:1434; ZVFH:       # %bb.0:1435; ZVFH-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma1436; ZVFH-NEXT:    vfwcvt.f.xu.v v9, v81437; ZVFH-NEXT:    vmv1r.v v8, v91438; ZVFH-NEXT:    ret1439;1440; ZVFHMIN-LABEL: vuitofp_nxv4i8_nxv4f16:1441; ZVFHMIN:       # %bb.0:1442; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1443; ZVFHMIN-NEXT:    vzext.vf2 v9, v81444; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v10, v91445; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v101446; ZVFHMIN-NEXT:    ret1447  %evec = uitofp <vscale x 4 x i8> %va to <vscale x 4 x half>1448  ret <vscale x 4 x half> %evec1449}1450 1451define <vscale x 4 x float> @vsitofp_nxv4i8_nxv4f32(<vscale x 4 x i8> %va) {1452; CHECK-LABEL: vsitofp_nxv4i8_nxv4f32:1453; CHECK:       # %bb.0:1454; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1455; CHECK-NEXT:    vsext.vf2 v10, v81456; CHECK-NEXT:    vfwcvt.f.x.v v8, v101457; CHECK-NEXT:    ret1458  %evec = sitofp <vscale x 4 x i8> %va to <vscale x 4 x float>1459  ret <vscale x 4 x float> %evec1460}1461 1462define <vscale x 4 x float> @vuitofp_nxv4i8_nxv4f32(<vscale x 4 x i8> %va) {1463; CHECK-LABEL: vuitofp_nxv4i8_nxv4f32:1464; CHECK:       # %bb.0:1465; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1466; CHECK-NEXT:    vzext.vf2 v10, v81467; CHECK-NEXT:    vfwcvt.f.xu.v v8, v101468; CHECK-NEXT:    ret1469  %evec = uitofp <vscale x 4 x i8> %va to <vscale x 4 x float>1470  ret <vscale x 4 x float> %evec1471}1472 1473define <vscale x 4 x double> @vsitofp_nxv4i8_nxv4f64(<vscale x 4 x i8> %va) {1474; CHECK-LABEL: vsitofp_nxv4i8_nxv4f64:1475; CHECK:       # %bb.0:1476; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma1477; CHECK-NEXT:    vsext.vf4 v12, v81478; CHECK-NEXT:    vfwcvt.f.x.v v8, v121479; CHECK-NEXT:    ret1480  %evec = sitofp <vscale x 4 x i8> %va to <vscale x 4 x double>1481  ret <vscale x 4 x double> %evec1482}1483 1484define <vscale x 4 x double> @vuitofp_nxv4i8_nxv4f64(<vscale x 4 x i8> %va) {1485; CHECK-LABEL: vuitofp_nxv4i8_nxv4f64:1486; CHECK:       # %bb.0:1487; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma1488; CHECK-NEXT:    vzext.vf4 v12, v81489; CHECK-NEXT:    vfwcvt.f.xu.v v8, v121490; CHECK-NEXT:    ret1491  %evec = uitofp <vscale x 4 x i8> %va to <vscale x 4 x double>1492  ret <vscale x 4 x double> %evec1493}1494 1495define <vscale x 8 x half> @vsitofp_nxv8i8_nxv8f16(<vscale x 8 x i8> %va) {1496; ZVFH-LABEL: vsitofp_nxv8i8_nxv8f16:1497; ZVFH:       # %bb.0:1498; ZVFH-NEXT:    vsetvli a0, zero, e8, m1, ta, ma1499; ZVFH-NEXT:    vmv1r.v v10, v81500; ZVFH-NEXT:    vfwcvt.f.x.v v8, v101501; ZVFH-NEXT:    ret1502;1503; ZVFHMIN-LABEL: vsitofp_nxv8i8_nxv8f16:1504; ZVFHMIN:       # %bb.0:1505; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1506; ZVFHMIN-NEXT:    vsext.vf2 v10, v81507; ZVFHMIN-NEXT:    vfwcvt.f.x.v v12, v101508; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v121509; ZVFHMIN-NEXT:    ret1510  %evec = sitofp <vscale x 8 x i8> %va to <vscale x 8 x half>1511  ret <vscale x 8 x half> %evec1512}1513 1514define <vscale x 8 x half> @vuitofp_nxv8i8_nxv8f16(<vscale x 8 x i8> %va) {1515; ZVFH-LABEL: vuitofp_nxv8i8_nxv8f16:1516; ZVFH:       # %bb.0:1517; ZVFH-NEXT:    vsetvli a0, zero, e8, m1, ta, ma1518; ZVFH-NEXT:    vmv1r.v v10, v81519; ZVFH-NEXT:    vfwcvt.f.xu.v v8, v101520; ZVFH-NEXT:    ret1521;1522; ZVFHMIN-LABEL: vuitofp_nxv8i8_nxv8f16:1523; ZVFHMIN:       # %bb.0:1524; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1525; ZVFHMIN-NEXT:    vzext.vf2 v10, v81526; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v12, v101527; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v121528; ZVFHMIN-NEXT:    ret1529  %evec = uitofp <vscale x 8 x i8> %va to <vscale x 8 x half>1530  ret <vscale x 8 x half> %evec1531}1532 1533define <vscale x 8 x float> @vsitofp_nxv8i8_nxv8f32(<vscale x 8 x i8> %va) {1534; CHECK-LABEL: vsitofp_nxv8i8_nxv8f32:1535; CHECK:       # %bb.0:1536; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1537; CHECK-NEXT:    vsext.vf2 v12, v81538; CHECK-NEXT:    vfwcvt.f.x.v v8, v121539; CHECK-NEXT:    ret1540  %evec = sitofp <vscale x 8 x i8> %va to <vscale x 8 x float>1541  ret <vscale x 8 x float> %evec1542}1543 1544define <vscale x 8 x float> @vuitofp_nxv8i8_nxv8f32(<vscale x 8 x i8> %va) {1545; CHECK-LABEL: vuitofp_nxv8i8_nxv8f32:1546; CHECK:       # %bb.0:1547; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1548; CHECK-NEXT:    vzext.vf2 v12, v81549; CHECK-NEXT:    vfwcvt.f.xu.v v8, v121550; CHECK-NEXT:    ret1551  %evec = uitofp <vscale x 8 x i8> %va to <vscale x 8 x float>1552  ret <vscale x 8 x float> %evec1553}1554 1555define <vscale x 8 x double> @vsitofp_nxv8i8_nxv8f64(<vscale x 8 x i8> %va) {1556; CHECK-LABEL: vsitofp_nxv8i8_nxv8f64:1557; CHECK:       # %bb.0:1558; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1559; CHECK-NEXT:    vsext.vf4 v16, v81560; CHECK-NEXT:    vfwcvt.f.x.v v8, v161561; CHECK-NEXT:    ret1562  %evec = sitofp <vscale x 8 x i8> %va to <vscale x 8 x double>1563  ret <vscale x 8 x double> %evec1564}1565 1566define <vscale x 8 x double> @vuitofp_nxv8i8_nxv8f64(<vscale x 8 x i8> %va) {1567; CHECK-LABEL: vuitofp_nxv8i8_nxv8f64:1568; CHECK:       # %bb.0:1569; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1570; CHECK-NEXT:    vzext.vf4 v16, v81571; CHECK-NEXT:    vfwcvt.f.xu.v v8, v161572; CHECK-NEXT:    ret1573  %evec = uitofp <vscale x 8 x i8> %va to <vscale x 8 x double>1574  ret <vscale x 8 x double> %evec1575}1576 1577define <vscale x 16 x half> @vsitofp_nxv16i8_nxv16f16(<vscale x 16 x i8> %va) {1578; ZVFH-LABEL: vsitofp_nxv16i8_nxv16f16:1579; ZVFH:       # %bb.0:1580; ZVFH-NEXT:    vsetvli a0, zero, e8, m2, ta, ma1581; ZVFH-NEXT:    vmv2r.v v12, v81582; ZVFH-NEXT:    vfwcvt.f.x.v v8, v121583; ZVFH-NEXT:    ret1584;1585; ZVFHMIN-LABEL: vsitofp_nxv16i8_nxv16f16:1586; ZVFHMIN:       # %bb.0:1587; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1588; ZVFHMIN-NEXT:    vsext.vf2 v12, v81589; ZVFHMIN-NEXT:    vfwcvt.f.x.v v16, v121590; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v161591; ZVFHMIN-NEXT:    ret1592  %evec = sitofp <vscale x 16 x i8> %va to <vscale x 16 x half>1593  ret <vscale x 16 x half> %evec1594}1595 1596define <vscale x 16 x half> @vuitofp_nxv16i8_nxv16f16(<vscale x 16 x i8> %va) {1597; ZVFH-LABEL: vuitofp_nxv16i8_nxv16f16:1598; ZVFH:       # %bb.0:1599; ZVFH-NEXT:    vsetvli a0, zero, e8, m2, ta, ma1600; ZVFH-NEXT:    vmv2r.v v12, v81601; ZVFH-NEXT:    vfwcvt.f.xu.v v8, v121602; ZVFH-NEXT:    ret1603;1604; ZVFHMIN-LABEL: vuitofp_nxv16i8_nxv16f16:1605; ZVFHMIN:       # %bb.0:1606; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1607; ZVFHMIN-NEXT:    vzext.vf2 v12, v81608; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v16, v121609; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v161610; ZVFHMIN-NEXT:    ret1611  %evec = uitofp <vscale x 16 x i8> %va to <vscale x 16 x half>1612  ret <vscale x 16 x half> %evec1613}1614 1615define <vscale x 16 x float> @vsitofp_nxv16i8_nxv16f32(<vscale x 16 x i8> %va) {1616; CHECK-LABEL: vsitofp_nxv16i8_nxv16f32:1617; CHECK:       # %bb.0:1618; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1619; CHECK-NEXT:    vsext.vf2 v16, v81620; CHECK-NEXT:    vfwcvt.f.x.v v8, v161621; CHECK-NEXT:    ret1622  %evec = sitofp <vscale x 16 x i8> %va to <vscale x 16 x float>1623  ret <vscale x 16 x float> %evec1624}1625 1626define <vscale x 16 x float> @vuitofp_nxv16i8_nxv16f32(<vscale x 16 x i8> %va) {1627; CHECK-LABEL: vuitofp_nxv16i8_nxv16f32:1628; CHECK:       # %bb.0:1629; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1630; CHECK-NEXT:    vzext.vf2 v16, v81631; CHECK-NEXT:    vfwcvt.f.xu.v v8, v161632; CHECK-NEXT:    ret1633  %evec = uitofp <vscale x 16 x i8> %va to <vscale x 16 x float>1634  ret <vscale x 16 x float> %evec1635}1636 1637define <vscale x 32 x half> @vsitofp_nxv32i8_nxv32f16(<vscale x 32 x i8> %va) {1638; ZVFH-LABEL: vsitofp_nxv32i8_nxv32f16:1639; ZVFH:       # %bb.0:1640; ZVFH-NEXT:    vsetvli a0, zero, e8, m4, ta, ma1641; ZVFH-NEXT:    vmv4r.v v16, v81642; ZVFH-NEXT:    vfwcvt.f.x.v v8, v161643; ZVFH-NEXT:    ret1644;1645; ZVFHMIN-LABEL: vsitofp_nxv32i8_nxv32f16:1646; ZVFHMIN:       # %bb.0:1647; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1648; ZVFHMIN-NEXT:    vsext.vf2 v12, v81649; ZVFHMIN-NEXT:    vsext.vf2 v24, v101650; ZVFHMIN-NEXT:    vfwcvt.f.x.v v16, v121651; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v161652; ZVFHMIN-NEXT:    vfwcvt.f.x.v v16, v241653; ZVFHMIN-NEXT:    vfncvt.f.f.w v12, v161654; ZVFHMIN-NEXT:    ret1655  %evec = sitofp <vscale x 32 x i8> %va to <vscale x 32 x half>1656  ret <vscale x 32 x half> %evec1657}1658 1659define <vscale x 32 x half> @vuitofp_nxv32i8_nxv32f16(<vscale x 32 x i8> %va) {1660; ZVFH-LABEL: vuitofp_nxv32i8_nxv32f16:1661; ZVFH:       # %bb.0:1662; ZVFH-NEXT:    vsetvli a0, zero, e8, m4, ta, ma1663; ZVFH-NEXT:    vmv4r.v v16, v81664; ZVFH-NEXT:    vfwcvt.f.xu.v v8, v161665; ZVFH-NEXT:    ret1666;1667; ZVFHMIN-LABEL: vuitofp_nxv32i8_nxv32f16:1668; ZVFHMIN:       # %bb.0:1669; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1670; ZVFHMIN-NEXT:    vzext.vf2 v12, v81671; ZVFHMIN-NEXT:    vzext.vf2 v24, v101672; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v16, v121673; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v161674; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v16, v241675; ZVFHMIN-NEXT:    vfncvt.f.f.w v12, v161676; ZVFHMIN-NEXT:    ret1677  %evec = uitofp <vscale x 32 x i8> %va to <vscale x 32 x half>1678  ret <vscale x 32 x half> %evec1679}1680 1681define <vscale x 1 x half> @vsitofp_nxv1i16_nxv1f16(<vscale x 1 x i16> %va) {1682; ZVFH-LABEL: vsitofp_nxv1i16_nxv1f16:1683; ZVFH:       # %bb.0:1684; ZVFH-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma1685; ZVFH-NEXT:    vfcvt.f.x.v v8, v81686; ZVFH-NEXT:    ret1687;1688; ZVFHMIN-LABEL: vsitofp_nxv1i16_nxv1f16:1689; ZVFHMIN:       # %bb.0:1690; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma1691; ZVFHMIN-NEXT:    vfwcvt.f.x.v v9, v81692; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v91693; ZVFHMIN-NEXT:    ret1694  %evec = sitofp <vscale x 1 x i16> %va to <vscale x 1 x half>1695  ret <vscale x 1 x half> %evec1696}1697 1698define <vscale x 1 x half> @vuitofp_nxv1i16_nxv1f16(<vscale x 1 x i16> %va) {1699; ZVFH-LABEL: vuitofp_nxv1i16_nxv1f16:1700; ZVFH:       # %bb.0:1701; ZVFH-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma1702; ZVFH-NEXT:    vfcvt.f.xu.v v8, v81703; ZVFH-NEXT:    ret1704;1705; ZVFHMIN-LABEL: vuitofp_nxv1i16_nxv1f16:1706; ZVFHMIN:       # %bb.0:1707; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma1708; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v9, v81709; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v91710; ZVFHMIN-NEXT:    ret1711  %evec = uitofp <vscale x 1 x i16> %va to <vscale x 1 x half>1712  ret <vscale x 1 x half> %evec1713}1714 1715define <vscale x 1 x float> @vsitofp_nxv1i16_nxv1f32(<vscale x 1 x i16> %va) {1716; CHECK-LABEL: vsitofp_nxv1i16_nxv1f32:1717; CHECK:       # %bb.0:1718; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma1719; CHECK-NEXT:    vfwcvt.f.x.v v9, v81720; CHECK-NEXT:    vmv1r.v v8, v91721; CHECK-NEXT:    ret1722  %evec = sitofp <vscale x 1 x i16> %va to <vscale x 1 x float>1723  ret <vscale x 1 x float> %evec1724}1725 1726define <vscale x 1 x float> @vuitofp_nxv1i16_nxv1f32(<vscale x 1 x i16> %va) {1727; CHECK-LABEL: vuitofp_nxv1i16_nxv1f32:1728; CHECK:       # %bb.0:1729; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma1730; CHECK-NEXT:    vfwcvt.f.xu.v v9, v81731; CHECK-NEXT:    vmv1r.v v8, v91732; CHECK-NEXT:    ret1733  %evec = uitofp <vscale x 1 x i16> %va to <vscale x 1 x float>1734  ret <vscale x 1 x float> %evec1735}1736 1737define <vscale x 1 x double> @vsitofp_nxv1i16_nxv1f64(<vscale x 1 x i16> %va) {1738; CHECK-LABEL: vsitofp_nxv1i16_nxv1f64:1739; CHECK:       # %bb.0:1740; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma1741; CHECK-NEXT:    vsext.vf2 v9, v81742; CHECK-NEXT:    vfwcvt.f.x.v v8, v91743; CHECK-NEXT:    ret1744  %evec = sitofp <vscale x 1 x i16> %va to <vscale x 1 x double>1745  ret <vscale x 1 x double> %evec1746}1747 1748define <vscale x 1 x double> @vuitofp_nxv1i16_nxv1f64(<vscale x 1 x i16> %va) {1749; CHECK-LABEL: vuitofp_nxv1i16_nxv1f64:1750; CHECK:       # %bb.0:1751; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma1752; CHECK-NEXT:    vzext.vf2 v9, v81753; CHECK-NEXT:    vfwcvt.f.xu.v v8, v91754; CHECK-NEXT:    ret1755  %evec = uitofp <vscale x 1 x i16> %va to <vscale x 1 x double>1756  ret <vscale x 1 x double> %evec1757}1758 1759define <vscale x 2 x half> @vsitofp_nxv2i16_nxv2f16(<vscale x 2 x i16> %va) {1760; ZVFH-LABEL: vsitofp_nxv2i16_nxv2f16:1761; ZVFH:       # %bb.0:1762; ZVFH-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1763; ZVFH-NEXT:    vfcvt.f.x.v v8, v81764; ZVFH-NEXT:    ret1765;1766; ZVFHMIN-LABEL: vsitofp_nxv2i16_nxv2f16:1767; ZVFHMIN:       # %bb.0:1768; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1769; ZVFHMIN-NEXT:    vfwcvt.f.x.v v9, v81770; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v91771; ZVFHMIN-NEXT:    ret1772  %evec = sitofp <vscale x 2 x i16> %va to <vscale x 2 x half>1773  ret <vscale x 2 x half> %evec1774}1775 1776define <vscale x 2 x half> @vuitofp_nxv2i16_nxv2f16(<vscale x 2 x i16> %va) {1777; ZVFH-LABEL: vuitofp_nxv2i16_nxv2f16:1778; ZVFH:       # %bb.0:1779; ZVFH-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1780; ZVFH-NEXT:    vfcvt.f.xu.v v8, v81781; ZVFH-NEXT:    ret1782;1783; ZVFHMIN-LABEL: vuitofp_nxv2i16_nxv2f16:1784; ZVFHMIN:       # %bb.0:1785; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1786; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v9, v81787; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v91788; ZVFHMIN-NEXT:    ret1789  %evec = uitofp <vscale x 2 x i16> %va to <vscale x 2 x half>1790  ret <vscale x 2 x half> %evec1791}1792 1793define <vscale x 2 x float> @vsitofp_nxv2i16_nxv2f32(<vscale x 2 x i16> %va) {1794; CHECK-LABEL: vsitofp_nxv2i16_nxv2f32:1795; CHECK:       # %bb.0:1796; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1797; CHECK-NEXT:    vfwcvt.f.x.v v9, v81798; CHECK-NEXT:    vmv1r.v v8, v91799; CHECK-NEXT:    ret1800  %evec = sitofp <vscale x 2 x i16> %va to <vscale x 2 x float>1801  ret <vscale x 2 x float> %evec1802}1803 1804define <vscale x 2 x float> @vuitofp_nxv2i16_nxv2f32(<vscale x 2 x i16> %va) {1805; CHECK-LABEL: vuitofp_nxv2i16_nxv2f32:1806; CHECK:       # %bb.0:1807; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1808; CHECK-NEXT:    vfwcvt.f.xu.v v9, v81809; CHECK-NEXT:    vmv1r.v v8, v91810; CHECK-NEXT:    ret1811  %evec = uitofp <vscale x 2 x i16> %va to <vscale x 2 x float>1812  ret <vscale x 2 x float> %evec1813}1814 1815define <vscale x 2 x double> @vsitofp_nxv2i16_nxv2f64(<vscale x 2 x i16> %va) {1816; CHECK-LABEL: vsitofp_nxv2i16_nxv2f64:1817; CHECK:       # %bb.0:1818; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma1819; CHECK-NEXT:    vsext.vf2 v10, v81820; CHECK-NEXT:    vfwcvt.f.x.v v8, v101821; CHECK-NEXT:    ret1822  %evec = sitofp <vscale x 2 x i16> %va to <vscale x 2 x double>1823  ret <vscale x 2 x double> %evec1824}1825 1826define <vscale x 2 x double> @vuitofp_nxv2i16_nxv2f64(<vscale x 2 x i16> %va) {1827; CHECK-LABEL: vuitofp_nxv2i16_nxv2f64:1828; CHECK:       # %bb.0:1829; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma1830; CHECK-NEXT:    vzext.vf2 v10, v81831; CHECK-NEXT:    vfwcvt.f.xu.v v8, v101832; CHECK-NEXT:    ret1833  %evec = uitofp <vscale x 2 x i16> %va to <vscale x 2 x double>1834  ret <vscale x 2 x double> %evec1835}1836 1837define <vscale x 4 x half> @vsitofp_nxv4i16_nxv4f16(<vscale x 4 x i16> %va) {1838; ZVFH-LABEL: vsitofp_nxv4i16_nxv4f16:1839; ZVFH:       # %bb.0:1840; ZVFH-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1841; ZVFH-NEXT:    vfcvt.f.x.v v8, v81842; ZVFH-NEXT:    ret1843;1844; ZVFHMIN-LABEL: vsitofp_nxv4i16_nxv4f16:1845; ZVFHMIN:       # %bb.0:1846; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1847; ZVFHMIN-NEXT:    vfwcvt.f.x.v v10, v81848; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v101849; ZVFHMIN-NEXT:    ret1850  %evec = sitofp <vscale x 4 x i16> %va to <vscale x 4 x half>1851  ret <vscale x 4 x half> %evec1852}1853 1854define <vscale x 4 x half> @vuitofp_nxv4i16_nxv4f16(<vscale x 4 x i16> %va) {1855; ZVFH-LABEL: vuitofp_nxv4i16_nxv4f16:1856; ZVFH:       # %bb.0:1857; ZVFH-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1858; ZVFH-NEXT:    vfcvt.f.xu.v v8, v81859; ZVFH-NEXT:    ret1860;1861; ZVFHMIN-LABEL: vuitofp_nxv4i16_nxv4f16:1862; ZVFHMIN:       # %bb.0:1863; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1864; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v10, v81865; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v101866; ZVFHMIN-NEXT:    ret1867  %evec = uitofp <vscale x 4 x i16> %va to <vscale x 4 x half>1868  ret <vscale x 4 x half> %evec1869}1870 1871define <vscale x 4 x float> @vsitofp_nxv4i16_nxv4f32(<vscale x 4 x i16> %va) {1872; CHECK-LABEL: vsitofp_nxv4i16_nxv4f32:1873; CHECK:       # %bb.0:1874; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1875; CHECK-NEXT:    vmv1r.v v10, v81876; CHECK-NEXT:    vfwcvt.f.x.v v8, v101877; CHECK-NEXT:    ret1878  %evec = sitofp <vscale x 4 x i16> %va to <vscale x 4 x float>1879  ret <vscale x 4 x float> %evec1880}1881 1882define <vscale x 4 x float> @vuitofp_nxv4i16_nxv4f32(<vscale x 4 x i16> %va) {1883; CHECK-LABEL: vuitofp_nxv4i16_nxv4f32:1884; CHECK:       # %bb.0:1885; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1886; CHECK-NEXT:    vmv1r.v v10, v81887; CHECK-NEXT:    vfwcvt.f.xu.v v8, v101888; CHECK-NEXT:    ret1889  %evec = uitofp <vscale x 4 x i16> %va to <vscale x 4 x float>1890  ret <vscale x 4 x float> %evec1891}1892 1893define <vscale x 4 x double> @vsitofp_nxv4i16_nxv4f64(<vscale x 4 x i16> %va) {1894; CHECK-LABEL: vsitofp_nxv4i16_nxv4f64:1895; CHECK:       # %bb.0:1896; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma1897; CHECK-NEXT:    vsext.vf2 v12, v81898; CHECK-NEXT:    vfwcvt.f.x.v v8, v121899; CHECK-NEXT:    ret1900  %evec = sitofp <vscale x 4 x i16> %va to <vscale x 4 x double>1901  ret <vscale x 4 x double> %evec1902}1903 1904define <vscale x 4 x double> @vuitofp_nxv4i16_nxv4f64(<vscale x 4 x i16> %va) {1905; CHECK-LABEL: vuitofp_nxv4i16_nxv4f64:1906; CHECK:       # %bb.0:1907; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma1908; CHECK-NEXT:    vzext.vf2 v12, v81909; CHECK-NEXT:    vfwcvt.f.xu.v v8, v121910; CHECK-NEXT:    ret1911  %evec = uitofp <vscale x 4 x i16> %va to <vscale x 4 x double>1912  ret <vscale x 4 x double> %evec1913}1914 1915define <vscale x 8 x half> @vsitofp_nxv8i16_nxv8f16(<vscale x 8 x i16> %va) {1916; ZVFH-LABEL: vsitofp_nxv8i16_nxv8f16:1917; ZVFH:       # %bb.0:1918; ZVFH-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1919; ZVFH-NEXT:    vfcvt.f.x.v v8, v81920; ZVFH-NEXT:    ret1921;1922; ZVFHMIN-LABEL: vsitofp_nxv8i16_nxv8f16:1923; ZVFHMIN:       # %bb.0:1924; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1925; ZVFHMIN-NEXT:    vfwcvt.f.x.v v12, v81926; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v121927; ZVFHMIN-NEXT:    ret1928  %evec = sitofp <vscale x 8 x i16> %va to <vscale x 8 x half>1929  ret <vscale x 8 x half> %evec1930}1931 1932define <vscale x 8 x half> @vuitofp_nxv8i16_nxv8f16(<vscale x 8 x i16> %va) {1933; ZVFH-LABEL: vuitofp_nxv8i16_nxv8f16:1934; ZVFH:       # %bb.0:1935; ZVFH-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1936; ZVFH-NEXT:    vfcvt.f.xu.v v8, v81937; ZVFH-NEXT:    ret1938;1939; ZVFHMIN-LABEL: vuitofp_nxv8i16_nxv8f16:1940; ZVFHMIN:       # %bb.0:1941; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1942; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v12, v81943; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v121944; ZVFHMIN-NEXT:    ret1945  %evec = uitofp <vscale x 8 x i16> %va to <vscale x 8 x half>1946  ret <vscale x 8 x half> %evec1947}1948 1949define <vscale x 8 x float> @vsitofp_nxv8i16_nxv8f32(<vscale x 8 x i16> %va) {1950; CHECK-LABEL: vsitofp_nxv8i16_nxv8f32:1951; CHECK:       # %bb.0:1952; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1953; CHECK-NEXT:    vmv2r.v v12, v81954; CHECK-NEXT:    vfwcvt.f.x.v v8, v121955; CHECK-NEXT:    ret1956  %evec = sitofp <vscale x 8 x i16> %va to <vscale x 8 x float>1957  ret <vscale x 8 x float> %evec1958}1959 1960define <vscale x 8 x float> @vuitofp_nxv8i16_nxv8f32(<vscale x 8 x i16> %va) {1961; CHECK-LABEL: vuitofp_nxv8i16_nxv8f32:1962; CHECK:       # %bb.0:1963; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1964; CHECK-NEXT:    vmv2r.v v12, v81965; CHECK-NEXT:    vfwcvt.f.xu.v v8, v121966; CHECK-NEXT:    ret1967  %evec = uitofp <vscale x 8 x i16> %va to <vscale x 8 x float>1968  ret <vscale x 8 x float> %evec1969}1970 1971define <vscale x 8 x double> @vsitofp_nxv8i16_nxv8f64(<vscale x 8 x i16> %va) {1972; CHECK-LABEL: vsitofp_nxv8i16_nxv8f64:1973; CHECK:       # %bb.0:1974; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1975; CHECK-NEXT:    vsext.vf2 v16, v81976; CHECK-NEXT:    vfwcvt.f.x.v v8, v161977; CHECK-NEXT:    ret1978  %evec = sitofp <vscale x 8 x i16> %va to <vscale x 8 x double>1979  ret <vscale x 8 x double> %evec1980}1981 1982define <vscale x 8 x double> @vuitofp_nxv8i16_nxv8f64(<vscale x 8 x i16> %va) {1983; CHECK-LABEL: vuitofp_nxv8i16_nxv8f64:1984; CHECK:       # %bb.0:1985; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1986; CHECK-NEXT:    vzext.vf2 v16, v81987; CHECK-NEXT:    vfwcvt.f.xu.v v8, v161988; CHECK-NEXT:    ret1989  %evec = uitofp <vscale x 8 x i16> %va to <vscale x 8 x double>1990  ret <vscale x 8 x double> %evec1991}1992 1993define <vscale x 16 x half> @vsitofp_nxv16i16_nxv16f16(<vscale x 16 x i16> %va) {1994; ZVFH-LABEL: vsitofp_nxv16i16_nxv16f16:1995; ZVFH:       # %bb.0:1996; ZVFH-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1997; ZVFH-NEXT:    vfcvt.f.x.v v8, v81998; ZVFH-NEXT:    ret1999;2000; ZVFHMIN-LABEL: vsitofp_nxv16i16_nxv16f16:2001; ZVFHMIN:       # %bb.0:2002; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma2003; ZVFHMIN-NEXT:    vfwcvt.f.x.v v16, v82004; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v162005; ZVFHMIN-NEXT:    ret2006  %evec = sitofp <vscale x 16 x i16> %va to <vscale x 16 x half>2007  ret <vscale x 16 x half> %evec2008}2009 2010define <vscale x 16 x half> @vuitofp_nxv16i16_nxv16f16(<vscale x 16 x i16> %va) {2011; ZVFH-LABEL: vuitofp_nxv16i16_nxv16f16:2012; ZVFH:       # %bb.0:2013; ZVFH-NEXT:    vsetvli a0, zero, e16, m4, ta, ma2014; ZVFH-NEXT:    vfcvt.f.xu.v v8, v82015; ZVFH-NEXT:    ret2016;2017; ZVFHMIN-LABEL: vuitofp_nxv16i16_nxv16f16:2018; ZVFHMIN:       # %bb.0:2019; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma2020; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v16, v82021; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v162022; ZVFHMIN-NEXT:    ret2023  %evec = uitofp <vscale x 16 x i16> %va to <vscale x 16 x half>2024  ret <vscale x 16 x half> %evec2025}2026 2027define <vscale x 16 x float> @vsitofp_nxv16i16_nxv16f32(<vscale x 16 x i16> %va) {2028; CHECK-LABEL: vsitofp_nxv16i16_nxv16f32:2029; CHECK:       # %bb.0:2030; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma2031; CHECK-NEXT:    vmv4r.v v16, v82032; CHECK-NEXT:    vfwcvt.f.x.v v8, v162033; CHECK-NEXT:    ret2034  %evec = sitofp <vscale x 16 x i16> %va to <vscale x 16 x float>2035  ret <vscale x 16 x float> %evec2036}2037 2038define <vscale x 16 x float> @vuitofp_nxv16i16_nxv16f32(<vscale x 16 x i16> %va) {2039; CHECK-LABEL: vuitofp_nxv16i16_nxv16f32:2040; CHECK:       # %bb.0:2041; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma2042; CHECK-NEXT:    vmv4r.v v16, v82043; CHECK-NEXT:    vfwcvt.f.xu.v v8, v162044; CHECK-NEXT:    ret2045  %evec = uitofp <vscale x 16 x i16> %va to <vscale x 16 x float>2046  ret <vscale x 16 x float> %evec2047}2048 2049define <vscale x 32 x half> @vsitofp_nxv32i16_nxv32f16(<vscale x 32 x i16> %va) {2050; ZVFH-LABEL: vsitofp_nxv32i16_nxv32f16:2051; ZVFH:       # %bb.0:2052; ZVFH-NEXT:    vsetvli a0, zero, e16, m8, ta, ma2053; ZVFH-NEXT:    vfcvt.f.x.v v8, v82054; ZVFH-NEXT:    ret2055;2056; ZVFHMIN-LABEL: vsitofp_nxv32i16_nxv32f16:2057; ZVFHMIN:       # %bb.0:2058; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma2059; ZVFHMIN-NEXT:    vfwcvt.f.x.v v16, v82060; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v162061; ZVFHMIN-NEXT:    vfwcvt.f.x.v v16, v122062; ZVFHMIN-NEXT:    vfncvt.f.f.w v12, v162063; ZVFHMIN-NEXT:    ret2064  %evec = sitofp <vscale x 32 x i16> %va to <vscale x 32 x half>2065  ret <vscale x 32 x half> %evec2066}2067 2068define <vscale x 32 x half> @vuitofp_nxv32i16_nxv32f16(<vscale x 32 x i16> %va) {2069; ZVFH-LABEL: vuitofp_nxv32i16_nxv32f16:2070; ZVFH:       # %bb.0:2071; ZVFH-NEXT:    vsetvli a0, zero, e16, m8, ta, ma2072; ZVFH-NEXT:    vfcvt.f.xu.v v8, v82073; ZVFH-NEXT:    ret2074;2075; ZVFHMIN-LABEL: vuitofp_nxv32i16_nxv32f16:2076; ZVFHMIN:       # %bb.0:2077; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma2078; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v16, v82079; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v162080; ZVFHMIN-NEXT:    vfwcvt.f.xu.v v16, v122081; ZVFHMIN-NEXT:    vfncvt.f.f.w v12, v162082; ZVFHMIN-NEXT:    ret2083  %evec = uitofp <vscale x 32 x i16> %va to <vscale x 32 x half>2084  ret <vscale x 32 x half> %evec2085}2086 2087define <vscale x 1 x half> @vsitofp_nxv1i32_nxv1f16(<vscale x 1 x i32> %va) {2088; ZVFH-LABEL: vsitofp_nxv1i32_nxv1f16:2089; ZVFH:       # %bb.0:2090; ZVFH-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma2091; ZVFH-NEXT:    vfncvt.f.x.w v9, v82092; ZVFH-NEXT:    vmv1r.v v8, v92093; ZVFH-NEXT:    ret2094;2095; ZVFHMIN-LABEL: vsitofp_nxv1i32_nxv1f16:2096; ZVFHMIN:       # %bb.0:2097; ZVFHMIN-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma2098; ZVFHMIN-NEXT:    vfcvt.f.x.v v9, v82099; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma2100; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v92101; ZVFHMIN-NEXT:    ret2102  %evec = sitofp <vscale x 1 x i32> %va to <vscale x 1 x half>2103  ret <vscale x 1 x half> %evec2104}2105 2106define <vscale x 1 x half> @vuitofp_nxv1i32_nxv1f16(<vscale x 1 x i32> %va) {2107; ZVFH-LABEL: vuitofp_nxv1i32_nxv1f16:2108; ZVFH:       # %bb.0:2109; ZVFH-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma2110; ZVFH-NEXT:    vfncvt.f.xu.w v9, v82111; ZVFH-NEXT:    vmv1r.v v8, v92112; ZVFH-NEXT:    ret2113;2114; ZVFHMIN-LABEL: vuitofp_nxv1i32_nxv1f16:2115; ZVFHMIN:       # %bb.0:2116; ZVFHMIN-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma2117; ZVFHMIN-NEXT:    vfcvt.f.xu.v v9, v82118; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma2119; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v92120; ZVFHMIN-NEXT:    ret2121  %evec = uitofp <vscale x 1 x i32> %va to <vscale x 1 x half>2122  ret <vscale x 1 x half> %evec2123}2124 2125define <vscale x 1 x float> @vsitofp_nxv1i32_nxv1f32(<vscale x 1 x i32> %va) {2126; CHECK-LABEL: vsitofp_nxv1i32_nxv1f32:2127; CHECK:       # %bb.0:2128; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma2129; CHECK-NEXT:    vfcvt.f.x.v v8, v82130; CHECK-NEXT:    ret2131  %evec = sitofp <vscale x 1 x i32> %va to <vscale x 1 x float>2132  ret <vscale x 1 x float> %evec2133}2134 2135define <vscale x 1 x float> @vuitofp_nxv1i32_nxv1f32(<vscale x 1 x i32> %va) {2136; CHECK-LABEL: vuitofp_nxv1i32_nxv1f32:2137; CHECK:       # %bb.0:2138; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma2139; CHECK-NEXT:    vfcvt.f.xu.v v8, v82140; CHECK-NEXT:    ret2141  %evec = uitofp <vscale x 1 x i32> %va to <vscale x 1 x float>2142  ret <vscale x 1 x float> %evec2143}2144 2145define <vscale x 1 x double> @vsitofp_nxv1i32_nxv1f64(<vscale x 1 x i32> %va) {2146; CHECK-LABEL: vsitofp_nxv1i32_nxv1f64:2147; CHECK:       # %bb.0:2148; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma2149; CHECK-NEXT:    vfwcvt.f.x.v v9, v82150; CHECK-NEXT:    vmv1r.v v8, v92151; CHECK-NEXT:    ret2152  %evec = sitofp <vscale x 1 x i32> %va to <vscale x 1 x double>2153  ret <vscale x 1 x double> %evec2154}2155 2156define <vscale x 1 x double> @vuitofp_nxv1i32_nxv1f64(<vscale x 1 x i32> %va) {2157; CHECK-LABEL: vuitofp_nxv1i32_nxv1f64:2158; CHECK:       # %bb.0:2159; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma2160; CHECK-NEXT:    vfwcvt.f.xu.v v9, v82161; CHECK-NEXT:    vmv1r.v v8, v92162; CHECK-NEXT:    ret2163  %evec = uitofp <vscale x 1 x i32> %va to <vscale x 1 x double>2164  ret <vscale x 1 x double> %evec2165}2166 2167define <vscale x 2 x half> @vsitofp_nxv2i32_nxv2f16(<vscale x 2 x i32> %va) {2168; ZVFH-LABEL: vsitofp_nxv2i32_nxv2f16:2169; ZVFH:       # %bb.0:2170; ZVFH-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma2171; ZVFH-NEXT:    vfncvt.f.x.w v9, v82172; ZVFH-NEXT:    vmv1r.v v8, v92173; ZVFH-NEXT:    ret2174;2175; ZVFHMIN-LABEL: vsitofp_nxv2i32_nxv2f16:2176; ZVFHMIN:       # %bb.0:2177; ZVFHMIN-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2178; ZVFHMIN-NEXT:    vfcvt.f.x.v v9, v82179; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma2180; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v92181; ZVFHMIN-NEXT:    ret2182  %evec = sitofp <vscale x 2 x i32> %va to <vscale x 2 x half>2183  ret <vscale x 2 x half> %evec2184}2185 2186define <vscale x 2 x half> @vuitofp_nxv2i32_nxv2f16(<vscale x 2 x i32> %va) {2187; ZVFH-LABEL: vuitofp_nxv2i32_nxv2f16:2188; ZVFH:       # %bb.0:2189; ZVFH-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma2190; ZVFH-NEXT:    vfncvt.f.xu.w v9, v82191; ZVFH-NEXT:    vmv1r.v v8, v92192; ZVFH-NEXT:    ret2193;2194; ZVFHMIN-LABEL: vuitofp_nxv2i32_nxv2f16:2195; ZVFHMIN:       # %bb.0:2196; ZVFHMIN-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2197; ZVFHMIN-NEXT:    vfcvt.f.xu.v v9, v82198; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma2199; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v92200; ZVFHMIN-NEXT:    ret2201  %evec = uitofp <vscale x 2 x i32> %va to <vscale x 2 x half>2202  ret <vscale x 2 x half> %evec2203}2204 2205define <vscale x 2 x float> @vsitofp_nxv2i32_nxv2f32(<vscale x 2 x i32> %va) {2206; CHECK-LABEL: vsitofp_nxv2i32_nxv2f32:2207; CHECK:       # %bb.0:2208; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2209; CHECK-NEXT:    vfcvt.f.x.v v8, v82210; CHECK-NEXT:    ret2211  %evec = sitofp <vscale x 2 x i32> %va to <vscale x 2 x float>2212  ret <vscale x 2 x float> %evec2213}2214 2215define <vscale x 2 x float> @vuitofp_nxv2i32_nxv2f32(<vscale x 2 x i32> %va) {2216; CHECK-LABEL: vuitofp_nxv2i32_nxv2f32:2217; CHECK:       # %bb.0:2218; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2219; CHECK-NEXT:    vfcvt.f.xu.v v8, v82220; CHECK-NEXT:    ret2221  %evec = uitofp <vscale x 2 x i32> %va to <vscale x 2 x float>2222  ret <vscale x 2 x float> %evec2223}2224 2225define <vscale x 2 x double> @vsitofp_nxv2i32_nxv2f64(<vscale x 2 x i32> %va) {2226; CHECK-LABEL: vsitofp_nxv2i32_nxv2f64:2227; CHECK:       # %bb.0:2228; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2229; CHECK-NEXT:    vmv1r.v v10, v82230; CHECK-NEXT:    vfwcvt.f.x.v v8, v102231; CHECK-NEXT:    ret2232  %evec = sitofp <vscale x 2 x i32> %va to <vscale x 2 x double>2233  ret <vscale x 2 x double> %evec2234}2235 2236define <vscale x 2 x double> @vuitofp_nxv2i32_nxv2f64(<vscale x 2 x i32> %va) {2237; CHECK-LABEL: vuitofp_nxv2i32_nxv2f64:2238; CHECK:       # %bb.0:2239; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2240; CHECK-NEXT:    vmv1r.v v10, v82241; CHECK-NEXT:    vfwcvt.f.xu.v v8, v102242; CHECK-NEXT:    ret2243  %evec = uitofp <vscale x 2 x i32> %va to <vscale x 2 x double>2244  ret <vscale x 2 x double> %evec2245}2246 2247define <vscale x 4 x half> @vsitofp_nxv4i32_nxv4f16(<vscale x 4 x i32> %va) {2248; ZVFH-LABEL: vsitofp_nxv4i32_nxv4f16:2249; ZVFH:       # %bb.0:2250; ZVFH-NEXT:    vsetvli a0, zero, e16, m1, ta, ma2251; ZVFH-NEXT:    vfncvt.f.x.w v10, v82252; ZVFH-NEXT:    vmv.v.v v8, v102253; ZVFH-NEXT:    ret2254;2255; ZVFHMIN-LABEL: vsitofp_nxv4i32_nxv4f16:2256; ZVFHMIN:       # %bb.0:2257; ZVFHMIN-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2258; ZVFHMIN-NEXT:    vfcvt.f.x.v v10, v82259; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m1, ta, ma2260; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v102261; ZVFHMIN-NEXT:    ret2262  %evec = sitofp <vscale x 4 x i32> %va to <vscale x 4 x half>2263  ret <vscale x 4 x half> %evec2264}2265 2266define <vscale x 4 x half> @vuitofp_nxv4i32_nxv4f16(<vscale x 4 x i32> %va) {2267; ZVFH-LABEL: vuitofp_nxv4i32_nxv4f16:2268; ZVFH:       # %bb.0:2269; ZVFH-NEXT:    vsetvli a0, zero, e16, m1, ta, ma2270; ZVFH-NEXT:    vfncvt.f.xu.w v10, v82271; ZVFH-NEXT:    vmv.v.v v8, v102272; ZVFH-NEXT:    ret2273;2274; ZVFHMIN-LABEL: vuitofp_nxv4i32_nxv4f16:2275; ZVFHMIN:       # %bb.0:2276; ZVFHMIN-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2277; ZVFHMIN-NEXT:    vfcvt.f.xu.v v10, v82278; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m1, ta, ma2279; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v102280; ZVFHMIN-NEXT:    ret2281  %evec = uitofp <vscale x 4 x i32> %va to <vscale x 4 x half>2282  ret <vscale x 4 x half> %evec2283}2284 2285define <vscale x 4 x float> @vsitofp_nxv4i32_nxv4f32(<vscale x 4 x i32> %va) {2286; CHECK-LABEL: vsitofp_nxv4i32_nxv4f32:2287; CHECK:       # %bb.0:2288; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2289; CHECK-NEXT:    vfcvt.f.x.v v8, v82290; CHECK-NEXT:    ret2291  %evec = sitofp <vscale x 4 x i32> %va to <vscale x 4 x float>2292  ret <vscale x 4 x float> %evec2293}2294 2295define <vscale x 4 x float> @vuitofp_nxv4i32_nxv4f32(<vscale x 4 x i32> %va) {2296; CHECK-LABEL: vuitofp_nxv4i32_nxv4f32:2297; CHECK:       # %bb.0:2298; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2299; CHECK-NEXT:    vfcvt.f.xu.v v8, v82300; CHECK-NEXT:    ret2301  %evec = uitofp <vscale x 4 x i32> %va to <vscale x 4 x float>2302  ret <vscale x 4 x float> %evec2303}2304 2305define <vscale x 4 x double> @vsitofp_nxv4i32_nxv4f64(<vscale x 4 x i32> %va) {2306; CHECK-LABEL: vsitofp_nxv4i32_nxv4f64:2307; CHECK:       # %bb.0:2308; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2309; CHECK-NEXT:    vmv2r.v v12, v82310; CHECK-NEXT:    vfwcvt.f.x.v v8, v122311; CHECK-NEXT:    ret2312  %evec = sitofp <vscale x 4 x i32> %va to <vscale x 4 x double>2313  ret <vscale x 4 x double> %evec2314}2315 2316define <vscale x 4 x double> @vuitofp_nxv4i32_nxv4f64(<vscale x 4 x i32> %va) {2317; CHECK-LABEL: vuitofp_nxv4i32_nxv4f64:2318; CHECK:       # %bb.0:2319; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2320; CHECK-NEXT:    vmv2r.v v12, v82321; CHECK-NEXT:    vfwcvt.f.xu.v v8, v122322; CHECK-NEXT:    ret2323  %evec = uitofp <vscale x 4 x i32> %va to <vscale x 4 x double>2324  ret <vscale x 4 x double> %evec2325}2326 2327define <vscale x 8 x half> @vsitofp_nxv8i32_nxv8f16(<vscale x 8 x i32> %va) {2328; ZVFH-LABEL: vsitofp_nxv8i32_nxv8f16:2329; ZVFH:       # %bb.0:2330; ZVFH-NEXT:    vsetvli a0, zero, e16, m2, ta, ma2331; ZVFH-NEXT:    vfncvt.f.x.w v12, v82332; ZVFH-NEXT:    vmv.v.v v8, v122333; ZVFH-NEXT:    ret2334;2335; ZVFHMIN-LABEL: vsitofp_nxv8i32_nxv8f16:2336; ZVFHMIN:       # %bb.0:2337; ZVFHMIN-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2338; ZVFHMIN-NEXT:    vfcvt.f.x.v v12, v82339; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma2340; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v122341; ZVFHMIN-NEXT:    ret2342  %evec = sitofp <vscale x 8 x i32> %va to <vscale x 8 x half>2343  ret <vscale x 8 x half> %evec2344}2345 2346define <vscale x 8 x half> @vuitofp_nxv8i32_nxv8f16(<vscale x 8 x i32> %va) {2347; ZVFH-LABEL: vuitofp_nxv8i32_nxv8f16:2348; ZVFH:       # %bb.0:2349; ZVFH-NEXT:    vsetvli a0, zero, e16, m2, ta, ma2350; ZVFH-NEXT:    vfncvt.f.xu.w v12, v82351; ZVFH-NEXT:    vmv.v.v v8, v122352; ZVFH-NEXT:    ret2353;2354; ZVFHMIN-LABEL: vuitofp_nxv8i32_nxv8f16:2355; ZVFHMIN:       # %bb.0:2356; ZVFHMIN-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2357; ZVFHMIN-NEXT:    vfcvt.f.xu.v v12, v82358; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma2359; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v122360; ZVFHMIN-NEXT:    ret2361  %evec = uitofp <vscale x 8 x i32> %va to <vscale x 8 x half>2362  ret <vscale x 8 x half> %evec2363}2364 2365define <vscale x 8 x float> @vsitofp_nxv8i32_nxv8f32(<vscale x 8 x i32> %va) {2366; CHECK-LABEL: vsitofp_nxv8i32_nxv8f32:2367; CHECK:       # %bb.0:2368; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2369; CHECK-NEXT:    vfcvt.f.x.v v8, v82370; CHECK-NEXT:    ret2371  %evec = sitofp <vscale x 8 x i32> %va to <vscale x 8 x float>2372  ret <vscale x 8 x float> %evec2373}2374 2375define <vscale x 8 x float> @vuitofp_nxv8i32_nxv8f32(<vscale x 8 x i32> %va) {2376; CHECK-LABEL: vuitofp_nxv8i32_nxv8f32:2377; CHECK:       # %bb.0:2378; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2379; CHECK-NEXT:    vfcvt.f.xu.v v8, v82380; CHECK-NEXT:    ret2381  %evec = uitofp <vscale x 8 x i32> %va to <vscale x 8 x float>2382  ret <vscale x 8 x float> %evec2383}2384 2385define <vscale x 8 x double> @vsitofp_nxv8i32_nxv8f64(<vscale x 8 x i32> %va) {2386; CHECK-LABEL: vsitofp_nxv8i32_nxv8f64:2387; CHECK:       # %bb.0:2388; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2389; CHECK-NEXT:    vmv4r.v v16, v82390; CHECK-NEXT:    vfwcvt.f.x.v v8, v162391; CHECK-NEXT:    ret2392  %evec = sitofp <vscale x 8 x i32> %va to <vscale x 8 x double>2393  ret <vscale x 8 x double> %evec2394}2395 2396define <vscale x 8 x double> @vuitofp_nxv8i32_nxv8f64(<vscale x 8 x i32> %va) {2397; CHECK-LABEL: vuitofp_nxv8i32_nxv8f64:2398; CHECK:       # %bb.0:2399; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2400; CHECK-NEXT:    vmv4r.v v16, v82401; CHECK-NEXT:    vfwcvt.f.xu.v v8, v162402; CHECK-NEXT:    ret2403  %evec = uitofp <vscale x 8 x i32> %va to <vscale x 8 x double>2404  ret <vscale x 8 x double> %evec2405}2406 2407define <vscale x 16 x half> @vsitofp_nxv16i32_nxv16f16(<vscale x 16 x i32> %va) {2408; ZVFH-LABEL: vsitofp_nxv16i32_nxv16f16:2409; ZVFH:       # %bb.0:2410; ZVFH-NEXT:    vsetvli a0, zero, e16, m4, ta, ma2411; ZVFH-NEXT:    vfncvt.f.x.w v16, v82412; ZVFH-NEXT:    vmv.v.v v8, v162413; ZVFH-NEXT:    ret2414;2415; ZVFHMIN-LABEL: vsitofp_nxv16i32_nxv16f16:2416; ZVFHMIN:       # %bb.0:2417; ZVFHMIN-NEXT:    vsetvli a0, zero, e32, m8, ta, ma2418; ZVFHMIN-NEXT:    vfcvt.f.x.v v16, v82419; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m4, ta, ma2420; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v162421; ZVFHMIN-NEXT:    ret2422  %evec = sitofp <vscale x 16 x i32> %va to <vscale x 16 x half>2423  ret <vscale x 16 x half> %evec2424}2425 2426define <vscale x 16 x half> @vuitofp_nxv16i32_nxv16f16(<vscale x 16 x i32> %va) {2427; ZVFH-LABEL: vuitofp_nxv16i32_nxv16f16:2428; ZVFH:       # %bb.0:2429; ZVFH-NEXT:    vsetvli a0, zero, e16, m4, ta, ma2430; ZVFH-NEXT:    vfncvt.f.xu.w v16, v82431; ZVFH-NEXT:    vmv.v.v v8, v162432; ZVFH-NEXT:    ret2433;2434; ZVFHMIN-LABEL: vuitofp_nxv16i32_nxv16f16:2435; ZVFHMIN:       # %bb.0:2436; ZVFHMIN-NEXT:    vsetvli a0, zero, e32, m8, ta, ma2437; ZVFHMIN-NEXT:    vfcvt.f.xu.v v16, v82438; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m4, ta, ma2439; ZVFHMIN-NEXT:    vfncvt.f.f.w v8, v162440; ZVFHMIN-NEXT:    ret2441  %evec = uitofp <vscale x 16 x i32> %va to <vscale x 16 x half>2442  ret <vscale x 16 x half> %evec2443}2444 2445define <vscale x 16 x float> @vsitofp_nxv16i32_nxv16f32(<vscale x 16 x i32> %va) {2446; CHECK-LABEL: vsitofp_nxv16i32_nxv16f32:2447; CHECK:       # %bb.0:2448; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma2449; CHECK-NEXT:    vfcvt.f.x.v v8, v82450; CHECK-NEXT:    ret2451  %evec = sitofp <vscale x 16 x i32> %va to <vscale x 16 x float>2452  ret <vscale x 16 x float> %evec2453}2454 2455define <vscale x 16 x float> @vuitofp_nxv16i32_nxv16f32(<vscale x 16 x i32> %va) {2456; CHECK-LABEL: vuitofp_nxv16i32_nxv16f32:2457; CHECK:       # %bb.0:2458; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma2459; CHECK-NEXT:    vfcvt.f.xu.v v8, v82460; CHECK-NEXT:    ret2461  %evec = uitofp <vscale x 16 x i32> %va to <vscale x 16 x float>2462  ret <vscale x 16 x float> %evec2463}2464 2465define <vscale x 1 x half> @vsitofp_nxv1i64_nxv1f16(<vscale x 1 x i64> %va) {2466; CHECK-LABEL: vsitofp_nxv1i64_nxv1f16:2467; CHECK:       # %bb.0:2468; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma2469; CHECK-NEXT:    vfncvt.f.x.w v9, v82470; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma2471; CHECK-NEXT:    vfncvt.f.f.w v8, v92472; CHECK-NEXT:    ret2473  %evec = sitofp <vscale x 1 x i64> %va to <vscale x 1 x half>2474  ret <vscale x 1 x half> %evec2475}2476 2477define <vscale x 1 x half> @vuitofp_nxv1i64_nxv1f16(<vscale x 1 x i64> %va) {2478; CHECK-LABEL: vuitofp_nxv1i64_nxv1f16:2479; CHECK:       # %bb.0:2480; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma2481; CHECK-NEXT:    vfncvt.f.xu.w v9, v82482; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma2483; CHECK-NEXT:    vfncvt.f.f.w v8, v92484; CHECK-NEXT:    ret2485  %evec = uitofp <vscale x 1 x i64> %va to <vscale x 1 x half>2486  ret <vscale x 1 x half> %evec2487}2488 2489define <vscale x 1 x float> @vsitofp_nxv1i64_nxv1f32(<vscale x 1 x i64> %va) {2490; CHECK-LABEL: vsitofp_nxv1i64_nxv1f32:2491; CHECK:       # %bb.0:2492; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma2493; CHECK-NEXT:    vfncvt.f.x.w v9, v82494; CHECK-NEXT:    vmv1r.v v8, v92495; CHECK-NEXT:    ret2496  %evec = sitofp <vscale x 1 x i64> %va to <vscale x 1 x float>2497  ret <vscale x 1 x float> %evec2498}2499 2500define <vscale x 1 x float> @vuitofp_nxv1i64_nxv1f32(<vscale x 1 x i64> %va) {2501; CHECK-LABEL: vuitofp_nxv1i64_nxv1f32:2502; CHECK:       # %bb.0:2503; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma2504; CHECK-NEXT:    vfncvt.f.xu.w v9, v82505; CHECK-NEXT:    vmv1r.v v8, v92506; CHECK-NEXT:    ret2507  %evec = uitofp <vscale x 1 x i64> %va to <vscale x 1 x float>2508  ret <vscale x 1 x float> %evec2509}2510 2511define <vscale x 1 x double> @vsitofp_nxv1i64_nxv1f64(<vscale x 1 x i64> %va) {2512; CHECK-LABEL: vsitofp_nxv1i64_nxv1f64:2513; CHECK:       # %bb.0:2514; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma2515; CHECK-NEXT:    vfcvt.f.x.v v8, v82516; CHECK-NEXT:    ret2517  %evec = sitofp <vscale x 1 x i64> %va to <vscale x 1 x double>2518  ret <vscale x 1 x double> %evec2519}2520 2521define <vscale x 1 x double> @vuitofp_nxv1i64_nxv1f64(<vscale x 1 x i64> %va) {2522; CHECK-LABEL: vuitofp_nxv1i64_nxv1f64:2523; CHECK:       # %bb.0:2524; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma2525; CHECK-NEXT:    vfcvt.f.xu.v v8, v82526; CHECK-NEXT:    ret2527  %evec = uitofp <vscale x 1 x i64> %va to <vscale x 1 x double>2528  ret <vscale x 1 x double> %evec2529}2530 2531define <vscale x 2 x half> @vsitofp_nxv2i64_nxv2f16(<vscale x 2 x i64> %va) {2532; CHECK-LABEL: vsitofp_nxv2i64_nxv2f16:2533; CHECK:       # %bb.0:2534; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2535; CHECK-NEXT:    vfncvt.f.x.w v10, v82536; CHECK-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma2537; CHECK-NEXT:    vfncvt.f.f.w v8, v102538; CHECK-NEXT:    ret2539  %evec = sitofp <vscale x 2 x i64> %va to <vscale x 2 x half>2540  ret <vscale x 2 x half> %evec2541}2542 2543define <vscale x 2 x half> @vuitofp_nxv2i64_nxv2f16(<vscale x 2 x i64> %va) {2544; CHECK-LABEL: vuitofp_nxv2i64_nxv2f16:2545; CHECK:       # %bb.0:2546; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2547; CHECK-NEXT:    vfncvt.f.xu.w v10, v82548; CHECK-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma2549; CHECK-NEXT:    vfncvt.f.f.w v8, v102550; CHECK-NEXT:    ret2551  %evec = uitofp <vscale x 2 x i64> %va to <vscale x 2 x half>2552  ret <vscale x 2 x half> %evec2553}2554 2555define <vscale x 2 x float> @vsitofp_nxv2i64_nxv2f32(<vscale x 2 x i64> %va) {2556; CHECK-LABEL: vsitofp_nxv2i64_nxv2f32:2557; CHECK:       # %bb.0:2558; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2559; CHECK-NEXT:    vfncvt.f.x.w v10, v82560; CHECK-NEXT:    vmv.v.v v8, v102561; CHECK-NEXT:    ret2562  %evec = sitofp <vscale x 2 x i64> %va to <vscale x 2 x float>2563  ret <vscale x 2 x float> %evec2564}2565 2566define <vscale x 2 x float> @vuitofp_nxv2i64_nxv2f32(<vscale x 2 x i64> %va) {2567; CHECK-LABEL: vuitofp_nxv2i64_nxv2f32:2568; CHECK:       # %bb.0:2569; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2570; CHECK-NEXT:    vfncvt.f.xu.w v10, v82571; CHECK-NEXT:    vmv.v.v v8, v102572; CHECK-NEXT:    ret2573  %evec = uitofp <vscale x 2 x i64> %va to <vscale x 2 x float>2574  ret <vscale x 2 x float> %evec2575}2576 2577define <vscale x 2 x double> @vsitofp_nxv2i64_nxv2f64(<vscale x 2 x i64> %va) {2578; CHECK-LABEL: vsitofp_nxv2i64_nxv2f64:2579; CHECK:       # %bb.0:2580; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma2581; CHECK-NEXT:    vfcvt.f.x.v v8, v82582; CHECK-NEXT:    ret2583  %evec = sitofp <vscale x 2 x i64> %va to <vscale x 2 x double>2584  ret <vscale x 2 x double> %evec2585}2586 2587define <vscale x 2 x double> @vuitofp_nxv2i64_nxv2f64(<vscale x 2 x i64> %va) {2588; CHECK-LABEL: vuitofp_nxv2i64_nxv2f64:2589; CHECK:       # %bb.0:2590; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma2591; CHECK-NEXT:    vfcvt.f.xu.v v8, v82592; CHECK-NEXT:    ret2593  %evec = uitofp <vscale x 2 x i64> %va to <vscale x 2 x double>2594  ret <vscale x 2 x double> %evec2595}2596 2597define <vscale x 4 x half> @vsitofp_nxv4i64_nxv4f16(<vscale x 4 x i64> %va) {2598; CHECK-LABEL: vsitofp_nxv4i64_nxv4f16:2599; CHECK:       # %bb.0:2600; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2601; CHECK-NEXT:    vfncvt.f.x.w v12, v82602; CHECK-NEXT:    vsetvli zero, zero, e16, m1, ta, ma2603; CHECK-NEXT:    vfncvt.f.f.w v8, v122604; CHECK-NEXT:    ret2605  %evec = sitofp <vscale x 4 x i64> %va to <vscale x 4 x half>2606  ret <vscale x 4 x half> %evec2607}2608 2609define <vscale x 4 x half> @vuitofp_nxv4i64_nxv4f16(<vscale x 4 x i64> %va) {2610; CHECK-LABEL: vuitofp_nxv4i64_nxv4f16:2611; CHECK:       # %bb.0:2612; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2613; CHECK-NEXT:    vfncvt.f.xu.w v12, v82614; CHECK-NEXT:    vsetvli zero, zero, e16, m1, ta, ma2615; CHECK-NEXT:    vfncvt.f.f.w v8, v122616; CHECK-NEXT:    ret2617  %evec = uitofp <vscale x 4 x i64> %va to <vscale x 4 x half>2618  ret <vscale x 4 x half> %evec2619}2620 2621define <vscale x 4 x float> @vsitofp_nxv4i64_nxv4f32(<vscale x 4 x i64> %va) {2622; CHECK-LABEL: vsitofp_nxv4i64_nxv4f32:2623; CHECK:       # %bb.0:2624; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2625; CHECK-NEXT:    vfncvt.f.x.w v12, v82626; CHECK-NEXT:    vmv.v.v v8, v122627; CHECK-NEXT:    ret2628  %evec = sitofp <vscale x 4 x i64> %va to <vscale x 4 x float>2629  ret <vscale x 4 x float> %evec2630}2631 2632define <vscale x 4 x float> @vuitofp_nxv4i64_nxv4f32(<vscale x 4 x i64> %va) {2633; CHECK-LABEL: vuitofp_nxv4i64_nxv4f32:2634; CHECK:       # %bb.0:2635; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2636; CHECK-NEXT:    vfncvt.f.xu.w v12, v82637; CHECK-NEXT:    vmv.v.v v8, v122638; CHECK-NEXT:    ret2639  %evec = uitofp <vscale x 4 x i64> %va to <vscale x 4 x float>2640  ret <vscale x 4 x float> %evec2641}2642 2643define <vscale x 4 x double> @vsitofp_nxv4i64_nxv4f64(<vscale x 4 x i64> %va) {2644; CHECK-LABEL: vsitofp_nxv4i64_nxv4f64:2645; CHECK:       # %bb.0:2646; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma2647; CHECK-NEXT:    vfcvt.f.x.v v8, v82648; CHECK-NEXT:    ret2649  %evec = sitofp <vscale x 4 x i64> %va to <vscale x 4 x double>2650  ret <vscale x 4 x double> %evec2651}2652 2653define <vscale x 4 x double> @vuitofp_nxv4i64_nxv4f64(<vscale x 4 x i64> %va) {2654; CHECK-LABEL: vuitofp_nxv4i64_nxv4f64:2655; CHECK:       # %bb.0:2656; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma2657; CHECK-NEXT:    vfcvt.f.xu.v v8, v82658; CHECK-NEXT:    ret2659  %evec = uitofp <vscale x 4 x i64> %va to <vscale x 4 x double>2660  ret <vscale x 4 x double> %evec2661}2662 2663define <vscale x 8 x half> @vsitofp_nxv8i64_nxv8f16(<vscale x 8 x i64> %va) {2664; CHECK-LABEL: vsitofp_nxv8i64_nxv8f16:2665; CHECK:       # %bb.0:2666; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2667; CHECK-NEXT:    vfncvt.f.x.w v16, v82668; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma2669; CHECK-NEXT:    vfncvt.f.f.w v8, v162670; CHECK-NEXT:    ret2671  %evec = sitofp <vscale x 8 x i64> %va to <vscale x 8 x half>2672  ret <vscale x 8 x half> %evec2673}2674 2675define <vscale x 8 x half> @vuitofp_nxv8i64_nxv8f16(<vscale x 8 x i64> %va) {2676; CHECK-LABEL: vuitofp_nxv8i64_nxv8f16:2677; CHECK:       # %bb.0:2678; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2679; CHECK-NEXT:    vfncvt.f.xu.w v16, v82680; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma2681; CHECK-NEXT:    vfncvt.f.f.w v8, v162682; CHECK-NEXT:    ret2683  %evec = uitofp <vscale x 8 x i64> %va to <vscale x 8 x half>2684  ret <vscale x 8 x half> %evec2685}2686 2687define <vscale x 8 x float> @vsitofp_nxv8i64_nxv8f32(<vscale x 8 x i64> %va) {2688; CHECK-LABEL: vsitofp_nxv8i64_nxv8f32:2689; CHECK:       # %bb.0:2690; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2691; CHECK-NEXT:    vfncvt.f.x.w v16, v82692; CHECK-NEXT:    vmv.v.v v8, v162693; CHECK-NEXT:    ret2694  %evec = sitofp <vscale x 8 x i64> %va to <vscale x 8 x float>2695  ret <vscale x 8 x float> %evec2696}2697 2698define <vscale x 8 x float> @vuitofp_nxv8i64_nxv8f32(<vscale x 8 x i64> %va) {2699; CHECK-LABEL: vuitofp_nxv8i64_nxv8f32:2700; CHECK:       # %bb.0:2701; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2702; CHECK-NEXT:    vfncvt.f.xu.w v16, v82703; CHECK-NEXT:    vmv.v.v v8, v162704; CHECK-NEXT:    ret2705  %evec = uitofp <vscale x 8 x i64> %va to <vscale x 8 x float>2706  ret <vscale x 8 x float> %evec2707}2708 2709define <vscale x 8 x double> @vsitofp_nxv8i64_nxv8f64(<vscale x 8 x i64> %va) {2710; CHECK-LABEL: vsitofp_nxv8i64_nxv8f64:2711; CHECK:       # %bb.0:2712; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2713; CHECK-NEXT:    vfcvt.f.x.v v8, v82714; CHECK-NEXT:    ret2715  %evec = sitofp <vscale x 8 x i64> %va to <vscale x 8 x double>2716  ret <vscale x 8 x double> %evec2717}2718 2719define <vscale x 8 x double> @vuitofp_nxv8i64_nxv8f64(<vscale x 8 x i64> %va) {2720; CHECK-LABEL: vuitofp_nxv8i64_nxv8f64:2721; CHECK:       # %bb.0:2722; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2723; CHECK-NEXT:    vfcvt.f.xu.v v8, v82724; CHECK-NEXT:    ret2725  %evec = uitofp <vscale x 8 x i64> %va to <vscale x 8 x double>2726  ret <vscale x 8 x double> %evec2727}2728