brintos

brintos / llvm-project-archived public Read only

0
0
Text · 98.5 KiB · 111fa36 Raw
2792 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfh,+zvfbfmin,+v \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 i1> @vfptosi_nxv1bf16_nxv1i1(<vscale x 1 x bfloat> %va) {16; CHECK-LABEL: vfptosi_nxv1bf16_nxv1i1:17; CHECK:       # %bb.0:18; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma19; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v820; CHECK-NEXT:    vfncvt.rtz.x.f.w v8, v921; CHECK-NEXT:    vand.vi v8, v8, 122; CHECK-NEXT:    vmsne.vi v0, v8, 023; CHECK-NEXT:    ret24  %evec = fptosi <vscale x 1 x bfloat> %va to <vscale x 1 x i1>25  ret <vscale x 1 x i1> %evec26}27 28define <vscale x 1 x i7> @vfptosi_nxv1bf16_nxv1i7(<vscale x 1 x bfloat> %va) {29; CHECK-LABEL: vfptosi_nxv1bf16_nxv1i7:30; CHECK:       # %bb.0:31; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma32; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v833; CHECK-NEXT:    vfncvt.rtz.x.f.w v8, v934; CHECK-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma35; CHECK-NEXT:    vnsrl.wi v8, v8, 036; CHECK-NEXT:    ret37  %evec = fptosi <vscale x 1 x bfloat> %va to <vscale x 1 x i7>38  ret <vscale x 1 x i7> %evec39}40 41define <vscale x 1 x i7> @vfptoui_nxv1bf16_nxv1i7(<vscale x 1 x bfloat> %va) {42; CHECK-LABEL: vfptoui_nxv1bf16_nxv1i7:43; CHECK:       # %bb.0:44; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma45; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v846; CHECK-NEXT:    vfncvt.rtz.x.f.w v8, v947; CHECK-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma48; CHECK-NEXT:    vnsrl.wi v8, v8, 049; CHECK-NEXT:    ret50  %evec = fptoui <vscale x 1 x bfloat> %va to <vscale x 1 x i7>51  ret <vscale x 1 x i7> %evec52}53 54define <vscale x 1 x i1> @vfptoui_nxv1bf16_nxv1i1(<vscale x 1 x bfloat> %va) {55; CHECK-LABEL: vfptoui_nxv1bf16_nxv1i1:56; CHECK:       # %bb.0:57; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma58; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v859; CHECK-NEXT:    vfncvt.rtz.xu.f.w v8, v960; CHECK-NEXT:    vand.vi v8, v8, 161; CHECK-NEXT:    vmsne.vi v0, v8, 062; CHECK-NEXT:    ret63  %evec = fptoui <vscale x 1 x bfloat> %va to <vscale x 1 x i1>64  ret <vscale x 1 x i1> %evec65}66 67define <vscale x 1 x i8> @vfptosi_nxv1bf16_nxv1i8(<vscale x 1 x bfloat> %va) {68; CHECK-LABEL: vfptosi_nxv1bf16_nxv1i8:69; CHECK:       # %bb.0:70; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma71; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v872; CHECK-NEXT:    vfncvt.rtz.x.f.w v8, v973; CHECK-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma74; CHECK-NEXT:    vnsrl.wi v8, v8, 075; CHECK-NEXT:    ret76  %evec = fptosi <vscale x 1 x bfloat> %va to <vscale x 1 x i8>77  ret <vscale x 1 x i8> %evec78}79 80define <vscale x 1 x i8> @vfptoui_nxv1bf16_nxv1i8(<vscale x 1 x bfloat> %va) {81; CHECK-LABEL: vfptoui_nxv1bf16_nxv1i8:82; CHECK:       # %bb.0:83; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma84; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v885; CHECK-NEXT:    vfncvt.rtz.xu.f.w v8, v986; CHECK-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma87; CHECK-NEXT:    vnsrl.wi v8, v8, 088; CHECK-NEXT:    ret89  %evec = fptoui <vscale x 1 x bfloat> %va to <vscale x 1 x i8>90  ret <vscale x 1 x i8> %evec91}92 93define <vscale x 1 x i16> @vfptosi_nxv1bf16_nxv1i16(<vscale x 1 x bfloat> %va) {94; CHECK-LABEL: vfptosi_nxv1bf16_nxv1i16:95; CHECK:       # %bb.0:96; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma97; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v898; CHECK-NEXT:    vfncvt.rtz.x.f.w v8, v999; CHECK-NEXT:    ret100  %evec = fptosi <vscale x 1 x bfloat> %va to <vscale x 1 x i16>101  ret <vscale x 1 x i16> %evec102}103 104define <vscale x 1 x i16> @vfptoui_nxv1bf16_nxv1i16(<vscale x 1 x bfloat> %va) {105; CHECK-LABEL: vfptoui_nxv1bf16_nxv1i16:106; CHECK:       # %bb.0:107; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma108; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v8109; CHECK-NEXT:    vfncvt.rtz.xu.f.w v8, v9110; CHECK-NEXT:    ret111  %evec = fptoui <vscale x 1 x bfloat> %va to <vscale x 1 x i16>112  ret <vscale x 1 x i16> %evec113}114 115define <vscale x 1 x i32> @vfptosi_nxv1bf16_nxv1i32(<vscale x 1 x bfloat> %va) {116; CHECK-LABEL: vfptosi_nxv1bf16_nxv1i32:117; CHECK:       # %bb.0:118; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma119; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v8120; CHECK-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma121; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v9122; CHECK-NEXT:    ret123  %evec = fptosi <vscale x 1 x bfloat> %va to <vscale x 1 x i32>124  ret <vscale x 1 x i32> %evec125}126 127define <vscale x 1 x i32> @vfptoui_nxv1bf16_nxv1i32(<vscale x 1 x bfloat> %va) {128; CHECK-LABEL: vfptoui_nxv1bf16_nxv1i32:129; CHECK:       # %bb.0:130; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma131; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v8132; CHECK-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma133; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v9134; CHECK-NEXT:    ret135  %evec = fptoui <vscale x 1 x bfloat> %va to <vscale x 1 x i32>136  ret <vscale x 1 x i32> %evec137}138 139define <vscale x 1 x i64> @vfptosi_nxv1bf16_nxv1i64(<vscale x 1 x bfloat> %va) {140; CHECK-LABEL: vfptosi_nxv1bf16_nxv1i64:141; CHECK:       # %bb.0:142; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma143; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v8144; CHECK-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma145; CHECK-NEXT:    vfwcvt.rtz.x.f.v v8, v9146; CHECK-NEXT:    ret147  %evec = fptosi <vscale x 1 x bfloat> %va to <vscale x 1 x i64>148  ret <vscale x 1 x i64> %evec149}150 151define <vscale x 1 x i64> @vfptoui_nxv1bf16_nxv1i64(<vscale x 1 x bfloat> %va) {152; CHECK-LABEL: vfptoui_nxv1bf16_nxv1i64:153; CHECK:       # %bb.0:154; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma155; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v8156; CHECK-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma157; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v8, v9158; CHECK-NEXT:    ret159  %evec = fptoui <vscale x 1 x bfloat> %va to <vscale x 1 x i64>160  ret <vscale x 1 x i64> %evec161}162 163define <vscale x 2 x i1> @vfptosi_nxv2bf16_nxv2i1(<vscale x 2 x bfloat> %va) {164; CHECK-LABEL: vfptosi_nxv2bf16_nxv2i1:165; CHECK:       # %bb.0:166; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma167; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v8168; CHECK-NEXT:    vfncvt.rtz.x.f.w v8, v9169; CHECK-NEXT:    vand.vi v8, v8, 1170; CHECK-NEXT:    vmsne.vi v0, v8, 0171; CHECK-NEXT:    ret172  %evec = fptosi <vscale x 2 x bfloat> %va to <vscale x 2 x i1>173  ret <vscale x 2 x i1> %evec174}175 176define <vscale x 2 x i1> @vfptoui_nxv2bf16_nxv2i1(<vscale x 2 x bfloat> %va) {177; CHECK-LABEL: vfptoui_nxv2bf16_nxv2i1:178; CHECK:       # %bb.0:179; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma180; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v8181; CHECK-NEXT:    vfncvt.rtz.xu.f.w v8, v9182; CHECK-NEXT:    vand.vi v8, v8, 1183; CHECK-NEXT:    vmsne.vi v0, v8, 0184; CHECK-NEXT:    ret185  %evec = fptoui <vscale x 2 x bfloat> %va to <vscale x 2 x i1>186  ret <vscale x 2 x i1> %evec187}188 189define <vscale x 2 x i8> @vfptosi_nxv2bf16_nxv2i8(<vscale x 2 x bfloat> %va) {190; CHECK-LABEL: vfptosi_nxv2bf16_nxv2i8:191; CHECK:       # %bb.0:192; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma193; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v8194; CHECK-NEXT:    vfncvt.rtz.x.f.w v8, v9195; CHECK-NEXT:    vsetvli zero, zero, e8, mf4, ta, ma196; CHECK-NEXT:    vnsrl.wi v8, v8, 0197; CHECK-NEXT:    ret198  %evec = fptosi <vscale x 2 x bfloat> %va to <vscale x 2 x i8>199  ret <vscale x 2 x i8> %evec200}201 202define <vscale x 2 x i8> @vfptoui_nxv2bf16_nxv2i8(<vscale x 2 x bfloat> %va) {203; CHECK-LABEL: vfptoui_nxv2bf16_nxv2i8:204; CHECK:       # %bb.0:205; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma206; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v8207; CHECK-NEXT:    vfncvt.rtz.xu.f.w v8, v9208; CHECK-NEXT:    vsetvli zero, zero, e8, mf4, ta, ma209; CHECK-NEXT:    vnsrl.wi v8, v8, 0210; CHECK-NEXT:    ret211  %evec = fptoui <vscale x 2 x bfloat> %va to <vscale x 2 x i8>212  ret <vscale x 2 x i8> %evec213}214 215define <vscale x 2 x i16> @vfptosi_nxv2bf16_nxv2i16(<vscale x 2 x bfloat> %va) {216; CHECK-LABEL: vfptosi_nxv2bf16_nxv2i16:217; CHECK:       # %bb.0:218; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma219; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v8220; CHECK-NEXT:    vfncvt.rtz.x.f.w v8, v9221; CHECK-NEXT:    ret222  %evec = fptosi <vscale x 2 x bfloat> %va to <vscale x 2 x i16>223  ret <vscale x 2 x i16> %evec224}225 226define <vscale x 2 x i16> @vfptoui_nxv2bf16_nxv2i16(<vscale x 2 x bfloat> %va) {227; CHECK-LABEL: vfptoui_nxv2bf16_nxv2i16:228; CHECK:       # %bb.0:229; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma230; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v8231; CHECK-NEXT:    vfncvt.rtz.xu.f.w v8, v9232; CHECK-NEXT:    ret233  %evec = fptoui <vscale x 2 x bfloat> %va to <vscale x 2 x i16>234  ret <vscale x 2 x i16> %evec235}236 237define <vscale x 2 x i32> @vfptosi_nxv2bf16_nxv2i32(<vscale x 2 x bfloat> %va) {238; CHECK-LABEL: vfptosi_nxv2bf16_nxv2i32:239; CHECK:       # %bb.0:240; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma241; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v8242; CHECK-NEXT:    vsetvli zero, zero, e32, m1, ta, ma243; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v9244; CHECK-NEXT:    ret245  %evec = fptosi <vscale x 2 x bfloat> %va to <vscale x 2 x i32>246  ret <vscale x 2 x i32> %evec247}248 249define <vscale x 2 x i32> @vfptoui_nxv2bf16_nxv2i32(<vscale x 2 x bfloat> %va) {250; CHECK-LABEL: vfptoui_nxv2bf16_nxv2i32:251; CHECK:       # %bb.0:252; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma253; CHECK-NEXT:    vfwcvtbf16.f.f.v v9, v8254; CHECK-NEXT:    vsetvli zero, zero, e32, m1, ta, ma255; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v9256; CHECK-NEXT:    ret257  %evec = fptoui <vscale x 2 x bfloat> %va to <vscale x 2 x i32>258  ret <vscale x 2 x i32> %evec259}260 261define <vscale x 2 x i64> @vfptosi_nxv2bf16_nxv2i64(<vscale x 2 x bfloat> %va) {262; CHECK-LABEL: vfptosi_nxv2bf16_nxv2i64:263; CHECK:       # %bb.0:264; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma265; CHECK-NEXT:    vfwcvtbf16.f.f.v v10, v8266; CHECK-NEXT:    vsetvli zero, zero, e32, m1, ta, ma267; CHECK-NEXT:    vfwcvt.rtz.x.f.v v8, v10268; CHECK-NEXT:    ret269  %evec = fptosi <vscale x 2 x bfloat> %va to <vscale x 2 x i64>270  ret <vscale x 2 x i64> %evec271}272 273define <vscale x 2 x i64> @vfptoui_nxv2bf16_nxv2i64(<vscale x 2 x bfloat> %va) {274; CHECK-LABEL: vfptoui_nxv2bf16_nxv2i64:275; CHECK:       # %bb.0:276; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma277; CHECK-NEXT:    vfwcvtbf16.f.f.v v10, v8278; CHECK-NEXT:    vsetvli zero, zero, e32, m1, ta, ma279; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v8, v10280; CHECK-NEXT:    ret281  %evec = fptoui <vscale x 2 x bfloat> %va to <vscale x 2 x i64>282  ret <vscale x 2 x i64> %evec283}284 285define <vscale x 4 x i1> @vfptosi_nxv4bf16_nxv4i1(<vscale x 4 x bfloat> %va) {286; CHECK-LABEL: vfptosi_nxv4bf16_nxv4i1:287; CHECK:       # %bb.0:288; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma289; CHECK-NEXT:    vfwcvtbf16.f.f.v v10, v8290; CHECK-NEXT:    vfncvt.rtz.x.f.w v8, v10291; CHECK-NEXT:    vand.vi v8, v8, 1292; CHECK-NEXT:    vmsne.vi v0, v8, 0293; CHECK-NEXT:    ret294  %evec = fptosi <vscale x 4 x bfloat> %va to <vscale x 4 x i1>295  ret <vscale x 4 x i1> %evec296}297 298define <vscale x 4 x i1> @vfptoui_nxv4bf16_nxv4i1(<vscale x 4 x bfloat> %va) {299; CHECK-LABEL: vfptoui_nxv4bf16_nxv4i1:300; CHECK:       # %bb.0:301; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma302; CHECK-NEXT:    vfwcvtbf16.f.f.v v10, v8303; CHECK-NEXT:    vfncvt.rtz.xu.f.w v8, v10304; CHECK-NEXT:    vand.vi v8, v8, 1305; CHECK-NEXT:    vmsne.vi v0, v8, 0306; CHECK-NEXT:    ret307  %evec = fptoui <vscale x 4 x bfloat> %va to <vscale x 4 x i1>308  ret <vscale x 4 x i1> %evec309}310 311define <vscale x 4 x i8> @vfptosi_nxv4bf16_nxv4i8(<vscale x 4 x bfloat> %va) {312; CHECK-LABEL: vfptosi_nxv4bf16_nxv4i8:313; CHECK:       # %bb.0:314; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma315; CHECK-NEXT:    vfwcvtbf16.f.f.v v10, v8316; CHECK-NEXT:    vfncvt.rtz.x.f.w v8, v10317; CHECK-NEXT:    vsetvli zero, zero, e8, mf2, ta, ma318; CHECK-NEXT:    vnsrl.wi v8, v8, 0319; CHECK-NEXT:    ret320  %evec = fptosi <vscale x 4 x bfloat> %va to <vscale x 4 x i8>321  ret <vscale x 4 x i8> %evec322}323 324define <vscale x 4 x i8> @vfptoui_nxv4bf16_nxv4i8(<vscale x 4 x bfloat> %va) {325; CHECK-LABEL: vfptoui_nxv4bf16_nxv4i8:326; CHECK:       # %bb.0:327; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma328; CHECK-NEXT:    vfwcvtbf16.f.f.v v10, v8329; CHECK-NEXT:    vfncvt.rtz.xu.f.w v8, v10330; CHECK-NEXT:    vsetvli zero, zero, e8, mf2, ta, ma331; CHECK-NEXT:    vnsrl.wi v8, v8, 0332; CHECK-NEXT:    ret333  %evec = fptoui <vscale x 4 x bfloat> %va to <vscale x 4 x i8>334  ret <vscale x 4 x i8> %evec335}336 337define <vscale x 4 x i16> @vfptosi_nxv4bf16_nxv4i16(<vscale x 4 x bfloat> %va) {338; CHECK-LABEL: vfptosi_nxv4bf16_nxv4i16:339; CHECK:       # %bb.0:340; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma341; CHECK-NEXT:    vfwcvtbf16.f.f.v v10, v8342; CHECK-NEXT:    vfncvt.rtz.x.f.w v8, v10343; CHECK-NEXT:    ret344  %evec = fptosi <vscale x 4 x bfloat> %va to <vscale x 4 x i16>345  ret <vscale x 4 x i16> %evec346}347 348define <vscale x 4 x i16> @vfptoui_nxv4bf16_nxv4i16(<vscale x 4 x bfloat> %va) {349; CHECK-LABEL: vfptoui_nxv4bf16_nxv4i16:350; CHECK:       # %bb.0:351; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma352; CHECK-NEXT:    vfwcvtbf16.f.f.v v10, v8353; CHECK-NEXT:    vfncvt.rtz.xu.f.w v8, v10354; CHECK-NEXT:    ret355  %evec = fptoui <vscale x 4 x bfloat> %va to <vscale x 4 x i16>356  ret <vscale x 4 x i16> %evec357}358 359define <vscale x 4 x i32> @vfptosi_nxv4bf16_nxv4i32(<vscale x 4 x bfloat> %va) {360; CHECK-LABEL: vfptosi_nxv4bf16_nxv4i32:361; CHECK:       # %bb.0:362; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma363; CHECK-NEXT:    vfwcvtbf16.f.f.v v10, v8364; CHECK-NEXT:    vsetvli zero, zero, e32, m2, ta, ma365; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v10366; CHECK-NEXT:    ret367  %evec = fptosi <vscale x 4 x bfloat> %va to <vscale x 4 x i32>368  ret <vscale x 4 x i32> %evec369}370 371define <vscale x 4 x i32> @vfptoui_nxv4bf16_nxv4i32(<vscale x 4 x bfloat> %va) {372; CHECK-LABEL: vfptoui_nxv4bf16_nxv4i32:373; CHECK:       # %bb.0:374; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma375; CHECK-NEXT:    vfwcvtbf16.f.f.v v10, v8376; CHECK-NEXT:    vsetvli zero, zero, e32, m2, ta, ma377; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v10378; CHECK-NEXT:    ret379  %evec = fptoui <vscale x 4 x bfloat> %va to <vscale x 4 x i32>380  ret <vscale x 4 x i32> %evec381}382 383define <vscale x 4 x i64> @vfptosi_nxv4bf16_nxv4i64(<vscale x 4 x bfloat> %va) {384; CHECK-LABEL: vfptosi_nxv4bf16_nxv4i64:385; CHECK:       # %bb.0:386; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma387; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v8388; CHECK-NEXT:    vsetvli zero, zero, e32, m2, ta, ma389; CHECK-NEXT:    vfwcvt.rtz.x.f.v v8, v12390; CHECK-NEXT:    ret391  %evec = fptosi <vscale x 4 x bfloat> %va to <vscale x 4 x i64>392  ret <vscale x 4 x i64> %evec393}394 395define <vscale x 4 x i64> @vfptoui_nxv4bf16_nxv4i64(<vscale x 4 x bfloat> %va) {396; CHECK-LABEL: vfptoui_nxv4bf16_nxv4i64:397; CHECK:       # %bb.0:398; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma399; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v8400; CHECK-NEXT:    vsetvli zero, zero, e32, m2, ta, ma401; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v8, v12402; CHECK-NEXT:    ret403  %evec = fptoui <vscale x 4 x bfloat> %va to <vscale x 4 x i64>404  ret <vscale x 4 x i64> %evec405}406 407define <vscale x 8 x i1> @vfptosi_nxv8bf16_nxv8i1(<vscale x 8 x bfloat> %va) {408; CHECK-LABEL: vfptosi_nxv8bf16_nxv8i1:409; CHECK:       # %bb.0:410; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma411; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v8412; CHECK-NEXT:    vfncvt.rtz.x.f.w v8, v12413; CHECK-NEXT:    vand.vi v8, v8, 1414; CHECK-NEXT:    vmsne.vi v0, v8, 0415; CHECK-NEXT:    ret416  %evec = fptosi <vscale x 8 x bfloat> %va to <vscale x 8 x i1>417  ret <vscale x 8 x i1> %evec418}419 420define <vscale x 8 x i1> @vfptoui_nxv8bf16_nxv8i1(<vscale x 8 x bfloat> %va) {421; CHECK-LABEL: vfptoui_nxv8bf16_nxv8i1:422; CHECK:       # %bb.0:423; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma424; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v8425; CHECK-NEXT:    vfncvt.rtz.xu.f.w v8, v12426; CHECK-NEXT:    vand.vi v8, v8, 1427; CHECK-NEXT:    vmsne.vi v0, v8, 0428; CHECK-NEXT:    ret429  %evec = fptoui <vscale x 8 x bfloat> %va to <vscale x 8 x i1>430  ret <vscale x 8 x i1> %evec431}432 433define <vscale x 8 x i8> @vfptosi_nxv8bf16_nxv8i8(<vscale x 8 x bfloat> %va) {434; CHECK-LABEL: vfptosi_nxv8bf16_nxv8i8:435; CHECK:       # %bb.0:436; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma437; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v8438; CHECK-NEXT:    vfncvt.rtz.x.f.w v10, v12439; CHECK-NEXT:    vsetvli zero, zero, e8, m1, ta, ma440; CHECK-NEXT:    vnsrl.wi v8, v10, 0441; CHECK-NEXT:    ret442  %evec = fptosi <vscale x 8 x bfloat> %va to <vscale x 8 x i8>443  ret <vscale x 8 x i8> %evec444}445 446define <vscale x 8 x i8> @vfptoui_nxv8bf16_nxv8i8(<vscale x 8 x bfloat> %va) {447; CHECK-LABEL: vfptoui_nxv8bf16_nxv8i8:448; CHECK:       # %bb.0:449; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma450; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v8451; CHECK-NEXT:    vfncvt.rtz.xu.f.w v10, v12452; CHECK-NEXT:    vsetvli zero, zero, e8, m1, ta, ma453; CHECK-NEXT:    vnsrl.wi v8, v10, 0454; CHECK-NEXT:    ret455  %evec = fptoui <vscale x 8 x bfloat> %va to <vscale x 8 x i8>456  ret <vscale x 8 x i8> %evec457}458 459define <vscale x 8 x i16> @vfptosi_nxv8bf16_nxv8i16(<vscale x 8 x bfloat> %va) {460; CHECK-LABEL: vfptosi_nxv8bf16_nxv8i16:461; CHECK:       # %bb.0:462; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma463; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v8464; CHECK-NEXT:    vfncvt.rtz.x.f.w v8, v12465; CHECK-NEXT:    ret466  %evec = fptosi <vscale x 8 x bfloat> %va to <vscale x 8 x i16>467  ret <vscale x 8 x i16> %evec468}469 470define <vscale x 8 x i16> @vfptoui_nxv8bf16_nxv8i16(<vscale x 8 x bfloat> %va) {471; CHECK-LABEL: vfptoui_nxv8bf16_nxv8i16:472; CHECK:       # %bb.0:473; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma474; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v8475; CHECK-NEXT:    vfncvt.rtz.xu.f.w v8, v12476; CHECK-NEXT:    ret477  %evec = fptoui <vscale x 8 x bfloat> %va to <vscale x 8 x i16>478  ret <vscale x 8 x i16> %evec479}480 481define <vscale x 8 x i32> @vfptosi_nxv8bf16_nxv8i32(<vscale x 8 x bfloat> %va) {482; CHECK-LABEL: vfptosi_nxv8bf16_nxv8i32:483; CHECK:       # %bb.0:484; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma485; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v8486; CHECK-NEXT:    vsetvli zero, zero, e32, m4, ta, ma487; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v12488; CHECK-NEXT:    ret489  %evec = fptosi <vscale x 8 x bfloat> %va to <vscale x 8 x i32>490  ret <vscale x 8 x i32> %evec491}492 493define <vscale x 8 x i32> @vfptoui_nxv8bf16_nxv8i32(<vscale x 8 x bfloat> %va) {494; CHECK-LABEL: vfptoui_nxv8bf16_nxv8i32:495; CHECK:       # %bb.0:496; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma497; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v8498; CHECK-NEXT:    vsetvli zero, zero, e32, m4, ta, ma499; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v12500; CHECK-NEXT:    ret501  %evec = fptoui <vscale x 8 x bfloat> %va to <vscale x 8 x i32>502  ret <vscale x 8 x i32> %evec503}504 505define <vscale x 8 x i64> @vfptosi_nxv8bf16_nxv8i64(<vscale x 8 x bfloat> %va) {506; CHECK-LABEL: vfptosi_nxv8bf16_nxv8i64:507; CHECK:       # %bb.0:508; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma509; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v8510; CHECK-NEXT:    vsetvli zero, zero, e32, m4, ta, ma511; CHECK-NEXT:    vfwcvt.rtz.x.f.v v8, v16512; CHECK-NEXT:    ret513  %evec = fptosi <vscale x 8 x bfloat> %va to <vscale x 8 x i64>514  ret <vscale x 8 x i64> %evec515}516 517define <vscale x 8 x i64> @vfptoui_nxv8bf16_nxv8i64(<vscale x 8 x bfloat> %va) {518; CHECK-LABEL: vfptoui_nxv8bf16_nxv8i64:519; CHECK:       # %bb.0:520; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma521; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v8522; CHECK-NEXT:    vsetvli zero, zero, e32, m4, ta, ma523; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v8, v16524; CHECK-NEXT:    ret525  %evec = fptoui <vscale x 8 x bfloat> %va to <vscale x 8 x i64>526  ret <vscale x 8 x i64> %evec527}528 529define <vscale x 16 x i1> @vfptosi_nxv16bf16_nxv16i1(<vscale x 16 x bfloat> %va) {530; CHECK-LABEL: vfptosi_nxv16bf16_nxv16i1:531; CHECK:       # %bb.0:532; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma533; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v8534; CHECK-NEXT:    vfncvt.rtz.x.f.w v8, v16535; CHECK-NEXT:    vand.vi v8, v8, 1536; CHECK-NEXT:    vmsne.vi v0, v8, 0537; CHECK-NEXT:    ret538  %evec = fptosi <vscale x 16 x bfloat> %va to <vscale x 16 x i1>539  ret <vscale x 16 x i1> %evec540}541 542define <vscale x 16 x i1> @vfptoui_nxv16bf16_nxv16i1(<vscale x 16 x bfloat> %va) {543; CHECK-LABEL: vfptoui_nxv16bf16_nxv16i1:544; CHECK:       # %bb.0:545; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma546; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v8547; CHECK-NEXT:    vfncvt.rtz.xu.f.w v8, v16548; CHECK-NEXT:    vand.vi v8, v8, 1549; CHECK-NEXT:    vmsne.vi v0, v8, 0550; CHECK-NEXT:    ret551  %evec = fptoui <vscale x 16 x bfloat> %va to <vscale x 16 x i1>552  ret <vscale x 16 x i1> %evec553}554 555define <vscale x 16 x i8> @vfptosi_nxv16bf16_nxv16i8(<vscale x 16 x bfloat> %va) {556; CHECK-LABEL: vfptosi_nxv16bf16_nxv16i8:557; CHECK:       # %bb.0:558; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma559; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v8560; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v16561; CHECK-NEXT:    vsetvli zero, zero, e8, m2, ta, ma562; CHECK-NEXT:    vnsrl.wi v8, v12, 0563; CHECK-NEXT:    ret564  %evec = fptosi <vscale x 16 x bfloat> %va to <vscale x 16 x i8>565  ret <vscale x 16 x i8> %evec566}567 568define <vscale x 16 x i8> @vfptoui_nxv16bf16_nxv16i8(<vscale x 16 x bfloat> %va) {569; CHECK-LABEL: vfptoui_nxv16bf16_nxv16i8:570; CHECK:       # %bb.0:571; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma572; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v8573; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v16574; CHECK-NEXT:    vsetvli zero, zero, e8, m2, ta, ma575; CHECK-NEXT:    vnsrl.wi v8, v12, 0576; CHECK-NEXT:    ret577  %evec = fptoui <vscale x 16 x bfloat> %va to <vscale x 16 x i8>578  ret <vscale x 16 x i8> %evec579}580 581define <vscale x 16 x i16> @vfptosi_nxv16bf16_nxv16i16(<vscale x 16 x bfloat> %va) {582; CHECK-LABEL: vfptosi_nxv16bf16_nxv16i16:583; CHECK:       # %bb.0:584; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma585; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v8586; CHECK-NEXT:    vfncvt.rtz.x.f.w v8, v16587; CHECK-NEXT:    ret588  %evec = fptosi <vscale x 16 x bfloat> %va to <vscale x 16 x i16>589  ret <vscale x 16 x i16> %evec590}591 592define <vscale x 16 x i16> @vfptoui_nxv16bf16_nxv16i16(<vscale x 16 x bfloat> %va) {593; CHECK-LABEL: vfptoui_nxv16bf16_nxv16i16:594; CHECK:       # %bb.0:595; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma596; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v8597; CHECK-NEXT:    vfncvt.rtz.xu.f.w v8, v16598; CHECK-NEXT:    ret599  %evec = fptoui <vscale x 16 x bfloat> %va to <vscale x 16 x i16>600  ret <vscale x 16 x i16> %evec601}602 603define <vscale x 16 x i32> @vfptosi_nxv16bf16_nxv16i32(<vscale x 16 x bfloat> %va) {604; CHECK-LABEL: vfptosi_nxv16bf16_nxv16i32:605; CHECK:       # %bb.0:606; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma607; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v8608; CHECK-NEXT:    vsetvli zero, zero, e32, m8, ta, ma609; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v16610; CHECK-NEXT:    ret611  %evec = fptosi <vscale x 16 x bfloat> %va to <vscale x 16 x i32>612  ret <vscale x 16 x i32> %evec613}614 615define <vscale x 16 x i32> @vfptoui_nxv16bf16_nxv16i32(<vscale x 16 x bfloat> %va) {616; CHECK-LABEL: vfptoui_nxv16bf16_nxv16i32:617; CHECK:       # %bb.0:618; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma619; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v8620; CHECK-NEXT:    vsetvli zero, zero, e32, m8, ta, ma621; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v16622; CHECK-NEXT:    ret623  %evec = fptoui <vscale x 16 x bfloat> %va to <vscale x 16 x i32>624  ret <vscale x 16 x i32> %evec625}626 627define <vscale x 32 x i1> @vfptosi_nxv32bf16_nxv32i1(<vscale x 32 x bfloat> %va) {628; CHECK-LABEL: vfptosi_nxv32bf16_nxv32i1:629; CHECK:       # %bb.0:630; CHECK-NEXT:    csrr a0, vlenb631; CHECK-NEXT:    vsetvli a1, zero, e16, m4, ta, ma632; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v12633; CHECK-NEXT:    vfwcvtbf16.f.f.v v24, v8634; CHECK-NEXT:    srli a0, a0, 2635; CHECK-NEXT:    vfncvt.rtz.x.f.w v8, v16636; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v24637; CHECK-NEXT:    vand.vi v8, v8, 1638; CHECK-NEXT:    vand.vi v12, v12, 1639; CHECK-NEXT:    vmsne.vi v16, v8, 0640; CHECK-NEXT:    vmsne.vi v0, v12, 0641; CHECK-NEXT:    vsetvli a1, zero, e8, mf2, ta, ma642; CHECK-NEXT:    vslideup.vx v0, v16, a0643; CHECK-NEXT:    ret644  %evec = fptosi <vscale x 32 x bfloat> %va to <vscale x 32 x i1>645  ret <vscale x 32 x i1> %evec646}647 648define <vscale x 32 x i1> @vfptoui_nxv32bf16_nxv32i1(<vscale x 32 x bfloat> %va) {649; CHECK-LABEL: vfptoui_nxv32bf16_nxv32i1:650; CHECK:       # %bb.0:651; CHECK-NEXT:    csrr a0, vlenb652; CHECK-NEXT:    vsetvli a1, zero, e16, m4, ta, ma653; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v12654; CHECK-NEXT:    vfwcvtbf16.f.f.v v24, v8655; CHECK-NEXT:    srli a0, a0, 2656; CHECK-NEXT:    vfncvt.rtz.xu.f.w v8, v16657; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v24658; CHECK-NEXT:    vand.vi v8, v8, 1659; CHECK-NEXT:    vand.vi v12, v12, 1660; CHECK-NEXT:    vmsne.vi v16, v8, 0661; CHECK-NEXT:    vmsne.vi v0, v12, 0662; CHECK-NEXT:    vsetvli a1, zero, e8, mf2, ta, ma663; CHECK-NEXT:    vslideup.vx v0, v16, a0664; CHECK-NEXT:    ret665  %evec = fptoui <vscale x 32 x bfloat> %va to <vscale x 32 x i1>666  ret <vscale x 32 x i1> %evec667}668 669define <vscale x 32 x i8> @vfptosi_nxv32bf16_nxv32i8(<vscale x 32 x bfloat> %va) {670; CHECK-LABEL: vfptosi_nxv32bf16_nxv32i8:671; CHECK:       # %bb.0:672; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma673; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v8674; CHECK-NEXT:    vfwcvtbf16.f.f.v v24, v12675; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v16676; CHECK-NEXT:    vsetvli zero, zero, e8, m2, ta, ma677; CHECK-NEXT:    vnsrl.wi v8, v12, 0678; CHECK-NEXT:    vsetvli zero, zero, e16, m4, ta, ma679; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v24680; CHECK-NEXT:    vsetvli zero, zero, e8, m2, ta, ma681; CHECK-NEXT:    vnsrl.wi v10, v12, 0682; CHECK-NEXT:    ret683  %evec = fptosi <vscale x 32 x bfloat> %va to <vscale x 32 x i8>684  ret <vscale x 32 x i8> %evec685}686 687define <vscale x 32 x i8> @vfptoui_nxv32bf16_nxv32i8(<vscale x 32 x bfloat> %va) {688; CHECK-LABEL: vfptoui_nxv32bf16_nxv32i8:689; CHECK:       # %bb.0:690; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma691; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v8692; CHECK-NEXT:    vfwcvtbf16.f.f.v v24, v12693; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v16694; CHECK-NEXT:    vsetvli zero, zero, e8, m2, ta, ma695; CHECK-NEXT:    vnsrl.wi v8, v12, 0696; CHECK-NEXT:    vsetvli zero, zero, e16, m4, ta, ma697; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v24698; CHECK-NEXT:    vsetvli zero, zero, e8, m2, ta, ma699; CHECK-NEXT:    vnsrl.wi v10, v12, 0700; CHECK-NEXT:    ret701  %evec = fptoui <vscale x 32 x bfloat> %va to <vscale x 32 x i8>702  ret <vscale x 32 x i8> %evec703}704 705define <vscale x 32 x i16> @vfptosi_nxv32bf16_nxv32i16(<vscale x 32 x bfloat> %va) {706; CHECK-LABEL: vfptosi_nxv32bf16_nxv32i16:707; CHECK:       # %bb.0:708; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma709; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v8710; CHECK-NEXT:    vfncvt.rtz.x.f.w v8, v16711; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v12712; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v16713; CHECK-NEXT:    ret714  %evec = fptosi <vscale x 32 x bfloat> %va to <vscale x 32 x i16>715  ret <vscale x 32 x i16> %evec716}717 718define <vscale x 32 x i16> @vfptoui_nxv32bf16_nxv32i16(<vscale x 32 x bfloat> %va) {719; CHECK-LABEL: vfptoui_nxv32bf16_nxv32i16:720; CHECK:       # %bb.0:721; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma722; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v8723; CHECK-NEXT:    vfncvt.rtz.xu.f.w v8, v16724; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v12725; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v16726; CHECK-NEXT:    ret727  %evec = fptoui <vscale x 32 x bfloat> %va to <vscale x 32 x i16>728  ret <vscale x 32 x i16> %evec729}730 731define <vscale x 1 x i1> @vfptosi_nxv1f16_nxv1i1(<vscale x 1 x half> %va) {732; ZVFH-LABEL: vfptosi_nxv1f16_nxv1i1:733; ZVFH:       # %bb.0:734; ZVFH-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma735; ZVFH-NEXT:    vfncvt.rtz.x.f.w v9, v8736; ZVFH-NEXT:    vand.vi v8, v9, 1737; ZVFH-NEXT:    vmsne.vi v0, v8, 0738; ZVFH-NEXT:    ret739;740; ZVFHMIN-LABEL: vfptosi_nxv1f16_nxv1i1:741; ZVFHMIN:       # %bb.0:742; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma743; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8744; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v8, v9745; ZVFHMIN-NEXT:    vand.vi v8, v8, 1746; ZVFHMIN-NEXT:    vmsne.vi v0, v8, 0747; ZVFHMIN-NEXT:    ret748  %evec = fptosi <vscale x 1 x half> %va to <vscale x 1 x i1>749  ret <vscale x 1 x i1> %evec750}751 752define <vscale x 1 x i7> @vfptosi_nxv1f16_nxv1i7(<vscale x 1 x half> %va) {753; ZVFH-LABEL: vfptosi_nxv1f16_nxv1i7:754; ZVFH:       # %bb.0:755; ZVFH-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma756; ZVFH-NEXT:    vfncvt.rtz.x.f.w v9, v8757; ZVFH-NEXT:    vmv1r.v v8, v9758; ZVFH-NEXT:    ret759;760; ZVFHMIN-LABEL: vfptosi_nxv1f16_nxv1i7:761; ZVFHMIN:       # %bb.0:762; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma763; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8764; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v8, v9765; ZVFHMIN-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma766; ZVFHMIN-NEXT:    vnsrl.wi v8, v8, 0767; ZVFHMIN-NEXT:    ret768  %evec = fptosi <vscale x 1 x half> %va to <vscale x 1 x i7>769  ret <vscale x 1 x i7> %evec770}771 772define <vscale x 1 x i7> @vfptoui_nxv1f16_nxv1i7(<vscale x 1 x half> %va) {773; ZVFH-LABEL: vfptoui_nxv1f16_nxv1i7:774; ZVFH:       # %bb.0:775; ZVFH-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma776; ZVFH-NEXT:    vfncvt.rtz.x.f.w v9, v8777; ZVFH-NEXT:    vmv1r.v v8, v9778; ZVFH-NEXT:    ret779;780; ZVFHMIN-LABEL: vfptoui_nxv1f16_nxv1i7:781; ZVFHMIN:       # %bb.0:782; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma783; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8784; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v8, v9785; ZVFHMIN-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma786; ZVFHMIN-NEXT:    vnsrl.wi v8, v8, 0787; ZVFHMIN-NEXT:    ret788  %evec = fptoui <vscale x 1 x half> %va to <vscale x 1 x i7>789  ret <vscale x 1 x i7> %evec790}791 792define <vscale x 1 x i1> @vfptoui_nxv1f16_nxv1i1(<vscale x 1 x half> %va) {793; ZVFH-LABEL: vfptoui_nxv1f16_nxv1i1:794; ZVFH:       # %bb.0:795; ZVFH-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma796; ZVFH-NEXT:    vfncvt.rtz.xu.f.w v9, v8797; ZVFH-NEXT:    vand.vi v8, v9, 1798; ZVFH-NEXT:    vmsne.vi v0, v8, 0799; ZVFH-NEXT:    ret800;801; ZVFHMIN-LABEL: vfptoui_nxv1f16_nxv1i1:802; ZVFHMIN:       # %bb.0:803; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma804; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8805; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v8, v9806; ZVFHMIN-NEXT:    vand.vi v8, v8, 1807; ZVFHMIN-NEXT:    vmsne.vi v0, v8, 0808; ZVFHMIN-NEXT:    ret809  %evec = fptoui <vscale x 1 x half> %va to <vscale x 1 x i1>810  ret <vscale x 1 x i1> %evec811}812 813define <vscale x 1 x i8> @vfptosi_nxv1f16_nxv1i8(<vscale x 1 x half> %va) {814; ZVFH-LABEL: vfptosi_nxv1f16_nxv1i8:815; ZVFH:       # %bb.0:816; ZVFH-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma817; ZVFH-NEXT:    vfncvt.rtz.x.f.w v9, v8818; ZVFH-NEXT:    vmv1r.v v8, v9819; ZVFH-NEXT:    ret820;821; ZVFHMIN-LABEL: vfptosi_nxv1f16_nxv1i8:822; ZVFHMIN:       # %bb.0:823; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma824; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8825; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v8, v9826; ZVFHMIN-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma827; ZVFHMIN-NEXT:    vnsrl.wi v8, v8, 0828; ZVFHMIN-NEXT:    ret829  %evec = fptosi <vscale x 1 x half> %va to <vscale x 1 x i8>830  ret <vscale x 1 x i8> %evec831}832 833define <vscale x 1 x i8> @vfptoui_nxv1f16_nxv1i8(<vscale x 1 x half> %va) {834; ZVFH-LABEL: vfptoui_nxv1f16_nxv1i8:835; ZVFH:       # %bb.0:836; ZVFH-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma837; ZVFH-NEXT:    vfncvt.rtz.xu.f.w v9, v8838; ZVFH-NEXT:    vmv1r.v v8, v9839; ZVFH-NEXT:    ret840;841; ZVFHMIN-LABEL: vfptoui_nxv1f16_nxv1i8:842; ZVFHMIN:       # %bb.0:843; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma844; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8845; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v8, v9846; ZVFHMIN-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma847; ZVFHMIN-NEXT:    vnsrl.wi v8, v8, 0848; ZVFHMIN-NEXT:    ret849  %evec = fptoui <vscale x 1 x half> %va to <vscale x 1 x i8>850  ret <vscale x 1 x i8> %evec851}852 853define <vscale x 1 x i16> @vfptosi_nxv1f16_nxv1i16(<vscale x 1 x half> %va) {854; ZVFH-LABEL: vfptosi_nxv1f16_nxv1i16:855; ZVFH:       # %bb.0:856; ZVFH-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma857; ZVFH-NEXT:    vfcvt.rtz.x.f.v v8, v8858; ZVFH-NEXT:    ret859;860; ZVFHMIN-LABEL: vfptosi_nxv1f16_nxv1i16:861; ZVFHMIN:       # %bb.0:862; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma863; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8864; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v8, v9865; ZVFHMIN-NEXT:    ret866  %evec = fptosi <vscale x 1 x half> %va to <vscale x 1 x i16>867  ret <vscale x 1 x i16> %evec868}869 870define <vscale x 1 x i16> @vfptoui_nxv1f16_nxv1i16(<vscale x 1 x half> %va) {871; ZVFH-LABEL: vfptoui_nxv1f16_nxv1i16:872; ZVFH:       # %bb.0:873; ZVFH-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma874; ZVFH-NEXT:    vfcvt.rtz.xu.f.v v8, v8875; ZVFH-NEXT:    ret876;877; ZVFHMIN-LABEL: vfptoui_nxv1f16_nxv1i16:878; ZVFHMIN:       # %bb.0:879; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma880; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8881; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v8, v9882; ZVFHMIN-NEXT:    ret883  %evec = fptoui <vscale x 1 x half> %va to <vscale x 1 x i16>884  ret <vscale x 1 x i16> %evec885}886 887define <vscale x 1 x i32> @vfptosi_nxv1f16_nxv1i32(<vscale x 1 x half> %va) {888; ZVFH-LABEL: vfptosi_nxv1f16_nxv1i32:889; ZVFH:       # %bb.0:890; ZVFH-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma891; ZVFH-NEXT:    vfwcvt.rtz.x.f.v v9, v8892; ZVFH-NEXT:    vmv1r.v v8, v9893; ZVFH-NEXT:    ret894;895; ZVFHMIN-LABEL: vfptosi_nxv1f16_nxv1i32:896; ZVFHMIN:       # %bb.0:897; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma898; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8899; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma900; ZVFHMIN-NEXT:    vfcvt.rtz.x.f.v v8, v9901; ZVFHMIN-NEXT:    ret902  %evec = fptosi <vscale x 1 x half> %va to <vscale x 1 x i32>903  ret <vscale x 1 x i32> %evec904}905 906define <vscale x 1 x i32> @vfptoui_nxv1f16_nxv1i32(<vscale x 1 x half> %va) {907; ZVFH-LABEL: vfptoui_nxv1f16_nxv1i32:908; ZVFH:       # %bb.0:909; ZVFH-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma910; ZVFH-NEXT:    vfwcvt.rtz.xu.f.v v9, v8911; ZVFH-NEXT:    vmv1r.v v8, v9912; ZVFH-NEXT:    ret913;914; ZVFHMIN-LABEL: vfptoui_nxv1f16_nxv1i32:915; ZVFHMIN:       # %bb.0:916; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma917; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8918; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma919; ZVFHMIN-NEXT:    vfcvt.rtz.xu.f.v v8, v9920; ZVFHMIN-NEXT:    ret921  %evec = fptoui <vscale x 1 x half> %va to <vscale x 1 x i32>922  ret <vscale x 1 x i32> %evec923}924 925define <vscale x 1 x i64> @vfptosi_nxv1f16_nxv1i64(<vscale x 1 x half> %va) {926; CHECK-LABEL: vfptosi_nxv1f16_nxv1i64:927; CHECK:       # %bb.0:928; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma929; CHECK-NEXT:    vfwcvt.f.f.v v9, v8930; CHECK-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma931; CHECK-NEXT:    vfwcvt.rtz.x.f.v v8, v9932; CHECK-NEXT:    ret933  %evec = fptosi <vscale x 1 x half> %va to <vscale x 1 x i64>934  ret <vscale x 1 x i64> %evec935}936 937define <vscale x 1 x i64> @vfptoui_nxv1f16_nxv1i64(<vscale x 1 x half> %va) {938; CHECK-LABEL: vfptoui_nxv1f16_nxv1i64:939; CHECK:       # %bb.0:940; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma941; CHECK-NEXT:    vfwcvt.f.f.v v9, v8942; CHECK-NEXT:    vsetvli zero, zero, e32, mf2, ta, ma943; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v8, v9944; CHECK-NEXT:    ret945  %evec = fptoui <vscale x 1 x half> %va to <vscale x 1 x i64>946  ret <vscale x 1 x i64> %evec947}948 949define <vscale x 2 x i1> @vfptosi_nxv2f16_nxv2i1(<vscale x 2 x half> %va) {950; ZVFH-LABEL: vfptosi_nxv2f16_nxv2i1:951; ZVFH:       # %bb.0:952; ZVFH-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma953; ZVFH-NEXT:    vfncvt.rtz.x.f.w v9, v8954; ZVFH-NEXT:    vand.vi v8, v9, 1955; ZVFH-NEXT:    vmsne.vi v0, v8, 0956; ZVFH-NEXT:    ret957;958; ZVFHMIN-LABEL: vfptosi_nxv2f16_nxv2i1:959; ZVFHMIN:       # %bb.0:960; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma961; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8962; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v8, v9963; ZVFHMIN-NEXT:    vand.vi v8, v8, 1964; ZVFHMIN-NEXT:    vmsne.vi v0, v8, 0965; ZVFHMIN-NEXT:    ret966  %evec = fptosi <vscale x 2 x half> %va to <vscale x 2 x i1>967  ret <vscale x 2 x i1> %evec968}969 970define <vscale x 2 x i1> @vfptoui_nxv2f16_nxv2i1(<vscale x 2 x half> %va) {971; ZVFH-LABEL: vfptoui_nxv2f16_nxv2i1:972; ZVFH:       # %bb.0:973; ZVFH-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma974; ZVFH-NEXT:    vfncvt.rtz.xu.f.w v9, v8975; ZVFH-NEXT:    vand.vi v8, v9, 1976; ZVFH-NEXT:    vmsne.vi v0, v8, 0977; ZVFH-NEXT:    ret978;979; ZVFHMIN-LABEL: vfptoui_nxv2f16_nxv2i1:980; ZVFHMIN:       # %bb.0:981; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma982; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8983; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v8, v9984; ZVFHMIN-NEXT:    vand.vi v8, v8, 1985; ZVFHMIN-NEXT:    vmsne.vi v0, v8, 0986; ZVFHMIN-NEXT:    ret987  %evec = fptoui <vscale x 2 x half> %va to <vscale x 2 x i1>988  ret <vscale x 2 x i1> %evec989}990 991define <vscale x 2 x i8> @vfptosi_nxv2f16_nxv2i8(<vscale x 2 x half> %va) {992; ZVFH-LABEL: vfptosi_nxv2f16_nxv2i8:993; ZVFH:       # %bb.0:994; ZVFH-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma995; ZVFH-NEXT:    vfncvt.rtz.x.f.w v9, v8996; ZVFH-NEXT:    vmv1r.v v8, v9997; ZVFH-NEXT:    ret998;999; ZVFHMIN-LABEL: vfptosi_nxv2f16_nxv2i8:1000; ZVFHMIN:       # %bb.0:1001; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1002; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v81003; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v8, v91004; ZVFHMIN-NEXT:    vsetvli zero, zero, e8, mf4, ta, ma1005; ZVFHMIN-NEXT:    vnsrl.wi v8, v8, 01006; ZVFHMIN-NEXT:    ret1007  %evec = fptosi <vscale x 2 x half> %va to <vscale x 2 x i8>1008  ret <vscale x 2 x i8> %evec1009}1010 1011define <vscale x 2 x i8> @vfptoui_nxv2f16_nxv2i8(<vscale x 2 x half> %va) {1012; ZVFH-LABEL: vfptoui_nxv2f16_nxv2i8:1013; ZVFH:       # %bb.0:1014; ZVFH-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma1015; ZVFH-NEXT:    vfncvt.rtz.xu.f.w v9, v81016; ZVFH-NEXT:    vmv1r.v v8, v91017; ZVFH-NEXT:    ret1018;1019; ZVFHMIN-LABEL: vfptoui_nxv2f16_nxv2i8:1020; ZVFHMIN:       # %bb.0:1021; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1022; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v81023; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v8, v91024; ZVFHMIN-NEXT:    vsetvli zero, zero, e8, mf4, ta, ma1025; ZVFHMIN-NEXT:    vnsrl.wi v8, v8, 01026; ZVFHMIN-NEXT:    ret1027  %evec = fptoui <vscale x 2 x half> %va to <vscale x 2 x i8>1028  ret <vscale x 2 x i8> %evec1029}1030 1031define <vscale x 2 x i16> @vfptosi_nxv2f16_nxv2i16(<vscale x 2 x half> %va) {1032; ZVFH-LABEL: vfptosi_nxv2f16_nxv2i16:1033; ZVFH:       # %bb.0:1034; ZVFH-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1035; ZVFH-NEXT:    vfcvt.rtz.x.f.v v8, v81036; ZVFH-NEXT:    ret1037;1038; ZVFHMIN-LABEL: vfptosi_nxv2f16_nxv2i16:1039; ZVFHMIN:       # %bb.0:1040; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1041; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v81042; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v8, v91043; ZVFHMIN-NEXT:    ret1044  %evec = fptosi <vscale x 2 x half> %va to <vscale x 2 x i16>1045  ret <vscale x 2 x i16> %evec1046}1047 1048define <vscale x 2 x i16> @vfptoui_nxv2f16_nxv2i16(<vscale x 2 x half> %va) {1049; ZVFH-LABEL: vfptoui_nxv2f16_nxv2i16:1050; ZVFH:       # %bb.0:1051; ZVFH-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1052; ZVFH-NEXT:    vfcvt.rtz.xu.f.v v8, v81053; ZVFH-NEXT:    ret1054;1055; ZVFHMIN-LABEL: vfptoui_nxv2f16_nxv2i16:1056; ZVFHMIN:       # %bb.0:1057; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1058; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v81059; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v8, v91060; ZVFHMIN-NEXT:    ret1061  %evec = fptoui <vscale x 2 x half> %va to <vscale x 2 x i16>1062  ret <vscale x 2 x i16> %evec1063}1064 1065define <vscale x 2 x i32> @vfptosi_nxv2f16_nxv2i32(<vscale x 2 x half> %va) {1066; ZVFH-LABEL: vfptosi_nxv2f16_nxv2i32:1067; ZVFH:       # %bb.0:1068; ZVFH-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1069; ZVFH-NEXT:    vfwcvt.rtz.x.f.v v9, v81070; ZVFH-NEXT:    vmv1r.v v8, v91071; ZVFH-NEXT:    ret1072;1073; ZVFHMIN-LABEL: vfptosi_nxv2f16_nxv2i32:1074; ZVFHMIN:       # %bb.0:1075; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1076; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v81077; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m1, ta, ma1078; ZVFHMIN-NEXT:    vfcvt.rtz.x.f.v v8, v91079; ZVFHMIN-NEXT:    ret1080  %evec = fptosi <vscale x 2 x half> %va to <vscale x 2 x i32>1081  ret <vscale x 2 x i32> %evec1082}1083 1084define <vscale x 2 x i32> @vfptoui_nxv2f16_nxv2i32(<vscale x 2 x half> %va) {1085; ZVFH-LABEL: vfptoui_nxv2f16_nxv2i32:1086; ZVFH:       # %bb.0:1087; ZVFH-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1088; ZVFH-NEXT:    vfwcvt.rtz.xu.f.v v9, v81089; ZVFH-NEXT:    vmv1r.v v8, v91090; ZVFH-NEXT:    ret1091;1092; ZVFHMIN-LABEL: vfptoui_nxv2f16_nxv2i32:1093; ZVFHMIN:       # %bb.0:1094; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1095; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v81096; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m1, ta, ma1097; ZVFHMIN-NEXT:    vfcvt.rtz.xu.f.v v8, v91098; ZVFHMIN-NEXT:    ret1099  %evec = fptoui <vscale x 2 x half> %va to <vscale x 2 x i32>1100  ret <vscale x 2 x i32> %evec1101}1102 1103define <vscale x 2 x i64> @vfptosi_nxv2f16_nxv2i64(<vscale x 2 x half> %va) {1104; CHECK-LABEL: vfptosi_nxv2f16_nxv2i64:1105; CHECK:       # %bb.0:1106; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1107; CHECK-NEXT:    vfwcvt.f.f.v v10, v81108; CHECK-NEXT:    vsetvli zero, zero, e32, m1, ta, ma1109; CHECK-NEXT:    vfwcvt.rtz.x.f.v v8, v101110; CHECK-NEXT:    ret1111  %evec = fptosi <vscale x 2 x half> %va to <vscale x 2 x i64>1112  ret <vscale x 2 x i64> %evec1113}1114 1115define <vscale x 2 x i64> @vfptoui_nxv2f16_nxv2i64(<vscale x 2 x half> %va) {1116; CHECK-LABEL: vfptoui_nxv2f16_nxv2i64:1117; CHECK:       # %bb.0:1118; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1119; CHECK-NEXT:    vfwcvt.f.f.v v10, v81120; CHECK-NEXT:    vsetvli zero, zero, e32, m1, ta, ma1121; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v8, v101122; CHECK-NEXT:    ret1123  %evec = fptoui <vscale x 2 x half> %va to <vscale x 2 x i64>1124  ret <vscale x 2 x i64> %evec1125}1126 1127define <vscale x 4 x i1> @vfptosi_nxv4f16_nxv4i1(<vscale x 4 x half> %va) {1128; ZVFH-LABEL: vfptosi_nxv4f16_nxv4i1:1129; ZVFH:       # %bb.0:1130; ZVFH-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma1131; ZVFH-NEXT:    vfncvt.rtz.x.f.w v9, v81132; ZVFH-NEXT:    vand.vi v8, v9, 11133; ZVFH-NEXT:    vmsne.vi v0, v8, 01134; ZVFH-NEXT:    ret1135;1136; ZVFHMIN-LABEL: vfptosi_nxv4f16_nxv4i1:1137; ZVFHMIN:       # %bb.0:1138; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1139; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v81140; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v8, v101141; ZVFHMIN-NEXT:    vand.vi v8, v8, 11142; ZVFHMIN-NEXT:    vmsne.vi v0, v8, 01143; ZVFHMIN-NEXT:    ret1144  %evec = fptosi <vscale x 4 x half> %va to <vscale x 4 x i1>1145  ret <vscale x 4 x i1> %evec1146}1147 1148define <vscale x 4 x i1> @vfptoui_nxv4f16_nxv4i1(<vscale x 4 x half> %va) {1149; ZVFH-LABEL: vfptoui_nxv4f16_nxv4i1:1150; ZVFH:       # %bb.0:1151; ZVFH-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma1152; ZVFH-NEXT:    vfncvt.rtz.xu.f.w v9, v81153; ZVFH-NEXT:    vand.vi v8, v9, 11154; ZVFH-NEXT:    vmsne.vi v0, v8, 01155; ZVFH-NEXT:    ret1156;1157; ZVFHMIN-LABEL: vfptoui_nxv4f16_nxv4i1:1158; ZVFHMIN:       # %bb.0:1159; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1160; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v81161; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v8, v101162; ZVFHMIN-NEXT:    vand.vi v8, v8, 11163; ZVFHMIN-NEXT:    vmsne.vi v0, v8, 01164; ZVFHMIN-NEXT:    ret1165  %evec = fptoui <vscale x 4 x half> %va to <vscale x 4 x i1>1166  ret <vscale x 4 x i1> %evec1167}1168 1169define <vscale x 4 x i8> @vfptosi_nxv4f16_nxv4i8(<vscale x 4 x half> %va) {1170; ZVFH-LABEL: vfptosi_nxv4f16_nxv4i8:1171; ZVFH:       # %bb.0:1172; ZVFH-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma1173; ZVFH-NEXT:    vfncvt.rtz.x.f.w v9, v81174; ZVFH-NEXT:    vmv1r.v v8, v91175; ZVFH-NEXT:    ret1176;1177; ZVFHMIN-LABEL: vfptosi_nxv4f16_nxv4i8:1178; ZVFHMIN:       # %bb.0:1179; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1180; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v81181; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v8, v101182; ZVFHMIN-NEXT:    vsetvli zero, zero, e8, mf2, ta, ma1183; ZVFHMIN-NEXT:    vnsrl.wi v8, v8, 01184; ZVFHMIN-NEXT:    ret1185  %evec = fptosi <vscale x 4 x half> %va to <vscale x 4 x i8>1186  ret <vscale x 4 x i8> %evec1187}1188 1189define <vscale x 4 x i8> @vfptoui_nxv4f16_nxv4i8(<vscale x 4 x half> %va) {1190; ZVFH-LABEL: vfptoui_nxv4f16_nxv4i8:1191; ZVFH:       # %bb.0:1192; ZVFH-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma1193; ZVFH-NEXT:    vfncvt.rtz.xu.f.w v9, v81194; ZVFH-NEXT:    vmv1r.v v8, v91195; ZVFH-NEXT:    ret1196;1197; ZVFHMIN-LABEL: vfptoui_nxv4f16_nxv4i8:1198; ZVFHMIN:       # %bb.0:1199; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1200; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v81201; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v8, v101202; ZVFHMIN-NEXT:    vsetvli zero, zero, e8, mf2, ta, ma1203; ZVFHMIN-NEXT:    vnsrl.wi v8, v8, 01204; ZVFHMIN-NEXT:    ret1205  %evec = fptoui <vscale x 4 x half> %va to <vscale x 4 x i8>1206  ret <vscale x 4 x i8> %evec1207}1208 1209define <vscale x 4 x i16> @vfptosi_nxv4f16_nxv4i16(<vscale x 4 x half> %va) {1210; ZVFH-LABEL: vfptosi_nxv4f16_nxv4i16:1211; ZVFH:       # %bb.0:1212; ZVFH-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1213; ZVFH-NEXT:    vfcvt.rtz.x.f.v v8, v81214; ZVFH-NEXT:    ret1215;1216; ZVFHMIN-LABEL: vfptosi_nxv4f16_nxv4i16:1217; ZVFHMIN:       # %bb.0:1218; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1219; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v81220; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v8, v101221; ZVFHMIN-NEXT:    ret1222  %evec = fptosi <vscale x 4 x half> %va to <vscale x 4 x i16>1223  ret <vscale x 4 x i16> %evec1224}1225 1226define <vscale x 4 x i16> @vfptoui_nxv4f16_nxv4i16(<vscale x 4 x half> %va) {1227; ZVFH-LABEL: vfptoui_nxv4f16_nxv4i16:1228; ZVFH:       # %bb.0:1229; ZVFH-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1230; ZVFH-NEXT:    vfcvt.rtz.xu.f.v v8, v81231; ZVFH-NEXT:    ret1232;1233; ZVFHMIN-LABEL: vfptoui_nxv4f16_nxv4i16:1234; ZVFHMIN:       # %bb.0:1235; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1236; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v81237; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v8, v101238; ZVFHMIN-NEXT:    ret1239  %evec = fptoui <vscale x 4 x half> %va to <vscale x 4 x i16>1240  ret <vscale x 4 x i16> %evec1241}1242 1243define <vscale x 4 x i32> @vfptosi_nxv4f16_nxv4i32(<vscale x 4 x half> %va) {1244; ZVFH-LABEL: vfptosi_nxv4f16_nxv4i32:1245; ZVFH:       # %bb.0:1246; ZVFH-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1247; ZVFH-NEXT:    vmv1r.v v10, v81248; ZVFH-NEXT:    vfwcvt.rtz.x.f.v v8, v101249; ZVFH-NEXT:    ret1250;1251; ZVFHMIN-LABEL: vfptosi_nxv4f16_nxv4i32:1252; ZVFHMIN:       # %bb.0:1253; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1254; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v81255; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m2, ta, ma1256; ZVFHMIN-NEXT:    vfcvt.rtz.x.f.v v8, v101257; ZVFHMIN-NEXT:    ret1258  %evec = fptosi <vscale x 4 x half> %va to <vscale x 4 x i32>1259  ret <vscale x 4 x i32> %evec1260}1261 1262define <vscale x 4 x i32> @vfptoui_nxv4f16_nxv4i32(<vscale x 4 x half> %va) {1263; ZVFH-LABEL: vfptoui_nxv4f16_nxv4i32:1264; ZVFH:       # %bb.0:1265; ZVFH-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1266; ZVFH-NEXT:    vmv1r.v v10, v81267; ZVFH-NEXT:    vfwcvt.rtz.xu.f.v v8, v101268; ZVFH-NEXT:    ret1269;1270; ZVFHMIN-LABEL: vfptoui_nxv4f16_nxv4i32:1271; ZVFHMIN:       # %bb.0:1272; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1273; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v81274; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m2, ta, ma1275; ZVFHMIN-NEXT:    vfcvt.rtz.xu.f.v v8, v101276; ZVFHMIN-NEXT:    ret1277  %evec = fptoui <vscale x 4 x half> %va to <vscale x 4 x i32>1278  ret <vscale x 4 x i32> %evec1279}1280 1281define <vscale x 4 x i64> @vfptosi_nxv4f16_nxv4i64(<vscale x 4 x half> %va) {1282; CHECK-LABEL: vfptosi_nxv4f16_nxv4i64:1283; CHECK:       # %bb.0:1284; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1285; CHECK-NEXT:    vfwcvt.f.f.v v12, v81286; CHECK-NEXT:    vsetvli zero, zero, e32, m2, ta, ma1287; CHECK-NEXT:    vfwcvt.rtz.x.f.v v8, v121288; CHECK-NEXT:    ret1289  %evec = fptosi <vscale x 4 x half> %va to <vscale x 4 x i64>1290  ret <vscale x 4 x i64> %evec1291}1292 1293define <vscale x 4 x i64> @vfptoui_nxv4f16_nxv4i64(<vscale x 4 x half> %va) {1294; CHECK-LABEL: vfptoui_nxv4f16_nxv4i64:1295; CHECK:       # %bb.0:1296; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma1297; CHECK-NEXT:    vfwcvt.f.f.v v12, v81298; CHECK-NEXT:    vsetvli zero, zero, e32, m2, ta, ma1299; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v8, v121300; CHECK-NEXT:    ret1301  %evec = fptoui <vscale x 4 x half> %va to <vscale x 4 x i64>1302  ret <vscale x 4 x i64> %evec1303}1304 1305define <vscale x 8 x i1> @vfptosi_nxv8f16_nxv8i1(<vscale x 8 x half> %va) {1306; ZVFH-LABEL: vfptosi_nxv8f16_nxv8i1:1307; ZVFH:       # %bb.0:1308; ZVFH-NEXT:    vsetvli a0, zero, e8, m1, ta, ma1309; ZVFH-NEXT:    vfncvt.rtz.x.f.w v10, v81310; ZVFH-NEXT:    vand.vi v8, v10, 11311; ZVFH-NEXT:    vmsne.vi v0, v8, 01312; ZVFH-NEXT:    ret1313;1314; ZVFHMIN-LABEL: vfptosi_nxv8f16_nxv8i1:1315; ZVFHMIN:       # %bb.0:1316; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1317; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v81318; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v8, v121319; ZVFHMIN-NEXT:    vand.vi v8, v8, 11320; ZVFHMIN-NEXT:    vmsne.vi v0, v8, 01321; ZVFHMIN-NEXT:    ret1322  %evec = fptosi <vscale x 8 x half> %va to <vscale x 8 x i1>1323  ret <vscale x 8 x i1> %evec1324}1325 1326define <vscale x 8 x i1> @vfptoui_nxv8f16_nxv8i1(<vscale x 8 x half> %va) {1327; ZVFH-LABEL: vfptoui_nxv8f16_nxv8i1:1328; ZVFH:       # %bb.0:1329; ZVFH-NEXT:    vsetvli a0, zero, e8, m1, ta, ma1330; ZVFH-NEXT:    vfncvt.rtz.xu.f.w v10, v81331; ZVFH-NEXT:    vand.vi v8, v10, 11332; ZVFH-NEXT:    vmsne.vi v0, v8, 01333; ZVFH-NEXT:    ret1334;1335; ZVFHMIN-LABEL: vfptoui_nxv8f16_nxv8i1:1336; ZVFHMIN:       # %bb.0:1337; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1338; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v81339; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v8, v121340; ZVFHMIN-NEXT:    vand.vi v8, v8, 11341; ZVFHMIN-NEXT:    vmsne.vi v0, v8, 01342; ZVFHMIN-NEXT:    ret1343  %evec = fptoui <vscale x 8 x half> %va to <vscale x 8 x i1>1344  ret <vscale x 8 x i1> %evec1345}1346 1347define <vscale x 8 x i8> @vfptosi_nxv8f16_nxv8i8(<vscale x 8 x half> %va) {1348; ZVFH-LABEL: vfptosi_nxv8f16_nxv8i8:1349; ZVFH:       # %bb.0:1350; ZVFH-NEXT:    vsetvli a0, zero, e8, m1, ta, ma1351; ZVFH-NEXT:    vfncvt.rtz.x.f.w v10, v81352; ZVFH-NEXT:    vmv.v.v v8, v101353; ZVFH-NEXT:    ret1354;1355; ZVFHMIN-LABEL: vfptosi_nxv8f16_nxv8i8:1356; ZVFHMIN:       # %bb.0:1357; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1358; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v81359; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v10, v121360; ZVFHMIN-NEXT:    vsetvli zero, zero, e8, m1, ta, ma1361; ZVFHMIN-NEXT:    vnsrl.wi v8, v10, 01362; ZVFHMIN-NEXT:    ret1363  %evec = fptosi <vscale x 8 x half> %va to <vscale x 8 x i8>1364  ret <vscale x 8 x i8> %evec1365}1366 1367define <vscale x 8 x i8> @vfptoui_nxv8f16_nxv8i8(<vscale x 8 x half> %va) {1368; ZVFH-LABEL: vfptoui_nxv8f16_nxv8i8:1369; ZVFH:       # %bb.0:1370; ZVFH-NEXT:    vsetvli a0, zero, e8, m1, ta, ma1371; ZVFH-NEXT:    vfncvt.rtz.xu.f.w v10, v81372; ZVFH-NEXT:    vmv.v.v v8, v101373; ZVFH-NEXT:    ret1374;1375; ZVFHMIN-LABEL: vfptoui_nxv8f16_nxv8i8:1376; ZVFHMIN:       # %bb.0:1377; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1378; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v81379; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v10, v121380; ZVFHMIN-NEXT:    vsetvli zero, zero, e8, m1, ta, ma1381; ZVFHMIN-NEXT:    vnsrl.wi v8, v10, 01382; ZVFHMIN-NEXT:    ret1383  %evec = fptoui <vscale x 8 x half> %va to <vscale x 8 x i8>1384  ret <vscale x 8 x i8> %evec1385}1386 1387define <vscale x 8 x i16> @vfptosi_nxv8f16_nxv8i16(<vscale x 8 x half> %va) {1388; ZVFH-LABEL: vfptosi_nxv8f16_nxv8i16:1389; ZVFH:       # %bb.0:1390; ZVFH-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1391; ZVFH-NEXT:    vfcvt.rtz.x.f.v v8, v81392; ZVFH-NEXT:    ret1393;1394; ZVFHMIN-LABEL: vfptosi_nxv8f16_nxv8i16:1395; ZVFHMIN:       # %bb.0:1396; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1397; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v81398; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v8, v121399; ZVFHMIN-NEXT:    ret1400  %evec = fptosi <vscale x 8 x half> %va to <vscale x 8 x i16>1401  ret <vscale x 8 x i16> %evec1402}1403 1404define <vscale x 8 x i16> @vfptoui_nxv8f16_nxv8i16(<vscale x 8 x half> %va) {1405; ZVFH-LABEL: vfptoui_nxv8f16_nxv8i16:1406; ZVFH:       # %bb.0:1407; ZVFH-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1408; ZVFH-NEXT:    vfcvt.rtz.xu.f.v v8, v81409; ZVFH-NEXT:    ret1410;1411; ZVFHMIN-LABEL: vfptoui_nxv8f16_nxv8i16:1412; ZVFHMIN:       # %bb.0:1413; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1414; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v81415; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v8, v121416; ZVFHMIN-NEXT:    ret1417  %evec = fptoui <vscale x 8 x half> %va to <vscale x 8 x i16>1418  ret <vscale x 8 x i16> %evec1419}1420 1421define <vscale x 8 x i32> @vfptosi_nxv8f16_nxv8i32(<vscale x 8 x half> %va) {1422; ZVFH-LABEL: vfptosi_nxv8f16_nxv8i32:1423; ZVFH:       # %bb.0:1424; ZVFH-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1425; ZVFH-NEXT:    vmv2r.v v12, v81426; ZVFH-NEXT:    vfwcvt.rtz.x.f.v v8, v121427; ZVFH-NEXT:    ret1428;1429; ZVFHMIN-LABEL: vfptosi_nxv8f16_nxv8i32:1430; ZVFHMIN:       # %bb.0:1431; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1432; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v81433; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m4, ta, ma1434; ZVFHMIN-NEXT:    vfcvt.rtz.x.f.v v8, v121435; ZVFHMIN-NEXT:    ret1436  %evec = fptosi <vscale x 8 x half> %va to <vscale x 8 x i32>1437  ret <vscale x 8 x i32> %evec1438}1439 1440define <vscale x 8 x i32> @vfptoui_nxv8f16_nxv8i32(<vscale x 8 x half> %va) {1441; ZVFH-LABEL: vfptoui_nxv8f16_nxv8i32:1442; ZVFH:       # %bb.0:1443; ZVFH-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1444; ZVFH-NEXT:    vmv2r.v v12, v81445; ZVFH-NEXT:    vfwcvt.rtz.xu.f.v v8, v121446; ZVFH-NEXT:    ret1447;1448; ZVFHMIN-LABEL: vfptoui_nxv8f16_nxv8i32:1449; ZVFHMIN:       # %bb.0:1450; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1451; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v81452; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m4, ta, ma1453; ZVFHMIN-NEXT:    vfcvt.rtz.xu.f.v v8, v121454; ZVFHMIN-NEXT:    ret1455  %evec = fptoui <vscale x 8 x half> %va to <vscale x 8 x i32>1456  ret <vscale x 8 x i32> %evec1457}1458 1459define <vscale x 8 x i64> @vfptosi_nxv8f16_nxv8i64(<vscale x 8 x half> %va) {1460; CHECK-LABEL: vfptosi_nxv8f16_nxv8i64:1461; CHECK:       # %bb.0:1462; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1463; CHECK-NEXT:    vfwcvt.f.f.v v16, v81464; CHECK-NEXT:    vsetvli zero, zero, e32, m4, ta, ma1465; CHECK-NEXT:    vfwcvt.rtz.x.f.v v8, v161466; CHECK-NEXT:    ret1467  %evec = fptosi <vscale x 8 x half> %va to <vscale x 8 x i64>1468  ret <vscale x 8 x i64> %evec1469}1470 1471define <vscale x 8 x i64> @vfptoui_nxv8f16_nxv8i64(<vscale x 8 x half> %va) {1472; CHECK-LABEL: vfptoui_nxv8f16_nxv8i64:1473; CHECK:       # %bb.0:1474; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1475; CHECK-NEXT:    vfwcvt.f.f.v v16, v81476; CHECK-NEXT:    vsetvli zero, zero, e32, m4, ta, ma1477; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v8, v161478; CHECK-NEXT:    ret1479  %evec = fptoui <vscale x 8 x half> %va to <vscale x 8 x i64>1480  ret <vscale x 8 x i64> %evec1481}1482 1483define <vscale x 16 x i1> @vfptosi_nxv16f16_nxv16i1(<vscale x 16 x half> %va) {1484; ZVFH-LABEL: vfptosi_nxv16f16_nxv16i1:1485; ZVFH:       # %bb.0:1486; ZVFH-NEXT:    vsetvli a0, zero, e8, m2, ta, ma1487; ZVFH-NEXT:    vfncvt.rtz.x.f.w v12, v81488; ZVFH-NEXT:    vand.vi v8, v12, 11489; ZVFH-NEXT:    vmsne.vi v0, v8, 01490; ZVFH-NEXT:    ret1491;1492; ZVFHMIN-LABEL: vfptosi_nxv16f16_nxv16i1:1493; ZVFHMIN:       # %bb.0:1494; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1495; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v81496; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v8, v161497; ZVFHMIN-NEXT:    vand.vi v8, v8, 11498; ZVFHMIN-NEXT:    vmsne.vi v0, v8, 01499; ZVFHMIN-NEXT:    ret1500  %evec = fptosi <vscale x 16 x half> %va to <vscale x 16 x i1>1501  ret <vscale x 16 x i1> %evec1502}1503 1504define <vscale x 16 x i1> @vfptoui_nxv16f16_nxv16i1(<vscale x 16 x half> %va) {1505; ZVFH-LABEL: vfptoui_nxv16f16_nxv16i1:1506; ZVFH:       # %bb.0:1507; ZVFH-NEXT:    vsetvli a0, zero, e8, m2, ta, ma1508; ZVFH-NEXT:    vfncvt.rtz.xu.f.w v12, v81509; ZVFH-NEXT:    vand.vi v8, v12, 11510; ZVFH-NEXT:    vmsne.vi v0, v8, 01511; ZVFH-NEXT:    ret1512;1513; ZVFHMIN-LABEL: vfptoui_nxv16f16_nxv16i1:1514; ZVFHMIN:       # %bb.0:1515; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1516; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v81517; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v8, v161518; ZVFHMIN-NEXT:    vand.vi v8, v8, 11519; ZVFHMIN-NEXT:    vmsne.vi v0, v8, 01520; ZVFHMIN-NEXT:    ret1521  %evec = fptoui <vscale x 16 x half> %va to <vscale x 16 x i1>1522  ret <vscale x 16 x i1> %evec1523}1524 1525define <vscale x 16 x i8> @vfptosi_nxv16f16_nxv16i8(<vscale x 16 x half> %va) {1526; ZVFH-LABEL: vfptosi_nxv16f16_nxv16i8:1527; ZVFH:       # %bb.0:1528; ZVFH-NEXT:    vsetvli a0, zero, e8, m2, ta, ma1529; ZVFH-NEXT:    vfncvt.rtz.x.f.w v12, v81530; ZVFH-NEXT:    vmv.v.v v8, v121531; ZVFH-NEXT:    ret1532;1533; ZVFHMIN-LABEL: vfptosi_nxv16f16_nxv16i8:1534; ZVFHMIN:       # %bb.0:1535; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1536; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v81537; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v12, v161538; ZVFHMIN-NEXT:    vsetvli zero, zero, e8, m2, ta, ma1539; ZVFHMIN-NEXT:    vnsrl.wi v8, v12, 01540; ZVFHMIN-NEXT:    ret1541  %evec = fptosi <vscale x 16 x half> %va to <vscale x 16 x i8>1542  ret <vscale x 16 x i8> %evec1543}1544 1545define <vscale x 16 x i8> @vfptoui_nxv16f16_nxv16i8(<vscale x 16 x half> %va) {1546; ZVFH-LABEL: vfptoui_nxv16f16_nxv16i8:1547; ZVFH:       # %bb.0:1548; ZVFH-NEXT:    vsetvli a0, zero, e8, m2, ta, ma1549; ZVFH-NEXT:    vfncvt.rtz.xu.f.w v12, v81550; ZVFH-NEXT:    vmv.v.v v8, v121551; ZVFH-NEXT:    ret1552;1553; ZVFHMIN-LABEL: vfptoui_nxv16f16_nxv16i8:1554; ZVFHMIN:       # %bb.0:1555; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1556; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v81557; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v12, v161558; ZVFHMIN-NEXT:    vsetvli zero, zero, e8, m2, ta, ma1559; ZVFHMIN-NEXT:    vnsrl.wi v8, v12, 01560; ZVFHMIN-NEXT:    ret1561  %evec = fptoui <vscale x 16 x half> %va to <vscale x 16 x i8>1562  ret <vscale x 16 x i8> %evec1563}1564 1565define <vscale x 16 x i16> @vfptosi_nxv16f16_nxv16i16(<vscale x 16 x half> %va) {1566; ZVFH-LABEL: vfptosi_nxv16f16_nxv16i16:1567; ZVFH:       # %bb.0:1568; ZVFH-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1569; ZVFH-NEXT:    vfcvt.rtz.x.f.v v8, v81570; ZVFH-NEXT:    ret1571;1572; ZVFHMIN-LABEL: vfptosi_nxv16f16_nxv16i16:1573; ZVFHMIN:       # %bb.0:1574; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1575; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v81576; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v8, v161577; ZVFHMIN-NEXT:    ret1578  %evec = fptosi <vscale x 16 x half> %va to <vscale x 16 x i16>1579  ret <vscale x 16 x i16> %evec1580}1581 1582define <vscale x 16 x i16> @vfptoui_nxv16f16_nxv16i16(<vscale x 16 x half> %va) {1583; ZVFH-LABEL: vfptoui_nxv16f16_nxv16i16:1584; ZVFH:       # %bb.0:1585; ZVFH-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1586; ZVFH-NEXT:    vfcvt.rtz.xu.f.v v8, v81587; ZVFH-NEXT:    ret1588;1589; ZVFHMIN-LABEL: vfptoui_nxv16f16_nxv16i16:1590; ZVFHMIN:       # %bb.0:1591; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1592; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v81593; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v8, v161594; ZVFHMIN-NEXT:    ret1595  %evec = fptoui <vscale x 16 x half> %va to <vscale x 16 x i16>1596  ret <vscale x 16 x i16> %evec1597}1598 1599define <vscale x 16 x i32> @vfptosi_nxv16f16_nxv16i32(<vscale x 16 x half> %va) {1600; ZVFH-LABEL: vfptosi_nxv16f16_nxv16i32:1601; ZVFH:       # %bb.0:1602; ZVFH-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1603; ZVFH-NEXT:    vmv4r.v v16, v81604; ZVFH-NEXT:    vfwcvt.rtz.x.f.v v8, v161605; ZVFH-NEXT:    ret1606;1607; ZVFHMIN-LABEL: vfptosi_nxv16f16_nxv16i32:1608; ZVFHMIN:       # %bb.0:1609; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1610; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v81611; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m8, ta, ma1612; ZVFHMIN-NEXT:    vfcvt.rtz.x.f.v v8, v161613; ZVFHMIN-NEXT:    ret1614  %evec = fptosi <vscale x 16 x half> %va to <vscale x 16 x i32>1615  ret <vscale x 16 x i32> %evec1616}1617 1618define <vscale x 16 x i32> @vfptoui_nxv16f16_nxv16i32(<vscale x 16 x half> %va) {1619; ZVFH-LABEL: vfptoui_nxv16f16_nxv16i32:1620; ZVFH:       # %bb.0:1621; ZVFH-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1622; ZVFH-NEXT:    vmv4r.v v16, v81623; ZVFH-NEXT:    vfwcvt.rtz.xu.f.v v8, v161624; ZVFH-NEXT:    ret1625;1626; ZVFHMIN-LABEL: vfptoui_nxv16f16_nxv16i32:1627; ZVFHMIN:       # %bb.0:1628; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1629; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v81630; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m8, ta, ma1631; ZVFHMIN-NEXT:    vfcvt.rtz.xu.f.v v8, v161632; ZVFHMIN-NEXT:    ret1633  %evec = fptoui <vscale x 16 x half> %va to <vscale x 16 x i32>1634  ret <vscale x 16 x i32> %evec1635}1636 1637define <vscale x 32 x i1> @vfptosi_nxv32f16_nxv32i1(<vscale x 32 x half> %va) {1638; ZVFH-LABEL: vfptosi_nxv32f16_nxv32i1:1639; ZVFH:       # %bb.0:1640; ZVFH-NEXT:    vsetvli a0, zero, e8, m4, ta, ma1641; ZVFH-NEXT:    vfncvt.rtz.x.f.w v16, v81642; ZVFH-NEXT:    vand.vi v8, v16, 11643; ZVFH-NEXT:    vmsne.vi v0, v8, 01644; ZVFH-NEXT:    ret1645;1646; ZVFHMIN-LABEL: vfptosi_nxv32f16_nxv32i1:1647; ZVFHMIN:       # %bb.0:1648; ZVFHMIN-NEXT:    csrr a0, vlenb1649; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m4, ta, ma1650; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v121651; ZVFHMIN-NEXT:    vfwcvt.f.f.v v24, v81652; ZVFHMIN-NEXT:    srli a0, a0, 21653; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v8, v161654; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v12, v241655; ZVFHMIN-NEXT:    vand.vi v8, v8, 11656; ZVFHMIN-NEXT:    vand.vi v12, v12, 11657; ZVFHMIN-NEXT:    vmsne.vi v16, v8, 01658; ZVFHMIN-NEXT:    vmsne.vi v0, v12, 01659; ZVFHMIN-NEXT:    vsetvli a1, zero, e8, mf2, ta, ma1660; ZVFHMIN-NEXT:    vslideup.vx v0, v16, a01661; ZVFHMIN-NEXT:    ret1662  %evec = fptosi <vscale x 32 x half> %va to <vscale x 32 x i1>1663  ret <vscale x 32 x i1> %evec1664}1665 1666define <vscale x 32 x i1> @vfptoui_nxv32f16_nxv32i1(<vscale x 32 x half> %va) {1667; ZVFH-LABEL: vfptoui_nxv32f16_nxv32i1:1668; ZVFH:       # %bb.0:1669; ZVFH-NEXT:    vsetvli a0, zero, e8, m4, ta, ma1670; ZVFH-NEXT:    vfncvt.rtz.xu.f.w v16, v81671; ZVFH-NEXT:    vand.vi v8, v16, 11672; ZVFH-NEXT:    vmsne.vi v0, v8, 01673; ZVFH-NEXT:    ret1674;1675; ZVFHMIN-LABEL: vfptoui_nxv32f16_nxv32i1:1676; ZVFHMIN:       # %bb.0:1677; ZVFHMIN-NEXT:    csrr a0, vlenb1678; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m4, ta, ma1679; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v121680; ZVFHMIN-NEXT:    vfwcvt.f.f.v v24, v81681; ZVFHMIN-NEXT:    srli a0, a0, 21682; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v8, v161683; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v12, v241684; ZVFHMIN-NEXT:    vand.vi v8, v8, 11685; ZVFHMIN-NEXT:    vand.vi v12, v12, 11686; ZVFHMIN-NEXT:    vmsne.vi v16, v8, 01687; ZVFHMIN-NEXT:    vmsne.vi v0, v12, 01688; ZVFHMIN-NEXT:    vsetvli a1, zero, e8, mf2, ta, ma1689; ZVFHMIN-NEXT:    vslideup.vx v0, v16, a01690; ZVFHMIN-NEXT:    ret1691  %evec = fptoui <vscale x 32 x half> %va to <vscale x 32 x i1>1692  ret <vscale x 32 x i1> %evec1693}1694 1695define <vscale x 32 x i8> @vfptosi_nxv32f16_nxv32i8(<vscale x 32 x half> %va) {1696; ZVFH-LABEL: vfptosi_nxv32f16_nxv32i8:1697; ZVFH:       # %bb.0:1698; ZVFH-NEXT:    vsetvli a0, zero, e8, m4, ta, ma1699; ZVFH-NEXT:    vfncvt.rtz.x.f.w v16, v81700; ZVFH-NEXT:    vmv.v.v v8, v161701; ZVFH-NEXT:    ret1702;1703; ZVFHMIN-LABEL: vfptosi_nxv32f16_nxv32i8:1704; ZVFHMIN:       # %bb.0:1705; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1706; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v81707; ZVFHMIN-NEXT:    vfwcvt.f.f.v v24, v121708; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v12, v161709; ZVFHMIN-NEXT:    vsetvli zero, zero, e8, m2, ta, ma1710; ZVFHMIN-NEXT:    vnsrl.wi v8, v12, 01711; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m4, ta, ma1712; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v12, v241713; ZVFHMIN-NEXT:    vsetvli zero, zero, e8, m2, ta, ma1714; ZVFHMIN-NEXT:    vnsrl.wi v10, v12, 01715; ZVFHMIN-NEXT:    ret1716  %evec = fptosi <vscale x 32 x half> %va to <vscale x 32 x i8>1717  ret <vscale x 32 x i8> %evec1718}1719 1720define <vscale x 32 x i8> @vfptoui_nxv32f16_nxv32i8(<vscale x 32 x half> %va) {1721; ZVFH-LABEL: vfptoui_nxv32f16_nxv32i8:1722; ZVFH:       # %bb.0:1723; ZVFH-NEXT:    vsetvli a0, zero, e8, m4, ta, ma1724; ZVFH-NEXT:    vfncvt.rtz.xu.f.w v16, v81725; ZVFH-NEXT:    vmv.v.v v8, v161726; ZVFH-NEXT:    ret1727;1728; ZVFHMIN-LABEL: vfptoui_nxv32f16_nxv32i8:1729; ZVFHMIN:       # %bb.0:1730; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1731; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v81732; ZVFHMIN-NEXT:    vfwcvt.f.f.v v24, v121733; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v12, v161734; ZVFHMIN-NEXT:    vsetvli zero, zero, e8, m2, ta, ma1735; ZVFHMIN-NEXT:    vnsrl.wi v8, v12, 01736; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m4, ta, ma1737; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v12, v241738; ZVFHMIN-NEXT:    vsetvli zero, zero, e8, m2, ta, ma1739; ZVFHMIN-NEXT:    vnsrl.wi v10, v12, 01740; ZVFHMIN-NEXT:    ret1741  %evec = fptoui <vscale x 32 x half> %va to <vscale x 32 x i8>1742  ret <vscale x 32 x i8> %evec1743}1744 1745define <vscale x 32 x i16> @vfptosi_nxv32f16_nxv32i16(<vscale x 32 x half> %va) {1746; ZVFH-LABEL: vfptosi_nxv32f16_nxv32i16:1747; ZVFH:       # %bb.0:1748; ZVFH-NEXT:    vsetvli a0, zero, e16, m8, ta, ma1749; ZVFH-NEXT:    vfcvt.rtz.x.f.v v8, v81750; ZVFH-NEXT:    ret1751;1752; ZVFHMIN-LABEL: vfptosi_nxv32f16_nxv32i16:1753; ZVFHMIN:       # %bb.0:1754; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1755; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v81756; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v8, v161757; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v121758; ZVFHMIN-NEXT:    vfncvt.rtz.x.f.w v12, v161759; ZVFHMIN-NEXT:    ret1760  %evec = fptosi <vscale x 32 x half> %va to <vscale x 32 x i16>1761  ret <vscale x 32 x i16> %evec1762}1763 1764define <vscale x 32 x i16> @vfptoui_nxv32f16_nxv32i16(<vscale x 32 x half> %va) {1765; ZVFH-LABEL: vfptoui_nxv32f16_nxv32i16:1766; ZVFH:       # %bb.0:1767; ZVFH-NEXT:    vsetvli a0, zero, e16, m8, ta, ma1768; ZVFH-NEXT:    vfcvt.rtz.xu.f.v v8, v81769; ZVFH-NEXT:    ret1770;1771; ZVFHMIN-LABEL: vfptoui_nxv32f16_nxv32i16:1772; ZVFHMIN:       # %bb.0:1773; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma1774; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v81775; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v8, v161776; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v121777; ZVFHMIN-NEXT:    vfncvt.rtz.xu.f.w v12, v161778; ZVFHMIN-NEXT:    ret1779  %evec = fptoui <vscale x 32 x half> %va to <vscale x 32 x i16>1780  ret <vscale x 32 x i16> %evec1781}1782 1783define <vscale x 1 x i1> @vfptosi_nxv1f32_nxv1i1(<vscale x 1 x float> %va) {1784; CHECK-LABEL: vfptosi_nxv1f32_nxv1i1:1785; CHECK:       # %bb.0:1786; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma1787; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v81788; CHECK-NEXT:    vand.vi v8, v9, 11789; CHECK-NEXT:    vmsne.vi v0, v8, 01790; CHECK-NEXT:    ret1791  %evec = fptosi <vscale x 1 x float> %va to <vscale x 1 x i1>1792  ret <vscale x 1 x i1> %evec1793}1794 1795define <vscale x 1 x i1> @vfptoui_nxv1f32_nxv1i1(<vscale x 1 x float> %va) {1796; CHECK-LABEL: vfptoui_nxv1f32_nxv1i1:1797; CHECK:       # %bb.0:1798; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma1799; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v81800; CHECK-NEXT:    vand.vi v8, v9, 11801; CHECK-NEXT:    vmsne.vi v0, v8, 01802; CHECK-NEXT:    ret1803  %evec = fptoui <vscale x 1 x float> %va to <vscale x 1 x i1>1804  ret <vscale x 1 x i1> %evec1805}1806 1807define <vscale x 1 x i8> @vfptosi_nxv1f32_nxv1i8(<vscale x 1 x float> %va) {1808; CHECK-LABEL: vfptosi_nxv1f32_nxv1i8:1809; CHECK:       # %bb.0:1810; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma1811; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v81812; CHECK-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma1813; CHECK-NEXT:    vnsrl.wi v8, v9, 01814; CHECK-NEXT:    ret1815  %evec = fptosi <vscale x 1 x float> %va to <vscale x 1 x i8>1816  ret <vscale x 1 x i8> %evec1817}1818 1819define <vscale x 1 x i8> @vfptoui_nxv1f32_nxv1i8(<vscale x 1 x float> %va) {1820; CHECK-LABEL: vfptoui_nxv1f32_nxv1i8:1821; CHECK:       # %bb.0:1822; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma1823; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v81824; CHECK-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma1825; CHECK-NEXT:    vnsrl.wi v8, v9, 01826; CHECK-NEXT:    ret1827  %evec = fptoui <vscale x 1 x float> %va to <vscale x 1 x i8>1828  ret <vscale x 1 x i8> %evec1829}1830 1831define <vscale x 1 x i16> @vfptosi_nxv1f32_nxv1i16(<vscale x 1 x float> %va) {1832; CHECK-LABEL: vfptosi_nxv1f32_nxv1i16:1833; CHECK:       # %bb.0:1834; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma1835; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v81836; CHECK-NEXT:    vmv1r.v v8, v91837; CHECK-NEXT:    ret1838  %evec = fptosi <vscale x 1 x float> %va to <vscale x 1 x i16>1839  ret <vscale x 1 x i16> %evec1840}1841 1842define <vscale x 1 x i16> @vfptoui_nxv1f32_nxv1i16(<vscale x 1 x float> %va) {1843; CHECK-LABEL: vfptoui_nxv1f32_nxv1i16:1844; CHECK:       # %bb.0:1845; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma1846; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v81847; CHECK-NEXT:    vmv1r.v v8, v91848; CHECK-NEXT:    ret1849  %evec = fptoui <vscale x 1 x float> %va to <vscale x 1 x i16>1850  ret <vscale x 1 x i16> %evec1851}1852 1853define <vscale x 1 x i32> @vfptosi_nxv1f32_nxv1i32(<vscale x 1 x float> %va) {1854; CHECK-LABEL: vfptosi_nxv1f32_nxv1i32:1855; CHECK:       # %bb.0:1856; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma1857; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v81858; CHECK-NEXT:    ret1859  %evec = fptosi <vscale x 1 x float> %va to <vscale x 1 x i32>1860  ret <vscale x 1 x i32> %evec1861}1862 1863define <vscale x 1 x i32> @vfptoui_nxv1f32_nxv1i32(<vscale x 1 x float> %va) {1864; CHECK-LABEL: vfptoui_nxv1f32_nxv1i32:1865; CHECK:       # %bb.0:1866; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma1867; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v81868; CHECK-NEXT:    ret1869  %evec = fptoui <vscale x 1 x float> %va to <vscale x 1 x i32>1870  ret <vscale x 1 x i32> %evec1871}1872 1873define <vscale x 1 x i64> @vfptosi_nxv1f32_nxv1i64(<vscale x 1 x float> %va) {1874; CHECK-LABEL: vfptosi_nxv1f32_nxv1i64:1875; CHECK:       # %bb.0:1876; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma1877; CHECK-NEXT:    vfwcvt.rtz.x.f.v v9, v81878; CHECK-NEXT:    vmv1r.v v8, v91879; CHECK-NEXT:    ret1880  %evec = fptosi <vscale x 1 x float> %va to <vscale x 1 x i64>1881  ret <vscale x 1 x i64> %evec1882}1883 1884define <vscale x 1 x i64> @vfptoui_nxv1f32_nxv1i64(<vscale x 1 x float> %va) {1885; CHECK-LABEL: vfptoui_nxv1f32_nxv1i64:1886; CHECK:       # %bb.0:1887; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma1888; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v9, v81889; CHECK-NEXT:    vmv1r.v v8, v91890; CHECK-NEXT:    ret1891  %evec = fptoui <vscale x 1 x float> %va to <vscale x 1 x i64>1892  ret <vscale x 1 x i64> %evec1893}1894 1895define <vscale x 2 x i1> @vfptosi_nxv2f32_nxv2i1(<vscale x 2 x float> %va) {1896; CHECK-LABEL: vfptosi_nxv2f32_nxv2i1:1897; CHECK:       # %bb.0:1898; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1899; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v81900; CHECK-NEXT:    vand.vi v8, v9, 11901; CHECK-NEXT:    vmsne.vi v0, v8, 01902; CHECK-NEXT:    ret1903  %evec = fptosi <vscale x 2 x float> %va to <vscale x 2 x i1>1904  ret <vscale x 2 x i1> %evec1905}1906 1907define <vscale x 2 x i1> @vfptoui_nxv2f32_nxv2i1(<vscale x 2 x float> %va) {1908; CHECK-LABEL: vfptoui_nxv2f32_nxv2i1:1909; CHECK:       # %bb.0:1910; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1911; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v81912; CHECK-NEXT:    vand.vi v8, v9, 11913; CHECK-NEXT:    vmsne.vi v0, v8, 01914; CHECK-NEXT:    ret1915  %evec = fptoui <vscale x 2 x float> %va to <vscale x 2 x i1>1916  ret <vscale x 2 x i1> %evec1917}1918 1919define <vscale x 2 x i8> @vfptosi_nxv2f32_nxv2i8(<vscale x 2 x float> %va) {1920; CHECK-LABEL: vfptosi_nxv2f32_nxv2i8:1921; CHECK:       # %bb.0:1922; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1923; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v81924; CHECK-NEXT:    vsetvli zero, zero, e8, mf4, ta, ma1925; CHECK-NEXT:    vnsrl.wi v8, v9, 01926; CHECK-NEXT:    ret1927  %evec = fptosi <vscale x 2 x float> %va to <vscale x 2 x i8>1928  ret <vscale x 2 x i8> %evec1929}1930 1931define <vscale x 2 x i8> @vfptoui_nxv2f32_nxv2i8(<vscale x 2 x float> %va) {1932; CHECK-LABEL: vfptoui_nxv2f32_nxv2i8:1933; CHECK:       # %bb.0:1934; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1935; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v81936; CHECK-NEXT:    vsetvli zero, zero, e8, mf4, ta, ma1937; CHECK-NEXT:    vnsrl.wi v8, v9, 01938; CHECK-NEXT:    ret1939  %evec = fptoui <vscale x 2 x float> %va to <vscale x 2 x i8>1940  ret <vscale x 2 x i8> %evec1941}1942 1943define <vscale x 2 x i16> @vfptosi_nxv2f32_nxv2i16(<vscale x 2 x float> %va) {1944; CHECK-LABEL: vfptosi_nxv2f32_nxv2i16:1945; CHECK:       # %bb.0:1946; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1947; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v81948; CHECK-NEXT:    vmv1r.v v8, v91949; CHECK-NEXT:    ret1950  %evec = fptosi <vscale x 2 x float> %va to <vscale x 2 x i16>1951  ret <vscale x 2 x i16> %evec1952}1953 1954define <vscale x 2 x i16> @vfptoui_nxv2f32_nxv2i16(<vscale x 2 x float> %va) {1955; CHECK-LABEL: vfptoui_nxv2f32_nxv2i16:1956; CHECK:       # %bb.0:1957; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma1958; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v81959; CHECK-NEXT:    vmv1r.v v8, v91960; CHECK-NEXT:    ret1961  %evec = fptoui <vscale x 2 x float> %va to <vscale x 2 x i16>1962  ret <vscale x 2 x i16> %evec1963}1964 1965define <vscale x 2 x i32> @vfptosi_nxv2f32_nxv2i32(<vscale x 2 x float> %va) {1966; CHECK-LABEL: vfptosi_nxv2f32_nxv2i32:1967; CHECK:       # %bb.0:1968; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma1969; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v81970; CHECK-NEXT:    ret1971  %evec = fptosi <vscale x 2 x float> %va to <vscale x 2 x i32>1972  ret <vscale x 2 x i32> %evec1973}1974 1975define <vscale x 2 x i32> @vfptoui_nxv2f32_nxv2i32(<vscale x 2 x float> %va) {1976; CHECK-LABEL: vfptoui_nxv2f32_nxv2i32:1977; CHECK:       # %bb.0:1978; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma1979; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v81980; CHECK-NEXT:    ret1981  %evec = fptoui <vscale x 2 x float> %va to <vscale x 2 x i32>1982  ret <vscale x 2 x i32> %evec1983}1984 1985define <vscale x 2 x i64> @vfptosi_nxv2f32_nxv2i64(<vscale x 2 x float> %va) {1986; CHECK-LABEL: vfptosi_nxv2f32_nxv2i64:1987; CHECK:       # %bb.0:1988; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma1989; CHECK-NEXT:    vmv1r.v v10, v81990; CHECK-NEXT:    vfwcvt.rtz.x.f.v v8, v101991; CHECK-NEXT:    ret1992  %evec = fptosi <vscale x 2 x float> %va to <vscale x 2 x i64>1993  ret <vscale x 2 x i64> %evec1994}1995 1996define <vscale x 2 x i64> @vfptoui_nxv2f32_nxv2i64(<vscale x 2 x float> %va) {1997; CHECK-LABEL: vfptoui_nxv2f32_nxv2i64:1998; CHECK:       # %bb.0:1999; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2000; CHECK-NEXT:    vmv1r.v v10, v82001; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v8, v102002; CHECK-NEXT:    ret2003  %evec = fptoui <vscale x 2 x float> %va to <vscale x 2 x i64>2004  ret <vscale x 2 x i64> %evec2005}2006 2007define <vscale x 4 x i1> @vfptosi_nxv4f32_nxv4i1(<vscale x 4 x float> %va) {2008; CHECK-LABEL: vfptosi_nxv4f32_nxv4i1:2009; CHECK:       # %bb.0:2010; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma2011; CHECK-NEXT:    vfncvt.rtz.x.f.w v10, v82012; CHECK-NEXT:    vand.vi v8, v10, 12013; CHECK-NEXT:    vmsne.vi v0, v8, 02014; CHECK-NEXT:    ret2015  %evec = fptosi <vscale x 4 x float> %va to <vscale x 4 x i1>2016  ret <vscale x 4 x i1> %evec2017}2018 2019define <vscale x 4 x i1> @vfptoui_nxv4f32_nxv4i1(<vscale x 4 x float> %va) {2020; CHECK-LABEL: vfptoui_nxv4f32_nxv4i1:2021; CHECK:       # %bb.0:2022; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma2023; CHECK-NEXT:    vfncvt.rtz.xu.f.w v10, v82024; CHECK-NEXT:    vand.vi v8, v10, 12025; CHECK-NEXT:    vmsne.vi v0, v8, 02026; CHECK-NEXT:    ret2027  %evec = fptoui <vscale x 4 x float> %va to <vscale x 4 x i1>2028  ret <vscale x 4 x i1> %evec2029}2030 2031define <vscale x 4 x i8> @vfptosi_nxv4f32_nxv4i8(<vscale x 4 x float> %va) {2032; CHECK-LABEL: vfptosi_nxv4f32_nxv4i8:2033; CHECK:       # %bb.0:2034; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma2035; CHECK-NEXT:    vfncvt.rtz.x.f.w v10, v82036; CHECK-NEXT:    vsetvli zero, zero, e8, mf2, ta, ma2037; CHECK-NEXT:    vnsrl.wi v8, v10, 02038; CHECK-NEXT:    ret2039  %evec = fptosi <vscale x 4 x float> %va to <vscale x 4 x i8>2040  ret <vscale x 4 x i8> %evec2041}2042 2043define <vscale x 4 x i8> @vfptoui_nxv4f32_nxv4i8(<vscale x 4 x float> %va) {2044; CHECK-LABEL: vfptoui_nxv4f32_nxv4i8:2045; CHECK:       # %bb.0:2046; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma2047; CHECK-NEXT:    vfncvt.rtz.xu.f.w v10, v82048; CHECK-NEXT:    vsetvli zero, zero, e8, mf2, ta, ma2049; CHECK-NEXT:    vnsrl.wi v8, v10, 02050; CHECK-NEXT:    ret2051  %evec = fptoui <vscale x 4 x float> %va to <vscale x 4 x i8>2052  ret <vscale x 4 x i8> %evec2053}2054 2055define <vscale x 4 x i16> @vfptosi_nxv4f32_nxv4i16(<vscale x 4 x float> %va) {2056; CHECK-LABEL: vfptosi_nxv4f32_nxv4i16:2057; CHECK:       # %bb.0:2058; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma2059; CHECK-NEXT:    vfncvt.rtz.x.f.w v10, v82060; CHECK-NEXT:    vmv.v.v v8, v102061; CHECK-NEXT:    ret2062  %evec = fptosi <vscale x 4 x float> %va to <vscale x 4 x i16>2063  ret <vscale x 4 x i16> %evec2064}2065 2066define <vscale x 4 x i16> @vfptoui_nxv4f32_nxv4i16(<vscale x 4 x float> %va) {2067; CHECK-LABEL: vfptoui_nxv4f32_nxv4i16:2068; CHECK:       # %bb.0:2069; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma2070; CHECK-NEXT:    vfncvt.rtz.xu.f.w v10, v82071; CHECK-NEXT:    vmv.v.v v8, v102072; CHECK-NEXT:    ret2073  %evec = fptoui <vscale x 4 x float> %va to <vscale x 4 x i16>2074  ret <vscale x 4 x i16> %evec2075}2076 2077define <vscale x 4 x i32> @vfptosi_nxv4f32_nxv4i32(<vscale x 4 x float> %va) {2078; CHECK-LABEL: vfptosi_nxv4f32_nxv4i32:2079; CHECK:       # %bb.0:2080; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2081; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v82082; CHECK-NEXT:    ret2083  %evec = fptosi <vscale x 4 x float> %va to <vscale x 4 x i32>2084  ret <vscale x 4 x i32> %evec2085}2086 2087define <vscale x 4 x i32> @vfptoui_nxv4f32_nxv4i32(<vscale x 4 x float> %va) {2088; CHECK-LABEL: vfptoui_nxv4f32_nxv4i32:2089; CHECK:       # %bb.0:2090; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2091; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v82092; CHECK-NEXT:    ret2093  %evec = fptoui <vscale x 4 x float> %va to <vscale x 4 x i32>2094  ret <vscale x 4 x i32> %evec2095}2096 2097define <vscale x 4 x i64> @vfptosi_nxv4f32_nxv4i64(<vscale x 4 x float> %va) {2098; CHECK-LABEL: vfptosi_nxv4f32_nxv4i64:2099; CHECK:       # %bb.0:2100; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2101; CHECK-NEXT:    vmv2r.v v12, v82102; CHECK-NEXT:    vfwcvt.rtz.x.f.v v8, v122103; CHECK-NEXT:    ret2104  %evec = fptosi <vscale x 4 x float> %va to <vscale x 4 x i64>2105  ret <vscale x 4 x i64> %evec2106}2107 2108define <vscale x 4 x i64> @vfptoui_nxv4f32_nxv4i64(<vscale x 4 x float> %va) {2109; CHECK-LABEL: vfptoui_nxv4f32_nxv4i64:2110; CHECK:       # %bb.0:2111; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2112; CHECK-NEXT:    vmv2r.v v12, v82113; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v8, v122114; CHECK-NEXT:    ret2115  %evec = fptoui <vscale x 4 x float> %va to <vscale x 4 x i64>2116  ret <vscale x 4 x i64> %evec2117}2118 2119define <vscale x 8 x i1> @vfptosi_nxv8f32_nxv8i1(<vscale x 8 x float> %va) {2120; CHECK-LABEL: vfptosi_nxv8f32_nxv8i1:2121; CHECK:       # %bb.0:2122; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma2123; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v82124; CHECK-NEXT:    vand.vi v8, v12, 12125; CHECK-NEXT:    vmsne.vi v0, v8, 02126; CHECK-NEXT:    ret2127  %evec = fptosi <vscale x 8 x float> %va to <vscale x 8 x i1>2128  ret <vscale x 8 x i1> %evec2129}2130 2131define <vscale x 8 x i1> @vfptoui_nxv8f32_nxv8i1(<vscale x 8 x float> %va) {2132; CHECK-LABEL: vfptoui_nxv8f32_nxv8i1:2133; CHECK:       # %bb.0:2134; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma2135; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v82136; CHECK-NEXT:    vand.vi v8, v12, 12137; CHECK-NEXT:    vmsne.vi v0, v8, 02138; CHECK-NEXT:    ret2139  %evec = fptoui <vscale x 8 x float> %va to <vscale x 8 x i1>2140  ret <vscale x 8 x i1> %evec2141}2142 2143define <vscale x 8 x i8> @vfptosi_nxv8f32_nxv8i8(<vscale x 8 x float> %va) {2144; CHECK-LABEL: vfptosi_nxv8f32_nxv8i8:2145; CHECK:       # %bb.0:2146; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma2147; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v82148; CHECK-NEXT:    vsetvli zero, zero, e8, m1, ta, ma2149; CHECK-NEXT:    vnsrl.wi v8, v12, 02150; CHECK-NEXT:    ret2151  %evec = fptosi <vscale x 8 x float> %va to <vscale x 8 x i8>2152  ret <vscale x 8 x i8> %evec2153}2154 2155define <vscale x 8 x i8> @vfptoui_nxv8f32_nxv8i8(<vscale x 8 x float> %va) {2156; CHECK-LABEL: vfptoui_nxv8f32_nxv8i8:2157; CHECK:       # %bb.0:2158; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma2159; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v82160; CHECK-NEXT:    vsetvli zero, zero, e8, m1, ta, ma2161; CHECK-NEXT:    vnsrl.wi v8, v12, 02162; CHECK-NEXT:    ret2163  %evec = fptoui <vscale x 8 x float> %va to <vscale x 8 x i8>2164  ret <vscale x 8 x i8> %evec2165}2166 2167define <vscale x 8 x i16> @vfptosi_nxv8f32_nxv8i16(<vscale x 8 x float> %va) {2168; CHECK-LABEL: vfptosi_nxv8f32_nxv8i16:2169; CHECK:       # %bb.0:2170; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma2171; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v82172; CHECK-NEXT:    vmv.v.v v8, v122173; CHECK-NEXT:    ret2174  %evec = fptosi <vscale x 8 x float> %va to <vscale x 8 x i16>2175  ret <vscale x 8 x i16> %evec2176}2177 2178define <vscale x 8 x i16> @vfptoui_nxv8f32_nxv8i16(<vscale x 8 x float> %va) {2179; CHECK-LABEL: vfptoui_nxv8f32_nxv8i16:2180; CHECK:       # %bb.0:2181; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma2182; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v82183; CHECK-NEXT:    vmv.v.v v8, v122184; CHECK-NEXT:    ret2185  %evec = fptoui <vscale x 8 x float> %va to <vscale x 8 x i16>2186  ret <vscale x 8 x i16> %evec2187}2188 2189define <vscale x 8 x i32> @vfptosi_nxv8f32_nxv8i32(<vscale x 8 x float> %va) {2190; CHECK-LABEL: vfptosi_nxv8f32_nxv8i32:2191; CHECK:       # %bb.0:2192; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2193; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v82194; CHECK-NEXT:    ret2195  %evec = fptosi <vscale x 8 x float> %va to <vscale x 8 x i32>2196  ret <vscale x 8 x i32> %evec2197}2198 2199define <vscale x 8 x i32> @vfptoui_nxv8f32_nxv8i32(<vscale x 8 x float> %va) {2200; CHECK-LABEL: vfptoui_nxv8f32_nxv8i32:2201; CHECK:       # %bb.0:2202; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2203; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v82204; CHECK-NEXT:    ret2205  %evec = fptoui <vscale x 8 x float> %va to <vscale x 8 x i32>2206  ret <vscale x 8 x i32> %evec2207}2208 2209define <vscale x 8 x i64> @vfptosi_nxv8f32_nxv8i64(<vscale x 8 x float> %va) {2210; CHECK-LABEL: vfptosi_nxv8f32_nxv8i64:2211; CHECK:       # %bb.0:2212; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2213; CHECK-NEXT:    vmv4r.v v16, v82214; CHECK-NEXT:    vfwcvt.rtz.x.f.v v8, v162215; CHECK-NEXT:    ret2216  %evec = fptosi <vscale x 8 x float> %va to <vscale x 8 x i64>2217  ret <vscale x 8 x i64> %evec2218}2219 2220define <vscale x 8 x i64> @vfptoui_nxv8f32_nxv8i64(<vscale x 8 x float> %va) {2221; CHECK-LABEL: vfptoui_nxv8f32_nxv8i64:2222; CHECK:       # %bb.0:2223; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2224; CHECK-NEXT:    vmv4r.v v16, v82225; CHECK-NEXT:    vfwcvt.rtz.xu.f.v v8, v162226; CHECK-NEXT:    ret2227  %evec = fptoui <vscale x 8 x float> %va to <vscale x 8 x i64>2228  ret <vscale x 8 x i64> %evec2229}2230 2231define <vscale x 16 x i1> @vfptosi_nxv16f32_nxv16i1(<vscale x 16 x float> %va) {2232; CHECK-LABEL: vfptosi_nxv16f32_nxv16i1:2233; CHECK:       # %bb.0:2234; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma2235; CHECK-NEXT:    vfncvt.rtz.x.f.w v16, v82236; CHECK-NEXT:    vand.vi v8, v16, 12237; CHECK-NEXT:    vmsne.vi v0, v8, 02238; CHECK-NEXT:    ret2239  %evec = fptosi <vscale x 16 x float> %va to <vscale x 16 x i1>2240  ret <vscale x 16 x i1> %evec2241}2242 2243define <vscale x 16 x i1> @vfptoui_nxv16f32_nxv16i1(<vscale x 16 x float> %va) {2244; CHECK-LABEL: vfptoui_nxv16f32_nxv16i1:2245; CHECK:       # %bb.0:2246; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma2247; CHECK-NEXT:    vfncvt.rtz.xu.f.w v16, v82248; CHECK-NEXT:    vand.vi v8, v16, 12249; CHECK-NEXT:    vmsne.vi v0, v8, 02250; CHECK-NEXT:    ret2251  %evec = fptoui <vscale x 16 x float> %va to <vscale x 16 x i1>2252  ret <vscale x 16 x i1> %evec2253}2254 2255define <vscale x 16 x i8> @vfptosi_nxv16f32_nxv16i8(<vscale x 16 x float> %va) {2256; CHECK-LABEL: vfptosi_nxv16f32_nxv16i8:2257; CHECK:       # %bb.0:2258; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma2259; CHECK-NEXT:    vfncvt.rtz.x.f.w v16, v82260; CHECK-NEXT:    vsetvli zero, zero, e8, m2, ta, ma2261; CHECK-NEXT:    vnsrl.wi v8, v16, 02262; CHECK-NEXT:    ret2263  %evec = fptosi <vscale x 16 x float> %va to <vscale x 16 x i8>2264  ret <vscale x 16 x i8> %evec2265}2266 2267define <vscale x 16 x i8> @vfptoui_nxv16f32_nxv16i8(<vscale x 16 x float> %va) {2268; CHECK-LABEL: vfptoui_nxv16f32_nxv16i8:2269; CHECK:       # %bb.0:2270; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma2271; CHECK-NEXT:    vfncvt.rtz.xu.f.w v16, v82272; CHECK-NEXT:    vsetvli zero, zero, e8, m2, ta, ma2273; CHECK-NEXT:    vnsrl.wi v8, v16, 02274; CHECK-NEXT:    ret2275  %evec = fptoui <vscale x 16 x float> %va to <vscale x 16 x i8>2276  ret <vscale x 16 x i8> %evec2277}2278 2279define <vscale x 16 x i16> @vfptosi_nxv16f32_nxv16i16(<vscale x 16 x float> %va) {2280; CHECK-LABEL: vfptosi_nxv16f32_nxv16i16:2281; CHECK:       # %bb.0:2282; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma2283; CHECK-NEXT:    vfncvt.rtz.x.f.w v16, v82284; CHECK-NEXT:    vmv.v.v v8, v162285; CHECK-NEXT:    ret2286  %evec = fptosi <vscale x 16 x float> %va to <vscale x 16 x i16>2287  ret <vscale x 16 x i16> %evec2288}2289 2290define <vscale x 16 x i16> @vfptoui_nxv16f32_nxv16i16(<vscale x 16 x float> %va) {2291; CHECK-LABEL: vfptoui_nxv16f32_nxv16i16:2292; CHECK:       # %bb.0:2293; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma2294; CHECK-NEXT:    vfncvt.rtz.xu.f.w v16, v82295; CHECK-NEXT:    vmv.v.v v8, v162296; CHECK-NEXT:    ret2297  %evec = fptoui <vscale x 16 x float> %va to <vscale x 16 x i16>2298  ret <vscale x 16 x i16> %evec2299}2300 2301define <vscale x 16 x i32> @vfptosi_nxv16f32_nxv16i32(<vscale x 16 x float> %va) {2302; CHECK-LABEL: vfptosi_nxv16f32_nxv16i32:2303; CHECK:       # %bb.0:2304; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma2305; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v82306; CHECK-NEXT:    ret2307  %evec = fptosi <vscale x 16 x float> %va to <vscale x 16 x i32>2308  ret <vscale x 16 x i32> %evec2309}2310 2311define <vscale x 16 x i32> @vfptoui_nxv16f32_nxv16i32(<vscale x 16 x float> %va) {2312; CHECK-LABEL: vfptoui_nxv16f32_nxv16i32:2313; CHECK:       # %bb.0:2314; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma2315; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v82316; CHECK-NEXT:    ret2317  %evec = fptoui <vscale x 16 x float> %va to <vscale x 16 x i32>2318  ret <vscale x 16 x i32> %evec2319}2320 2321define <vscale x 1 x i1> @vfptosi_nxv1f64_nxv1i1(<vscale x 1 x double> %va) {2322; CHECK-LABEL: vfptosi_nxv1f64_nxv1i1:2323; CHECK:       # %bb.0:2324; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma2325; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v82326; CHECK-NEXT:    vand.vi v8, v9, 12327; CHECK-NEXT:    vmsne.vi v0, v8, 02328; CHECK-NEXT:    ret2329  %evec = fptosi <vscale x 1 x double> %va to <vscale x 1 x i1>2330  ret <vscale x 1 x i1> %evec2331}2332 2333define <vscale x 1 x i1> @vfptoui_nxv1f64_nxv1i1(<vscale x 1 x double> %va) {2334; CHECK-LABEL: vfptoui_nxv1f64_nxv1i1:2335; CHECK:       # %bb.0:2336; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma2337; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v82338; CHECK-NEXT:    vand.vi v8, v9, 12339; CHECK-NEXT:    vmsne.vi v0, v8, 02340; CHECK-NEXT:    ret2341  %evec = fptoui <vscale x 1 x double> %va to <vscale x 1 x i1>2342  ret <vscale x 1 x i1> %evec2343}2344 2345define <vscale x 1 x i8> @vfptosi_nxv1f64_nxv1i8(<vscale x 1 x double> %va) {2346; CHECK-LABEL: vfptosi_nxv1f64_nxv1i8:2347; CHECK:       # %bb.0:2348; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma2349; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v82350; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma2351; CHECK-NEXT:    vnsrl.wi v8, v9, 02352; CHECK-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma2353; CHECK-NEXT:    vnsrl.wi v8, v8, 02354; CHECK-NEXT:    ret2355  %evec = fptosi <vscale x 1 x double> %va to <vscale x 1 x i8>2356  ret <vscale x 1 x i8> %evec2357}2358 2359define <vscale x 1 x i8> @vfptoui_nxv1f64_nxv1i8(<vscale x 1 x double> %va) {2360; CHECK-LABEL: vfptoui_nxv1f64_nxv1i8:2361; CHECK:       # %bb.0:2362; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma2363; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v82364; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma2365; CHECK-NEXT:    vnsrl.wi v8, v9, 02366; CHECK-NEXT:    vsetvli zero, zero, e8, mf8, ta, ma2367; CHECK-NEXT:    vnsrl.wi v8, v8, 02368; CHECK-NEXT:    ret2369  %evec = fptoui <vscale x 1 x double> %va to <vscale x 1 x i8>2370  ret <vscale x 1 x i8> %evec2371}2372 2373define <vscale x 1 x i16> @vfptosi_nxv1f64_nxv1i16(<vscale x 1 x double> %va) {2374; CHECK-LABEL: vfptosi_nxv1f64_nxv1i16:2375; CHECK:       # %bb.0:2376; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma2377; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v82378; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma2379; CHECK-NEXT:    vnsrl.wi v8, v9, 02380; CHECK-NEXT:    ret2381  %evec = fptosi <vscale x 1 x double> %va to <vscale x 1 x i16>2382  ret <vscale x 1 x i16> %evec2383}2384 2385define <vscale x 1 x i16> @vfptoui_nxv1f64_nxv1i16(<vscale x 1 x double> %va) {2386; CHECK-LABEL: vfptoui_nxv1f64_nxv1i16:2387; CHECK:       # %bb.0:2388; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma2389; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v82390; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma2391; CHECK-NEXT:    vnsrl.wi v8, v9, 02392; CHECK-NEXT:    ret2393  %evec = fptoui <vscale x 1 x double> %va to <vscale x 1 x i16>2394  ret <vscale x 1 x i16> %evec2395}2396 2397define <vscale x 1 x i32> @vfptosi_nxv1f64_nxv1i32(<vscale x 1 x double> %va) {2398; CHECK-LABEL: vfptosi_nxv1f64_nxv1i32:2399; CHECK:       # %bb.0:2400; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma2401; CHECK-NEXT:    vfncvt.rtz.x.f.w v9, v82402; CHECK-NEXT:    vmv1r.v v8, v92403; CHECK-NEXT:    ret2404  %evec = fptosi <vscale x 1 x double> %va to <vscale x 1 x i32>2405  ret <vscale x 1 x i32> %evec2406}2407 2408define <vscale x 1 x i32> @vfptoui_nxv1f64_nxv1i32(<vscale x 1 x double> %va) {2409; CHECK-LABEL: vfptoui_nxv1f64_nxv1i32:2410; CHECK:       # %bb.0:2411; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma2412; CHECK-NEXT:    vfncvt.rtz.xu.f.w v9, v82413; CHECK-NEXT:    vmv1r.v v8, v92414; CHECK-NEXT:    ret2415  %evec = fptoui <vscale x 1 x double> %va to <vscale x 1 x i32>2416  ret <vscale x 1 x i32> %evec2417}2418 2419define <vscale x 1 x i64> @vfptosi_nxv1f64_nxv1i64(<vscale x 1 x double> %va) {2420; CHECK-LABEL: vfptosi_nxv1f64_nxv1i64:2421; CHECK:       # %bb.0:2422; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma2423; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v82424; CHECK-NEXT:    ret2425  %evec = fptosi <vscale x 1 x double> %va to <vscale x 1 x i64>2426  ret <vscale x 1 x i64> %evec2427}2428 2429define <vscale x 1 x i64> @vfptoui_nxv1f64_nxv1i64(<vscale x 1 x double> %va) {2430; CHECK-LABEL: vfptoui_nxv1f64_nxv1i64:2431; CHECK:       # %bb.0:2432; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma2433; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v82434; CHECK-NEXT:    ret2435  %evec = fptoui <vscale x 1 x double> %va to <vscale x 1 x i64>2436  ret <vscale x 1 x i64> %evec2437}2438 2439define <vscale x 2 x i1> @vfptosi_nxv2f64_nxv2i1(<vscale x 2 x double> %va) {2440; CHECK-LABEL: vfptosi_nxv2f64_nxv2i1:2441; CHECK:       # %bb.0:2442; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2443; CHECK-NEXT:    vfncvt.rtz.x.f.w v10, v82444; CHECK-NEXT:    vand.vi v8, v10, 12445; CHECK-NEXT:    vmsne.vi v0, v8, 02446; CHECK-NEXT:    ret2447  %evec = fptosi <vscale x 2 x double> %va to <vscale x 2 x i1>2448  ret <vscale x 2 x i1> %evec2449}2450 2451define <vscale x 2 x i1> @vfptoui_nxv2f64_nxv2i1(<vscale x 2 x double> %va) {2452; CHECK-LABEL: vfptoui_nxv2f64_nxv2i1:2453; CHECK:       # %bb.0:2454; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2455; CHECK-NEXT:    vfncvt.rtz.xu.f.w v10, v82456; CHECK-NEXT:    vand.vi v8, v10, 12457; CHECK-NEXT:    vmsne.vi v0, v8, 02458; CHECK-NEXT:    ret2459  %evec = fptoui <vscale x 2 x double> %va to <vscale x 2 x i1>2460  ret <vscale x 2 x i1> %evec2461}2462 2463define <vscale x 2 x i8> @vfptosi_nxv2f64_nxv2i8(<vscale x 2 x double> %va) {2464; CHECK-LABEL: vfptosi_nxv2f64_nxv2i8:2465; CHECK:       # %bb.0:2466; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2467; CHECK-NEXT:    vfncvt.rtz.x.f.w v10, v82468; CHECK-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma2469; CHECK-NEXT:    vnsrl.wi v8, v10, 02470; CHECK-NEXT:    vsetvli zero, zero, e8, mf4, ta, ma2471; CHECK-NEXT:    vnsrl.wi v8, v8, 02472; CHECK-NEXT:    ret2473  %evec = fptosi <vscale x 2 x double> %va to <vscale x 2 x i8>2474  ret <vscale x 2 x i8> %evec2475}2476 2477define <vscale x 2 x i8> @vfptoui_nxv2f64_nxv2i8(<vscale x 2 x double> %va) {2478; CHECK-LABEL: vfptoui_nxv2f64_nxv2i8:2479; CHECK:       # %bb.0:2480; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2481; CHECK-NEXT:    vfncvt.rtz.xu.f.w v10, v82482; CHECK-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma2483; CHECK-NEXT:    vnsrl.wi v8, v10, 02484; CHECK-NEXT:    vsetvli zero, zero, e8, mf4, ta, ma2485; CHECK-NEXT:    vnsrl.wi v8, v8, 02486; CHECK-NEXT:    ret2487  %evec = fptoui <vscale x 2 x double> %va to <vscale x 2 x i8>2488  ret <vscale x 2 x i8> %evec2489}2490 2491define <vscale x 2 x i16> @vfptosi_nxv2f64_nxv2i16(<vscale x 2 x double> %va) {2492; CHECK-LABEL: vfptosi_nxv2f64_nxv2i16:2493; CHECK:       # %bb.0:2494; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2495; CHECK-NEXT:    vfncvt.rtz.x.f.w v10, v82496; CHECK-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma2497; CHECK-NEXT:    vnsrl.wi v8, v10, 02498; CHECK-NEXT:    ret2499  %evec = fptosi <vscale x 2 x double> %va to <vscale x 2 x i16>2500  ret <vscale x 2 x i16> %evec2501}2502 2503define <vscale x 2 x i16> @vfptoui_nxv2f64_nxv2i16(<vscale x 2 x double> %va) {2504; CHECK-LABEL: vfptoui_nxv2f64_nxv2i16:2505; CHECK:       # %bb.0:2506; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2507; CHECK-NEXT:    vfncvt.rtz.xu.f.w v10, v82508; CHECK-NEXT:    vsetvli zero, zero, e16, mf2, ta, ma2509; CHECK-NEXT:    vnsrl.wi v8, v10, 02510; CHECK-NEXT:    ret2511  %evec = fptoui <vscale x 2 x double> %va to <vscale x 2 x i16>2512  ret <vscale x 2 x i16> %evec2513}2514 2515define <vscale x 2 x i32> @vfptosi_nxv2f64_nxv2i32(<vscale x 2 x double> %va) {2516; CHECK-LABEL: vfptosi_nxv2f64_nxv2i32:2517; CHECK:       # %bb.0:2518; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2519; CHECK-NEXT:    vfncvt.rtz.x.f.w v10, v82520; CHECK-NEXT:    vmv.v.v v8, v102521; CHECK-NEXT:    ret2522  %evec = fptosi <vscale x 2 x double> %va to <vscale x 2 x i32>2523  ret <vscale x 2 x i32> %evec2524}2525 2526define <vscale x 2 x i32> @vfptoui_nxv2f64_nxv2i32(<vscale x 2 x double> %va) {2527; CHECK-LABEL: vfptoui_nxv2f64_nxv2i32:2528; CHECK:       # %bb.0:2529; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma2530; CHECK-NEXT:    vfncvt.rtz.xu.f.w v10, v82531; CHECK-NEXT:    vmv.v.v v8, v102532; CHECK-NEXT:    ret2533  %evec = fptoui <vscale x 2 x double> %va to <vscale x 2 x i32>2534  ret <vscale x 2 x i32> %evec2535}2536 2537define <vscale x 2 x i64> @vfptosi_nxv2f64_nxv2i64(<vscale x 2 x double> %va) {2538; CHECK-LABEL: vfptosi_nxv2f64_nxv2i64:2539; CHECK:       # %bb.0:2540; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma2541; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v82542; CHECK-NEXT:    ret2543  %evec = fptosi <vscale x 2 x double> %va to <vscale x 2 x i64>2544  ret <vscale x 2 x i64> %evec2545}2546 2547define <vscale x 2 x i64> @vfptoui_nxv2f64_nxv2i64(<vscale x 2 x double> %va) {2548; CHECK-LABEL: vfptoui_nxv2f64_nxv2i64:2549; CHECK:       # %bb.0:2550; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma2551; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v82552; CHECK-NEXT:    ret2553  %evec = fptoui <vscale x 2 x double> %va to <vscale x 2 x i64>2554  ret <vscale x 2 x i64> %evec2555}2556 2557define <vscale x 4 x i1> @vfptosi_nxv4f64_nxv4i1(<vscale x 4 x double> %va) {2558; CHECK-LABEL: vfptosi_nxv4f64_nxv4i1:2559; CHECK:       # %bb.0:2560; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2561; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v82562; CHECK-NEXT:    vand.vi v8, v12, 12563; CHECK-NEXT:    vmsne.vi v0, v8, 02564; CHECK-NEXT:    ret2565  %evec = fptosi <vscale x 4 x double> %va to <vscale x 4 x i1>2566  ret <vscale x 4 x i1> %evec2567}2568 2569define <vscale x 4 x i1> @vfptoui_nxv4f64_nxv4i1(<vscale x 4 x double> %va) {2570; CHECK-LABEL: vfptoui_nxv4f64_nxv4i1:2571; CHECK:       # %bb.0:2572; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2573; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v82574; CHECK-NEXT:    vand.vi v8, v12, 12575; CHECK-NEXT:    vmsne.vi v0, v8, 02576; CHECK-NEXT:    ret2577  %evec = fptoui <vscale x 4 x double> %va to <vscale x 4 x i1>2578  ret <vscale x 4 x i1> %evec2579}2580 2581define <vscale x 4 x i8> @vfptosi_nxv4f64_nxv4i8(<vscale x 4 x double> %va) {2582; CHECK-LABEL: vfptosi_nxv4f64_nxv4i8:2583; CHECK:       # %bb.0:2584; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2585; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v82586; CHECK-NEXT:    vsetvli zero, zero, e16, m1, ta, ma2587; CHECK-NEXT:    vnsrl.wi v8, v12, 02588; CHECK-NEXT:    vsetvli zero, zero, e8, mf2, ta, ma2589; CHECK-NEXT:    vnsrl.wi v8, v8, 02590; CHECK-NEXT:    ret2591  %evec = fptosi <vscale x 4 x double> %va to <vscale x 4 x i8>2592  ret <vscale x 4 x i8> %evec2593}2594 2595define <vscale x 4 x i8> @vfptoui_nxv4f64_nxv4i8(<vscale x 4 x double> %va) {2596; CHECK-LABEL: vfptoui_nxv4f64_nxv4i8:2597; CHECK:       # %bb.0:2598; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2599; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v82600; CHECK-NEXT:    vsetvli zero, zero, e16, m1, ta, ma2601; CHECK-NEXT:    vnsrl.wi v8, v12, 02602; CHECK-NEXT:    vsetvli zero, zero, e8, mf2, ta, ma2603; CHECK-NEXT:    vnsrl.wi v8, v8, 02604; CHECK-NEXT:    ret2605  %evec = fptoui <vscale x 4 x double> %va to <vscale x 4 x i8>2606  ret <vscale x 4 x i8> %evec2607}2608 2609define <vscale x 4 x i16> @vfptosi_nxv4f64_nxv4i16(<vscale x 4 x double> %va) {2610; CHECK-LABEL: vfptosi_nxv4f64_nxv4i16:2611; CHECK:       # %bb.0:2612; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2613; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v82614; CHECK-NEXT:    vsetvli zero, zero, e16, m1, ta, ma2615; CHECK-NEXT:    vnsrl.wi v8, v12, 02616; CHECK-NEXT:    ret2617  %evec = fptosi <vscale x 4 x double> %va to <vscale x 4 x i16>2618  ret <vscale x 4 x i16> %evec2619}2620 2621define <vscale x 4 x i16> @vfptoui_nxv4f64_nxv4i16(<vscale x 4 x double> %va) {2622; CHECK-LABEL: vfptoui_nxv4f64_nxv4i16:2623; CHECK:       # %bb.0:2624; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2625; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v82626; CHECK-NEXT:    vsetvli zero, zero, e16, m1, ta, ma2627; CHECK-NEXT:    vnsrl.wi v8, v12, 02628; CHECK-NEXT:    ret2629  %evec = fptoui <vscale x 4 x double> %va to <vscale x 4 x i16>2630  ret <vscale x 4 x i16> %evec2631}2632 2633define <vscale x 4 x i32> @vfptosi_nxv4f64_nxv4i32(<vscale x 4 x double> %va) {2634; CHECK-LABEL: vfptosi_nxv4f64_nxv4i32:2635; CHECK:       # %bb.0:2636; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2637; CHECK-NEXT:    vfncvt.rtz.x.f.w v12, v82638; CHECK-NEXT:    vmv.v.v v8, v122639; CHECK-NEXT:    ret2640  %evec = fptosi <vscale x 4 x double> %va to <vscale x 4 x i32>2641  ret <vscale x 4 x i32> %evec2642}2643 2644define <vscale x 4 x i32> @vfptoui_nxv4f64_nxv4i32(<vscale x 4 x double> %va) {2645; CHECK-LABEL: vfptoui_nxv4f64_nxv4i32:2646; CHECK:       # %bb.0:2647; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma2648; CHECK-NEXT:    vfncvt.rtz.xu.f.w v12, v82649; CHECK-NEXT:    vmv.v.v v8, v122650; CHECK-NEXT:    ret2651  %evec = fptoui <vscale x 4 x double> %va to <vscale x 4 x i32>2652  ret <vscale x 4 x i32> %evec2653}2654 2655define <vscale x 4 x i64> @vfptosi_nxv4f64_nxv4i64(<vscale x 4 x double> %va) {2656; CHECK-LABEL: vfptosi_nxv4f64_nxv4i64:2657; CHECK:       # %bb.0:2658; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma2659; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v82660; CHECK-NEXT:    ret2661  %evec = fptosi <vscale x 4 x double> %va to <vscale x 4 x i64>2662  ret <vscale x 4 x i64> %evec2663}2664 2665define <vscale x 4 x i64> @vfptoui_nxv4f64_nxv4i64(<vscale x 4 x double> %va) {2666; CHECK-LABEL: vfptoui_nxv4f64_nxv4i64:2667; CHECK:       # %bb.0:2668; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma2669; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v82670; CHECK-NEXT:    ret2671  %evec = fptoui <vscale x 4 x double> %va to <vscale x 4 x i64>2672  ret <vscale x 4 x i64> %evec2673}2674 2675define <vscale x 8 x i1> @vfptosi_nxv8f64_nxv8i1(<vscale x 8 x double> %va) {2676; CHECK-LABEL: vfptosi_nxv8f64_nxv8i1:2677; CHECK:       # %bb.0:2678; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2679; CHECK-NEXT:    vfncvt.rtz.x.f.w v16, v82680; CHECK-NEXT:    vand.vi v8, v16, 12681; CHECK-NEXT:    vmsne.vi v0, v8, 02682; CHECK-NEXT:    ret2683  %evec = fptosi <vscale x 8 x double> %va to <vscale x 8 x i1>2684  ret <vscale x 8 x i1> %evec2685}2686 2687define <vscale x 8 x i1> @vfptoui_nxv8f64_nxv8i1(<vscale x 8 x double> %va) {2688; CHECK-LABEL: vfptoui_nxv8f64_nxv8i1:2689; CHECK:       # %bb.0:2690; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2691; CHECK-NEXT:    vfncvt.rtz.xu.f.w v16, v82692; CHECK-NEXT:    vand.vi v8, v16, 12693; CHECK-NEXT:    vmsne.vi v0, v8, 02694; CHECK-NEXT:    ret2695  %evec = fptoui <vscale x 8 x double> %va to <vscale x 8 x i1>2696  ret <vscale x 8 x i1> %evec2697}2698 2699define <vscale x 8 x i8> @vfptosi_nxv8f64_nxv8i8(<vscale x 8 x double> %va) {2700; CHECK-LABEL: vfptosi_nxv8f64_nxv8i8:2701; CHECK:       # %bb.0:2702; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2703; CHECK-NEXT:    vfncvt.rtz.x.f.w v16, v82704; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma2705; CHECK-NEXT:    vnsrl.wi v10, v16, 02706; CHECK-NEXT:    vsetvli zero, zero, e8, m1, ta, ma2707; CHECK-NEXT:    vnsrl.wi v8, v10, 02708; CHECK-NEXT:    ret2709  %evec = fptosi <vscale x 8 x double> %va to <vscale x 8 x i8>2710  ret <vscale x 8 x i8> %evec2711}2712 2713define <vscale x 8 x i8> @vfptoui_nxv8f64_nxv8i8(<vscale x 8 x double> %va) {2714; CHECK-LABEL: vfptoui_nxv8f64_nxv8i8:2715; CHECK:       # %bb.0:2716; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2717; CHECK-NEXT:    vfncvt.rtz.xu.f.w v16, v82718; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma2719; CHECK-NEXT:    vnsrl.wi v10, v16, 02720; CHECK-NEXT:    vsetvli zero, zero, e8, m1, ta, ma2721; CHECK-NEXT:    vnsrl.wi v8, v10, 02722; CHECK-NEXT:    ret2723  %evec = fptoui <vscale x 8 x double> %va to <vscale x 8 x i8>2724  ret <vscale x 8 x i8> %evec2725}2726 2727define <vscale x 8 x i16> @vfptosi_nxv8f64_nxv8i16(<vscale x 8 x double> %va) {2728; CHECK-LABEL: vfptosi_nxv8f64_nxv8i16:2729; CHECK:       # %bb.0:2730; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2731; CHECK-NEXT:    vfncvt.rtz.x.f.w v16, v82732; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma2733; CHECK-NEXT:    vnsrl.wi v8, v16, 02734; CHECK-NEXT:    ret2735  %evec = fptosi <vscale x 8 x double> %va to <vscale x 8 x i16>2736  ret <vscale x 8 x i16> %evec2737}2738 2739define <vscale x 8 x i16> @vfptoui_nxv8f64_nxv8i16(<vscale x 8 x double> %va) {2740; CHECK-LABEL: vfptoui_nxv8f64_nxv8i16:2741; CHECK:       # %bb.0:2742; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2743; CHECK-NEXT:    vfncvt.rtz.xu.f.w v16, v82744; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma2745; CHECK-NEXT:    vnsrl.wi v8, v16, 02746; CHECK-NEXT:    ret2747  %evec = fptoui <vscale x 8 x double> %va to <vscale x 8 x i16>2748  ret <vscale x 8 x i16> %evec2749}2750 2751define <vscale x 8 x i32> @vfptosi_nxv8f64_nxv8i32(<vscale x 8 x double> %va) {2752; CHECK-LABEL: vfptosi_nxv8f64_nxv8i32:2753; CHECK:       # %bb.0:2754; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2755; CHECK-NEXT:    vfncvt.rtz.x.f.w v16, v82756; CHECK-NEXT:    vmv.v.v v8, v162757; CHECK-NEXT:    ret2758  %evec = fptosi <vscale x 8 x double> %va to <vscale x 8 x i32>2759  ret <vscale x 8 x i32> %evec2760}2761 2762define <vscale x 8 x i32> @vfptoui_nxv8f64_nxv8i32(<vscale x 8 x double> %va) {2763; CHECK-LABEL: vfptoui_nxv8f64_nxv8i32:2764; CHECK:       # %bb.0:2765; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2766; CHECK-NEXT:    vfncvt.rtz.xu.f.w v16, v82767; CHECK-NEXT:    vmv.v.v v8, v162768; CHECK-NEXT:    ret2769  %evec = fptoui <vscale x 8 x double> %va to <vscale x 8 x i32>2770  ret <vscale x 8 x i32> %evec2771}2772 2773define <vscale x 8 x i64> @vfptosi_nxv8f64_nxv8i64(<vscale x 8 x double> %va) {2774; CHECK-LABEL: vfptosi_nxv8f64_nxv8i64:2775; CHECK:       # %bb.0:2776; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2777; CHECK-NEXT:    vfcvt.rtz.x.f.v v8, v82778; CHECK-NEXT:    ret2779  %evec = fptosi <vscale x 8 x double> %va to <vscale x 8 x i64>2780  ret <vscale x 8 x i64> %evec2781}2782 2783define <vscale x 8 x i64> @vfptoui_nxv8f64_nxv8i64(<vscale x 8 x double> %va) {2784; CHECK-LABEL: vfptoui_nxv8f64_nxv8i64:2785; CHECK:       # %bb.0:2786; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2787; CHECK-NEXT:    vfcvt.rtz.xu.f.v v8, v82788; CHECK-NEXT:    ret2789  %evec = fptoui <vscale x 8 x double> %va to <vscale x 8 x i64>2790  ret <vscale x 8 x i64> %evec2791}2792