brintos

brintos / llvm-project-archived public Read only

0
0
Text · 71.4 KiB · b93a4c1 Raw
1600 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfh,+v -target-abi=ilp32d \3; RUN:     -verify-machineinstrs < %s | FileCheck %s4; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfh,+v -target-abi=lp64d \5; RUN:     -verify-machineinstrs < %s | FileCheck %s6 7define <vscale x 1 x half> @vsitofp_nxv1i1_nxv1f16(<vscale x 1 x i1> %va) strictfp {8; CHECK-LABEL: vsitofp_nxv1i1_nxv1f16:9; CHECK:       # %bb.0:10; CHECK-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma11; CHECK-NEXT:    vmv.v.i v8, 012; CHECK-NEXT:    vmerge.vim v9, v8, -1, v013; CHECK-NEXT:    vfwcvt.f.x.v v8, v914; CHECK-NEXT:    ret15  %evec = call <vscale x 1 x half> @llvm.experimental.constrained.sitofp.nxv1f16.nxv1i1(<vscale x 1 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")16  ret <vscale x 1 x half> %evec17}18 19define <vscale x 1 x half> @vuitofp_nxv1i1_nxv1f16(<vscale x 1 x i1> %va) strictfp {20; CHECK-LABEL: vuitofp_nxv1i1_nxv1f16:21; CHECK:       # %bb.0:22; CHECK-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma23; CHECK-NEXT:    vmv.v.i v8, 024; CHECK-NEXT:    vmerge.vim v9, v8, 1, v025; CHECK-NEXT:    vfwcvt.f.xu.v v8, v926; CHECK-NEXT:    ret27  %evec = call <vscale x 1 x half> @llvm.experimental.constrained.uitofp.nxv1f16.nxv1i1(<vscale x 1 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")28  ret <vscale x 1 x half> %evec29}30 31define <vscale x 1 x float> @vsitofp_nxv1i1_nxv1f32(<vscale x 1 x i1> %va) strictfp {32; CHECK-LABEL: vsitofp_nxv1i1_nxv1f32:33; CHECK:       # %bb.0:34; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma35; CHECK-NEXT:    vmv.v.i v8, 036; CHECK-NEXT:    vmerge.vim v9, v8, -1, v037; CHECK-NEXT:    vfwcvt.f.x.v v8, v938; CHECK-NEXT:    ret39  %evec = call <vscale x 1 x float> @llvm.experimental.constrained.sitofp.nxv1f32.nxv1i1(<vscale x 1 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")40  ret <vscale x 1 x float> %evec41}42 43define <vscale x 1 x float> @vuitofp_nxv1i1_nxv1f32(<vscale x 1 x i1> %va) strictfp {44; CHECK-LABEL: vuitofp_nxv1i1_nxv1f32:45; CHECK:       # %bb.0:46; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma47; CHECK-NEXT:    vmv.v.i v8, 048; CHECK-NEXT:    vmerge.vim v9, v8, 1, v049; CHECK-NEXT:    vfwcvt.f.xu.v v8, v950; CHECK-NEXT:    ret51  %evec = call <vscale x 1 x float> @llvm.experimental.constrained.uitofp.nxv1f32.nxv1i1(<vscale x 1 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")52  ret <vscale x 1 x float> %evec53}54 55define <vscale x 1 x double> @vsitofp_nxv1i1_nxv1f64(<vscale x 1 x i1> %va) strictfp {56; CHECK-LABEL: vsitofp_nxv1i1_nxv1f64:57; CHECK:       # %bb.0:58; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma59; CHECK-NEXT:    vmv.v.i v8, 060; CHECK-NEXT:    vmerge.vim v9, v8, -1, v061; CHECK-NEXT:    vfwcvt.f.x.v v8, v962; CHECK-NEXT:    ret63  %evec = call <vscale x 1 x double> @llvm.experimental.constrained.sitofp.nxv1f64.nxv1i1(<vscale x 1 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")64  ret <vscale x 1 x double> %evec65}66 67define <vscale x 1 x double> @vuitofp_nxv1i1_nxv1f64(<vscale x 1 x i1> %va) strictfp {68; CHECK-LABEL: vuitofp_nxv1i1_nxv1f64:69; CHECK:       # %bb.0:70; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma71; CHECK-NEXT:    vmv.v.i v8, 072; CHECK-NEXT:    vmerge.vim v9, v8, 1, v073; CHECK-NEXT:    vfwcvt.f.xu.v v8, v974; CHECK-NEXT:    ret75  %evec = call <vscale x 1 x double> @llvm.experimental.constrained.uitofp.nxv1f64.nxv1i1(<vscale x 1 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")76  ret <vscale x 1 x double> %evec77}78 79define <vscale x 2 x half> @vsitofp_nxv2i1_nxv2f16(<vscale x 2 x i1> %va) strictfp {80; CHECK-LABEL: vsitofp_nxv2i1_nxv2f16:81; CHECK:       # %bb.0:82; CHECK-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma83; CHECK-NEXT:    vmv.v.i v8, 084; CHECK-NEXT:    vmerge.vim v9, v8, -1, v085; CHECK-NEXT:    vfwcvt.f.x.v v8, v986; CHECK-NEXT:    ret87  %evec = call <vscale x 2 x half> @llvm.experimental.constrained.sitofp.nxv2f16.nxv2i1(<vscale x 2 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")88  ret <vscale x 2 x half> %evec89}90 91define <vscale x 2 x half> @vuitofp_nxv2i1_nxv2f16(<vscale x 2 x i1> %va) strictfp {92; CHECK-LABEL: vuitofp_nxv2i1_nxv2f16:93; CHECK:       # %bb.0:94; CHECK-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma95; CHECK-NEXT:    vmv.v.i v8, 096; CHECK-NEXT:    vmerge.vim v9, v8, 1, v097; CHECK-NEXT:    vfwcvt.f.xu.v v8, v998; CHECK-NEXT:    ret99  %evec = call <vscale x 2 x half> @llvm.experimental.constrained.uitofp.nxv2f16.nxv2i1(<vscale x 2 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")100  ret <vscale x 2 x half> %evec101}102 103define <vscale x 2 x float> @vsitofp_nxv2i1_nxv2f32(<vscale x 2 x i1> %va) strictfp {104; CHECK-LABEL: vsitofp_nxv2i1_nxv2f32:105; CHECK:       # %bb.0:106; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma107; CHECK-NEXT:    vmv.v.i v8, 0108; CHECK-NEXT:    vmerge.vim v9, v8, -1, v0109; CHECK-NEXT:    vfwcvt.f.x.v v8, v9110; CHECK-NEXT:    ret111  %evec = call <vscale x 2 x float> @llvm.experimental.constrained.sitofp.nxv2f32.nxv2i1(<vscale x 2 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")112  ret <vscale x 2 x float> %evec113}114 115define <vscale x 2 x float> @vuitofp_nxv2i1_nxv2f32(<vscale x 2 x i1> %va) strictfp {116; CHECK-LABEL: vuitofp_nxv2i1_nxv2f32:117; CHECK:       # %bb.0:118; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma119; CHECK-NEXT:    vmv.v.i v8, 0120; CHECK-NEXT:    vmerge.vim v9, v8, 1, v0121; CHECK-NEXT:    vfwcvt.f.xu.v v8, v9122; CHECK-NEXT:    ret123  %evec = call <vscale x 2 x float> @llvm.experimental.constrained.uitofp.nxv2f32.nxv2i1(<vscale x 2 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")124  ret <vscale x 2 x float> %evec125}126 127define <vscale x 2 x double> @vsitofp_nxv2i1_nxv2f64(<vscale x 2 x i1> %va) strictfp {128; CHECK-LABEL: vsitofp_nxv2i1_nxv2f64:129; CHECK:       # %bb.0:130; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma131; CHECK-NEXT:    vmv.v.i v8, 0132; CHECK-NEXT:    vmerge.vim v10, v8, -1, v0133; CHECK-NEXT:    vfwcvt.f.x.v v8, v10134; CHECK-NEXT:    ret135  %evec = call <vscale x 2 x double> @llvm.experimental.constrained.sitofp.nxv2f64.nxv2i1(<vscale x 2 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")136  ret <vscale x 2 x double> %evec137}138 139define <vscale x 2 x double> @vuitofp_nxv2i1_nxv2f64(<vscale x 2 x i1> %va) strictfp {140; CHECK-LABEL: vuitofp_nxv2i1_nxv2f64:141; CHECK:       # %bb.0:142; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma143; CHECK-NEXT:    vmv.v.i v8, 0144; CHECK-NEXT:    vmerge.vim v10, v8, 1, v0145; CHECK-NEXT:    vfwcvt.f.xu.v v8, v10146; CHECK-NEXT:    ret147  %evec = call <vscale x 2 x double> @llvm.experimental.constrained.uitofp.nxv2f64.nxv2i1(<vscale x 2 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")148  ret <vscale x 2 x double> %evec149}150 151define <vscale x 4 x half> @vsitofp_nxv4i1_nxv4f16(<vscale x 4 x i1> %va) strictfp {152; CHECK-LABEL: vsitofp_nxv4i1_nxv4f16:153; CHECK:       # %bb.0:154; CHECK-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma155; CHECK-NEXT:    vmv.v.i v8, 0156; CHECK-NEXT:    vmerge.vim v9, v8, -1, v0157; CHECK-NEXT:    vfwcvt.f.x.v v8, v9158; CHECK-NEXT:    ret159  %evec = call <vscale x 4 x half> @llvm.experimental.constrained.sitofp.nxv4f16.nxv4i1(<vscale x 4 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")160  ret <vscale x 4 x half> %evec161}162 163define <vscale x 4 x half> @vuitofp_nxv4i1_nxv4f16(<vscale x 4 x i1> %va) strictfp {164; CHECK-LABEL: vuitofp_nxv4i1_nxv4f16:165; CHECK:       # %bb.0:166; CHECK-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma167; CHECK-NEXT:    vmv.v.i v8, 0168; CHECK-NEXT:    vmerge.vim v9, v8, 1, v0169; CHECK-NEXT:    vfwcvt.f.xu.v v8, v9170; CHECK-NEXT:    ret171  %evec = call <vscale x 4 x half> @llvm.experimental.constrained.uitofp.nxv4f16.nxv4i1(<vscale x 4 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")172  ret <vscale x 4 x half> %evec173}174 175define <vscale x 4 x float> @vsitofp_nxv4i1_nxv4f32(<vscale x 4 x i1> %va) strictfp {176; CHECK-LABEL: vsitofp_nxv4i1_nxv4f32:177; CHECK:       # %bb.0:178; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma179; CHECK-NEXT:    vmv.v.i v8, 0180; CHECK-NEXT:    vmerge.vim v10, v8, -1, v0181; CHECK-NEXT:    vfwcvt.f.x.v v8, v10182; CHECK-NEXT:    ret183  %evec = call <vscale x 4 x float> @llvm.experimental.constrained.sitofp.nxv4f32.nxv4i1(<vscale x 4 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")184  ret <vscale x 4 x float> %evec185}186 187define <vscale x 4 x float> @vuitofp_nxv4i1_nxv4f32(<vscale x 4 x i1> %va) strictfp {188; CHECK-LABEL: vuitofp_nxv4i1_nxv4f32:189; CHECK:       # %bb.0:190; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma191; CHECK-NEXT:    vmv.v.i v8, 0192; CHECK-NEXT:    vmerge.vim v10, v8, 1, v0193; CHECK-NEXT:    vfwcvt.f.xu.v v8, v10194; CHECK-NEXT:    ret195  %evec = call <vscale x 4 x float> @llvm.experimental.constrained.uitofp.nxv4f32.nxv4i1(<vscale x 4 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")196  ret <vscale x 4 x float> %evec197}198 199define <vscale x 4 x double> @vsitofp_nxv4i1_nxv4f64(<vscale x 4 x i1> %va) strictfp {200; CHECK-LABEL: vsitofp_nxv4i1_nxv4f64:201; CHECK:       # %bb.0:202; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma203; CHECK-NEXT:    vmv.v.i v8, 0204; CHECK-NEXT:    vmerge.vim v12, v8, -1, v0205; CHECK-NEXT:    vfwcvt.f.x.v v8, v12206; CHECK-NEXT:    ret207  %evec = call <vscale x 4 x double> @llvm.experimental.constrained.sitofp.nxv4f64.nxv4i1(<vscale x 4 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")208  ret <vscale x 4 x double> %evec209}210 211define <vscale x 4 x double> @vuitofp_nxv4i1_nxv4f64(<vscale x 4 x i1> %va) strictfp {212; CHECK-LABEL: vuitofp_nxv4i1_nxv4f64:213; CHECK:       # %bb.0:214; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma215; CHECK-NEXT:    vmv.v.i v8, 0216; CHECK-NEXT:    vmerge.vim v12, v8, 1, v0217; CHECK-NEXT:    vfwcvt.f.xu.v v8, v12218; CHECK-NEXT:    ret219  %evec = call <vscale x 4 x double> @llvm.experimental.constrained.uitofp.nxv4f64.nxv4i1(<vscale x 4 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")220  ret <vscale x 4 x double> %evec221}222 223define <vscale x 8 x half> @vsitofp_nxv8i1_nxv8f16(<vscale x 8 x i1> %va) strictfp {224; CHECK-LABEL: vsitofp_nxv8i1_nxv8f16:225; CHECK:       # %bb.0:226; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma227; CHECK-NEXT:    vmv.v.i v8, 0228; CHECK-NEXT:    vmerge.vim v10, v8, -1, v0229; CHECK-NEXT:    vfwcvt.f.x.v v8, v10230; CHECK-NEXT:    ret231  %evec = call <vscale x 8 x half> @llvm.experimental.constrained.sitofp.nxv8f16.nxv8i1(<vscale x 8 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")232  ret <vscale x 8 x half> %evec233}234 235define <vscale x 8 x half> @vuitofp_nxv8i1_nxv8f16(<vscale x 8 x i1> %va) strictfp {236; CHECK-LABEL: vuitofp_nxv8i1_nxv8f16:237; CHECK:       # %bb.0:238; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma239; CHECK-NEXT:    vmv.v.i v8, 0240; CHECK-NEXT:    vmerge.vim v10, v8, 1, v0241; CHECK-NEXT:    vfwcvt.f.xu.v v8, v10242; CHECK-NEXT:    ret243  %evec = call <vscale x 8 x half> @llvm.experimental.constrained.uitofp.nxv8f16.nxv8i1(<vscale x 8 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")244  ret <vscale x 8 x half> %evec245}246 247define <vscale x 8 x float> @vsitofp_nxv8i1_nxv8f32(<vscale x 8 x i1> %va) strictfp {248; CHECK-LABEL: vsitofp_nxv8i1_nxv8f32:249; CHECK:       # %bb.0:250; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma251; CHECK-NEXT:    vmv.v.i v8, 0252; CHECK-NEXT:    vmerge.vim v12, v8, -1, v0253; CHECK-NEXT:    vfwcvt.f.x.v v8, v12254; CHECK-NEXT:    ret255  %evec = call <vscale x 8 x float> @llvm.experimental.constrained.sitofp.nxv8f32.nxv8i1(<vscale x 8 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")256  ret <vscale x 8 x float> %evec257}258 259define <vscale x 8 x float> @vuitofp_nxv8i1_nxv8f32(<vscale x 8 x i1> %va) strictfp {260; CHECK-LABEL: vuitofp_nxv8i1_nxv8f32:261; CHECK:       # %bb.0:262; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma263; CHECK-NEXT:    vmv.v.i v8, 0264; CHECK-NEXT:    vmerge.vim v12, v8, 1, v0265; CHECK-NEXT:    vfwcvt.f.xu.v v8, v12266; CHECK-NEXT:    ret267  %evec = call <vscale x 8 x float> @llvm.experimental.constrained.uitofp.nxv8f32.nxv8i1(<vscale x 8 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")268  ret <vscale x 8 x float> %evec269}270 271define <vscale x 8 x double> @vsitofp_nxv8i1_nxv8f64(<vscale x 8 x i1> %va) strictfp {272; CHECK-LABEL: vsitofp_nxv8i1_nxv8f64:273; CHECK:       # %bb.0:274; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma275; CHECK-NEXT:    vmv.v.i v8, 0276; CHECK-NEXT:    vmerge.vim v16, v8, -1, v0277; CHECK-NEXT:    vfwcvt.f.x.v v8, v16278; CHECK-NEXT:    ret279  %evec = call <vscale x 8 x double> @llvm.experimental.constrained.sitofp.nxv8f64.nxv8i1(<vscale x 8 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")280  ret <vscale x 8 x double> %evec281}282 283define <vscale x 8 x double> @vuitofp_nxv8i1_nxv8f64(<vscale x 8 x i1> %va) strictfp {284; CHECK-LABEL: vuitofp_nxv8i1_nxv8f64:285; CHECK:       # %bb.0:286; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma287; CHECK-NEXT:    vmv.v.i v8, 0288; CHECK-NEXT:    vmerge.vim v16, v8, 1, v0289; CHECK-NEXT:    vfwcvt.f.xu.v v8, v16290; CHECK-NEXT:    ret291  %evec = call <vscale x 8 x double> @llvm.experimental.constrained.uitofp.nxv8f64.nxv8i1(<vscale x 8 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")292  ret <vscale x 8 x double> %evec293}294 295define <vscale x 16 x half> @vsitofp_nxv16i1_nxv16f16(<vscale x 16 x i1> %va) strictfp {296; CHECK-LABEL: vsitofp_nxv16i1_nxv16f16:297; CHECK:       # %bb.0:298; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma299; CHECK-NEXT:    vmv.v.i v8, 0300; CHECK-NEXT:    vmerge.vim v12, v8, -1, v0301; CHECK-NEXT:    vfwcvt.f.x.v v8, v12302; CHECK-NEXT:    ret303  %evec = call <vscale x 16 x half> @llvm.experimental.constrained.sitofp.nxv16f16.nxv16i1(<vscale x 16 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")304  ret <vscale x 16 x half> %evec305}306 307define <vscale x 16 x half> @vuitofp_nxv16i1_nxv16f16(<vscale x 16 x i1> %va) strictfp {308; CHECK-LABEL: vuitofp_nxv16i1_nxv16f16:309; CHECK:       # %bb.0:310; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma311; CHECK-NEXT:    vmv.v.i v8, 0312; CHECK-NEXT:    vmerge.vim v12, v8, 1, v0313; CHECK-NEXT:    vfwcvt.f.xu.v v8, v12314; CHECK-NEXT:    ret315  %evec = call <vscale x 16 x half> @llvm.experimental.constrained.uitofp.nxv16f16.nxv16i1(<vscale x 16 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")316  ret <vscale x 16 x half> %evec317}318 319define <vscale x 16 x float> @vsitofp_nxv16i1_nxv16f32(<vscale x 16 x i1> %va) strictfp {320; CHECK-LABEL: vsitofp_nxv16i1_nxv16f32:321; CHECK:       # %bb.0:322; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma323; CHECK-NEXT:    vmv.v.i v8, 0324; CHECK-NEXT:    vmerge.vim v16, v8, -1, v0325; CHECK-NEXT:    vfwcvt.f.x.v v8, v16326; CHECK-NEXT:    ret327  %evec = call <vscale x 16 x float> @llvm.experimental.constrained.sitofp.nxv16f32.nxv16i1(<vscale x 16 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")328  ret <vscale x 16 x float> %evec329}330 331define <vscale x 16 x float> @vuitofp_nxv16i1_nxv16f32(<vscale x 16 x i1> %va) strictfp {332; CHECK-LABEL: vuitofp_nxv16i1_nxv16f32:333; CHECK:       # %bb.0:334; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma335; CHECK-NEXT:    vmv.v.i v8, 0336; CHECK-NEXT:    vmerge.vim v16, v8, 1, v0337; CHECK-NEXT:    vfwcvt.f.xu.v v8, v16338; CHECK-NEXT:    ret339  %evec = call <vscale x 16 x float> @llvm.experimental.constrained.uitofp.nxv16f32.nxv16i1(<vscale x 16 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")340  ret <vscale x 16 x float> %evec341}342 343define <vscale x 32 x half> @vsitofp_nxv32i1_nxv32f16(<vscale x 32 x i1> %va) strictfp {344; CHECK-LABEL: vsitofp_nxv32i1_nxv32f16:345; CHECK:       # %bb.0:346; CHECK-NEXT:    vsetvli a0, zero, e8, m4, ta, ma347; CHECK-NEXT:    vmv.v.i v8, 0348; CHECK-NEXT:    vmerge.vim v16, v8, -1, v0349; CHECK-NEXT:    vfwcvt.f.x.v v8, v16350; CHECK-NEXT:    ret351  %evec = call <vscale x 32 x half> @llvm.experimental.constrained.sitofp.nxv32f16.nxv32i1(<vscale x 32 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")352  ret <vscale x 32 x half> %evec353}354 355define <vscale x 32 x half> @vuitofp_nxv32i1_nxv32f16(<vscale x 32 x i1> %va) strictfp {356; CHECK-LABEL: vuitofp_nxv32i1_nxv32f16:357; CHECK:       # %bb.0:358; CHECK-NEXT:    vsetvli a0, zero, e8, m4, ta, ma359; CHECK-NEXT:    vmv.v.i v8, 0360; CHECK-NEXT:    vmerge.vim v16, v8, 1, v0361; CHECK-NEXT:    vfwcvt.f.xu.v v8, v16362; CHECK-NEXT:    ret363  %evec = call <vscale x 32 x half> @llvm.experimental.constrained.uitofp.nxv32f16.nxv32i1(<vscale x 32 x i1> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")364  ret <vscale x 32 x half> %evec365}366 367define <vscale x 1 x half> @vsitofp_nxv1i8_nxv1f16(<vscale x 1 x i8> %va) strictfp {368; CHECK-LABEL: vsitofp_nxv1i8_nxv1f16:369; CHECK:       # %bb.0:370; CHECK-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma371; CHECK-NEXT:    vfwcvt.f.x.v v9, v8372; CHECK-NEXT:    vmv1r.v v8, v9373; CHECK-NEXT:    ret374  %evec = call <vscale x 1 x half> @llvm.experimental.constrained.sitofp.nxv1f16.nxv1i8(<vscale x 1 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")375  ret <vscale x 1 x half> %evec376}377 378define <vscale x 1 x half> @vsitofp_nxv1i7_nxv1f16(<vscale x 1 x i7> %va) strictfp {379; CHECK-LABEL: vsitofp_nxv1i7_nxv1f16:380; CHECK:       # %bb.0:381; CHECK-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma382; CHECK-NEXT:    vadd.vv v8, v8, v8383; CHECK-NEXT:    vsra.vi v9, v8, 1384; CHECK-NEXT:    vfwcvt.f.x.v v8, v9385; CHECK-NEXT:    ret386  %evec = call <vscale x 1 x half> @llvm.experimental.constrained.sitofp.nxv1f16.nxv1i7(<vscale x 1 x i7> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")387  ret <vscale x 1 x half> %evec388}389 390define <vscale x 1 x half> @vuitofp_nxv1i7_nxv1f16(<vscale x 1 x i7> %va) strictfp {391; CHECK-LABEL: vuitofp_nxv1i7_nxv1f16:392; CHECK:       # %bb.0:393; CHECK-NEXT:    li a0, 127394; CHECK-NEXT:    vsetvli a1, zero, e8, mf8, ta, ma395; CHECK-NEXT:    vand.vx v9, v8, a0396; CHECK-NEXT:    vfwcvt.f.xu.v v8, v9397; CHECK-NEXT:    ret398  %evec = call <vscale x 1 x half> @llvm.experimental.constrained.uitofp.nxv1f16.nxv1i7(<vscale x 1 x i7> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")399  ret <vscale x 1 x half> %evec400}401 402define <vscale x 1 x half> @vuitofp_nxv1i8_nxv1f16(<vscale x 1 x i8> %va) strictfp {403; CHECK-LABEL: vuitofp_nxv1i8_nxv1f16:404; CHECK:       # %bb.0:405; CHECK-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma406; CHECK-NEXT:    vfwcvt.f.xu.v v9, v8407; CHECK-NEXT:    vmv1r.v v8, v9408; CHECK-NEXT:    ret409  %evec = call <vscale x 1 x half> @llvm.experimental.constrained.uitofp.nxv1f16.nxv1i8(<vscale x 1 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")410  ret <vscale x 1 x half> %evec411}412 413define <vscale x 1 x float> @vsitofp_nxv1i8_nxv1f32(<vscale x 1 x i8> %va) strictfp {414; CHECK-LABEL: vsitofp_nxv1i8_nxv1f32:415; CHECK:       # %bb.0:416; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma417; CHECK-NEXT:    vsext.vf2 v9, v8418; CHECK-NEXT:    vfwcvt.f.x.v v8, v9419; CHECK-NEXT:    ret420  %evec = call <vscale x 1 x float> @llvm.experimental.constrained.sitofp.nxv1f32.nxv1i8(<vscale x 1 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")421  ret <vscale x 1 x float> %evec422}423 424define <vscale x 1 x float> @vuitofp_nxv1i8_nxv1f32(<vscale x 1 x i8> %va) strictfp {425; CHECK-LABEL: vuitofp_nxv1i8_nxv1f32:426; CHECK:       # %bb.0:427; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma428; CHECK-NEXT:    vzext.vf2 v9, v8429; CHECK-NEXT:    vfwcvt.f.xu.v v8, v9430; CHECK-NEXT:    ret431  %evec = call <vscale x 1 x float> @llvm.experimental.constrained.uitofp.nxv1f32.nxv1i8(<vscale x 1 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")432  ret <vscale x 1 x float> %evec433}434 435define <vscale x 1 x double> @vsitofp_nxv1i8_nxv1f64(<vscale x 1 x i8> %va) strictfp {436; CHECK-LABEL: vsitofp_nxv1i8_nxv1f64:437; CHECK:       # %bb.0:438; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma439; CHECK-NEXT:    vsext.vf4 v9, v8440; CHECK-NEXT:    vfwcvt.f.x.v v8, v9441; CHECK-NEXT:    ret442  %evec = call <vscale x 1 x double> @llvm.experimental.constrained.sitofp.nxv1f64.nxv1i8(<vscale x 1 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")443  ret <vscale x 1 x double> %evec444}445 446define <vscale x 1 x double> @vuitofp_nxv1i8_nxv1f64(<vscale x 1 x i8> %va) strictfp {447; CHECK-LABEL: vuitofp_nxv1i8_nxv1f64:448; CHECK:       # %bb.0:449; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma450; CHECK-NEXT:    vzext.vf4 v9, v8451; CHECK-NEXT:    vfwcvt.f.xu.v v8, v9452; CHECK-NEXT:    ret453  %evec = call <vscale x 1 x double> @llvm.experimental.constrained.uitofp.nxv1f64.nxv1i8(<vscale x 1 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")454  ret <vscale x 1 x double> %evec455}456 457define <vscale x 2 x half> @vsitofp_nxv2i8_nxv2f16(<vscale x 2 x i8> %va) strictfp {458; CHECK-LABEL: vsitofp_nxv2i8_nxv2f16:459; CHECK:       # %bb.0:460; CHECK-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma461; CHECK-NEXT:    vfwcvt.f.x.v v9, v8462; CHECK-NEXT:    vmv1r.v v8, v9463; CHECK-NEXT:    ret464  %evec = call <vscale x 2 x half> @llvm.experimental.constrained.sitofp.nxv2f16.nxv2i8(<vscale x 2 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")465  ret <vscale x 2 x half> %evec466}467 468define <vscale x 2 x half> @vuitofp_nxv2i8_nxv2f16(<vscale x 2 x i8> %va) strictfp {469; CHECK-LABEL: vuitofp_nxv2i8_nxv2f16:470; CHECK:       # %bb.0:471; CHECK-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma472; CHECK-NEXT:    vfwcvt.f.xu.v v9, v8473; CHECK-NEXT:    vmv1r.v v8, v9474; CHECK-NEXT:    ret475  %evec = call <vscale x 2 x half> @llvm.experimental.constrained.uitofp.nxv2f16.nxv2i8(<vscale x 2 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")476  ret <vscale x 2 x half> %evec477}478 479define <vscale x 2 x float> @vsitofp_nxv2i8_nxv2f32(<vscale x 2 x i8> %va) strictfp {480; CHECK-LABEL: vsitofp_nxv2i8_nxv2f32:481; CHECK:       # %bb.0:482; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma483; CHECK-NEXT:    vsext.vf2 v9, v8484; CHECK-NEXT:    vfwcvt.f.x.v v8, v9485; CHECK-NEXT:    ret486  %evec = call <vscale x 2 x float> @llvm.experimental.constrained.sitofp.nxv2f32.nxv2i8(<vscale x 2 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")487  ret <vscale x 2 x float> %evec488}489 490define <vscale x 2 x float> @vuitofp_nxv2i8_nxv2f32(<vscale x 2 x i8> %va) strictfp {491; CHECK-LABEL: vuitofp_nxv2i8_nxv2f32:492; CHECK:       # %bb.0:493; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma494; CHECK-NEXT:    vzext.vf2 v9, v8495; CHECK-NEXT:    vfwcvt.f.xu.v v8, v9496; CHECK-NEXT:    ret497  %evec = call <vscale x 2 x float> @llvm.experimental.constrained.uitofp.nxv2f32.nxv2i8(<vscale x 2 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")498  ret <vscale x 2 x float> %evec499}500 501define <vscale x 2 x double> @vsitofp_nxv2i8_nxv2f64(<vscale x 2 x i8> %va) strictfp {502; CHECK-LABEL: vsitofp_nxv2i8_nxv2f64:503; CHECK:       # %bb.0:504; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma505; CHECK-NEXT:    vsext.vf4 v10, v8506; CHECK-NEXT:    vfwcvt.f.x.v v8, v10507; CHECK-NEXT:    ret508  %evec = call <vscale x 2 x double> @llvm.experimental.constrained.sitofp.nxv2f64.nxv2i8(<vscale x 2 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")509  ret <vscale x 2 x double> %evec510}511 512define <vscale x 2 x double> @vuitofp_nxv2i8_nxv2f64(<vscale x 2 x i8> %va) strictfp {513; CHECK-LABEL: vuitofp_nxv2i8_nxv2f64:514; CHECK:       # %bb.0:515; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma516; CHECK-NEXT:    vzext.vf4 v10, v8517; CHECK-NEXT:    vfwcvt.f.xu.v v8, v10518; CHECK-NEXT:    ret519  %evec = call <vscale x 2 x double> @llvm.experimental.constrained.uitofp.nxv2f64.nxv2i8(<vscale x 2 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")520  ret <vscale x 2 x double> %evec521}522 523define <vscale x 4 x half> @vsitofp_nxv4i8_nxv4f16(<vscale x 4 x i8> %va) strictfp {524; CHECK-LABEL: vsitofp_nxv4i8_nxv4f16:525; CHECK:       # %bb.0:526; CHECK-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma527; CHECK-NEXT:    vfwcvt.f.x.v v9, v8528; CHECK-NEXT:    vmv1r.v v8, v9529; CHECK-NEXT:    ret530  %evec = call <vscale x 4 x half> @llvm.experimental.constrained.sitofp.nxv4f16.nxv4i8(<vscale x 4 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")531  ret <vscale x 4 x half> %evec532}533 534define <vscale x 4 x half> @vuitofp_nxv4i8_nxv4f16(<vscale x 4 x i8> %va) strictfp {535; CHECK-LABEL: vuitofp_nxv4i8_nxv4f16:536; CHECK:       # %bb.0:537; CHECK-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma538; CHECK-NEXT:    vfwcvt.f.xu.v v9, v8539; CHECK-NEXT:    vmv1r.v v8, v9540; CHECK-NEXT:    ret541  %evec = call <vscale x 4 x half> @llvm.experimental.constrained.uitofp.nxv4f16.nxv4i8(<vscale x 4 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")542  ret <vscale x 4 x half> %evec543}544 545define <vscale x 4 x float> @vsitofp_nxv4i8_nxv4f32(<vscale x 4 x i8> %va) strictfp {546; CHECK-LABEL: vsitofp_nxv4i8_nxv4f32:547; CHECK:       # %bb.0:548; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma549; CHECK-NEXT:    vsext.vf2 v10, v8550; CHECK-NEXT:    vfwcvt.f.x.v v8, v10551; CHECK-NEXT:    ret552  %evec = call <vscale x 4 x float> @llvm.experimental.constrained.sitofp.nxv4f32.nxv4i8(<vscale x 4 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")553  ret <vscale x 4 x float> %evec554}555 556define <vscale x 4 x float> @vuitofp_nxv4i8_nxv4f32(<vscale x 4 x i8> %va) strictfp {557; CHECK-LABEL: vuitofp_nxv4i8_nxv4f32:558; CHECK:       # %bb.0:559; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma560; CHECK-NEXT:    vzext.vf2 v10, v8561; CHECK-NEXT:    vfwcvt.f.xu.v v8, v10562; CHECK-NEXT:    ret563  %evec = call <vscale x 4 x float> @llvm.experimental.constrained.uitofp.nxv4f32.nxv4i8(<vscale x 4 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")564  ret <vscale x 4 x float> %evec565}566 567define <vscale x 4 x double> @vsitofp_nxv4i8_nxv4f64(<vscale x 4 x i8> %va) strictfp {568; CHECK-LABEL: vsitofp_nxv4i8_nxv4f64:569; CHECK:       # %bb.0:570; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma571; CHECK-NEXT:    vsext.vf4 v12, v8572; CHECK-NEXT:    vfwcvt.f.x.v v8, v12573; CHECK-NEXT:    ret574  %evec = call <vscale x 4 x double> @llvm.experimental.constrained.sitofp.nxv4f64.nxv4i8(<vscale x 4 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")575  ret <vscale x 4 x double> %evec576}577 578define <vscale x 4 x double> @vuitofp_nxv4i8_nxv4f64(<vscale x 4 x i8> %va) strictfp {579; CHECK-LABEL: vuitofp_nxv4i8_nxv4f64:580; CHECK:       # %bb.0:581; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma582; CHECK-NEXT:    vzext.vf4 v12, v8583; CHECK-NEXT:    vfwcvt.f.xu.v v8, v12584; CHECK-NEXT:    ret585  %evec = call <vscale x 4 x double> @llvm.experimental.constrained.uitofp.nxv4f64.nxv4i8(<vscale x 4 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")586  ret <vscale x 4 x double> %evec587}588 589define <vscale x 8 x half> @vsitofp_nxv8i8_nxv8f16(<vscale x 8 x i8> %va) strictfp {590; CHECK-LABEL: vsitofp_nxv8i8_nxv8f16:591; CHECK:       # %bb.0:592; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma593; CHECK-NEXT:    vmv1r.v v10, v8594; CHECK-NEXT:    vfwcvt.f.x.v v8, v10595; CHECK-NEXT:    ret596  %evec = call <vscale x 8 x half> @llvm.experimental.constrained.sitofp.nxv8f16.nxv8i8(<vscale x 8 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")597  ret <vscale x 8 x half> %evec598}599 600define <vscale x 8 x half> @vuitofp_nxv8i8_nxv8f16(<vscale x 8 x i8> %va) strictfp {601; CHECK-LABEL: vuitofp_nxv8i8_nxv8f16:602; CHECK:       # %bb.0:603; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma604; CHECK-NEXT:    vmv1r.v v10, v8605; CHECK-NEXT:    vfwcvt.f.xu.v v8, v10606; CHECK-NEXT:    ret607  %evec = call <vscale x 8 x half> @llvm.experimental.constrained.uitofp.nxv8f16.nxv8i8(<vscale x 8 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")608  ret <vscale x 8 x half> %evec609}610 611define <vscale x 8 x float> @vsitofp_nxv8i8_nxv8f32(<vscale x 8 x i8> %va) strictfp {612; CHECK-LABEL: vsitofp_nxv8i8_nxv8f32:613; CHECK:       # %bb.0:614; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma615; CHECK-NEXT:    vsext.vf2 v12, v8616; CHECK-NEXT:    vfwcvt.f.x.v v8, v12617; CHECK-NEXT:    ret618  %evec = call <vscale x 8 x float> @llvm.experimental.constrained.sitofp.nxv8f32.nxv8i8(<vscale x 8 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")619  ret <vscale x 8 x float> %evec620}621 622define <vscale x 8 x float> @vuitofp_nxv8i8_nxv8f32(<vscale x 8 x i8> %va) strictfp {623; CHECK-LABEL: vuitofp_nxv8i8_nxv8f32:624; CHECK:       # %bb.0:625; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma626; CHECK-NEXT:    vzext.vf2 v12, v8627; CHECK-NEXT:    vfwcvt.f.xu.v v8, v12628; CHECK-NEXT:    ret629  %evec = call <vscale x 8 x float> @llvm.experimental.constrained.uitofp.nxv8f32.nxv8i8(<vscale x 8 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")630  ret <vscale x 8 x float> %evec631}632 633define <vscale x 8 x double> @vsitofp_nxv8i8_nxv8f64(<vscale x 8 x i8> %va) strictfp {634; CHECK-LABEL: vsitofp_nxv8i8_nxv8f64:635; CHECK:       # %bb.0:636; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma637; CHECK-NEXT:    vsext.vf4 v16, v8638; CHECK-NEXT:    vfwcvt.f.x.v v8, v16639; CHECK-NEXT:    ret640  %evec = call <vscale x 8 x double> @llvm.experimental.constrained.sitofp.nxv8f64.nxv8i8(<vscale x 8 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")641  ret <vscale x 8 x double> %evec642}643 644define <vscale x 8 x double> @vuitofp_nxv8i8_nxv8f64(<vscale x 8 x i8> %va) strictfp {645; CHECK-LABEL: vuitofp_nxv8i8_nxv8f64:646; CHECK:       # %bb.0:647; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma648; CHECK-NEXT:    vzext.vf4 v16, v8649; CHECK-NEXT:    vfwcvt.f.xu.v v8, v16650; CHECK-NEXT:    ret651  %evec = call <vscale x 8 x double> @llvm.experimental.constrained.uitofp.nxv8f64.nxv8i8(<vscale x 8 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")652  ret <vscale x 8 x double> %evec653}654 655define <vscale x 16 x half> @vsitofp_nxv16i8_nxv16f16(<vscale x 16 x i8> %va) strictfp {656; CHECK-LABEL: vsitofp_nxv16i8_nxv16f16:657; CHECK:       # %bb.0:658; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma659; CHECK-NEXT:    vmv2r.v v12, v8660; CHECK-NEXT:    vfwcvt.f.x.v v8, v12661; CHECK-NEXT:    ret662  %evec = call <vscale x 16 x half> @llvm.experimental.constrained.sitofp.nxv16f16.nxv16i8(<vscale x 16 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")663  ret <vscale x 16 x half> %evec664}665 666define <vscale x 16 x half> @vuitofp_nxv16i8_nxv16f16(<vscale x 16 x i8> %va) strictfp {667; CHECK-LABEL: vuitofp_nxv16i8_nxv16f16:668; CHECK:       # %bb.0:669; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma670; CHECK-NEXT:    vmv2r.v v12, v8671; CHECK-NEXT:    vfwcvt.f.xu.v v8, v12672; CHECK-NEXT:    ret673  %evec = call <vscale x 16 x half> @llvm.experimental.constrained.uitofp.nxv16f16.nxv16i8(<vscale x 16 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")674  ret <vscale x 16 x half> %evec675}676 677define <vscale x 16 x float> @vsitofp_nxv16i8_nxv16f32(<vscale x 16 x i8> %va) strictfp {678; CHECK-LABEL: vsitofp_nxv16i8_nxv16f32:679; CHECK:       # %bb.0:680; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma681; CHECK-NEXT:    vsext.vf2 v16, v8682; CHECK-NEXT:    vfwcvt.f.x.v v8, v16683; CHECK-NEXT:    ret684  %evec = call <vscale x 16 x float> @llvm.experimental.constrained.sitofp.nxv16f32.nxv16i8(<vscale x 16 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")685  ret <vscale x 16 x float> %evec686}687 688define <vscale x 16 x float> @vuitofp_nxv16i8_nxv16f32(<vscale x 16 x i8> %va) strictfp {689; CHECK-LABEL: vuitofp_nxv16i8_nxv16f32:690; CHECK:       # %bb.0:691; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma692; CHECK-NEXT:    vzext.vf2 v16, v8693; CHECK-NEXT:    vfwcvt.f.xu.v v8, v16694; CHECK-NEXT:    ret695  %evec = call <vscale x 16 x float> @llvm.experimental.constrained.uitofp.nxv16f32.nxv16i8(<vscale x 16 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")696  ret <vscale x 16 x float> %evec697}698 699define <vscale x 32 x half> @vsitofp_nxv32i8_nxv32f16(<vscale x 32 x i8> %va) strictfp {700; CHECK-LABEL: vsitofp_nxv32i8_nxv32f16:701; CHECK:       # %bb.0:702; CHECK-NEXT:    vsetvli a0, zero, e8, m4, ta, ma703; CHECK-NEXT:    vmv4r.v v16, v8704; CHECK-NEXT:    vfwcvt.f.x.v v8, v16705; CHECK-NEXT:    ret706  %evec = call <vscale x 32 x half> @llvm.experimental.constrained.sitofp.nxv32f16.nxv32i8(<vscale x 32 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")707  ret <vscale x 32 x half> %evec708}709 710define <vscale x 32 x half> @vuitofp_nxv32i8_nxv32f16(<vscale x 32 x i8> %va) strictfp {711; CHECK-LABEL: vuitofp_nxv32i8_nxv32f16:712; CHECK:       # %bb.0:713; CHECK-NEXT:    vsetvli a0, zero, e8, m4, ta, ma714; CHECK-NEXT:    vmv4r.v v16, v8715; CHECK-NEXT:    vfwcvt.f.xu.v v8, v16716; CHECK-NEXT:    ret717  %evec = call <vscale x 32 x half> @llvm.experimental.constrained.uitofp.nxv32f16.nxv32i8(<vscale x 32 x i8> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")718  ret <vscale x 32 x half> %evec719}720 721define <vscale x 1 x half> @vsitofp_nxv1i16_nxv1f16(<vscale x 1 x i16> %va) strictfp {722; CHECK-LABEL: vsitofp_nxv1i16_nxv1f16:723; CHECK:       # %bb.0:724; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma725; CHECK-NEXT:    vfcvt.f.x.v v8, v8726; CHECK-NEXT:    ret727  %evec = call <vscale x 1 x half> @llvm.experimental.constrained.sitofp.nxv1f16.nxv1i16(<vscale x 1 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")728  ret <vscale x 1 x half> %evec729}730 731define <vscale x 1 x half> @vuitofp_nxv1i16_nxv1f16(<vscale x 1 x i16> %va) strictfp {732; CHECK-LABEL: vuitofp_nxv1i16_nxv1f16:733; CHECK:       # %bb.0:734; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma735; CHECK-NEXT:    vfcvt.f.xu.v v8, v8736; CHECK-NEXT:    ret737  %evec = call <vscale x 1 x half> @llvm.experimental.constrained.uitofp.nxv1f16.nxv1i16(<vscale x 1 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")738  ret <vscale x 1 x half> %evec739}740 741define <vscale x 1 x float> @vsitofp_nxv1i16_nxv1f32(<vscale x 1 x i16> %va) strictfp {742; CHECK-LABEL: vsitofp_nxv1i16_nxv1f32:743; CHECK:       # %bb.0:744; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma745; CHECK-NEXT:    vfwcvt.f.x.v v9, v8746; CHECK-NEXT:    vmv1r.v v8, v9747; CHECK-NEXT:    ret748  %evec = call <vscale x 1 x float> @llvm.experimental.constrained.sitofp.nxv1f32.nxv1i16(<vscale x 1 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")749  ret <vscale x 1 x float> %evec750}751 752define <vscale x 1 x float> @vuitofp_nxv1i16_nxv1f32(<vscale x 1 x i16> %va) strictfp {753; CHECK-LABEL: vuitofp_nxv1i16_nxv1f32:754; CHECK:       # %bb.0:755; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma756; CHECK-NEXT:    vfwcvt.f.xu.v v9, v8757; CHECK-NEXT:    vmv1r.v v8, v9758; CHECK-NEXT:    ret759  %evec = call <vscale x 1 x float> @llvm.experimental.constrained.uitofp.nxv1f32.nxv1i16(<vscale x 1 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")760  ret <vscale x 1 x float> %evec761}762 763define <vscale x 1 x double> @vsitofp_nxv1i16_nxv1f64(<vscale x 1 x i16> %va) strictfp {764; CHECK-LABEL: vsitofp_nxv1i16_nxv1f64:765; CHECK:       # %bb.0:766; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma767; CHECK-NEXT:    vsext.vf2 v9, v8768; CHECK-NEXT:    vfwcvt.f.x.v v8, v9769; CHECK-NEXT:    ret770  %evec = call <vscale x 1 x double> @llvm.experimental.constrained.sitofp.nxv1f64.nxv1i16(<vscale x 1 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")771  ret <vscale x 1 x double> %evec772}773 774define <vscale x 1 x double> @vuitofp_nxv1i16_nxv1f64(<vscale x 1 x i16> %va) strictfp {775; CHECK-LABEL: vuitofp_nxv1i16_nxv1f64:776; CHECK:       # %bb.0:777; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma778; CHECK-NEXT:    vzext.vf2 v9, v8779; CHECK-NEXT:    vfwcvt.f.xu.v v8, v9780; CHECK-NEXT:    ret781  %evec = call <vscale x 1 x double> @llvm.experimental.constrained.uitofp.nxv1f64.nxv1i16(<vscale x 1 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")782  ret <vscale x 1 x double> %evec783}784 785define <vscale x 2 x half> @vsitofp_nxv2i16_nxv2f16(<vscale x 2 x i16> %va) strictfp {786; CHECK-LABEL: vsitofp_nxv2i16_nxv2f16:787; CHECK:       # %bb.0:788; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma789; CHECK-NEXT:    vfcvt.f.x.v v8, v8790; CHECK-NEXT:    ret791  %evec = call <vscale x 2 x half> @llvm.experimental.constrained.sitofp.nxv2f16.nxv2i16(<vscale x 2 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")792  ret <vscale x 2 x half> %evec793}794 795define <vscale x 2 x half> @vuitofp_nxv2i16_nxv2f16(<vscale x 2 x i16> %va) strictfp {796; CHECK-LABEL: vuitofp_nxv2i16_nxv2f16:797; CHECK:       # %bb.0:798; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma799; CHECK-NEXT:    vfcvt.f.xu.v v8, v8800; CHECK-NEXT:    ret801  %evec = call <vscale x 2 x half> @llvm.experimental.constrained.uitofp.nxv2f16.nxv2i16(<vscale x 2 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")802  ret <vscale x 2 x half> %evec803}804 805define <vscale x 2 x float> @vsitofp_nxv2i16_nxv2f32(<vscale x 2 x i16> %va) strictfp {806; CHECK-LABEL: vsitofp_nxv2i16_nxv2f32:807; CHECK:       # %bb.0:808; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma809; CHECK-NEXT:    vfwcvt.f.x.v v9, v8810; CHECK-NEXT:    vmv1r.v v8, v9811; CHECK-NEXT:    ret812  %evec = call <vscale x 2 x float> @llvm.experimental.constrained.sitofp.nxv2f32.nxv2i16(<vscale x 2 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")813  ret <vscale x 2 x float> %evec814}815 816define <vscale x 2 x float> @vuitofp_nxv2i16_nxv2f32(<vscale x 2 x i16> %va) strictfp {817; CHECK-LABEL: vuitofp_nxv2i16_nxv2f32:818; CHECK:       # %bb.0:819; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma820; CHECK-NEXT:    vfwcvt.f.xu.v v9, v8821; CHECK-NEXT:    vmv1r.v v8, v9822; CHECK-NEXT:    ret823  %evec = call <vscale x 2 x float> @llvm.experimental.constrained.uitofp.nxv2f32.nxv2i16(<vscale x 2 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")824  ret <vscale x 2 x float> %evec825}826 827define <vscale x 2 x double> @vsitofp_nxv2i16_nxv2f64(<vscale x 2 x i16> %va) strictfp {828; CHECK-LABEL: vsitofp_nxv2i16_nxv2f64:829; CHECK:       # %bb.0:830; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma831; CHECK-NEXT:    vsext.vf2 v10, v8832; CHECK-NEXT:    vfwcvt.f.x.v v8, v10833; CHECK-NEXT:    ret834  %evec = call <vscale x 2 x double> @llvm.experimental.constrained.sitofp.nxv2f64.nxv2i16(<vscale x 2 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")835  ret <vscale x 2 x double> %evec836}837 838define <vscale x 2 x double> @vuitofp_nxv2i16_nxv2f64(<vscale x 2 x i16> %va) strictfp {839; CHECK-LABEL: vuitofp_nxv2i16_nxv2f64:840; CHECK:       # %bb.0:841; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma842; CHECK-NEXT:    vzext.vf2 v10, v8843; CHECK-NEXT:    vfwcvt.f.xu.v v8, v10844; CHECK-NEXT:    ret845  %evec = call <vscale x 2 x double> @llvm.experimental.constrained.uitofp.nxv2f64.nxv2i16(<vscale x 2 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")846  ret <vscale x 2 x double> %evec847}848 849define <vscale x 4 x half> @vsitofp_nxv4i16_nxv4f16(<vscale x 4 x i16> %va) strictfp {850; CHECK-LABEL: vsitofp_nxv4i16_nxv4f16:851; CHECK:       # %bb.0:852; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma853; CHECK-NEXT:    vfcvt.f.x.v v8, v8854; CHECK-NEXT:    ret855  %evec = call <vscale x 4 x half> @llvm.experimental.constrained.sitofp.nxv4f16.nxv4i16(<vscale x 4 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")856  ret <vscale x 4 x half> %evec857}858 859define <vscale x 4 x half> @vuitofp_nxv4i16_nxv4f16(<vscale x 4 x i16> %va) strictfp {860; CHECK-LABEL: vuitofp_nxv4i16_nxv4f16:861; CHECK:       # %bb.0:862; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma863; CHECK-NEXT:    vfcvt.f.xu.v v8, v8864; CHECK-NEXT:    ret865  %evec = call <vscale x 4 x half> @llvm.experimental.constrained.uitofp.nxv4f16.nxv4i16(<vscale x 4 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")866  ret <vscale x 4 x half> %evec867}868 869define <vscale x 4 x float> @vsitofp_nxv4i16_nxv4f32(<vscale x 4 x i16> %va) strictfp {870; CHECK-LABEL: vsitofp_nxv4i16_nxv4f32:871; CHECK:       # %bb.0:872; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma873; CHECK-NEXT:    vmv1r.v v10, v8874; CHECK-NEXT:    vfwcvt.f.x.v v8, v10875; CHECK-NEXT:    ret876  %evec = call <vscale x 4 x float> @llvm.experimental.constrained.sitofp.nxv4f32.nxv4i16(<vscale x 4 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")877  ret <vscale x 4 x float> %evec878}879 880define <vscale x 4 x float> @vuitofp_nxv4i16_nxv4f32(<vscale x 4 x i16> %va) strictfp {881; CHECK-LABEL: vuitofp_nxv4i16_nxv4f32:882; CHECK:       # %bb.0:883; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma884; CHECK-NEXT:    vmv1r.v v10, v8885; CHECK-NEXT:    vfwcvt.f.xu.v v8, v10886; CHECK-NEXT:    ret887  %evec = call <vscale x 4 x float> @llvm.experimental.constrained.uitofp.nxv4f32.nxv4i16(<vscale x 4 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")888  ret <vscale x 4 x float> %evec889}890 891define <vscale x 4 x double> @vsitofp_nxv4i16_nxv4f64(<vscale x 4 x i16> %va) strictfp {892; CHECK-LABEL: vsitofp_nxv4i16_nxv4f64:893; CHECK:       # %bb.0:894; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma895; CHECK-NEXT:    vsext.vf2 v12, v8896; CHECK-NEXT:    vfwcvt.f.x.v v8, v12897; CHECK-NEXT:    ret898  %evec = call <vscale x 4 x double> @llvm.experimental.constrained.sitofp.nxv4f64.nxv4i16(<vscale x 4 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")899  ret <vscale x 4 x double> %evec900}901 902define <vscale x 4 x double> @vuitofp_nxv4i16_nxv4f64(<vscale x 4 x i16> %va) strictfp {903; CHECK-LABEL: vuitofp_nxv4i16_nxv4f64:904; CHECK:       # %bb.0:905; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma906; CHECK-NEXT:    vzext.vf2 v12, v8907; CHECK-NEXT:    vfwcvt.f.xu.v v8, v12908; CHECK-NEXT:    ret909  %evec = call <vscale x 4 x double> @llvm.experimental.constrained.uitofp.nxv4f64.nxv4i16(<vscale x 4 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")910  ret <vscale x 4 x double> %evec911}912 913define <vscale x 8 x half> @vsitofp_nxv8i16_nxv8f16(<vscale x 8 x i16> %va) strictfp {914; CHECK-LABEL: vsitofp_nxv8i16_nxv8f16:915; CHECK:       # %bb.0:916; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma917; CHECK-NEXT:    vfcvt.f.x.v v8, v8918; CHECK-NEXT:    ret919  %evec = call <vscale x 8 x half> @llvm.experimental.constrained.sitofp.nxv8f16.nxv8i16(<vscale x 8 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")920  ret <vscale x 8 x half> %evec921}922 923define <vscale x 8 x half> @vuitofp_nxv8i16_nxv8f16(<vscale x 8 x i16> %va) strictfp {924; CHECK-LABEL: vuitofp_nxv8i16_nxv8f16:925; CHECK:       # %bb.0:926; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma927; CHECK-NEXT:    vfcvt.f.xu.v v8, v8928; CHECK-NEXT:    ret929  %evec = call <vscale x 8 x half> @llvm.experimental.constrained.uitofp.nxv8f16.nxv8i16(<vscale x 8 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")930  ret <vscale x 8 x half> %evec931}932 933define <vscale x 8 x float> @vsitofp_nxv8i16_nxv8f32(<vscale x 8 x i16> %va) strictfp {934; CHECK-LABEL: vsitofp_nxv8i16_nxv8f32:935; CHECK:       # %bb.0:936; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma937; CHECK-NEXT:    vmv2r.v v12, v8938; CHECK-NEXT:    vfwcvt.f.x.v v8, v12939; CHECK-NEXT:    ret940  %evec = call <vscale x 8 x float> @llvm.experimental.constrained.sitofp.nxv8f32.nxv8i16(<vscale x 8 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")941  ret <vscale x 8 x float> %evec942}943 944define <vscale x 8 x float> @vuitofp_nxv8i16_nxv8f32(<vscale x 8 x i16> %va) strictfp {945; CHECK-LABEL: vuitofp_nxv8i16_nxv8f32:946; CHECK:       # %bb.0:947; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma948; CHECK-NEXT:    vmv2r.v v12, v8949; CHECK-NEXT:    vfwcvt.f.xu.v v8, v12950; CHECK-NEXT:    ret951  %evec = call <vscale x 8 x float> @llvm.experimental.constrained.uitofp.nxv8f32.nxv8i16(<vscale x 8 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")952  ret <vscale x 8 x float> %evec953}954 955define <vscale x 8 x double> @vsitofp_nxv8i16_nxv8f64(<vscale x 8 x i16> %va) strictfp {956; CHECK-LABEL: vsitofp_nxv8i16_nxv8f64:957; CHECK:       # %bb.0:958; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma959; CHECK-NEXT:    vsext.vf2 v16, v8960; CHECK-NEXT:    vfwcvt.f.x.v v8, v16961; CHECK-NEXT:    ret962  %evec = call <vscale x 8 x double> @llvm.experimental.constrained.sitofp.nxv8f64.nxv8i16(<vscale x 8 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")963  ret <vscale x 8 x double> %evec964}965 966define <vscale x 8 x double> @vuitofp_nxv8i16_nxv8f64(<vscale x 8 x i16> %va) strictfp {967; CHECK-LABEL: vuitofp_nxv8i16_nxv8f64:968; CHECK:       # %bb.0:969; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma970; CHECK-NEXT:    vzext.vf2 v16, v8971; CHECK-NEXT:    vfwcvt.f.xu.v v8, v16972; CHECK-NEXT:    ret973  %evec = call <vscale x 8 x double> @llvm.experimental.constrained.uitofp.nxv8f64.nxv8i16(<vscale x 8 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")974  ret <vscale x 8 x double> %evec975}976 977define <vscale x 16 x half> @vsitofp_nxv16i16_nxv16f16(<vscale x 16 x i16> %va) strictfp {978; CHECK-LABEL: vsitofp_nxv16i16_nxv16f16:979; CHECK:       # %bb.0:980; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma981; CHECK-NEXT:    vfcvt.f.x.v v8, v8982; CHECK-NEXT:    ret983  %evec = call <vscale x 16 x half> @llvm.experimental.constrained.sitofp.nxv16f16.nxv16i16(<vscale x 16 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")984  ret <vscale x 16 x half> %evec985}986 987define <vscale x 16 x half> @vuitofp_nxv16i16_nxv16f16(<vscale x 16 x i16> %va) strictfp {988; CHECK-LABEL: vuitofp_nxv16i16_nxv16f16:989; CHECK:       # %bb.0:990; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma991; CHECK-NEXT:    vfcvt.f.xu.v v8, v8992; CHECK-NEXT:    ret993  %evec = call <vscale x 16 x half> @llvm.experimental.constrained.uitofp.nxv16f16.nxv16i16(<vscale x 16 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")994  ret <vscale x 16 x half> %evec995}996 997define <vscale x 16 x float> @vsitofp_nxv16i16_nxv16f32(<vscale x 16 x i16> %va) strictfp {998; CHECK-LABEL: vsitofp_nxv16i16_nxv16f32:999; CHECK:       # %bb.0:1000; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1001; CHECK-NEXT:    vmv4r.v v16, v81002; CHECK-NEXT:    vfwcvt.f.x.v v8, v161003; CHECK-NEXT:    ret1004  %evec = call <vscale x 16 x float> @llvm.experimental.constrained.sitofp.nxv16f32.nxv16i16(<vscale x 16 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1005  ret <vscale x 16 x float> %evec1006}1007 1008define <vscale x 16 x float> @vuitofp_nxv16i16_nxv16f32(<vscale x 16 x i16> %va) strictfp {1009; CHECK-LABEL: vuitofp_nxv16i16_nxv16f32:1010; CHECK:       # %bb.0:1011; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1012; CHECK-NEXT:    vmv4r.v v16, v81013; CHECK-NEXT:    vfwcvt.f.xu.v v8, v161014; CHECK-NEXT:    ret1015  %evec = call <vscale x 16 x float> @llvm.experimental.constrained.uitofp.nxv16f32.nxv16i16(<vscale x 16 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1016  ret <vscale x 16 x float> %evec1017}1018 1019define <vscale x 32 x half> @vsitofp_nxv32i16_nxv32f16(<vscale x 32 x i16> %va) strictfp {1020; CHECK-LABEL: vsitofp_nxv32i16_nxv32f16:1021; CHECK:       # %bb.0:1022; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma1023; CHECK-NEXT:    vfcvt.f.x.v v8, v81024; CHECK-NEXT:    ret1025  %evec = call <vscale x 32 x half> @llvm.experimental.constrained.sitofp.nxv32f16.nxv32i16(<vscale x 32 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1026  ret <vscale x 32 x half> %evec1027}1028 1029define <vscale x 32 x half> @vuitofp_nxv32i16_nxv32f16(<vscale x 32 x i16> %va) strictfp {1030; CHECK-LABEL: vuitofp_nxv32i16_nxv32f16:1031; CHECK:       # %bb.0:1032; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma1033; CHECK-NEXT:    vfcvt.f.xu.v v8, v81034; CHECK-NEXT:    ret1035  %evec = call <vscale x 32 x half> @llvm.experimental.constrained.uitofp.nxv32f16.nxv32i16(<vscale x 32 x i16> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1036  ret <vscale x 32 x half> %evec1037}1038 1039define <vscale x 1 x half> @vsitofp_nxv1i32_nxv1f16(<vscale x 1 x i32> %va) strictfp {1040; CHECK-LABEL: vsitofp_nxv1i32_nxv1f16:1041; CHECK:       # %bb.0:1042; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma1043; CHECK-NEXT:    vfncvt.f.x.w v9, v81044; CHECK-NEXT:    vmv1r.v v8, v91045; CHECK-NEXT:    ret1046  %evec = call <vscale x 1 x half> @llvm.experimental.constrained.sitofp.nxv1f16.nxv1i32(<vscale x 1 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1047  ret <vscale x 1 x half> %evec1048}1049 1050define <vscale x 1 x half> @vuitofp_nxv1i32_nxv1f16(<vscale x 1 x i32> %va) strictfp {1051; CHECK-LABEL: vuitofp_nxv1i32_nxv1f16:1052; CHECK:       # %bb.0:1053; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma1054; CHECK-NEXT:    vfncvt.f.xu.w v9, v81055; CHECK-NEXT:    vmv1r.v v8, v91056; CHECK-NEXT:    ret1057  %evec = call <vscale x 1 x half> @llvm.experimental.constrained.uitofp.nxv1f16.nxv1i32(<vscale x 1 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1058  ret <vscale x 1 x half> %evec1059}1060 1061define <vscale x 1 x float> @vsitofp_nxv1i32_nxv1f32(<vscale x 1 x i32> %va) strictfp {1062; CHECK-LABEL: vsitofp_nxv1i32_nxv1f32:1063; CHECK:       # %bb.0:1064; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma1065; CHECK-NEXT:    vfcvt.f.x.v v8, v81066; CHECK-NEXT:    ret1067  %evec = call <vscale x 1 x float> @llvm.experimental.constrained.sitofp.nxv1f32.nxv1i32(<vscale x 1 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1068  ret <vscale x 1 x float> %evec1069}1070 1071define <vscale x 1 x float> @vuitofp_nxv1i32_nxv1f32(<vscale x 1 x i32> %va) strictfp {1072; CHECK-LABEL: vuitofp_nxv1i32_nxv1f32:1073; CHECK:       # %bb.0:1074; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma1075; CHECK-NEXT:    vfcvt.f.xu.v v8, v81076; CHECK-NEXT:    ret1077  %evec = call <vscale x 1 x float> @llvm.experimental.constrained.uitofp.nxv1f32.nxv1i32(<vscale x 1 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1078  ret <vscale x 1 x float> %evec1079}1080 1081define <vscale x 1 x double> @vsitofp_nxv1i32_nxv1f64(<vscale x 1 x i32> %va) strictfp {1082; CHECK-LABEL: vsitofp_nxv1i32_nxv1f64:1083; CHECK:       # %bb.0:1084; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma1085; CHECK-NEXT:    vfwcvt.f.x.v v9, v81086; CHECK-NEXT:    vmv1r.v v8, v91087; CHECK-NEXT:    ret1088  %evec = call <vscale x 1 x double> @llvm.experimental.constrained.sitofp.nxv1f64.nxv1i32(<vscale x 1 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1089  ret <vscale x 1 x double> %evec1090}1091 1092define <vscale x 1 x double> @vuitofp_nxv1i32_nxv1f64(<vscale x 1 x i32> %va) strictfp {1093; CHECK-LABEL: vuitofp_nxv1i32_nxv1f64:1094; CHECK:       # %bb.0:1095; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma1096; CHECK-NEXT:    vfwcvt.f.xu.v v9, v81097; CHECK-NEXT:    vmv1r.v v8, v91098; CHECK-NEXT:    ret1099  %evec = call <vscale x 1 x double> @llvm.experimental.constrained.uitofp.nxv1f64.nxv1i32(<vscale x 1 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1100  ret <vscale x 1 x double> %evec1101}1102 1103define <vscale x 2 x half> @vsitofp_nxv2i32_nxv2f16(<vscale x 2 x i32> %va) strictfp {1104; CHECK-LABEL: vsitofp_nxv2i32_nxv2f16:1105; CHECK:       # %bb.0:1106; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1107; CHECK-NEXT:    vfncvt.f.x.w v9, v81108; CHECK-NEXT:    vmv1r.v v8, v91109; CHECK-NEXT:    ret1110  %evec = call <vscale x 2 x half> @llvm.experimental.constrained.sitofp.nxv2f16.nxv2i32(<vscale x 2 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1111  ret <vscale x 2 x half> %evec1112}1113 1114define <vscale x 2 x half> @vuitofp_nxv2i32_nxv2f16(<vscale x 2 x i32> %va) strictfp {1115; CHECK-LABEL: vuitofp_nxv2i32_nxv2f16:1116; CHECK:       # %bb.0:1117; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1118; CHECK-NEXT:    vfncvt.f.xu.w v9, v81119; CHECK-NEXT:    vmv1r.v v8, v91120; CHECK-NEXT:    ret1121  %evec = call <vscale x 2 x half> @llvm.experimental.constrained.uitofp.nxv2f16.nxv2i32(<vscale x 2 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1122  ret <vscale x 2 x half> %evec1123}1124 1125define <vscale x 2 x float> @vsitofp_nxv2i32_nxv2f32(<vscale x 2 x i32> %va) strictfp {1126; CHECK-LABEL: vsitofp_nxv2i32_nxv2f32:1127; CHECK:       # %bb.0:1128; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma1129; CHECK-NEXT:    vfcvt.f.x.v v8, v81130; CHECK-NEXT:    ret1131  %evec = call <vscale x 2 x float> @llvm.experimental.constrained.sitofp.nxv2f32.nxv2i32(<vscale x 2 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1132  ret <vscale x 2 x float> %evec1133}1134 1135define <vscale x 2 x float> @vuitofp_nxv2i32_nxv2f32(<vscale x 2 x i32> %va) strictfp {1136; CHECK-LABEL: vuitofp_nxv2i32_nxv2f32:1137; CHECK:       # %bb.0:1138; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma1139; CHECK-NEXT:    vfcvt.f.xu.v v8, v81140; CHECK-NEXT:    ret1141  %evec = call <vscale x 2 x float> @llvm.experimental.constrained.uitofp.nxv2f32.nxv2i32(<vscale x 2 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1142  ret <vscale x 2 x float> %evec1143}1144 1145define <vscale x 2 x double> @vsitofp_nxv2i32_nxv2f64(<vscale x 2 x i32> %va) strictfp {1146; CHECK-LABEL: vsitofp_nxv2i32_nxv2f64:1147; CHECK:       # %bb.0:1148; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma1149; CHECK-NEXT:    vmv1r.v v10, v81150; CHECK-NEXT:    vfwcvt.f.x.v v8, v101151; CHECK-NEXT:    ret1152  %evec = call <vscale x 2 x double> @llvm.experimental.constrained.sitofp.nxv2f64.nxv2i32(<vscale x 2 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1153  ret <vscale x 2 x double> %evec1154}1155 1156define <vscale x 2 x double> @vuitofp_nxv2i32_nxv2f64(<vscale x 2 x i32> %va) strictfp {1157; CHECK-LABEL: vuitofp_nxv2i32_nxv2f64:1158; CHECK:       # %bb.0:1159; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma1160; CHECK-NEXT:    vmv1r.v v10, v81161; CHECK-NEXT:    vfwcvt.f.xu.v v8, v101162; CHECK-NEXT:    ret1163  %evec = call <vscale x 2 x double> @llvm.experimental.constrained.uitofp.nxv2f64.nxv2i32(<vscale x 2 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1164  ret <vscale x 2 x double> %evec1165}1166 1167define <vscale x 4 x half> @vsitofp_nxv4i32_nxv4f16(<vscale x 4 x i32> %va) strictfp {1168; CHECK-LABEL: vsitofp_nxv4i32_nxv4f16:1169; CHECK:       # %bb.0:1170; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1171; CHECK-NEXT:    vfncvt.f.x.w v10, v81172; CHECK-NEXT:    vmv.v.v v8, v101173; CHECK-NEXT:    ret1174  %evec = call <vscale x 4 x half> @llvm.experimental.constrained.sitofp.nxv4f16.nxv4i32(<vscale x 4 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1175  ret <vscale x 4 x half> %evec1176}1177 1178define <vscale x 4 x half> @vuitofp_nxv4i32_nxv4f16(<vscale x 4 x i32> %va) strictfp {1179; CHECK-LABEL: vuitofp_nxv4i32_nxv4f16:1180; CHECK:       # %bb.0:1181; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1182; CHECK-NEXT:    vfncvt.f.xu.w v10, v81183; CHECK-NEXT:    vmv.v.v v8, v101184; CHECK-NEXT:    ret1185  %evec = call <vscale x 4 x half> @llvm.experimental.constrained.uitofp.nxv4f16.nxv4i32(<vscale x 4 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1186  ret <vscale x 4 x half> %evec1187}1188 1189define <vscale x 4 x float> @vsitofp_nxv4i32_nxv4f32(<vscale x 4 x i32> %va) strictfp {1190; CHECK-LABEL: vsitofp_nxv4i32_nxv4f32:1191; CHECK:       # %bb.0:1192; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma1193; CHECK-NEXT:    vfcvt.f.x.v v8, v81194; CHECK-NEXT:    ret1195  %evec = call <vscale x 4 x float> @llvm.experimental.constrained.sitofp.nxv4f32.nxv4i32(<vscale x 4 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1196  ret <vscale x 4 x float> %evec1197}1198 1199define <vscale x 4 x float> @vuitofp_nxv4i32_nxv4f32(<vscale x 4 x i32> %va) strictfp {1200; CHECK-LABEL: vuitofp_nxv4i32_nxv4f32:1201; CHECK:       # %bb.0:1202; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma1203; CHECK-NEXT:    vfcvt.f.xu.v v8, v81204; CHECK-NEXT:    ret1205  %evec = call <vscale x 4 x float> @llvm.experimental.constrained.uitofp.nxv4f32.nxv4i32(<vscale x 4 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1206  ret <vscale x 4 x float> %evec1207}1208 1209define <vscale x 4 x double> @vsitofp_nxv4i32_nxv4f64(<vscale x 4 x i32> %va) strictfp {1210; CHECK-LABEL: vsitofp_nxv4i32_nxv4f64:1211; CHECK:       # %bb.0:1212; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma1213; CHECK-NEXT:    vmv2r.v v12, v81214; CHECK-NEXT:    vfwcvt.f.x.v v8, v121215; CHECK-NEXT:    ret1216  %evec = call <vscale x 4 x double> @llvm.experimental.constrained.sitofp.nxv4f64.nxv4i32(<vscale x 4 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1217  ret <vscale x 4 x double> %evec1218}1219 1220define <vscale x 4 x double> @vuitofp_nxv4i32_nxv4f64(<vscale x 4 x i32> %va) strictfp {1221; CHECK-LABEL: vuitofp_nxv4i32_nxv4f64:1222; CHECK:       # %bb.0:1223; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma1224; CHECK-NEXT:    vmv2r.v v12, v81225; CHECK-NEXT:    vfwcvt.f.xu.v v8, v121226; CHECK-NEXT:    ret1227  %evec = call <vscale x 4 x double> @llvm.experimental.constrained.uitofp.nxv4f64.nxv4i32(<vscale x 4 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1228  ret <vscale x 4 x double> %evec1229}1230 1231define <vscale x 8 x half> @vsitofp_nxv8i32_nxv8f16(<vscale x 8 x i32> %va) strictfp {1232; CHECK-LABEL: vsitofp_nxv8i32_nxv8f16:1233; CHECK:       # %bb.0:1234; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1235; CHECK-NEXT:    vfncvt.f.x.w v12, v81236; CHECK-NEXT:    vmv.v.v v8, v121237; CHECK-NEXT:    ret1238  %evec = call <vscale x 8 x half> @llvm.experimental.constrained.sitofp.nxv8f16.nxv8i32(<vscale x 8 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1239  ret <vscale x 8 x half> %evec1240}1241 1242define <vscale x 8 x half> @vuitofp_nxv8i32_nxv8f16(<vscale x 8 x i32> %va) strictfp {1243; CHECK-LABEL: vuitofp_nxv8i32_nxv8f16:1244; CHECK:       # %bb.0:1245; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1246; CHECK-NEXT:    vfncvt.f.xu.w v12, v81247; CHECK-NEXT:    vmv.v.v v8, v121248; CHECK-NEXT:    ret1249  %evec = call <vscale x 8 x half> @llvm.experimental.constrained.uitofp.nxv8f16.nxv8i32(<vscale x 8 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1250  ret <vscale x 8 x half> %evec1251}1252 1253define <vscale x 8 x float> @vsitofp_nxv8i32_nxv8f32(<vscale x 8 x i32> %va) strictfp {1254; CHECK-LABEL: vsitofp_nxv8i32_nxv8f32:1255; CHECK:       # %bb.0:1256; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1257; CHECK-NEXT:    vfcvt.f.x.v v8, v81258; CHECK-NEXT:    ret1259  %evec = call <vscale x 8 x float> @llvm.experimental.constrained.sitofp.nxv8f32.nxv8i32(<vscale x 8 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1260  ret <vscale x 8 x float> %evec1261}1262 1263define <vscale x 8 x float> @vuitofp_nxv8i32_nxv8f32(<vscale x 8 x i32> %va) strictfp {1264; CHECK-LABEL: vuitofp_nxv8i32_nxv8f32:1265; CHECK:       # %bb.0:1266; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1267; CHECK-NEXT:    vfcvt.f.xu.v v8, v81268; CHECK-NEXT:    ret1269  %evec = call <vscale x 8 x float> @llvm.experimental.constrained.uitofp.nxv8f32.nxv8i32(<vscale x 8 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1270  ret <vscale x 8 x float> %evec1271}1272 1273define <vscale x 8 x double> @vsitofp_nxv8i32_nxv8f64(<vscale x 8 x i32> %va) strictfp {1274; CHECK-LABEL: vsitofp_nxv8i32_nxv8f64:1275; CHECK:       # %bb.0:1276; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1277; CHECK-NEXT:    vmv4r.v v16, v81278; CHECK-NEXT:    vfwcvt.f.x.v v8, v161279; CHECK-NEXT:    ret1280  %evec = call <vscale x 8 x double> @llvm.experimental.constrained.sitofp.nxv8f64.nxv8i32(<vscale x 8 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1281  ret <vscale x 8 x double> %evec1282}1283 1284define <vscale x 8 x double> @vuitofp_nxv8i32_nxv8f64(<vscale x 8 x i32> %va) strictfp {1285; CHECK-LABEL: vuitofp_nxv8i32_nxv8f64:1286; CHECK:       # %bb.0:1287; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1288; CHECK-NEXT:    vmv4r.v v16, v81289; CHECK-NEXT:    vfwcvt.f.xu.v v8, v161290; CHECK-NEXT:    ret1291  %evec = call <vscale x 8 x double> @llvm.experimental.constrained.uitofp.nxv8f64.nxv8i32(<vscale x 8 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1292  ret <vscale x 8 x double> %evec1293}1294 1295define <vscale x 16 x half> @vsitofp_nxv16i32_nxv16f16(<vscale x 16 x i32> %va) strictfp {1296; CHECK-LABEL: vsitofp_nxv16i32_nxv16f16:1297; CHECK:       # %bb.0:1298; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1299; CHECK-NEXT:    vfncvt.f.x.w v16, v81300; CHECK-NEXT:    vmv.v.v v8, v161301; CHECK-NEXT:    ret1302  %evec = call <vscale x 16 x half> @llvm.experimental.constrained.sitofp.nxv16f16.nxv16i32(<vscale x 16 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1303  ret <vscale x 16 x half> %evec1304}1305 1306define <vscale x 16 x half> @vuitofp_nxv16i32_nxv16f16(<vscale x 16 x i32> %va) strictfp {1307; CHECK-LABEL: vuitofp_nxv16i32_nxv16f16:1308; CHECK:       # %bb.0:1309; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1310; CHECK-NEXT:    vfncvt.f.xu.w v16, v81311; CHECK-NEXT:    vmv.v.v v8, v161312; CHECK-NEXT:    ret1313  %evec = call <vscale x 16 x half> @llvm.experimental.constrained.uitofp.nxv16f16.nxv16i32(<vscale x 16 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1314  ret <vscale x 16 x half> %evec1315}1316 1317define <vscale x 16 x float> @vsitofp_nxv16i32_nxv16f32(<vscale x 16 x i32> %va) strictfp {1318; CHECK-LABEL: vsitofp_nxv16i32_nxv16f32:1319; CHECK:       # %bb.0:1320; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma1321; CHECK-NEXT:    vfcvt.f.x.v v8, v81322; CHECK-NEXT:    ret1323  %evec = call <vscale x 16 x float> @llvm.experimental.constrained.sitofp.nxv16f32.nxv16i32(<vscale x 16 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1324  ret <vscale x 16 x float> %evec1325}1326 1327define <vscale x 16 x float> @vuitofp_nxv16i32_nxv16f32(<vscale x 16 x i32> %va) strictfp {1328; CHECK-LABEL: vuitofp_nxv16i32_nxv16f32:1329; CHECK:       # %bb.0:1330; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma1331; CHECK-NEXT:    vfcvt.f.xu.v v8, v81332; CHECK-NEXT:    ret1333  %evec = call <vscale x 16 x float> @llvm.experimental.constrained.uitofp.nxv16f32.nxv16i32(<vscale x 16 x i32> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1334  ret <vscale x 16 x float> %evec1335}1336 1337define <vscale x 1 x half> @vsitofp_nxv1i64_nxv1f16(<vscale x 1 x i64> %va) strictfp {1338; CHECK-LABEL: vsitofp_nxv1i64_nxv1f16:1339; CHECK:       # %bb.0:1340; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma1341; CHECK-NEXT:    vfncvt.f.x.w v9, v81342; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma1343; CHECK-NEXT:    vfncvt.f.f.w v8, v91344; CHECK-NEXT:    ret1345  %evec = call <vscale x 1 x half> @llvm.experimental.constrained.sitofp.nxv1f16.nxv1i64(<vscale x 1 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1346  ret <vscale x 1 x half> %evec1347}1348 1349define <vscale x 1 x half> @vuitofp_nxv1i64_nxv1f16(<vscale x 1 x i64> %va) strictfp {1350; CHECK-LABEL: vuitofp_nxv1i64_nxv1f16:1351; CHECK:       # %bb.0:1352; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma1353; CHECK-NEXT:    vfncvt.f.xu.w v9, v81354; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma1355; CHECK-NEXT:    vfncvt.f.f.w v8, v91356; CHECK-NEXT:    ret1357  %evec = call <vscale x 1 x half> @llvm.experimental.constrained.uitofp.nxv1f16.nxv1i64(<vscale x 1 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1358  ret <vscale x 1 x half> %evec1359}1360 1361define <vscale x 1 x float> @vsitofp_nxv1i64_nxv1f32(<vscale x 1 x i64> %va) strictfp {1362; CHECK-LABEL: vsitofp_nxv1i64_nxv1f32:1363; CHECK:       # %bb.0:1364; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma1365; CHECK-NEXT:    vfncvt.f.x.w v9, v81366; CHECK-NEXT:    vmv1r.v v8, v91367; CHECK-NEXT:    ret1368  %evec = call <vscale x 1 x float> @llvm.experimental.constrained.sitofp.nxv1f32.nxv1i64(<vscale x 1 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1369  ret <vscale x 1 x float> %evec1370}1371 1372define <vscale x 1 x float> @vuitofp_nxv1i64_nxv1f32(<vscale x 1 x i64> %va) strictfp {1373; CHECK-LABEL: vuitofp_nxv1i64_nxv1f32:1374; CHECK:       # %bb.0:1375; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma1376; CHECK-NEXT:    vfncvt.f.xu.w v9, v81377; CHECK-NEXT:    vmv1r.v v8, v91378; CHECK-NEXT:    ret1379  %evec = call <vscale x 1 x float> @llvm.experimental.constrained.uitofp.nxv1f32.nxv1i64(<vscale x 1 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1380  ret <vscale x 1 x float> %evec1381}1382 1383define <vscale x 1 x double> @vsitofp_nxv1i64_nxv1f64(<vscale x 1 x i64> %va) strictfp {1384; CHECK-LABEL: vsitofp_nxv1i64_nxv1f64:1385; CHECK:       # %bb.0:1386; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma1387; CHECK-NEXT:    vfcvt.f.x.v v8, v81388; CHECK-NEXT:    ret1389  %evec = call <vscale x 1 x double> @llvm.experimental.constrained.sitofp.nxv1f64.nxv1i64(<vscale x 1 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1390  ret <vscale x 1 x double> %evec1391}1392 1393define <vscale x 1 x double> @vuitofp_nxv1i64_nxv1f64(<vscale x 1 x i64> %va) strictfp {1394; CHECK-LABEL: vuitofp_nxv1i64_nxv1f64:1395; CHECK:       # %bb.0:1396; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma1397; CHECK-NEXT:    vfcvt.f.xu.v v8, v81398; CHECK-NEXT:    ret1399  %evec = call <vscale x 1 x double> @llvm.experimental.constrained.uitofp.nxv1f64.nxv1i64(<vscale x 1 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1400  ret <vscale x 1 x double> %evec1401}1402 1403define <vscale x 2 x half> @vsitofp_nxv2i64_nxv2f16(<vscale x 2 x i64> %va) strictfp {1404; CHECK-LABEL: vsitofp_nxv2i64_nxv2f16:1405; CHECK:       # %bb.0:1406; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma1407; CHECK-NEXT:    vfncvt.f.x.w v10, v81408; CHECK-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma1409; CHECK-NEXT:    vfncvt.f.f.w v8, v101410; CHECK-NEXT:    ret1411  %evec = call <vscale x 2 x half> @llvm.experimental.constrained.sitofp.nxv2f16.nxv2i64(<vscale x 2 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1412  ret <vscale x 2 x half> %evec1413}1414 1415define <vscale x 2 x half> @vuitofp_nxv2i64_nxv2f16(<vscale x 2 x i64> %va) strictfp {1416; CHECK-LABEL: vuitofp_nxv2i64_nxv2f16:1417; CHECK:       # %bb.0:1418; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma1419; CHECK-NEXT:    vfncvt.f.xu.w v10, v81420; CHECK-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma1421; CHECK-NEXT:    vfncvt.f.f.w v8, v101422; CHECK-NEXT:    ret1423  %evec = call <vscale x 2 x half> @llvm.experimental.constrained.uitofp.nxv2f16.nxv2i64(<vscale x 2 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1424  ret <vscale x 2 x half> %evec1425}1426 1427define <vscale x 2 x float> @vsitofp_nxv2i64_nxv2f32(<vscale x 2 x i64> %va) strictfp {1428; CHECK-LABEL: vsitofp_nxv2i64_nxv2f32:1429; CHECK:       # %bb.0:1430; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma1431; CHECK-NEXT:    vfncvt.f.x.w v10, v81432; CHECK-NEXT:    vmv.v.v v8, v101433; CHECK-NEXT:    ret1434  %evec = call <vscale x 2 x float> @llvm.experimental.constrained.sitofp.nxv2f32.nxv2i64(<vscale x 2 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1435  ret <vscale x 2 x float> %evec1436}1437 1438define <vscale x 2 x float> @vuitofp_nxv2i64_nxv2f32(<vscale x 2 x i64> %va) strictfp {1439; CHECK-LABEL: vuitofp_nxv2i64_nxv2f32:1440; CHECK:       # %bb.0:1441; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma1442; CHECK-NEXT:    vfncvt.f.xu.w v10, v81443; CHECK-NEXT:    vmv.v.v v8, v101444; CHECK-NEXT:    ret1445  %evec = call <vscale x 2 x float> @llvm.experimental.constrained.uitofp.nxv2f32.nxv2i64(<vscale x 2 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1446  ret <vscale x 2 x float> %evec1447}1448 1449define <vscale x 2 x double> @vsitofp_nxv2i64_nxv2f64(<vscale x 2 x i64> %va) strictfp {1450; CHECK-LABEL: vsitofp_nxv2i64_nxv2f64:1451; CHECK:       # %bb.0:1452; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma1453; CHECK-NEXT:    vfcvt.f.x.v v8, v81454; CHECK-NEXT:    ret1455  %evec = call <vscale x 2 x double> @llvm.experimental.constrained.sitofp.nxv2f64.nxv2i64(<vscale x 2 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1456  ret <vscale x 2 x double> %evec1457}1458 1459define <vscale x 2 x double> @vuitofp_nxv2i64_nxv2f64(<vscale x 2 x i64> %va) strictfp {1460; CHECK-LABEL: vuitofp_nxv2i64_nxv2f64:1461; CHECK:       # %bb.0:1462; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma1463; CHECK-NEXT:    vfcvt.f.xu.v v8, v81464; CHECK-NEXT:    ret1465  %evec = call <vscale x 2 x double> @llvm.experimental.constrained.uitofp.nxv2f64.nxv2i64(<vscale x 2 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1466  ret <vscale x 2 x double> %evec1467}1468 1469define <vscale x 4 x half> @vsitofp_nxv4i64_nxv4f16(<vscale x 4 x i64> %va) strictfp {1470; CHECK-LABEL: vsitofp_nxv4i64_nxv4f16:1471; CHECK:       # %bb.0:1472; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma1473; CHECK-NEXT:    vfncvt.f.x.w v12, v81474; CHECK-NEXT:    vsetvli zero, zero, e16, m1, ta, ma1475; CHECK-NEXT:    vfncvt.f.f.w v8, v121476; CHECK-NEXT:    ret1477  %evec = call <vscale x 4 x half> @llvm.experimental.constrained.sitofp.nxv4f16.nxv4i64(<vscale x 4 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1478  ret <vscale x 4 x half> %evec1479}1480 1481define <vscale x 4 x half> @vuitofp_nxv4i64_nxv4f16(<vscale x 4 x i64> %va) strictfp {1482; CHECK-LABEL: vuitofp_nxv4i64_nxv4f16:1483; CHECK:       # %bb.0:1484; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma1485; CHECK-NEXT:    vfncvt.f.xu.w v12, v81486; CHECK-NEXT:    vsetvli zero, zero, e16, m1, ta, ma1487; CHECK-NEXT:    vfncvt.f.f.w v8, v121488; CHECK-NEXT:    ret1489  %evec = call <vscale x 4 x half> @llvm.experimental.constrained.uitofp.nxv4f16.nxv4i64(<vscale x 4 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1490  ret <vscale x 4 x half> %evec1491}1492 1493define <vscale x 4 x float> @vsitofp_nxv4i64_nxv4f32(<vscale x 4 x i64> %va) strictfp {1494; CHECK-LABEL: vsitofp_nxv4i64_nxv4f32:1495; CHECK:       # %bb.0:1496; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma1497; CHECK-NEXT:    vfncvt.f.x.w v12, v81498; CHECK-NEXT:    vmv.v.v v8, v121499; CHECK-NEXT:    ret1500  %evec = call <vscale x 4 x float> @llvm.experimental.constrained.sitofp.nxv4f32.nxv4i64(<vscale x 4 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1501  ret <vscale x 4 x float> %evec1502}1503 1504define <vscale x 4 x float> @vuitofp_nxv4i64_nxv4f32(<vscale x 4 x i64> %va) strictfp {1505; CHECK-LABEL: vuitofp_nxv4i64_nxv4f32:1506; CHECK:       # %bb.0:1507; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma1508; CHECK-NEXT:    vfncvt.f.xu.w v12, v81509; CHECK-NEXT:    vmv.v.v v8, v121510; CHECK-NEXT:    ret1511  %evec = call <vscale x 4 x float> @llvm.experimental.constrained.uitofp.nxv4f32.nxv4i64(<vscale x 4 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1512  ret <vscale x 4 x float> %evec1513}1514 1515define <vscale x 4 x double> @vsitofp_nxv4i64_nxv4f64(<vscale x 4 x i64> %va) strictfp {1516; CHECK-LABEL: vsitofp_nxv4i64_nxv4f64:1517; CHECK:       # %bb.0:1518; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma1519; CHECK-NEXT:    vfcvt.f.x.v v8, v81520; CHECK-NEXT:    ret1521  %evec = call <vscale x 4 x double> @llvm.experimental.constrained.sitofp.nxv4f64.nxv4i64(<vscale x 4 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1522  ret <vscale x 4 x double> %evec1523}1524 1525define <vscale x 4 x double> @vuitofp_nxv4i64_nxv4f64(<vscale x 4 x i64> %va) strictfp {1526; CHECK-LABEL: vuitofp_nxv4i64_nxv4f64:1527; CHECK:       # %bb.0:1528; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma1529; CHECK-NEXT:    vfcvt.f.xu.v v8, v81530; CHECK-NEXT:    ret1531  %evec = call <vscale x 4 x double> @llvm.experimental.constrained.uitofp.nxv4f64.nxv4i64(<vscale x 4 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1532  ret <vscale x 4 x double> %evec1533}1534 1535define <vscale x 8 x half> @vsitofp_nxv8i64_nxv8f16(<vscale x 8 x i64> %va) strictfp {1536; CHECK-LABEL: vsitofp_nxv8i64_nxv8f16:1537; CHECK:       # %bb.0:1538; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1539; CHECK-NEXT:    vfncvt.f.x.w v16, v81540; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma1541; CHECK-NEXT:    vfncvt.f.f.w v8, v161542; CHECK-NEXT:    ret1543  %evec = call <vscale x 8 x half> @llvm.experimental.constrained.sitofp.nxv8f16.nxv8i64(<vscale x 8 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1544  ret <vscale x 8 x half> %evec1545}1546 1547define <vscale x 8 x half> @vuitofp_nxv8i64_nxv8f16(<vscale x 8 x i64> %va) strictfp {1548; CHECK-LABEL: vuitofp_nxv8i64_nxv8f16:1549; CHECK:       # %bb.0:1550; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1551; CHECK-NEXT:    vfncvt.f.xu.w v16, v81552; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma1553; CHECK-NEXT:    vfncvt.f.f.w v8, v161554; CHECK-NEXT:    ret1555  %evec = call <vscale x 8 x half> @llvm.experimental.constrained.uitofp.nxv8f16.nxv8i64(<vscale x 8 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1556  ret <vscale x 8 x half> %evec1557}1558 1559define <vscale x 8 x float> @vsitofp_nxv8i64_nxv8f32(<vscale x 8 x i64> %va) strictfp {1560; CHECK-LABEL: vsitofp_nxv8i64_nxv8f32:1561; CHECK:       # %bb.0:1562; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1563; CHECK-NEXT:    vfncvt.f.x.w v16, v81564; CHECK-NEXT:    vmv.v.v v8, v161565; CHECK-NEXT:    ret1566  %evec = call <vscale x 8 x float> @llvm.experimental.constrained.sitofp.nxv8f32.nxv8i64(<vscale x 8 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1567  ret <vscale x 8 x float> %evec1568}1569 1570define <vscale x 8 x float> @vuitofp_nxv8i64_nxv8f32(<vscale x 8 x i64> %va) strictfp {1571; CHECK-LABEL: vuitofp_nxv8i64_nxv8f32:1572; CHECK:       # %bb.0:1573; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1574; CHECK-NEXT:    vfncvt.f.xu.w v16, v81575; CHECK-NEXT:    vmv.v.v v8, v161576; CHECK-NEXT:    ret1577  %evec = call <vscale x 8 x float> @llvm.experimental.constrained.uitofp.nxv8f32.nxv8i64(<vscale x 8 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1578  ret <vscale x 8 x float> %evec1579}1580 1581define <vscale x 8 x double> @vsitofp_nxv8i64_nxv8f64(<vscale x 8 x i64> %va) strictfp {1582; CHECK-LABEL: vsitofp_nxv8i64_nxv8f64:1583; CHECK:       # %bb.0:1584; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma1585; CHECK-NEXT:    vfcvt.f.x.v v8, v81586; CHECK-NEXT:    ret1587  %evec = call <vscale x 8 x double> @llvm.experimental.constrained.sitofp.nxv8f64.nxv8i64(<vscale x 8 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1588  ret <vscale x 8 x double> %evec1589}1590 1591define <vscale x 8 x double> @vuitofp_nxv8i64_nxv8f64(<vscale x 8 x i64> %va) strictfp {1592; CHECK-LABEL: vuitofp_nxv8i64_nxv8f64:1593; CHECK:       # %bb.0:1594; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma1595; CHECK-NEXT:    vfcvt.f.xu.v v8, v81596; CHECK-NEXT:    ret1597  %evec = call <vscale x 8 x double> @llvm.experimental.constrained.uitofp.nxv8f64.nxv8i64(<vscale x 8 x i64> %va, metadata !"round.dynamic", metadata !"fpexcept.strict")1598  ret <vscale x 8 x double> %evec1599}1600