3855 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+v,+m -verify-machineinstrs < %s \3; RUN: | FileCheck %s --check-prefixes=CHECK,RV324; RUN: llc -mtriple=riscv64 -mattr=+v,+m -verify-machineinstrs < %s \5; RUN: | FileCheck %s --check-prefixes=CHECK,RV646 7; FIXME: We're missing canonicalizations of ISD::VP_SETCC equivalent to those8; for ISD::SETCC, e.g., splats aren't moved to the RHS.9 10define <vscale x 1 x i1> @icmp_eq_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {11; CHECK-LABEL: icmp_eq_vv_nxv1i8:12; CHECK: # %bb.0:13; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma14; CHECK-NEXT: vmseq.vv v0, v8, v9, v0.t15; CHECK-NEXT: ret16 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)17 ret <vscale x 1 x i1> %v18}19 20define <vscale x 1 x i1> @icmp_eq_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {21; CHECK-LABEL: icmp_eq_vx_nxv1i8:22; CHECK: # %bb.0:23; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma24; CHECK-NEXT: vmseq.vx v0, v8, a0, v0.t25; CHECK-NEXT: ret26 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 027 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer28 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)29 ret <vscale x 1 x i1> %v30}31 32define <vscale x 1 x i1> @icmp_eq_vx_swap_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {33; CHECK-LABEL: icmp_eq_vx_swap_nxv1i8:34; CHECK: # %bb.0:35; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma36; CHECK-NEXT: vmseq.vx v0, v8, a0, v0.t37; CHECK-NEXT: ret38 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 039 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer40 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %vb, <vscale x 1 x i8> %va, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)41 ret <vscale x 1 x i1> %v42}43 44define <vscale x 1 x i1> @icmp_eq_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {45; CHECK-LABEL: icmp_eq_vi_nxv1i8:46; CHECK: # %bb.0:47; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma48; CHECK-NEXT: vmseq.vi v0, v8, 4, v0.t49; CHECK-NEXT: ret50 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 4), metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)51 ret <vscale x 1 x i1> %v52}53 54define <vscale x 1 x i1> @icmp_eq_vi_swap_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {55; CHECK-LABEL: icmp_eq_vi_swap_nxv1i8:56; CHECK: # %bb.0:57; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma58; CHECK-NEXT: vmseq.vi v0, v8, 4, v0.t59; CHECK-NEXT: ret60 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> splat (i8 4), <vscale x 1 x i8> %va, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)61 ret <vscale x 1 x i1> %v62}63 64define <vscale x 1 x i1> @icmp_ne_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {65; CHECK-LABEL: icmp_ne_vv_nxv1i8:66; CHECK: # %bb.0:67; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma68; CHECK-NEXT: vmsne.vv v0, v8, v9, v0.t69; CHECK-NEXT: ret70 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)71 ret <vscale x 1 x i1> %v72}73 74define <vscale x 1 x i1> @icmp_ne_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {75; CHECK-LABEL: icmp_ne_vx_nxv1i8:76; CHECK: # %bb.0:77; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma78; CHECK-NEXT: vmsne.vx v0, v8, a0, v0.t79; CHECK-NEXT: ret80 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 081 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer82 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)83 ret <vscale x 1 x i1> %v84}85 86define <vscale x 1 x i1> @icmp_ne_vx_swap_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {87; CHECK-LABEL: icmp_ne_vx_swap_nxv1i8:88; CHECK: # %bb.0:89; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma90; CHECK-NEXT: vmsne.vx v0, v8, a0, v0.t91; CHECK-NEXT: ret92 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 093 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer94 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %vb, <vscale x 1 x i8> %va, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)95 ret <vscale x 1 x i1> %v96}97 98define <vscale x 1 x i1> @icmp_ne_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {99; CHECK-LABEL: icmp_ne_vi_nxv1i8:100; CHECK: # %bb.0:101; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma102; CHECK-NEXT: vmsne.vi v0, v8, 4, v0.t103; CHECK-NEXT: ret104 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 4), metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)105 ret <vscale x 1 x i1> %v106}107 108define <vscale x 1 x i1> @icmp_ne_vi_swap_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {109; CHECK-LABEL: icmp_ne_vi_swap_nxv1i8:110; CHECK: # %bb.0:111; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma112; CHECK-NEXT: vmsne.vi v0, v8, 4, v0.t113; CHECK-NEXT: ret114 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> splat (i8 4), <vscale x 1 x i8> %va, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)115 ret <vscale x 1 x i1> %v116}117 118define <vscale x 1 x i1> @icmp_ugt_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {119; CHECK-LABEL: icmp_ugt_vv_nxv1i8:120; CHECK: # %bb.0:121; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma122; CHECK-NEXT: vmsltu.vv v0, v9, v8, v0.t123; CHECK-NEXT: ret124 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)125 ret <vscale x 1 x i1> %v126}127 128define <vscale x 1 x i1> @icmp_ugt_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {129; CHECK-LABEL: icmp_ugt_vx_nxv1i8:130; CHECK: # %bb.0:131; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma132; CHECK-NEXT: vmsgtu.vx v0, v8, a0, v0.t133; CHECK-NEXT: ret134 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0135 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer136 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)137 ret <vscale x 1 x i1> %v138}139 140define <vscale x 1 x i1> @icmp_ugt_vx_swap_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {141; CHECK-LABEL: icmp_ugt_vx_swap_nxv1i8:142; CHECK: # %bb.0:143; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma144; CHECK-NEXT: vmsltu.vx v0, v8, a0, v0.t145; CHECK-NEXT: ret146 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0147 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer148 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %vb, <vscale x 1 x i8> %va, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)149 ret <vscale x 1 x i1> %v150}151 152define <vscale x 1 x i1> @icmp_ugt_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {153; CHECK-LABEL: icmp_ugt_vi_nxv1i8:154; CHECK: # %bb.0:155; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma156; CHECK-NEXT: vmsgtu.vi v0, v8, 4, v0.t157; CHECK-NEXT: ret158 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 4), metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)159 ret <vscale x 1 x i1> %v160}161 162define <vscale x 1 x i1> @icmp_ugt_vi_swap_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {163; CHECK-LABEL: icmp_ugt_vi_swap_nxv1i8:164; CHECK: # %bb.0:165; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma166; CHECK-NEXT: vmsleu.vi v0, v8, 3, v0.t167; CHECK-NEXT: ret168 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> splat (i8 4), <vscale x 1 x i8> %va, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)169 ret <vscale x 1 x i1> %v170}171 172define <vscale x 1 x i1> @icmp_uge_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {173; CHECK-LABEL: icmp_uge_vv_nxv1i8:174; CHECK: # %bb.0:175; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma176; CHECK-NEXT: vmsleu.vv v0, v9, v8, v0.t177; CHECK-NEXT: ret178 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)179 ret <vscale x 1 x i1> %v180}181 182define <vscale x 1 x i1> @icmp_uge_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {183; CHECK-LABEL: icmp_uge_vx_nxv1i8:184; CHECK: # %bb.0:185; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma186; CHECK-NEXT: vmv.v.x v9, a0187; CHECK-NEXT: vmsleu.vv v0, v9, v8, v0.t188; CHECK-NEXT: ret189 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0190 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer191 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)192 ret <vscale x 1 x i1> %v193}194 195define <vscale x 1 x i1> @icmp_uge_vx_swap_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {196; CHECK-LABEL: icmp_uge_vx_swap_nxv1i8:197; CHECK: # %bb.0:198; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma199; CHECK-NEXT: vmsleu.vx v0, v8, a0, v0.t200; CHECK-NEXT: ret201 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0202 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer203 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %vb, <vscale x 1 x i8> %va, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)204 ret <vscale x 1 x i1> %v205}206 207define <vscale x 1 x i1> @icmp_uge_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {208; CHECK-LABEL: icmp_uge_vi_nxv1i8:209; CHECK: # %bb.0:210; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma211; CHECK-NEXT: vmsgtu.vi v0, v8, 3, v0.t212; CHECK-NEXT: ret213 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 4), metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)214 ret <vscale x 1 x i1> %v215}216 217define <vscale x 1 x i1> @icmp_uge_vi_swap_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {218; CHECK-LABEL: icmp_uge_vi_swap_nxv1i8:219; CHECK: # %bb.0:220; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma221; CHECK-NEXT: vmsleu.vi v0, v8, 4, v0.t222; CHECK-NEXT: ret223 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> splat (i8 4), <vscale x 1 x i8> %va, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)224 ret <vscale x 1 x i1> %v225}226 227define <vscale x 1 x i1> @icmp_ult_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {228; CHECK-LABEL: icmp_ult_vv_nxv1i8:229; CHECK: # %bb.0:230; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma231; CHECK-NEXT: vmsltu.vv v0, v8, v9, v0.t232; CHECK-NEXT: ret233 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)234 ret <vscale x 1 x i1> %v235}236 237define <vscale x 1 x i1> @icmp_ult_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {238; CHECK-LABEL: icmp_ult_vx_nxv1i8:239; CHECK: # %bb.0:240; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma241; CHECK-NEXT: vmsltu.vx v0, v8, a0, v0.t242; CHECK-NEXT: ret243 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0244 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer245 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)246 ret <vscale x 1 x i1> %v247}248 249define <vscale x 1 x i1> @icmp_ult_vx_swap_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {250; CHECK-LABEL: icmp_ult_vx_swap_nxv1i8:251; CHECK: # %bb.0:252; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma253; CHECK-NEXT: vmsgtu.vx v0, v8, a0, v0.t254; CHECK-NEXT: ret255 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0256 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer257 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %vb, <vscale x 1 x i8> %va, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)258 ret <vscale x 1 x i1> %v259}260 261define <vscale x 1 x i1> @icmp_ult_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {262; CHECK-LABEL: icmp_ult_vi_nxv1i8:263; CHECK: # %bb.0:264; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma265; CHECK-NEXT: vmsleu.vi v0, v8, 3, v0.t266; CHECK-NEXT: ret267 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 4), metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)268 ret <vscale x 1 x i1> %v269}270 271define <vscale x 1 x i1> @icmp_ult_vi_swap_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {272; CHECK-LABEL: icmp_ult_vi_swap_nxv1i8:273; CHECK: # %bb.0:274; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma275; CHECK-NEXT: vmsgtu.vi v0, v8, 4, v0.t276; CHECK-NEXT: ret277 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> splat (i8 4), <vscale x 1 x i8> %va, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)278 ret <vscale x 1 x i1> %v279}280 281define <vscale x 1 x i1> @icmp_sgt_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {282; CHECK-LABEL: icmp_sgt_vv_nxv1i8:283; CHECK: # %bb.0:284; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma285; CHECK-NEXT: vmslt.vv v0, v9, v8, v0.t286; CHECK-NEXT: ret287 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)288 ret <vscale x 1 x i1> %v289}290 291define <vscale x 1 x i1> @icmp_sgt_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {292; CHECK-LABEL: icmp_sgt_vx_nxv1i8:293; CHECK: # %bb.0:294; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma295; CHECK-NEXT: vmsgt.vx v0, v8, a0, v0.t296; CHECK-NEXT: ret297 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0298 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer299 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)300 ret <vscale x 1 x i1> %v301}302 303define <vscale x 1 x i1> @icmp_sgt_vx_swap_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {304; CHECK-LABEL: icmp_sgt_vx_swap_nxv1i8:305; CHECK: # %bb.0:306; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma307; CHECK-NEXT: vmslt.vx v0, v8, a0, v0.t308; CHECK-NEXT: ret309 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0310 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer311 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %vb, <vscale x 1 x i8> %va, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)312 ret <vscale x 1 x i1> %v313}314 315define <vscale x 1 x i1> @icmp_sgt_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {316; CHECK-LABEL: icmp_sgt_vi_nxv1i8:317; CHECK: # %bb.0:318; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma319; CHECK-NEXT: vmsgt.vi v0, v8, 4, v0.t320; CHECK-NEXT: ret321 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 4), metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)322 ret <vscale x 1 x i1> %v323}324 325define <vscale x 1 x i1> @icmp_sgt_vi_swap_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {326; CHECK-LABEL: icmp_sgt_vi_swap_nxv1i8:327; CHECK: # %bb.0:328; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma329; CHECK-NEXT: vmsle.vi v0, v8, 3, v0.t330; CHECK-NEXT: ret331 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> splat (i8 4), <vscale x 1 x i8> %va, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)332 ret <vscale x 1 x i1> %v333}334 335define <vscale x 1 x i1> @icmp_sge_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {336; CHECK-LABEL: icmp_sge_vv_nxv1i8:337; CHECK: # %bb.0:338; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma339; CHECK-NEXT: vmsle.vv v0, v9, v8, v0.t340; CHECK-NEXT: ret341 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)342 ret <vscale x 1 x i1> %v343}344 345define <vscale x 1 x i1> @icmp_sge_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {346; CHECK-LABEL: icmp_sge_vx_nxv1i8:347; CHECK: # %bb.0:348; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma349; CHECK-NEXT: vmv.v.x v9, a0350; CHECK-NEXT: vmsle.vv v0, v9, v8, v0.t351; CHECK-NEXT: ret352 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0353 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer354 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)355 ret <vscale x 1 x i1> %v356}357 358define <vscale x 1 x i1> @icmp_sge_vx_swap_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {359; CHECK-LABEL: icmp_sge_vx_swap_nxv1i8:360; CHECK: # %bb.0:361; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma362; CHECK-NEXT: vmsle.vx v0, v8, a0, v0.t363; CHECK-NEXT: ret364 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0365 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer366 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %vb, <vscale x 1 x i8> %va, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)367 ret <vscale x 1 x i1> %v368}369 370define <vscale x 1 x i1> @icmp_sge_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {371; CHECK-LABEL: icmp_sge_vi_nxv1i8:372; CHECK: # %bb.0:373; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma374; CHECK-NEXT: vmsgt.vi v0, v8, 3, v0.t375; CHECK-NEXT: ret376 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 4), metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)377 ret <vscale x 1 x i1> %v378}379 380define <vscale x 1 x i1> @icmp_sge_vi_swap_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {381; CHECK-LABEL: icmp_sge_vi_swap_nxv1i8:382; CHECK: # %bb.0:383; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma384; CHECK-NEXT: vmsle.vi v0, v8, 4, v0.t385; CHECK-NEXT: ret386 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> splat (i8 4), <vscale x 1 x i8> %va, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)387 ret <vscale x 1 x i1> %v388}389 390define <vscale x 1 x i1> @icmp_slt_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {391; CHECK-LABEL: icmp_slt_vv_nxv1i8:392; CHECK: # %bb.0:393; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma394; CHECK-NEXT: vmslt.vv v0, v8, v9, v0.t395; CHECK-NEXT: ret396 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)397 ret <vscale x 1 x i1> %v398}399 400define <vscale x 1 x i1> @icmp_slt_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {401; CHECK-LABEL: icmp_slt_vx_nxv1i8:402; CHECK: # %bb.0:403; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma404; CHECK-NEXT: vmslt.vx v0, v8, a0, v0.t405; CHECK-NEXT: ret406 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0407 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer408 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)409 ret <vscale x 1 x i1> %v410}411 412define <vscale x 1 x i1> @icmp_slt_vx_swap_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {413; CHECK-LABEL: icmp_slt_vx_swap_nxv1i8:414; CHECK: # %bb.0:415; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma416; CHECK-NEXT: vmsgt.vx v0, v8, a0, v0.t417; CHECK-NEXT: ret418 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0419 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer420 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %vb, <vscale x 1 x i8> %va, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)421 ret <vscale x 1 x i1> %v422}423 424define <vscale x 1 x i1> @icmp_slt_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {425; CHECK-LABEL: icmp_slt_vi_nxv1i8:426; CHECK: # %bb.0:427; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma428; CHECK-NEXT: vmsle.vi v0, v8, 3, v0.t429; CHECK-NEXT: ret430 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 4), metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)431 ret <vscale x 1 x i1> %v432}433 434define <vscale x 1 x i1> @icmp_slt_vi_swap_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {435; CHECK-LABEL: icmp_slt_vi_swap_nxv1i8:436; CHECK: # %bb.0:437; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma438; CHECK-NEXT: vmsgt.vi v0, v8, 4, v0.t439; CHECK-NEXT: ret440 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> splat (i8 4), <vscale x 1 x i8> %va, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)441 ret <vscale x 1 x i1> %v442}443 444define <vscale x 1 x i1> @icmp_sle_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {445; CHECK-LABEL: icmp_sle_vv_nxv1i8:446; CHECK: # %bb.0:447; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma448; CHECK-NEXT: vmsle.vv v0, v8, v9, v0.t449; CHECK-NEXT: ret450 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)451 ret <vscale x 1 x i1> %v452}453 454define <vscale x 1 x i1> @icmp_sle_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {455; CHECK-LABEL: icmp_sle_vx_nxv1i8:456; CHECK: # %bb.0:457; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma458; CHECK-NEXT: vmsle.vx v0, v8, a0, v0.t459; CHECK-NEXT: ret460 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0461 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer462 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)463 ret <vscale x 1 x i1> %v464}465 466define <vscale x 1 x i1> @icmp_sle_vx_swap_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {467; CHECK-LABEL: icmp_sle_vx_swap_nxv1i8:468; CHECK: # %bb.0:469; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma470; CHECK-NEXT: vmv.v.x v9, a0471; CHECK-NEXT: vmsle.vv v0, v9, v8, v0.t472; CHECK-NEXT: ret473 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0474 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer475 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %vb, <vscale x 1 x i8> %va, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)476 ret <vscale x 1 x i1> %v477}478 479define <vscale x 1 x i1> @icmp_sle_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {480; CHECK-LABEL: icmp_sle_vi_nxv1i8:481; CHECK: # %bb.0:482; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma483; CHECK-NEXT: vmsle.vi v0, v8, 4, v0.t484; CHECK-NEXT: ret485 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 4), metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)486 ret <vscale x 1 x i1> %v487}488 489define <vscale x 1 x i1> @icmp_sle_vi_swap_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {490; CHECK-LABEL: icmp_sle_vi_swap_nxv1i8:491; CHECK: # %bb.0:492; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma493; CHECK-NEXT: vmsgt.vi v0, v8, 3, v0.t494; CHECK-NEXT: ret495 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> splat (i8 4), <vscale x 1 x i8> %va, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)496 ret <vscale x 1 x i1> %v497}498 499define <vscale x 3 x i1> @icmp_eq_vv_nxv3i8(<vscale x 3 x i8> %va, <vscale x 3 x i8> %vb, <vscale x 3 x i1> %m, i32 zeroext %evl) {500; CHECK-LABEL: icmp_eq_vv_nxv3i8:501; CHECK: # %bb.0:502; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma503; CHECK-NEXT: vmseq.vv v0, v8, v9, v0.t504; CHECK-NEXT: ret505 %v = call <vscale x 3 x i1> @llvm.vp.icmp.nxv3i8(<vscale x 3 x i8> %va, <vscale x 3 x i8> %vb, metadata !"eq", <vscale x 3 x i1> %m, i32 %evl)506 ret <vscale x 3 x i1> %v507}508 509define <vscale x 3 x i1> @icmp_eq_vx_nxv3i8(<vscale x 3 x i8> %va, i8 %b, <vscale x 3 x i1> %m, i32 zeroext %evl) {510; CHECK-LABEL: icmp_eq_vx_nxv3i8:511; CHECK: # %bb.0:512; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma513; CHECK-NEXT: vmseq.vx v0, v8, a0, v0.t514; CHECK-NEXT: ret515 %elt.head = insertelement <vscale x 3 x i8> poison, i8 %b, i32 0516 %vb = shufflevector <vscale x 3 x i8> %elt.head, <vscale x 3 x i8> poison, <vscale x 3 x i32> zeroinitializer517 %v = call <vscale x 3 x i1> @llvm.vp.icmp.nxv3i8(<vscale x 3 x i8> %va, <vscale x 3 x i8> %vb, metadata !"eq", <vscale x 3 x i1> %m, i32 %evl)518 ret <vscale x 3 x i1> %v519}520 521define <vscale x 3 x i1> @icmp_eq_vx_swap_nxv3i8(<vscale x 3 x i8> %va, i8 %b, <vscale x 3 x i1> %m, i32 zeroext %evl) {522; CHECK-LABEL: icmp_eq_vx_swap_nxv3i8:523; CHECK: # %bb.0:524; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma525; CHECK-NEXT: vmseq.vx v0, v8, a0, v0.t526; CHECK-NEXT: ret527 %elt.head = insertelement <vscale x 3 x i8> poison, i8 %b, i32 0528 %vb = shufflevector <vscale x 3 x i8> %elt.head, <vscale x 3 x i8> poison, <vscale x 3 x i32> zeroinitializer529 %v = call <vscale x 3 x i1> @llvm.vp.icmp.nxv3i8(<vscale x 3 x i8> %vb, <vscale x 3 x i8> %va, metadata !"eq", <vscale x 3 x i1> %m, i32 %evl)530 ret <vscale x 3 x i1> %v531}532 533define <vscale x 8 x i1> @icmp_eq_vv_nxv8i7(<vscale x 8 x i7> %va, <vscale x 8 x i7> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {534; CHECK-LABEL: icmp_eq_vv_nxv8i7:535; CHECK: # %bb.0:536; CHECK-NEXT: li a1, 127537; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma538; CHECK-NEXT: vand.vx v9, v9, a1539; CHECK-NEXT: vand.vx v8, v8, a1540; CHECK-NEXT: vmseq.vv v0, v8, v9, v0.t541; CHECK-NEXT: ret542 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i7(<vscale x 8 x i7> %va, <vscale x 8 x i7> %vb, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)543 ret <vscale x 8 x i1> %v544}545 546define <vscale x 8 x i1> @icmp_eq_vx_nxv8i7(<vscale x 8 x i7> %va, i7 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {547; CHECK-LABEL: icmp_eq_vx_nxv8i7:548; CHECK: # %bb.0:549; CHECK-NEXT: li a2, 127550; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma551; CHECK-NEXT: vmv.v.x v9, a0552; CHECK-NEXT: vand.vx v8, v8, a2553; CHECK-NEXT: vand.vx v9, v9, a2554; CHECK-NEXT: vmseq.vv v0, v8, v9, v0.t555; CHECK-NEXT: ret556 %elt.head = insertelement <vscale x 8 x i7> poison, i7 %b, i32 0557 %vb = shufflevector <vscale x 8 x i7> %elt.head, <vscale x 8 x i7> poison, <vscale x 8 x i32> zeroinitializer558 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i7(<vscale x 8 x i7> %va, <vscale x 8 x i7> %vb, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)559 ret <vscale x 8 x i1> %v560}561 562define <vscale x 8 x i1> @icmp_eq_vx_swap_nxv8i7(<vscale x 8 x i7> %va, i7 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {563; CHECK-LABEL: icmp_eq_vx_swap_nxv8i7:564; CHECK: # %bb.0:565; CHECK-NEXT: li a2, 127566; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma567; CHECK-NEXT: vmv.v.x v9, a0568; CHECK-NEXT: vand.vx v8, v8, a2569; CHECK-NEXT: vand.vx v9, v9, a2570; CHECK-NEXT: vmseq.vv v0, v9, v8, v0.t571; CHECK-NEXT: ret572 %elt.head = insertelement <vscale x 8 x i7> poison, i7 %b, i32 0573 %vb = shufflevector <vscale x 8 x i7> %elt.head, <vscale x 8 x i7> poison, <vscale x 8 x i32> zeroinitializer574 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i7(<vscale x 8 x i7> %vb, <vscale x 8 x i7> %va, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)575 ret <vscale x 8 x i1> %v576}577 578define <vscale x 8 x i1> @icmp_eq_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {579; CHECK-LABEL: icmp_eq_vv_nxv8i8:580; CHECK: # %bb.0:581; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma582; CHECK-NEXT: vmseq.vv v0, v8, v9, v0.t583; CHECK-NEXT: ret584 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)585 ret <vscale x 8 x i1> %v586}587 588define <vscale x 8 x i1> @icmp_eq_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {589; CHECK-LABEL: icmp_eq_vx_nxv8i8:590; CHECK: # %bb.0:591; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma592; CHECK-NEXT: vmseq.vx v0, v8, a0, v0.t593; CHECK-NEXT: ret594 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0595 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer596 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)597 ret <vscale x 8 x i1> %v598}599 600define <vscale x 8 x i1> @icmp_eq_vx_swap_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {601; CHECK-LABEL: icmp_eq_vx_swap_nxv8i8:602; CHECK: # %bb.0:603; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma604; CHECK-NEXT: vmseq.vx v0, v8, a0, v0.t605; CHECK-NEXT: ret606 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0607 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer608 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %vb, <vscale x 8 x i8> %va, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)609 ret <vscale x 8 x i1> %v610}611 612define <vscale x 8 x i1> @icmp_eq_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {613; CHECK-LABEL: icmp_eq_vi_nxv8i8:614; CHECK: # %bb.0:615; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma616; CHECK-NEXT: vmseq.vi v0, v8, 4, v0.t617; CHECK-NEXT: ret618 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 4), metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)619 ret <vscale x 8 x i1> %v620}621 622define <vscale x 8 x i1> @icmp_eq_vi_swap_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {623; CHECK-LABEL: icmp_eq_vi_swap_nxv8i8:624; CHECK: # %bb.0:625; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma626; CHECK-NEXT: vmseq.vi v0, v8, 4, v0.t627; CHECK-NEXT: ret628 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> splat (i8 4), <vscale x 8 x i8> %va, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)629 ret <vscale x 8 x i1> %v630}631 632define <vscale x 8 x i1> @icmp_ne_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {633; CHECK-LABEL: icmp_ne_vv_nxv8i8:634; CHECK: # %bb.0:635; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma636; CHECK-NEXT: vmsne.vv v0, v8, v9, v0.t637; CHECK-NEXT: ret638 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)639 ret <vscale x 8 x i1> %v640}641 642define <vscale x 8 x i1> @icmp_ne_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {643; CHECK-LABEL: icmp_ne_vx_nxv8i8:644; CHECK: # %bb.0:645; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma646; CHECK-NEXT: vmsne.vx v0, v8, a0, v0.t647; CHECK-NEXT: ret648 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0649 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer650 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)651 ret <vscale x 8 x i1> %v652}653 654define <vscale x 8 x i1> @icmp_ne_vx_swap_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {655; CHECK-LABEL: icmp_ne_vx_swap_nxv8i8:656; CHECK: # %bb.0:657; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma658; CHECK-NEXT: vmsne.vx v0, v8, a0, v0.t659; CHECK-NEXT: ret660 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0661 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer662 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %vb, <vscale x 8 x i8> %va, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)663 ret <vscale x 8 x i1> %v664}665 666define <vscale x 8 x i1> @icmp_ne_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {667; CHECK-LABEL: icmp_ne_vi_nxv8i8:668; CHECK: # %bb.0:669; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma670; CHECK-NEXT: vmsne.vi v0, v8, 4, v0.t671; CHECK-NEXT: ret672 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 4), metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)673 ret <vscale x 8 x i1> %v674}675 676define <vscale x 8 x i1> @icmp_ne_vi_swap_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {677; CHECK-LABEL: icmp_ne_vi_swap_nxv8i8:678; CHECK: # %bb.0:679; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma680; CHECK-NEXT: vmsne.vi v0, v8, 4, v0.t681; CHECK-NEXT: ret682 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> splat (i8 4), <vscale x 8 x i8> %va, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)683 ret <vscale x 8 x i1> %v684}685 686define <vscale x 8 x i1> @icmp_ugt_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {687; CHECK-LABEL: icmp_ugt_vv_nxv8i8:688; CHECK: # %bb.0:689; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma690; CHECK-NEXT: vmsltu.vv v0, v9, v8, v0.t691; CHECK-NEXT: ret692 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)693 ret <vscale x 8 x i1> %v694}695 696define <vscale x 8 x i1> @icmp_ugt_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {697; CHECK-LABEL: icmp_ugt_vx_nxv8i8:698; CHECK: # %bb.0:699; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma700; CHECK-NEXT: vmsgtu.vx v0, v8, a0, v0.t701; CHECK-NEXT: ret702 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0703 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer704 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)705 ret <vscale x 8 x i1> %v706}707 708define <vscale x 8 x i1> @icmp_ugt_vx_swap_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {709; CHECK-LABEL: icmp_ugt_vx_swap_nxv8i8:710; CHECK: # %bb.0:711; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma712; CHECK-NEXT: vmsltu.vx v0, v8, a0, v0.t713; CHECK-NEXT: ret714 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0715 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer716 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %vb, <vscale x 8 x i8> %va, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)717 ret <vscale x 8 x i1> %v718}719 720define <vscale x 8 x i1> @icmp_ugt_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {721; CHECK-LABEL: icmp_ugt_vi_nxv8i8:722; CHECK: # %bb.0:723; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma724; CHECK-NEXT: vmsgtu.vi v0, v8, 4, v0.t725; CHECK-NEXT: ret726 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 4), metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)727 ret <vscale x 8 x i1> %v728}729 730define <vscale x 8 x i1> @icmp_ugt_vi_swap_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {731; CHECK-LABEL: icmp_ugt_vi_swap_nxv8i8:732; CHECK: # %bb.0:733; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma734; CHECK-NEXT: vmsleu.vi v0, v8, 3, v0.t735; CHECK-NEXT: ret736 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> splat (i8 4), <vscale x 8 x i8> %va, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)737 ret <vscale x 8 x i1> %v738}739 740define <vscale x 8 x i1> @icmp_uge_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {741; CHECK-LABEL: icmp_uge_vv_nxv8i8:742; CHECK: # %bb.0:743; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma744; CHECK-NEXT: vmsleu.vv v0, v9, v8, v0.t745; CHECK-NEXT: ret746 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)747 ret <vscale x 8 x i1> %v748}749 750define <vscale x 8 x i1> @icmp_uge_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {751; CHECK-LABEL: icmp_uge_vx_nxv8i8:752; CHECK: # %bb.0:753; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma754; CHECK-NEXT: vmv.v.x v9, a0755; CHECK-NEXT: vmsleu.vv v0, v9, v8, v0.t756; CHECK-NEXT: ret757 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0758 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer759 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)760 ret <vscale x 8 x i1> %v761}762 763define <vscale x 8 x i1> @icmp_uge_vx_swap_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {764; CHECK-LABEL: icmp_uge_vx_swap_nxv8i8:765; CHECK: # %bb.0:766; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma767; CHECK-NEXT: vmsleu.vx v0, v8, a0, v0.t768; CHECK-NEXT: ret769 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0770 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer771 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %vb, <vscale x 8 x i8> %va, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)772 ret <vscale x 8 x i1> %v773}774 775define <vscale x 8 x i1> @icmp_uge_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {776; CHECK-LABEL: icmp_uge_vi_nxv8i8:777; CHECK: # %bb.0:778; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma779; CHECK-NEXT: vmsgtu.vi v0, v8, 3, v0.t780; CHECK-NEXT: ret781 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 4), metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)782 ret <vscale x 8 x i1> %v783}784 785define <vscale x 8 x i1> @icmp_uge_vi_swap_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {786; CHECK-LABEL: icmp_uge_vi_swap_nxv8i8:787; CHECK: # %bb.0:788; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma789; CHECK-NEXT: vmsleu.vi v0, v8, 4, v0.t790; CHECK-NEXT: ret791 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> splat (i8 4), <vscale x 8 x i8> %va, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)792 ret <vscale x 8 x i1> %v793}794 795define <vscale x 8 x i1> @icmp_ult_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {796; CHECK-LABEL: icmp_ult_vv_nxv8i8:797; CHECK: # %bb.0:798; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma799; CHECK-NEXT: vmsltu.vv v0, v8, v9, v0.t800; CHECK-NEXT: ret801 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)802 ret <vscale x 8 x i1> %v803}804 805define <vscale x 8 x i1> @icmp_ult_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {806; CHECK-LABEL: icmp_ult_vx_nxv8i8:807; CHECK: # %bb.0:808; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma809; CHECK-NEXT: vmsltu.vx v0, v8, a0, v0.t810; CHECK-NEXT: ret811 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0812 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer813 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)814 ret <vscale x 8 x i1> %v815}816 817define <vscale x 8 x i1> @icmp_ult_vx_swap_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {818; CHECK-LABEL: icmp_ult_vx_swap_nxv8i8:819; CHECK: # %bb.0:820; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma821; CHECK-NEXT: vmsgtu.vx v0, v8, a0, v0.t822; CHECK-NEXT: ret823 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0824 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer825 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %vb, <vscale x 8 x i8> %va, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)826 ret <vscale x 8 x i1> %v827}828 829define <vscale x 8 x i1> @icmp_ult_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {830; CHECK-LABEL: icmp_ult_vi_nxv8i8:831; CHECK: # %bb.0:832; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma833; CHECK-NEXT: vmsleu.vi v0, v8, 3, v0.t834; CHECK-NEXT: ret835 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 4), metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)836 ret <vscale x 8 x i1> %v837}838 839define <vscale x 8 x i1> @icmp_ult_vi_swap_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {840; CHECK-LABEL: icmp_ult_vi_swap_nxv8i8:841; CHECK: # %bb.0:842; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma843; CHECK-NEXT: vmsgtu.vi v0, v8, 4, v0.t844; CHECK-NEXT: ret845 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> splat (i8 4), <vscale x 8 x i8> %va, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)846 ret <vscale x 8 x i1> %v847}848 849define <vscale x 8 x i1> @icmp_sgt_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {850; CHECK-LABEL: icmp_sgt_vv_nxv8i8:851; CHECK: # %bb.0:852; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma853; CHECK-NEXT: vmslt.vv v0, v9, v8, v0.t854; CHECK-NEXT: ret855 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)856 ret <vscale x 8 x i1> %v857}858 859define <vscale x 8 x i1> @icmp_sgt_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {860; CHECK-LABEL: icmp_sgt_vx_nxv8i8:861; CHECK: # %bb.0:862; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma863; CHECK-NEXT: vmsgt.vx v0, v8, a0, v0.t864; CHECK-NEXT: ret865 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0866 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer867 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)868 ret <vscale x 8 x i1> %v869}870 871define <vscale x 8 x i1> @icmp_sgt_vx_swap_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {872; CHECK-LABEL: icmp_sgt_vx_swap_nxv8i8:873; CHECK: # %bb.0:874; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma875; CHECK-NEXT: vmslt.vx v0, v8, a0, v0.t876; CHECK-NEXT: ret877 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0878 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer879 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %vb, <vscale x 8 x i8> %va, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)880 ret <vscale x 8 x i1> %v881}882 883define <vscale x 8 x i1> @icmp_sgt_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {884; CHECK-LABEL: icmp_sgt_vi_nxv8i8:885; CHECK: # %bb.0:886; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma887; CHECK-NEXT: vmsgt.vi v0, v8, 4, v0.t888; CHECK-NEXT: ret889 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 4), metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)890 ret <vscale x 8 x i1> %v891}892 893define <vscale x 8 x i1> @icmp_sgt_vi_swap_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {894; CHECK-LABEL: icmp_sgt_vi_swap_nxv8i8:895; CHECK: # %bb.0:896; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma897; CHECK-NEXT: vmsle.vi v0, v8, 3, v0.t898; CHECK-NEXT: ret899 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> splat (i8 4), <vscale x 8 x i8> %va, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)900 ret <vscale x 8 x i1> %v901}902 903define <vscale x 8 x i1> @icmp_sge_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {904; CHECK-LABEL: icmp_sge_vv_nxv8i8:905; CHECK: # %bb.0:906; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma907; CHECK-NEXT: vmsle.vv v0, v9, v8, v0.t908; CHECK-NEXT: ret909 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)910 ret <vscale x 8 x i1> %v911}912 913define <vscale x 8 x i1> @icmp_sge_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {914; CHECK-LABEL: icmp_sge_vx_nxv8i8:915; CHECK: # %bb.0:916; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma917; CHECK-NEXT: vmv.v.x v9, a0918; CHECK-NEXT: vmsle.vv v0, v9, v8, v0.t919; CHECK-NEXT: ret920 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0921 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer922 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)923 ret <vscale x 8 x i1> %v924}925 926define <vscale x 8 x i1> @icmp_sge_vx_swap_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {927; CHECK-LABEL: icmp_sge_vx_swap_nxv8i8:928; CHECK: # %bb.0:929; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma930; CHECK-NEXT: vmsle.vx v0, v8, a0, v0.t931; CHECK-NEXT: ret932 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0933 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer934 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %vb, <vscale x 8 x i8> %va, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)935 ret <vscale x 8 x i1> %v936}937 938define <vscale x 8 x i1> @icmp_sge_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {939; CHECK-LABEL: icmp_sge_vi_nxv8i8:940; CHECK: # %bb.0:941; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma942; CHECK-NEXT: vmsgt.vi v0, v8, 3, v0.t943; CHECK-NEXT: ret944 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 4), metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)945 ret <vscale x 8 x i1> %v946}947 948define <vscale x 8 x i1> @icmp_sge_vi_swap_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {949; CHECK-LABEL: icmp_sge_vi_swap_nxv8i8:950; CHECK: # %bb.0:951; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma952; CHECK-NEXT: vmsle.vi v0, v8, 4, v0.t953; CHECK-NEXT: ret954 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> splat (i8 4), <vscale x 8 x i8> %va, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)955 ret <vscale x 8 x i1> %v956}957 958define <vscale x 8 x i1> @icmp_slt_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {959; CHECK-LABEL: icmp_slt_vv_nxv8i8:960; CHECK: # %bb.0:961; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma962; CHECK-NEXT: vmslt.vv v0, v8, v9, v0.t963; CHECK-NEXT: ret964 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)965 ret <vscale x 8 x i1> %v966}967 968define <vscale x 8 x i1> @icmp_slt_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {969; CHECK-LABEL: icmp_slt_vx_nxv8i8:970; CHECK: # %bb.0:971; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma972; CHECK-NEXT: vmslt.vx v0, v8, a0, v0.t973; CHECK-NEXT: ret974 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0975 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer976 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)977 ret <vscale x 8 x i1> %v978}979 980define <vscale x 8 x i1> @icmp_slt_vx_swap_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {981; CHECK-LABEL: icmp_slt_vx_swap_nxv8i8:982; CHECK: # %bb.0:983; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma984; CHECK-NEXT: vmsgt.vx v0, v8, a0, v0.t985; CHECK-NEXT: ret986 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0987 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer988 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %vb, <vscale x 8 x i8> %va, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)989 ret <vscale x 8 x i1> %v990}991 992define <vscale x 8 x i1> @icmp_slt_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {993; CHECK-LABEL: icmp_slt_vi_nxv8i8:994; CHECK: # %bb.0:995; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma996; CHECK-NEXT: vmsle.vi v0, v8, 3, v0.t997; CHECK-NEXT: ret998 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 4), metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)999 ret <vscale x 8 x i1> %v1000}1001 1002define <vscale x 8 x i1> @icmp_slt_vi_swap_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {1003; CHECK-LABEL: icmp_slt_vi_swap_nxv8i8:1004; CHECK: # %bb.0:1005; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma1006; CHECK-NEXT: vmsgt.vi v0, v8, 4, v0.t1007; CHECK-NEXT: ret1008 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> splat (i8 4), <vscale x 8 x i8> %va, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)1009 ret <vscale x 8 x i1> %v1010}1011 1012define <vscale x 8 x i1> @icmp_sle_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {1013; CHECK-LABEL: icmp_sle_vv_nxv8i8:1014; CHECK: # %bb.0:1015; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma1016; CHECK-NEXT: vmsle.vv v0, v8, v9, v0.t1017; CHECK-NEXT: ret1018 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)1019 ret <vscale x 8 x i1> %v1020}1021 1022define <vscale x 8 x i1> @icmp_sle_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {1023; CHECK-LABEL: icmp_sle_vx_nxv8i8:1024; CHECK: # %bb.0:1025; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma1026; CHECK-NEXT: vmsle.vx v0, v8, a0, v0.t1027; CHECK-NEXT: ret1028 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 01029 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer1030 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)1031 ret <vscale x 8 x i1> %v1032}1033 1034define <vscale x 8 x i1> @icmp_sle_vx_swap_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {1035; CHECK-LABEL: icmp_sle_vx_swap_nxv8i8:1036; CHECK: # %bb.0:1037; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma1038; CHECK-NEXT: vmv.v.x v9, a01039; CHECK-NEXT: vmsle.vv v0, v9, v8, v0.t1040; CHECK-NEXT: ret1041 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 01042 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer1043 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %vb, <vscale x 8 x i8> %va, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)1044 ret <vscale x 8 x i1> %v1045}1046 1047define <vscale x 8 x i1> @icmp_sle_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {1048; CHECK-LABEL: icmp_sle_vi_nxv8i8:1049; CHECK: # %bb.0:1050; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma1051; CHECK-NEXT: vmsle.vi v0, v8, 4, v0.t1052; CHECK-NEXT: ret1053 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 4), metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)1054 ret <vscale x 8 x i1> %v1055}1056 1057define <vscale x 8 x i1> @icmp_sle_vi_swap_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {1058; CHECK-LABEL: icmp_sle_vi_swap_nxv8i8:1059; CHECK: # %bb.0:1060; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma1061; CHECK-NEXT: vmsgt.vi v0, v8, 3, v0.t1062; CHECK-NEXT: ret1063 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> splat (i8 4), <vscale x 8 x i8> %va, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)1064 ret <vscale x 8 x i1> %v1065}1066 1067define <vscale x 128 x i1> @icmp_eq_vv_nxv128i8(<vscale x 128 x i8> %va, <vscale x 128 x i8> %vb, <vscale x 128 x i1> %m, i32 zeroext %evl) {1068; CHECK-LABEL: icmp_eq_vv_nxv128i8:1069; CHECK: # %bb.0:1070; CHECK-NEXT: addi sp, sp, -161071; CHECK-NEXT: .cfi_def_cfa_offset 161072; CHECK-NEXT: csrr a1, vlenb1073; CHECK-NEXT: slli a1, a1, 31074; CHECK-NEXT: sub sp, sp, a11075; CHECK-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x08, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 8 * vlenb1076; CHECK-NEXT: vsetvli a1, zero, e8, m8, ta, ma1077; CHECK-NEXT: vmv1r.v v7, v01078; CHECK-NEXT: addi a1, sp, 161079; CHECK-NEXT: vs8r.v v8, (a1) # vscale x 64-byte Folded Spill1080; CHECK-NEXT: csrr a1, vlenb1081; CHECK-NEXT: vlm.v v0, (a2)1082; CHECK-NEXT: slli a1, a1, 31083; CHECK-NEXT: add a2, a0, a11084; CHECK-NEXT: sub a4, a3, a11085; CHECK-NEXT: vl8r.v v24, (a2)1086; CHECK-NEXT: sltu a2, a3, a41087; CHECK-NEXT: vl8r.v v8, (a0)1088; CHECK-NEXT: addi a2, a2, -11089; CHECK-NEXT: and a2, a2, a41090; CHECK-NEXT: vsetvli zero, a2, e8, m8, ta, ma1091; CHECK-NEXT: vmseq.vv v6, v16, v24, v0.t1092; CHECK-NEXT: bltu a3, a1, .LBB96_21093; CHECK-NEXT: # %bb.1:1094; CHECK-NEXT: mv a3, a11095; CHECK-NEXT: .LBB96_2:1096; CHECK-NEXT: vmv1r.v v0, v71097; CHECK-NEXT: addi a0, sp, 161098; CHECK-NEXT: vl8r.v v24, (a0) # vscale x 64-byte Folded Reload1099; CHECK-NEXT: vsetvli zero, a3, e8, m8, ta, ma1100; CHECK-NEXT: vmseq.vv v16, v24, v8, v0.t1101; CHECK-NEXT: vmv1r.v v0, v161102; CHECK-NEXT: vmv1r.v v8, v61103; CHECK-NEXT: csrr a0, vlenb1104; CHECK-NEXT: slli a0, a0, 31105; CHECK-NEXT: add sp, sp, a01106; CHECK-NEXT: .cfi_def_cfa sp, 161107; CHECK-NEXT: addi sp, sp, 161108; CHECK-NEXT: .cfi_def_cfa_offset 01109; CHECK-NEXT: ret1110 %v = call <vscale x 128 x i1> @llvm.vp.icmp.nxv128i8(<vscale x 128 x i8> %va, <vscale x 128 x i8> %vb, metadata !"eq", <vscale x 128 x i1> %m, i32 %evl)1111 ret <vscale x 128 x i1> %v1112}1113 1114define <vscale x 128 x i1> @icmp_eq_vx_nxv128i8(<vscale x 128 x i8> %va, i8 %b, <vscale x 128 x i1> %m, i32 zeroext %evl) {1115; CHECK-LABEL: icmp_eq_vx_nxv128i8:1116; CHECK: # %bb.0:1117; CHECK-NEXT: vsetvli a3, zero, e8, m8, ta, ma1118; CHECK-NEXT: vmv1r.v v24, v01119; CHECK-NEXT: vlm.v v0, (a1)1120; CHECK-NEXT: csrr a1, vlenb1121; CHECK-NEXT: slli a1, a1, 31122; CHECK-NEXT: sub a3, a2, a11123; CHECK-NEXT: sltu a4, a2, a31124; CHECK-NEXT: addi a4, a4, -11125; CHECK-NEXT: and a3, a4, a31126; CHECK-NEXT: vsetvli zero, a3, e8, m8, ta, ma1127; CHECK-NEXT: vmseq.vx v25, v16, a0, v0.t1128; CHECK-NEXT: bltu a2, a1, .LBB97_21129; CHECK-NEXT: # %bb.1:1130; CHECK-NEXT: mv a2, a11131; CHECK-NEXT: .LBB97_2:1132; CHECK-NEXT: vmv1r.v v0, v241133; CHECK-NEXT: vsetvli zero, a2, e8, m8, ta, ma1134; CHECK-NEXT: vmseq.vx v16, v8, a0, v0.t1135; CHECK-NEXT: vmv1r.v v0, v161136; CHECK-NEXT: vmv1r.v v8, v251137; CHECK-NEXT: ret1138 %elt.head = insertelement <vscale x 128 x i8> poison, i8 %b, i8 01139 %vb = shufflevector <vscale x 128 x i8> %elt.head, <vscale x 128 x i8> poison, <vscale x 128 x i32> zeroinitializer1140 %v = call <vscale x 128 x i1> @llvm.vp.icmp.nxv128i8(<vscale x 128 x i8> %va, <vscale x 128 x i8> %vb, metadata !"eq", <vscale x 128 x i1> %m, i32 %evl)1141 ret <vscale x 128 x i1> %v1142}1143 1144define <vscale x 128 x i1> @icmp_eq_vx_swap_nxv128i8(<vscale x 128 x i8> %va, i8 %b, <vscale x 128 x i1> %m, i32 zeroext %evl) {1145; CHECK-LABEL: icmp_eq_vx_swap_nxv128i8:1146; CHECK: # %bb.0:1147; CHECK-NEXT: vsetvli a3, zero, e8, m8, ta, ma1148; CHECK-NEXT: vmv1r.v v24, v01149; CHECK-NEXT: vlm.v v0, (a1)1150; CHECK-NEXT: csrr a1, vlenb1151; CHECK-NEXT: slli a1, a1, 31152; CHECK-NEXT: sub a3, a2, a11153; CHECK-NEXT: sltu a4, a2, a31154; CHECK-NEXT: addi a4, a4, -11155; CHECK-NEXT: and a3, a4, a31156; CHECK-NEXT: vsetvli zero, a3, e8, m8, ta, ma1157; CHECK-NEXT: vmseq.vx v25, v16, a0, v0.t1158; CHECK-NEXT: bltu a2, a1, .LBB98_21159; CHECK-NEXT: # %bb.1:1160; CHECK-NEXT: mv a2, a11161; CHECK-NEXT: .LBB98_2:1162; CHECK-NEXT: vmv1r.v v0, v241163; CHECK-NEXT: vsetvli zero, a2, e8, m8, ta, ma1164; CHECK-NEXT: vmseq.vx v16, v8, a0, v0.t1165; CHECK-NEXT: vmv1r.v v0, v161166; CHECK-NEXT: vmv1r.v v8, v251167; CHECK-NEXT: ret1168 %elt.head = insertelement <vscale x 128 x i8> poison, i8 %b, i8 01169 %vb = shufflevector <vscale x 128 x i8> %elt.head, <vscale x 128 x i8> poison, <vscale x 128 x i32> zeroinitializer1170 %v = call <vscale x 128 x i1> @llvm.vp.icmp.nxv128i8(<vscale x 128 x i8> %vb, <vscale x 128 x i8> %va, metadata !"eq", <vscale x 128 x i1> %m, i32 %evl)1171 ret <vscale x 128 x i1> %v1172}1173 1174define <vscale x 1 x i1> @icmp_eq_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {1175; CHECK-LABEL: icmp_eq_vv_nxv1i32:1176; CHECK: # %bb.0:1177; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1178; CHECK-NEXT: vmseq.vv v0, v8, v9, v0.t1179; CHECK-NEXT: ret1180 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)1181 ret <vscale x 1 x i1> %v1182}1183 1184define <vscale x 1 x i1> @icmp_eq_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {1185; CHECK-LABEL: icmp_eq_vx_nxv1i32:1186; CHECK: # %bb.0:1187; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1188; CHECK-NEXT: vmseq.vx v0, v8, a0, v0.t1189; CHECK-NEXT: ret1190 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 01191 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1192 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)1193 ret <vscale x 1 x i1> %v1194}1195 1196define <vscale x 1 x i1> @icmp_eq_vx_swap_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {1197; CHECK-LABEL: icmp_eq_vx_swap_nxv1i32:1198; CHECK: # %bb.0:1199; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1200; CHECK-NEXT: vmseq.vx v0, v8, a0, v0.t1201; CHECK-NEXT: ret1202 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 01203 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1204 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %vb, <vscale x 1 x i32> %va, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)1205 ret <vscale x 1 x i1> %v1206}1207 1208define <vscale x 1 x i1> @icmp_eq_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {1209; CHECK-LABEL: icmp_eq_vi_nxv1i32:1210; CHECK: # %bb.0:1211; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1212; CHECK-NEXT: vmseq.vi v0, v8, 4, v0.t1213; CHECK-NEXT: ret1214 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 4), metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)1215 ret <vscale x 1 x i1> %v1216}1217 1218define <vscale x 1 x i1> @icmp_eq_vi_swap_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {1219; CHECK-LABEL: icmp_eq_vi_swap_nxv1i32:1220; CHECK: # %bb.0:1221; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1222; CHECK-NEXT: vmseq.vi v0, v8, 4, v0.t1223; CHECK-NEXT: ret1224 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> splat (i32 4), <vscale x 1 x i32> %va, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)1225 ret <vscale x 1 x i1> %v1226}1227 1228define <vscale x 1 x i1> @icmp_ne_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {1229; CHECK-LABEL: icmp_ne_vv_nxv1i32:1230; CHECK: # %bb.0:1231; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1232; CHECK-NEXT: vmsne.vv v0, v8, v9, v0.t1233; CHECK-NEXT: ret1234 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)1235 ret <vscale x 1 x i1> %v1236}1237 1238define <vscale x 1 x i1> @icmp_ne_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {1239; CHECK-LABEL: icmp_ne_vx_nxv1i32:1240; CHECK: # %bb.0:1241; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1242; CHECK-NEXT: vmsne.vx v0, v8, a0, v0.t1243; CHECK-NEXT: ret1244 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 01245 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1246 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)1247 ret <vscale x 1 x i1> %v1248}1249 1250define <vscale x 1 x i1> @icmp_ne_vx_swap_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {1251; CHECK-LABEL: icmp_ne_vx_swap_nxv1i32:1252; CHECK: # %bb.0:1253; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1254; CHECK-NEXT: vmsne.vx v0, v8, a0, v0.t1255; CHECK-NEXT: ret1256 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 01257 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1258 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %vb, <vscale x 1 x i32> %va, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)1259 ret <vscale x 1 x i1> %v1260}1261 1262define <vscale x 1 x i1> @icmp_ne_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {1263; CHECK-LABEL: icmp_ne_vi_nxv1i32:1264; CHECK: # %bb.0:1265; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1266; CHECK-NEXT: vmsne.vi v0, v8, 4, v0.t1267; CHECK-NEXT: ret1268 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 4), metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)1269 ret <vscale x 1 x i1> %v1270}1271 1272define <vscale x 1 x i1> @icmp_ne_vi_swap_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {1273; CHECK-LABEL: icmp_ne_vi_swap_nxv1i32:1274; CHECK: # %bb.0:1275; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1276; CHECK-NEXT: vmsne.vi v0, v8, 4, v0.t1277; CHECK-NEXT: ret1278 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> splat (i32 4), <vscale x 1 x i32> %va, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)1279 ret <vscale x 1 x i1> %v1280}1281 1282define <vscale x 1 x i1> @icmp_ugt_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {1283; CHECK-LABEL: icmp_ugt_vv_nxv1i32:1284; CHECK: # %bb.0:1285; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1286; CHECK-NEXT: vmsltu.vv v0, v9, v8, v0.t1287; CHECK-NEXT: ret1288 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)1289 ret <vscale x 1 x i1> %v1290}1291 1292define <vscale x 1 x i1> @icmp_ugt_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {1293; CHECK-LABEL: icmp_ugt_vx_nxv1i32:1294; CHECK: # %bb.0:1295; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1296; CHECK-NEXT: vmsgtu.vx v0, v8, a0, v0.t1297; CHECK-NEXT: ret1298 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 01299 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1300 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)1301 ret <vscale x 1 x i1> %v1302}1303 1304define <vscale x 1 x i1> @icmp_ugt_vx_swap_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {1305; CHECK-LABEL: icmp_ugt_vx_swap_nxv1i32:1306; CHECK: # %bb.0:1307; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1308; CHECK-NEXT: vmsltu.vx v0, v8, a0, v0.t1309; CHECK-NEXT: ret1310 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 01311 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1312 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %vb, <vscale x 1 x i32> %va, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)1313 ret <vscale x 1 x i1> %v1314}1315 1316define <vscale x 1 x i1> @icmp_ugt_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {1317; CHECK-LABEL: icmp_ugt_vi_nxv1i32:1318; CHECK: # %bb.0:1319; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1320; CHECK-NEXT: vmsgtu.vi v0, v8, 4, v0.t1321; CHECK-NEXT: ret1322 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 4), metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)1323 ret <vscale x 1 x i1> %v1324}1325 1326define <vscale x 1 x i1> @icmp_ugt_vi_swap_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {1327; CHECK-LABEL: icmp_ugt_vi_swap_nxv1i32:1328; CHECK: # %bb.0:1329; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1330; CHECK-NEXT: vmsleu.vi v0, v8, 3, v0.t1331; CHECK-NEXT: ret1332 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> splat (i32 4), <vscale x 1 x i32> %va, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)1333 ret <vscale x 1 x i1> %v1334}1335 1336define <vscale x 1 x i1> @icmp_uge_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {1337; CHECK-LABEL: icmp_uge_vv_nxv1i32:1338; CHECK: # %bb.0:1339; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1340; CHECK-NEXT: vmsleu.vv v0, v9, v8, v0.t1341; CHECK-NEXT: ret1342 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)1343 ret <vscale x 1 x i1> %v1344}1345 1346define <vscale x 1 x i1> @icmp_uge_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {1347; CHECK-LABEL: icmp_uge_vx_nxv1i32:1348; CHECK: # %bb.0:1349; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1350; CHECK-NEXT: vmv.v.x v9, a01351; CHECK-NEXT: vmsleu.vv v0, v9, v8, v0.t1352; CHECK-NEXT: ret1353 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 01354 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1355 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)1356 ret <vscale x 1 x i1> %v1357}1358 1359define <vscale x 1 x i1> @icmp_uge_vx_swap_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {1360; CHECK-LABEL: icmp_uge_vx_swap_nxv1i32:1361; CHECK: # %bb.0:1362; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1363; CHECK-NEXT: vmsleu.vx v0, v8, a0, v0.t1364; CHECK-NEXT: ret1365 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 01366 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1367 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %vb, <vscale x 1 x i32> %va, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)1368 ret <vscale x 1 x i1> %v1369}1370 1371define <vscale x 1 x i1> @icmp_uge_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {1372; CHECK-LABEL: icmp_uge_vi_nxv1i32:1373; CHECK: # %bb.0:1374; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1375; CHECK-NEXT: vmsgtu.vi v0, v8, 3, v0.t1376; CHECK-NEXT: ret1377 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 4), metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)1378 ret <vscale x 1 x i1> %v1379}1380 1381define <vscale x 1 x i1> @icmp_uge_vi_swap_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {1382; CHECK-LABEL: icmp_uge_vi_swap_nxv1i32:1383; CHECK: # %bb.0:1384; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1385; CHECK-NEXT: vmsleu.vi v0, v8, 4, v0.t1386; CHECK-NEXT: ret1387 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> splat (i32 4), <vscale x 1 x i32> %va, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)1388 ret <vscale x 1 x i1> %v1389}1390 1391define <vscale x 1 x i1> @icmp_ult_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {1392; CHECK-LABEL: icmp_ult_vv_nxv1i32:1393; CHECK: # %bb.0:1394; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1395; CHECK-NEXT: vmsltu.vv v0, v8, v9, v0.t1396; CHECK-NEXT: ret1397 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)1398 ret <vscale x 1 x i1> %v1399}1400 1401define <vscale x 1 x i1> @icmp_ult_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {1402; CHECK-LABEL: icmp_ult_vx_nxv1i32:1403; CHECK: # %bb.0:1404; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1405; CHECK-NEXT: vmsltu.vx v0, v8, a0, v0.t1406; CHECK-NEXT: ret1407 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 01408 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1409 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)1410 ret <vscale x 1 x i1> %v1411}1412 1413define <vscale x 1 x i1> @icmp_ult_vx_swap_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {1414; CHECK-LABEL: icmp_ult_vx_swap_nxv1i32:1415; CHECK: # %bb.0:1416; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1417; CHECK-NEXT: vmsgtu.vx v0, v8, a0, v0.t1418; CHECK-NEXT: ret1419 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 01420 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1421 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %vb, <vscale x 1 x i32> %va, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)1422 ret <vscale x 1 x i1> %v1423}1424 1425define <vscale x 1 x i1> @icmp_ult_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {1426; CHECK-LABEL: icmp_ult_vi_nxv1i32:1427; CHECK: # %bb.0:1428; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1429; CHECK-NEXT: vmsleu.vi v0, v8, 3, v0.t1430; CHECK-NEXT: ret1431 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 4), metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)1432 ret <vscale x 1 x i1> %v1433}1434 1435define <vscale x 1 x i1> @icmp_ult_vi_swap_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {1436; CHECK-LABEL: icmp_ult_vi_swap_nxv1i32:1437; CHECK: # %bb.0:1438; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1439; CHECK-NEXT: vmsgtu.vi v0, v8, 4, v0.t1440; CHECK-NEXT: ret1441 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> splat (i32 4), <vscale x 1 x i32> %va, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)1442 ret <vscale x 1 x i1> %v1443}1444 1445define <vscale x 1 x i1> @icmp_sgt_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {1446; CHECK-LABEL: icmp_sgt_vv_nxv1i32:1447; CHECK: # %bb.0:1448; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1449; CHECK-NEXT: vmslt.vv v0, v9, v8, v0.t1450; CHECK-NEXT: ret1451 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)1452 ret <vscale x 1 x i1> %v1453}1454 1455define <vscale x 1 x i1> @icmp_sgt_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {1456; CHECK-LABEL: icmp_sgt_vx_nxv1i32:1457; CHECK: # %bb.0:1458; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1459; CHECK-NEXT: vmsgt.vx v0, v8, a0, v0.t1460; CHECK-NEXT: ret1461 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 01462 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1463 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)1464 ret <vscale x 1 x i1> %v1465}1466 1467define <vscale x 1 x i1> @icmp_sgt_vx_swap_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {1468; CHECK-LABEL: icmp_sgt_vx_swap_nxv1i32:1469; CHECK: # %bb.0:1470; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1471; CHECK-NEXT: vmslt.vx v0, v8, a0, v0.t1472; CHECK-NEXT: ret1473 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 01474 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1475 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %vb, <vscale x 1 x i32> %va, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)1476 ret <vscale x 1 x i1> %v1477}1478 1479define <vscale x 1 x i1> @icmp_sgt_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {1480; CHECK-LABEL: icmp_sgt_vi_nxv1i32:1481; CHECK: # %bb.0:1482; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1483; CHECK-NEXT: vmsgt.vi v0, v8, 4, v0.t1484; CHECK-NEXT: ret1485 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 4), metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)1486 ret <vscale x 1 x i1> %v1487}1488 1489define <vscale x 1 x i1> @icmp_sgt_vi_swap_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {1490; CHECK-LABEL: icmp_sgt_vi_swap_nxv1i32:1491; CHECK: # %bb.0:1492; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1493; CHECK-NEXT: vmsle.vi v0, v8, 3, v0.t1494; CHECK-NEXT: ret1495 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> splat (i32 4), <vscale x 1 x i32> %va, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)1496 ret <vscale x 1 x i1> %v1497}1498 1499define <vscale x 1 x i1> @icmp_sge_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {1500; CHECK-LABEL: icmp_sge_vv_nxv1i32:1501; CHECK: # %bb.0:1502; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1503; CHECK-NEXT: vmsle.vv v0, v9, v8, v0.t1504; CHECK-NEXT: ret1505 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)1506 ret <vscale x 1 x i1> %v1507}1508 1509define <vscale x 1 x i1> @icmp_sge_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {1510; CHECK-LABEL: icmp_sge_vx_nxv1i32:1511; CHECK: # %bb.0:1512; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1513; CHECK-NEXT: vmv.v.x v9, a01514; CHECK-NEXT: vmsle.vv v0, v9, v8, v0.t1515; CHECK-NEXT: ret1516 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 01517 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1518 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)1519 ret <vscale x 1 x i1> %v1520}1521 1522define <vscale x 1 x i1> @icmp_sge_vx_swap_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {1523; CHECK-LABEL: icmp_sge_vx_swap_nxv1i32:1524; CHECK: # %bb.0:1525; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1526; CHECK-NEXT: vmsle.vx v0, v8, a0, v0.t1527; CHECK-NEXT: ret1528 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 01529 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1530 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %vb, <vscale x 1 x i32> %va, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)1531 ret <vscale x 1 x i1> %v1532}1533 1534define <vscale x 1 x i1> @icmp_sge_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {1535; CHECK-LABEL: icmp_sge_vi_nxv1i32:1536; CHECK: # %bb.0:1537; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1538; CHECK-NEXT: vmsgt.vi v0, v8, 3, v0.t1539; CHECK-NEXT: ret1540 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 4), metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)1541 ret <vscale x 1 x i1> %v1542}1543 1544define <vscale x 1 x i1> @icmp_sge_vi_swap_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {1545; CHECK-LABEL: icmp_sge_vi_swap_nxv1i32:1546; CHECK: # %bb.0:1547; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1548; CHECK-NEXT: vmsle.vi v0, v8, 4, v0.t1549; CHECK-NEXT: ret1550 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> splat (i32 4), <vscale x 1 x i32> %va, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)1551 ret <vscale x 1 x i1> %v1552}1553 1554define <vscale x 1 x i1> @icmp_slt_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {1555; CHECK-LABEL: icmp_slt_vv_nxv1i32:1556; CHECK: # %bb.0:1557; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1558; CHECK-NEXT: vmslt.vv v0, v8, v9, v0.t1559; CHECK-NEXT: ret1560 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)1561 ret <vscale x 1 x i1> %v1562}1563 1564define <vscale x 1 x i1> @icmp_slt_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {1565; CHECK-LABEL: icmp_slt_vx_nxv1i32:1566; CHECK: # %bb.0:1567; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1568; CHECK-NEXT: vmslt.vx v0, v8, a0, v0.t1569; CHECK-NEXT: ret1570 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 01571 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1572 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)1573 ret <vscale x 1 x i1> %v1574}1575 1576define <vscale x 1 x i1> @icmp_slt_vx_swap_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {1577; CHECK-LABEL: icmp_slt_vx_swap_nxv1i32:1578; CHECK: # %bb.0:1579; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1580; CHECK-NEXT: vmsgt.vx v0, v8, a0, v0.t1581; CHECK-NEXT: ret1582 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 01583 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1584 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %vb, <vscale x 1 x i32> %va, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)1585 ret <vscale x 1 x i1> %v1586}1587 1588define <vscale x 1 x i1> @icmp_slt_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {1589; CHECK-LABEL: icmp_slt_vi_nxv1i32:1590; CHECK: # %bb.0:1591; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1592; CHECK-NEXT: vmsle.vi v0, v8, 3, v0.t1593; CHECK-NEXT: ret1594 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 4), metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)1595 ret <vscale x 1 x i1> %v1596}1597 1598define <vscale x 1 x i1> @icmp_slt_vi_swap_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {1599; CHECK-LABEL: icmp_slt_vi_swap_nxv1i32:1600; CHECK: # %bb.0:1601; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1602; CHECK-NEXT: vmsgt.vi v0, v8, 4, v0.t1603; CHECK-NEXT: ret1604 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> splat (i32 4), <vscale x 1 x i32> %va, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)1605 ret <vscale x 1 x i1> %v1606}1607 1608define <vscale x 1 x i1> @icmp_sle_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {1609; CHECK-LABEL: icmp_sle_vv_nxv1i32:1610; CHECK: # %bb.0:1611; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1612; CHECK-NEXT: vmsle.vv v0, v8, v9, v0.t1613; CHECK-NEXT: ret1614 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)1615 ret <vscale x 1 x i1> %v1616}1617 1618define <vscale x 1 x i1> @icmp_sle_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {1619; CHECK-LABEL: icmp_sle_vx_nxv1i32:1620; CHECK: # %bb.0:1621; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1622; CHECK-NEXT: vmsle.vx v0, v8, a0, v0.t1623; CHECK-NEXT: ret1624 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 01625 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1626 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)1627 ret <vscale x 1 x i1> %v1628}1629 1630define <vscale x 1 x i1> @icmp_sle_vx_swap_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {1631; CHECK-LABEL: icmp_sle_vx_swap_nxv1i32:1632; CHECK: # %bb.0:1633; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1634; CHECK-NEXT: vmv.v.x v9, a01635; CHECK-NEXT: vmsle.vv v0, v9, v8, v0.t1636; CHECK-NEXT: ret1637 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 01638 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1639 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %vb, <vscale x 1 x i32> %va, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)1640 ret <vscale x 1 x i1> %v1641}1642 1643define <vscale x 1 x i1> @icmp_sle_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {1644; CHECK-LABEL: icmp_sle_vi_nxv1i32:1645; CHECK: # %bb.0:1646; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1647; CHECK-NEXT: vmsle.vi v0, v8, 4, v0.t1648; CHECK-NEXT: ret1649 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 4), metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)1650 ret <vscale x 1 x i1> %v1651}1652 1653define <vscale x 1 x i1> @icmp_sle_vi_swap_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {1654; CHECK-LABEL: icmp_sle_vi_swap_nxv1i32:1655; CHECK: # %bb.0:1656; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma1657; CHECK-NEXT: vmsgt.vi v0, v8, 3, v0.t1658; CHECK-NEXT: ret1659 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> splat (i32 4), <vscale x 1 x i32> %va, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)1660 ret <vscale x 1 x i1> %v1661}1662 1663define <vscale x 8 x i1> @icmp_eq_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {1664; CHECK-LABEL: icmp_eq_vv_nxv8i32:1665; CHECK: # %bb.0:1666; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma1667; CHECK-NEXT: vmseq.vv v16, v8, v12, v0.t1668; CHECK-NEXT: vmv1r.v v0, v161669; CHECK-NEXT: ret1670 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)1671 ret <vscale x 8 x i1> %v1672}1673 1674define <vscale x 8 x i1> @icmp_eq_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {1675; CHECK-LABEL: icmp_eq_vx_nxv8i32:1676; CHECK: # %bb.0:1677; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma1678; CHECK-NEXT: vmseq.vx v12, v8, a0, v0.t1679; CHECK-NEXT: vmv1r.v v0, v121680; CHECK-NEXT: ret1681 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01682 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1683 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)1684 ret <vscale x 8 x i1> %v1685}1686 1687define <vscale x 8 x i1> @icmp_eq_vx_swap_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {1688; CHECK-LABEL: icmp_eq_vx_swap_nxv8i32:1689; CHECK: # %bb.0:1690; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma1691; CHECK-NEXT: vmseq.vx v12, v8, a0, v0.t1692; CHECK-NEXT: vmv1r.v v0, v121693; CHECK-NEXT: ret1694 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01695 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1696 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %vb, <vscale x 8 x i32> %va, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)1697 ret <vscale x 8 x i1> %v1698}1699 1700define <vscale x 8 x i1> @icmp_eq_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {1701; CHECK-LABEL: icmp_eq_vi_nxv8i32:1702; CHECK: # %bb.0:1703; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma1704; CHECK-NEXT: vmseq.vi v12, v8, 4, v0.t1705; CHECK-NEXT: vmv1r.v v0, v121706; CHECK-NEXT: ret1707 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 4), metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)1708 ret <vscale x 8 x i1> %v1709}1710 1711define <vscale x 8 x i1> @icmp_eq_vi_swap_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {1712; CHECK-LABEL: icmp_eq_vi_swap_nxv8i32:1713; CHECK: # %bb.0:1714; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma1715; CHECK-NEXT: vmseq.vi v12, v8, 4, v0.t1716; CHECK-NEXT: vmv1r.v v0, v121717; CHECK-NEXT: ret1718 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> splat (i32 4), <vscale x 8 x i32> %va, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)1719 ret <vscale x 8 x i1> %v1720}1721 1722define <vscale x 8 x i1> @icmp_ne_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {1723; CHECK-LABEL: icmp_ne_vv_nxv8i32:1724; CHECK: # %bb.0:1725; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma1726; CHECK-NEXT: vmsne.vv v16, v8, v12, v0.t1727; CHECK-NEXT: vmv1r.v v0, v161728; CHECK-NEXT: ret1729 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)1730 ret <vscale x 8 x i1> %v1731}1732 1733define <vscale x 8 x i1> @icmp_ne_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {1734; CHECK-LABEL: icmp_ne_vx_nxv8i32:1735; CHECK: # %bb.0:1736; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma1737; CHECK-NEXT: vmsne.vx v12, v8, a0, v0.t1738; CHECK-NEXT: vmv1r.v v0, v121739; CHECK-NEXT: ret1740 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01741 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1742 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)1743 ret <vscale x 8 x i1> %v1744}1745 1746define <vscale x 8 x i1> @icmp_ne_vx_swap_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {1747; CHECK-LABEL: icmp_ne_vx_swap_nxv8i32:1748; CHECK: # %bb.0:1749; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma1750; CHECK-NEXT: vmsne.vx v12, v8, a0, v0.t1751; CHECK-NEXT: vmv1r.v v0, v121752; CHECK-NEXT: ret1753 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01754 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1755 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %vb, <vscale x 8 x i32> %va, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)1756 ret <vscale x 8 x i1> %v1757}1758 1759define <vscale x 8 x i1> @icmp_ne_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {1760; CHECK-LABEL: icmp_ne_vi_nxv8i32:1761; CHECK: # %bb.0:1762; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma1763; CHECK-NEXT: vmsne.vi v12, v8, 4, v0.t1764; CHECK-NEXT: vmv1r.v v0, v121765; CHECK-NEXT: ret1766 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 4), metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)1767 ret <vscale x 8 x i1> %v1768}1769 1770define <vscale x 8 x i1> @icmp_ne_vi_swap_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {1771; CHECK-LABEL: icmp_ne_vi_swap_nxv8i32:1772; CHECK: # %bb.0:1773; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma1774; CHECK-NEXT: vmsne.vi v12, v8, 4, v0.t1775; CHECK-NEXT: vmv1r.v v0, v121776; CHECK-NEXT: ret1777 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> splat (i32 4), <vscale x 8 x i32> %va, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)1778 ret <vscale x 8 x i1> %v1779}1780 1781define <vscale x 8 x i1> @icmp_ugt_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {1782; CHECK-LABEL: icmp_ugt_vv_nxv8i32:1783; CHECK: # %bb.0:1784; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma1785; CHECK-NEXT: vmsltu.vv v16, v12, v8, v0.t1786; CHECK-NEXT: vmv1r.v v0, v161787; CHECK-NEXT: ret1788 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)1789 ret <vscale x 8 x i1> %v1790}1791 1792define <vscale x 8 x i1> @icmp_ugt_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {1793; CHECK-LABEL: icmp_ugt_vx_nxv8i32:1794; CHECK: # %bb.0:1795; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma1796; CHECK-NEXT: vmsgtu.vx v12, v8, a0, v0.t1797; CHECK-NEXT: vmv1r.v v0, v121798; CHECK-NEXT: ret1799 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01800 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1801 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)1802 ret <vscale x 8 x i1> %v1803}1804 1805define <vscale x 8 x i1> @icmp_ugt_vx_swap_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {1806; CHECK-LABEL: icmp_ugt_vx_swap_nxv8i32:1807; CHECK: # %bb.0:1808; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma1809; CHECK-NEXT: vmsltu.vx v12, v8, a0, v0.t1810; CHECK-NEXT: vmv1r.v v0, v121811; CHECK-NEXT: ret1812 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01813 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1814 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %vb, <vscale x 8 x i32> %va, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)1815 ret <vscale x 8 x i1> %v1816}1817 1818define <vscale x 8 x i1> @icmp_ugt_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {1819; CHECK-LABEL: icmp_ugt_vi_nxv8i32:1820; CHECK: # %bb.0:1821; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma1822; CHECK-NEXT: vmsgtu.vi v12, v8, 4, v0.t1823; CHECK-NEXT: vmv1r.v v0, v121824; CHECK-NEXT: ret1825 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 4), metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)1826 ret <vscale x 8 x i1> %v1827}1828 1829define <vscale x 8 x i1> @icmp_ugt_vi_swap_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {1830; CHECK-LABEL: icmp_ugt_vi_swap_nxv8i32:1831; CHECK: # %bb.0:1832; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma1833; CHECK-NEXT: vmsleu.vi v12, v8, 3, v0.t1834; CHECK-NEXT: vmv1r.v v0, v121835; CHECK-NEXT: ret1836 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> splat (i32 4), <vscale x 8 x i32> %va, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)1837 ret <vscale x 8 x i1> %v1838}1839 1840define <vscale x 8 x i1> @icmp_uge_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {1841; CHECK-LABEL: icmp_uge_vv_nxv8i32:1842; CHECK: # %bb.0:1843; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma1844; CHECK-NEXT: vmsleu.vv v16, v12, v8, v0.t1845; CHECK-NEXT: vmv1r.v v0, v161846; CHECK-NEXT: ret1847 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)1848 ret <vscale x 8 x i1> %v1849}1850 1851define <vscale x 8 x i1> @icmp_uge_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {1852; CHECK-LABEL: icmp_uge_vx_nxv8i32:1853; CHECK: # %bb.0:1854; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma1855; CHECK-NEXT: vmv.v.x v16, a01856; CHECK-NEXT: vmsleu.vv v12, v16, v8, v0.t1857; CHECK-NEXT: vmv1r.v v0, v121858; CHECK-NEXT: ret1859 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01860 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1861 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)1862 ret <vscale x 8 x i1> %v1863}1864 1865define <vscale x 8 x i1> @icmp_uge_vx_swap_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {1866; CHECK-LABEL: icmp_uge_vx_swap_nxv8i32:1867; CHECK: # %bb.0:1868; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma1869; CHECK-NEXT: vmsleu.vx v12, v8, a0, v0.t1870; CHECK-NEXT: vmv1r.v v0, v121871; CHECK-NEXT: ret1872 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01873 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1874 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %vb, <vscale x 8 x i32> %va, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)1875 ret <vscale x 8 x i1> %v1876}1877 1878define <vscale x 8 x i1> @icmp_uge_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {1879; CHECK-LABEL: icmp_uge_vi_nxv8i32:1880; CHECK: # %bb.0:1881; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma1882; CHECK-NEXT: vmsgtu.vi v12, v8, 3, v0.t1883; CHECK-NEXT: vmv1r.v v0, v121884; CHECK-NEXT: ret1885 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 4), metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)1886 ret <vscale x 8 x i1> %v1887}1888 1889define <vscale x 8 x i1> @icmp_uge_vi_swap_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {1890; CHECK-LABEL: icmp_uge_vi_swap_nxv8i32:1891; CHECK: # %bb.0:1892; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma1893; CHECK-NEXT: vmsleu.vi v12, v8, 4, v0.t1894; CHECK-NEXT: vmv1r.v v0, v121895; CHECK-NEXT: ret1896 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> splat (i32 4), <vscale x 8 x i32> %va, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)1897 ret <vscale x 8 x i1> %v1898}1899 1900define <vscale x 8 x i1> @icmp_ult_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {1901; CHECK-LABEL: icmp_ult_vv_nxv8i32:1902; CHECK: # %bb.0:1903; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma1904; CHECK-NEXT: vmsltu.vv v16, v8, v12, v0.t1905; CHECK-NEXT: vmv1r.v v0, v161906; CHECK-NEXT: ret1907 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)1908 ret <vscale x 8 x i1> %v1909}1910 1911define <vscale x 8 x i1> @icmp_ult_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {1912; CHECK-LABEL: icmp_ult_vx_nxv8i32:1913; CHECK: # %bb.0:1914; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma1915; CHECK-NEXT: vmsltu.vx v12, v8, a0, v0.t1916; CHECK-NEXT: vmv1r.v v0, v121917; CHECK-NEXT: ret1918 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01919 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1920 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)1921 ret <vscale x 8 x i1> %v1922}1923 1924define <vscale x 8 x i1> @icmp_ult_vx_swap_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {1925; CHECK-LABEL: icmp_ult_vx_swap_nxv8i32:1926; CHECK: # %bb.0:1927; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma1928; CHECK-NEXT: vmsgtu.vx v12, v8, a0, v0.t1929; CHECK-NEXT: vmv1r.v v0, v121930; CHECK-NEXT: ret1931 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01932 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1933 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %vb, <vscale x 8 x i32> %va, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)1934 ret <vscale x 8 x i1> %v1935}1936 1937define <vscale x 8 x i1> @icmp_ult_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {1938; CHECK-LABEL: icmp_ult_vi_nxv8i32:1939; CHECK: # %bb.0:1940; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma1941; CHECK-NEXT: vmsleu.vi v12, v8, 3, v0.t1942; CHECK-NEXT: vmv1r.v v0, v121943; CHECK-NEXT: ret1944 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 4), metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)1945 ret <vscale x 8 x i1> %v1946}1947 1948define <vscale x 8 x i1> @icmp_ult_vi_swap_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {1949; CHECK-LABEL: icmp_ult_vi_swap_nxv8i32:1950; CHECK: # %bb.0:1951; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma1952; CHECK-NEXT: vmsgtu.vi v12, v8, 4, v0.t1953; CHECK-NEXT: vmv1r.v v0, v121954; CHECK-NEXT: ret1955 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> splat (i32 4), <vscale x 8 x i32> %va, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)1956 ret <vscale x 8 x i1> %v1957}1958 1959define <vscale x 8 x i1> @icmp_sgt_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {1960; CHECK-LABEL: icmp_sgt_vv_nxv8i32:1961; CHECK: # %bb.0:1962; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma1963; CHECK-NEXT: vmslt.vv v16, v12, v8, v0.t1964; CHECK-NEXT: vmv1r.v v0, v161965; CHECK-NEXT: ret1966 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)1967 ret <vscale x 8 x i1> %v1968}1969 1970define <vscale x 8 x i1> @icmp_sgt_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {1971; CHECK-LABEL: icmp_sgt_vx_nxv8i32:1972; CHECK: # %bb.0:1973; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma1974; CHECK-NEXT: vmsgt.vx v12, v8, a0, v0.t1975; CHECK-NEXT: vmv1r.v v0, v121976; CHECK-NEXT: ret1977 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01978 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1979 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)1980 ret <vscale x 8 x i1> %v1981}1982 1983define <vscale x 8 x i1> @icmp_sgt_vx_swap_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {1984; CHECK-LABEL: icmp_sgt_vx_swap_nxv8i32:1985; CHECK: # %bb.0:1986; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma1987; CHECK-NEXT: vmslt.vx v12, v8, a0, v0.t1988; CHECK-NEXT: vmv1r.v v0, v121989; CHECK-NEXT: ret1990 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01991 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1992 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %vb, <vscale x 8 x i32> %va, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)1993 ret <vscale x 8 x i1> %v1994}1995 1996define <vscale x 8 x i1> @icmp_sgt_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {1997; CHECK-LABEL: icmp_sgt_vi_nxv8i32:1998; CHECK: # %bb.0:1999; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma2000; CHECK-NEXT: vmsgt.vi v12, v8, 4, v0.t2001; CHECK-NEXT: vmv1r.v v0, v122002; CHECK-NEXT: ret2003 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 4), metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)2004 ret <vscale x 8 x i1> %v2005}2006 2007define <vscale x 8 x i1> @icmp_sgt_vi_swap_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {2008; CHECK-LABEL: icmp_sgt_vi_swap_nxv8i32:2009; CHECK: # %bb.0:2010; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma2011; CHECK-NEXT: vmsle.vi v12, v8, 3, v0.t2012; CHECK-NEXT: vmv1r.v v0, v122013; CHECK-NEXT: ret2014 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> splat (i32 4), <vscale x 8 x i32> %va, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)2015 ret <vscale x 8 x i1> %v2016}2017 2018define <vscale x 8 x i1> @icmp_sge_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {2019; CHECK-LABEL: icmp_sge_vv_nxv8i32:2020; CHECK: # %bb.0:2021; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma2022; CHECK-NEXT: vmsle.vv v16, v12, v8, v0.t2023; CHECK-NEXT: vmv1r.v v0, v162024; CHECK-NEXT: ret2025 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)2026 ret <vscale x 8 x i1> %v2027}2028 2029define <vscale x 8 x i1> @icmp_sge_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {2030; CHECK-LABEL: icmp_sge_vx_nxv8i32:2031; CHECK: # %bb.0:2032; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma2033; CHECK-NEXT: vmv.v.x v16, a02034; CHECK-NEXT: vmsle.vv v12, v16, v8, v0.t2035; CHECK-NEXT: vmv1r.v v0, v122036; CHECK-NEXT: ret2037 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 02038 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer2039 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)2040 ret <vscale x 8 x i1> %v2041}2042 2043define <vscale x 8 x i1> @icmp_sge_vx_swap_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {2044; CHECK-LABEL: icmp_sge_vx_swap_nxv8i32:2045; CHECK: # %bb.0:2046; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma2047; CHECK-NEXT: vmsle.vx v12, v8, a0, v0.t2048; CHECK-NEXT: vmv1r.v v0, v122049; CHECK-NEXT: ret2050 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 02051 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer2052 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %vb, <vscale x 8 x i32> %va, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)2053 ret <vscale x 8 x i1> %v2054}2055 2056define <vscale x 8 x i1> @icmp_sge_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {2057; CHECK-LABEL: icmp_sge_vi_nxv8i32:2058; CHECK: # %bb.0:2059; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma2060; CHECK-NEXT: vmsgt.vi v12, v8, 3, v0.t2061; CHECK-NEXT: vmv1r.v v0, v122062; CHECK-NEXT: ret2063 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 4), metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)2064 ret <vscale x 8 x i1> %v2065}2066 2067define <vscale x 8 x i1> @icmp_sge_vi_swap_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {2068; CHECK-LABEL: icmp_sge_vi_swap_nxv8i32:2069; CHECK: # %bb.0:2070; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma2071; CHECK-NEXT: vmsle.vi v12, v8, 4, v0.t2072; CHECK-NEXT: vmv1r.v v0, v122073; CHECK-NEXT: ret2074 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> splat (i32 4), <vscale x 8 x i32> %va, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)2075 ret <vscale x 8 x i1> %v2076}2077 2078define <vscale x 8 x i1> @icmp_slt_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {2079; CHECK-LABEL: icmp_slt_vv_nxv8i32:2080; CHECK: # %bb.0:2081; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma2082; CHECK-NEXT: vmslt.vv v16, v8, v12, v0.t2083; CHECK-NEXT: vmv1r.v v0, v162084; CHECK-NEXT: ret2085 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)2086 ret <vscale x 8 x i1> %v2087}2088 2089define <vscale x 8 x i1> @icmp_slt_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {2090; CHECK-LABEL: icmp_slt_vx_nxv8i32:2091; CHECK: # %bb.0:2092; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma2093; CHECK-NEXT: vmslt.vx v12, v8, a0, v0.t2094; CHECK-NEXT: vmv1r.v v0, v122095; CHECK-NEXT: ret2096 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 02097 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer2098 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)2099 ret <vscale x 8 x i1> %v2100}2101 2102define <vscale x 8 x i1> @icmp_slt_vx_swap_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {2103; CHECK-LABEL: icmp_slt_vx_swap_nxv8i32:2104; CHECK: # %bb.0:2105; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma2106; CHECK-NEXT: vmsgt.vx v12, v8, a0, v0.t2107; CHECK-NEXT: vmv1r.v v0, v122108; CHECK-NEXT: ret2109 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 02110 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer2111 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %vb, <vscale x 8 x i32> %va, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)2112 ret <vscale x 8 x i1> %v2113}2114 2115define <vscale x 8 x i1> @icmp_slt_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {2116; CHECK-LABEL: icmp_slt_vi_nxv8i32:2117; CHECK: # %bb.0:2118; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma2119; CHECK-NEXT: vmsle.vi v12, v8, 3, v0.t2120; CHECK-NEXT: vmv1r.v v0, v122121; CHECK-NEXT: ret2122 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 4), metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)2123 ret <vscale x 8 x i1> %v2124}2125 2126define <vscale x 8 x i1> @icmp_slt_vi_swap_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {2127; CHECK-LABEL: icmp_slt_vi_swap_nxv8i32:2128; CHECK: # %bb.0:2129; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma2130; CHECK-NEXT: vmsgt.vi v12, v8, 4, v0.t2131; CHECK-NEXT: vmv1r.v v0, v122132; CHECK-NEXT: ret2133 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> splat (i32 4), <vscale x 8 x i32> %va, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)2134 ret <vscale x 8 x i1> %v2135}2136 2137define <vscale x 8 x i1> @icmp_sle_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {2138; CHECK-LABEL: icmp_sle_vv_nxv8i32:2139; CHECK: # %bb.0:2140; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma2141; CHECK-NEXT: vmsle.vv v16, v8, v12, v0.t2142; CHECK-NEXT: vmv1r.v v0, v162143; CHECK-NEXT: ret2144 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)2145 ret <vscale x 8 x i1> %v2146}2147 2148define <vscale x 8 x i1> @icmp_sle_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {2149; CHECK-LABEL: icmp_sle_vx_nxv8i32:2150; CHECK: # %bb.0:2151; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma2152; CHECK-NEXT: vmsle.vx v12, v8, a0, v0.t2153; CHECK-NEXT: vmv1r.v v0, v122154; CHECK-NEXT: ret2155 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 02156 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer2157 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)2158 ret <vscale x 8 x i1> %v2159}2160 2161define <vscale x 8 x i1> @icmp_sle_vx_swap_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {2162; CHECK-LABEL: icmp_sle_vx_swap_nxv8i32:2163; CHECK: # %bb.0:2164; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma2165; CHECK-NEXT: vmv.v.x v16, a02166; CHECK-NEXT: vmsle.vv v12, v16, v8, v0.t2167; CHECK-NEXT: vmv1r.v v0, v122168; CHECK-NEXT: ret2169 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 02170 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer2171 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %vb, <vscale x 8 x i32> %va, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)2172 ret <vscale x 8 x i1> %v2173}2174 2175define <vscale x 8 x i1> @icmp_sle_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {2176; CHECK-LABEL: icmp_sle_vi_nxv8i32:2177; CHECK: # %bb.0:2178; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma2179; CHECK-NEXT: vmsle.vi v12, v8, 4, v0.t2180; CHECK-NEXT: vmv1r.v v0, v122181; CHECK-NEXT: ret2182 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 4), metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)2183 ret <vscale x 8 x i1> %v2184}2185 2186define <vscale x 8 x i1> @icmp_sle_vi_swap_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {2187; CHECK-LABEL: icmp_sle_vi_swap_nxv8i32:2188; CHECK: # %bb.0:2189; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma2190; CHECK-NEXT: vmsgt.vi v12, v8, 3, v0.t2191; CHECK-NEXT: vmv1r.v v0, v122192; CHECK-NEXT: ret2193 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> splat (i32 4), <vscale x 8 x i32> %va, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)2194 ret <vscale x 8 x i1> %v2195}2196 2197define <vscale x 32 x i1> @icmp_eq_vv_nxv32i32(<vscale x 32 x i32> %va, <vscale x 32 x i32> %vb, <vscale x 32 x i1> %m, i32 zeroext %evl) {2198; CHECK-LABEL: icmp_eq_vv_nxv32i32:2199; CHECK: # %bb.0:2200; CHECK-NEXT: addi sp, sp, -162201; CHECK-NEXT: .cfi_def_cfa_offset 162202; CHECK-NEXT: csrr a1, vlenb2203; CHECK-NEXT: slli a1, a1, 32204; CHECK-NEXT: sub sp, sp, a12205; CHECK-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x08, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 8 * vlenb2206; CHECK-NEXT: vsetvli a1, zero, e8, mf2, ta, ma2207; CHECK-NEXT: vmv1r.v v7, v02208; CHECK-NEXT: addi a1, sp, 162209; CHECK-NEXT: vs8r.v v8, (a1) # vscale x 64-byte Folded Spill2210; CHECK-NEXT: csrr a3, vlenb2211; CHECK-NEXT: srli a1, a3, 22212; CHECK-NEXT: slli a4, a3, 32213; CHECK-NEXT: slli a3, a3, 12214; CHECK-NEXT: add a4, a0, a42215; CHECK-NEXT: sub a5, a2, a32216; CHECK-NEXT: vl8re32.v v24, (a4)2217; CHECK-NEXT: sltu a4, a2, a52218; CHECK-NEXT: addi a4, a4, -12219; CHECK-NEXT: vl8re32.v v8, (a0)2220; CHECK-NEXT: vslidedown.vx v0, v0, a12221; CHECK-NEXT: and a4, a4, a52222; CHECK-NEXT: vsetvli zero, a4, e32, m8, ta, ma2223; CHECK-NEXT: vmseq.vv v6, v16, v24, v0.t2224; CHECK-NEXT: bltu a2, a3, .LBB189_22225; CHECK-NEXT: # %bb.1:2226; CHECK-NEXT: mv a2, a32227; CHECK-NEXT: .LBB189_2:2228; CHECK-NEXT: vmv1r.v v0, v72229; CHECK-NEXT: addi a0, sp, 162230; CHECK-NEXT: vl8r.v v24, (a0) # vscale x 64-byte Folded Reload2231; CHECK-NEXT: vsetvli zero, a2, e32, m8, ta, ma2232; CHECK-NEXT: vmseq.vv v16, v24, v8, v0.t2233; CHECK-NEXT: vsetvli a0, zero, e8, mf2, ta, ma2234; CHECK-NEXT: vslideup.vx v16, v6, a12235; CHECK-NEXT: vmv1r.v v0, v162236; CHECK-NEXT: csrr a0, vlenb2237; CHECK-NEXT: slli a0, a0, 32238; CHECK-NEXT: add sp, sp, a02239; CHECK-NEXT: .cfi_def_cfa sp, 162240; CHECK-NEXT: addi sp, sp, 162241; CHECK-NEXT: .cfi_def_cfa_offset 02242; CHECK-NEXT: ret2243 %v = call <vscale x 32 x i1> @llvm.vp.icmp.nxv32i32(<vscale x 32 x i32> %va, <vscale x 32 x i32> %vb, metadata !"eq", <vscale x 32 x i1> %m, i32 %evl)2244 ret <vscale x 32 x i1> %v2245}2246 2247define <vscale x 32 x i1> @icmp_eq_vx_nxv32i32(<vscale x 32 x i32> %va, i32 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {2248; CHECK-LABEL: icmp_eq_vx_nxv32i32:2249; CHECK: # %bb.0:2250; CHECK-NEXT: vsetvli a2, zero, e8, mf2, ta, ma2251; CHECK-NEXT: vmv1r.v v24, v02252; CHECK-NEXT: csrr a3, vlenb2253; CHECK-NEXT: srli a2, a3, 22254; CHECK-NEXT: slli a3, a3, 12255; CHECK-NEXT: vslidedown.vx v0, v0, a22256; CHECK-NEXT: sub a4, a1, a32257; CHECK-NEXT: sltu a5, a1, a42258; CHECK-NEXT: addi a5, a5, -12259; CHECK-NEXT: and a4, a5, a42260; CHECK-NEXT: vsetvli zero, a4, e32, m8, ta, ma2261; CHECK-NEXT: vmseq.vx v25, v16, a0, v0.t2262; CHECK-NEXT: bltu a1, a3, .LBB190_22263; CHECK-NEXT: # %bb.1:2264; CHECK-NEXT: mv a1, a32265; CHECK-NEXT: .LBB190_2:2266; CHECK-NEXT: vmv1r.v v0, v242267; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma2268; CHECK-NEXT: vmseq.vx v16, v8, a0, v0.t2269; CHECK-NEXT: vsetvli a0, zero, e8, mf2, ta, ma2270; CHECK-NEXT: vslideup.vx v16, v25, a22271; CHECK-NEXT: vmv1r.v v0, v162272; CHECK-NEXT: ret2273 %elt.head = insertelement <vscale x 32 x i32> poison, i32 %b, i32 02274 %vb = shufflevector <vscale x 32 x i32> %elt.head, <vscale x 32 x i32> poison, <vscale x 32 x i32> zeroinitializer2275 %v = call <vscale x 32 x i1> @llvm.vp.icmp.nxv32i32(<vscale x 32 x i32> %va, <vscale x 32 x i32> %vb, metadata !"eq", <vscale x 32 x i1> %m, i32 %evl)2276 ret <vscale x 32 x i1> %v2277}2278 2279define <vscale x 32 x i1> @icmp_eq_vx_swap_nxv32i32(<vscale x 32 x i32> %va, i32 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {2280; CHECK-LABEL: icmp_eq_vx_swap_nxv32i32:2281; CHECK: # %bb.0:2282; CHECK-NEXT: vsetvli a2, zero, e8, mf2, ta, ma2283; CHECK-NEXT: vmv1r.v v24, v02284; CHECK-NEXT: csrr a3, vlenb2285; CHECK-NEXT: srli a2, a3, 22286; CHECK-NEXT: slli a3, a3, 12287; CHECK-NEXT: vslidedown.vx v0, v0, a22288; CHECK-NEXT: sub a4, a1, a32289; CHECK-NEXT: sltu a5, a1, a42290; CHECK-NEXT: addi a5, a5, -12291; CHECK-NEXT: and a4, a5, a42292; CHECK-NEXT: vsetvli zero, a4, e32, m8, ta, ma2293; CHECK-NEXT: vmseq.vx v25, v16, a0, v0.t2294; CHECK-NEXT: bltu a1, a3, .LBB191_22295; CHECK-NEXT: # %bb.1:2296; CHECK-NEXT: mv a1, a32297; CHECK-NEXT: .LBB191_2:2298; CHECK-NEXT: vmv1r.v v0, v242299; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma2300; CHECK-NEXT: vmseq.vx v16, v8, a0, v0.t2301; CHECK-NEXT: vsetvli a0, zero, e8, mf2, ta, ma2302; CHECK-NEXT: vslideup.vx v16, v25, a22303; CHECK-NEXT: vmv1r.v v0, v162304; CHECK-NEXT: ret2305 %elt.head = insertelement <vscale x 32 x i32> poison, i32 %b, i32 02306 %vb = shufflevector <vscale x 32 x i32> %elt.head, <vscale x 32 x i32> poison, <vscale x 32 x i32> zeroinitializer2307 %v = call <vscale x 32 x i1> @llvm.vp.icmp.nxv32i32(<vscale x 32 x i32> %vb, <vscale x 32 x i32> %va, metadata !"eq", <vscale x 32 x i1> %m, i32 %evl)2308 ret <vscale x 32 x i1> %v2309}2310 2311define <vscale x 1 x i1> @icmp_eq_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {2312; CHECK-LABEL: icmp_eq_vv_nxv1i64:2313; CHECK: # %bb.0:2314; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2315; CHECK-NEXT: vmseq.vv v0, v8, v9, v0.t2316; CHECK-NEXT: ret2317 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)2318 ret <vscale x 1 x i1> %v2319}2320 2321define <vscale x 1 x i1> @icmp_eq_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {2322; RV32-LABEL: icmp_eq_vx_nxv1i64:2323; RV32: # %bb.0:2324; RV32-NEXT: addi sp, sp, -162325; RV32-NEXT: .cfi_def_cfa_offset 162326; RV32-NEXT: sw a0, 8(sp)2327; RV32-NEXT: sw a1, 12(sp)2328; RV32-NEXT: addi a0, sp, 82329; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma2330; RV32-NEXT: vlse64.v v9, (a0), zero2331; RV32-NEXT: vmseq.vv v0, v8, v9, v0.t2332; RV32-NEXT: addi sp, sp, 162333; RV32-NEXT: .cfi_def_cfa_offset 02334; RV32-NEXT: ret2335;2336; RV64-LABEL: icmp_eq_vx_nxv1i64:2337; RV64: # %bb.0:2338; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma2339; RV64-NEXT: vmseq.vx v0, v8, a0, v0.t2340; RV64-NEXT: ret2341 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 02342 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer2343 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)2344 ret <vscale x 1 x i1> %v2345}2346 2347define <vscale x 1 x i1> @icmp_eq_vx_swap_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {2348; RV32-LABEL: icmp_eq_vx_swap_nxv1i64:2349; RV32: # %bb.0:2350; RV32-NEXT: addi sp, sp, -162351; RV32-NEXT: .cfi_def_cfa_offset 162352; RV32-NEXT: sw a0, 8(sp)2353; RV32-NEXT: sw a1, 12(sp)2354; RV32-NEXT: addi a0, sp, 82355; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma2356; RV32-NEXT: vlse64.v v9, (a0), zero2357; RV32-NEXT: vmseq.vv v0, v9, v8, v0.t2358; RV32-NEXT: addi sp, sp, 162359; RV32-NEXT: .cfi_def_cfa_offset 02360; RV32-NEXT: ret2361;2362; RV64-LABEL: icmp_eq_vx_swap_nxv1i64:2363; RV64: # %bb.0:2364; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma2365; RV64-NEXT: vmseq.vx v0, v8, a0, v0.t2366; RV64-NEXT: ret2367 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 02368 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer2369 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %vb, <vscale x 1 x i64> %va, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)2370 ret <vscale x 1 x i1> %v2371}2372 2373define <vscale x 1 x i1> @icmp_eq_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {2374; CHECK-LABEL: icmp_eq_vi_nxv1i64:2375; CHECK: # %bb.0:2376; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2377; CHECK-NEXT: vmseq.vi v0, v8, 4, v0.t2378; CHECK-NEXT: ret2379 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 4), metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)2380 ret <vscale x 1 x i1> %v2381}2382 2383define <vscale x 1 x i1> @icmp_eq_vi_swap_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {2384; CHECK-LABEL: icmp_eq_vi_swap_nxv1i64:2385; CHECK: # %bb.0:2386; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2387; CHECK-NEXT: vmseq.vi v0, v8, 4, v0.t2388; CHECK-NEXT: ret2389 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> splat (i64 4), <vscale x 1 x i64> %va, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)2390 ret <vscale x 1 x i1> %v2391}2392 2393define <vscale x 1 x i1> @icmp_ne_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {2394; CHECK-LABEL: icmp_ne_vv_nxv1i64:2395; CHECK: # %bb.0:2396; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2397; CHECK-NEXT: vmsne.vv v0, v8, v9, v0.t2398; CHECK-NEXT: ret2399 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)2400 ret <vscale x 1 x i1> %v2401}2402 2403define <vscale x 1 x i1> @icmp_ne_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {2404; RV32-LABEL: icmp_ne_vx_nxv1i64:2405; RV32: # %bb.0:2406; RV32-NEXT: addi sp, sp, -162407; RV32-NEXT: .cfi_def_cfa_offset 162408; RV32-NEXT: sw a0, 8(sp)2409; RV32-NEXT: sw a1, 12(sp)2410; RV32-NEXT: addi a0, sp, 82411; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma2412; RV32-NEXT: vlse64.v v9, (a0), zero2413; RV32-NEXT: vmsne.vv v0, v8, v9, v0.t2414; RV32-NEXT: addi sp, sp, 162415; RV32-NEXT: .cfi_def_cfa_offset 02416; RV32-NEXT: ret2417;2418; RV64-LABEL: icmp_ne_vx_nxv1i64:2419; RV64: # %bb.0:2420; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma2421; RV64-NEXT: vmsne.vx v0, v8, a0, v0.t2422; RV64-NEXT: ret2423 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 02424 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer2425 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)2426 ret <vscale x 1 x i1> %v2427}2428 2429define <vscale x 1 x i1> @icmp_ne_vx_swap_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {2430; RV32-LABEL: icmp_ne_vx_swap_nxv1i64:2431; RV32: # %bb.0:2432; RV32-NEXT: addi sp, sp, -162433; RV32-NEXT: .cfi_def_cfa_offset 162434; RV32-NEXT: sw a0, 8(sp)2435; RV32-NEXT: sw a1, 12(sp)2436; RV32-NEXT: addi a0, sp, 82437; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma2438; RV32-NEXT: vlse64.v v9, (a0), zero2439; RV32-NEXT: vmsne.vv v0, v9, v8, v0.t2440; RV32-NEXT: addi sp, sp, 162441; RV32-NEXT: .cfi_def_cfa_offset 02442; RV32-NEXT: ret2443;2444; RV64-LABEL: icmp_ne_vx_swap_nxv1i64:2445; RV64: # %bb.0:2446; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma2447; RV64-NEXT: vmsne.vx v0, v8, a0, v0.t2448; RV64-NEXT: ret2449 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 02450 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer2451 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %vb, <vscale x 1 x i64> %va, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)2452 ret <vscale x 1 x i1> %v2453}2454 2455define <vscale x 1 x i1> @icmp_ne_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {2456; CHECK-LABEL: icmp_ne_vi_nxv1i64:2457; CHECK: # %bb.0:2458; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2459; CHECK-NEXT: vmsne.vi v0, v8, 4, v0.t2460; CHECK-NEXT: ret2461 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 4), metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)2462 ret <vscale x 1 x i1> %v2463}2464 2465define <vscale x 1 x i1> @icmp_ne_vi_swap_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {2466; CHECK-LABEL: icmp_ne_vi_swap_nxv1i64:2467; CHECK: # %bb.0:2468; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2469; CHECK-NEXT: vmsne.vi v0, v8, 4, v0.t2470; CHECK-NEXT: ret2471 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> splat (i64 4), <vscale x 1 x i64> %va, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)2472 ret <vscale x 1 x i1> %v2473}2474 2475define <vscale x 1 x i1> @icmp_ugt_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {2476; CHECK-LABEL: icmp_ugt_vv_nxv1i64:2477; CHECK: # %bb.0:2478; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2479; CHECK-NEXT: vmsltu.vv v0, v9, v8, v0.t2480; CHECK-NEXT: ret2481 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)2482 ret <vscale x 1 x i1> %v2483}2484 2485define <vscale x 1 x i1> @icmp_ugt_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {2486; RV32-LABEL: icmp_ugt_vx_nxv1i64:2487; RV32: # %bb.0:2488; RV32-NEXT: addi sp, sp, -162489; RV32-NEXT: .cfi_def_cfa_offset 162490; RV32-NEXT: sw a0, 8(sp)2491; RV32-NEXT: sw a1, 12(sp)2492; RV32-NEXT: addi a0, sp, 82493; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma2494; RV32-NEXT: vlse64.v v9, (a0), zero2495; RV32-NEXT: vmsltu.vv v0, v9, v8, v0.t2496; RV32-NEXT: addi sp, sp, 162497; RV32-NEXT: .cfi_def_cfa_offset 02498; RV32-NEXT: ret2499;2500; RV64-LABEL: icmp_ugt_vx_nxv1i64:2501; RV64: # %bb.0:2502; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma2503; RV64-NEXT: vmsgtu.vx v0, v8, a0, v0.t2504; RV64-NEXT: ret2505 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 02506 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer2507 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)2508 ret <vscale x 1 x i1> %v2509}2510 2511define <vscale x 1 x i1> @icmp_ugt_vx_swap_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {2512; RV32-LABEL: icmp_ugt_vx_swap_nxv1i64:2513; RV32: # %bb.0:2514; RV32-NEXT: addi sp, sp, -162515; RV32-NEXT: .cfi_def_cfa_offset 162516; RV32-NEXT: sw a0, 8(sp)2517; RV32-NEXT: sw a1, 12(sp)2518; RV32-NEXT: addi a0, sp, 82519; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma2520; RV32-NEXT: vlse64.v v9, (a0), zero2521; RV32-NEXT: vmsltu.vv v0, v8, v9, v0.t2522; RV32-NEXT: addi sp, sp, 162523; RV32-NEXT: .cfi_def_cfa_offset 02524; RV32-NEXT: ret2525;2526; RV64-LABEL: icmp_ugt_vx_swap_nxv1i64:2527; RV64: # %bb.0:2528; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma2529; RV64-NEXT: vmsltu.vx v0, v8, a0, v0.t2530; RV64-NEXT: ret2531 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 02532 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer2533 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %vb, <vscale x 1 x i64> %va, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)2534 ret <vscale x 1 x i1> %v2535}2536 2537define <vscale x 1 x i1> @icmp_ugt_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {2538; CHECK-LABEL: icmp_ugt_vi_nxv1i64:2539; CHECK: # %bb.0:2540; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2541; CHECK-NEXT: vmsgtu.vi v0, v8, 4, v0.t2542; CHECK-NEXT: ret2543 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 4), metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)2544 ret <vscale x 1 x i1> %v2545}2546 2547define <vscale x 1 x i1> @icmp_ugt_vi_swap_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {2548; CHECK-LABEL: icmp_ugt_vi_swap_nxv1i64:2549; CHECK: # %bb.0:2550; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2551; CHECK-NEXT: vmsleu.vi v0, v8, 3, v0.t2552; CHECK-NEXT: ret2553 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> splat (i64 4), <vscale x 1 x i64> %va, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)2554 ret <vscale x 1 x i1> %v2555}2556 2557define <vscale x 1 x i1> @icmp_uge_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {2558; CHECK-LABEL: icmp_uge_vv_nxv1i64:2559; CHECK: # %bb.0:2560; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2561; CHECK-NEXT: vmsleu.vv v0, v9, v8, v0.t2562; CHECK-NEXT: ret2563 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)2564 ret <vscale x 1 x i1> %v2565}2566 2567define <vscale x 1 x i1> @icmp_uge_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {2568; RV32-LABEL: icmp_uge_vx_nxv1i64:2569; RV32: # %bb.0:2570; RV32-NEXT: addi sp, sp, -162571; RV32-NEXT: .cfi_def_cfa_offset 162572; RV32-NEXT: sw a0, 8(sp)2573; RV32-NEXT: sw a1, 12(sp)2574; RV32-NEXT: addi a0, sp, 82575; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma2576; RV32-NEXT: vlse64.v v9, (a0), zero2577; RV32-NEXT: vmsleu.vv v0, v9, v8, v0.t2578; RV32-NEXT: addi sp, sp, 162579; RV32-NEXT: .cfi_def_cfa_offset 02580; RV32-NEXT: ret2581;2582; RV64-LABEL: icmp_uge_vx_nxv1i64:2583; RV64: # %bb.0:2584; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma2585; RV64-NEXT: vmv.v.x v9, a02586; RV64-NEXT: vmsleu.vv v0, v9, v8, v0.t2587; RV64-NEXT: ret2588 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 02589 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer2590 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)2591 ret <vscale x 1 x i1> %v2592}2593 2594define <vscale x 1 x i1> @icmp_uge_vx_swap_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {2595; RV32-LABEL: icmp_uge_vx_swap_nxv1i64:2596; RV32: # %bb.0:2597; RV32-NEXT: addi sp, sp, -162598; RV32-NEXT: .cfi_def_cfa_offset 162599; RV32-NEXT: sw a0, 8(sp)2600; RV32-NEXT: sw a1, 12(sp)2601; RV32-NEXT: addi a0, sp, 82602; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma2603; RV32-NEXT: vlse64.v v9, (a0), zero2604; RV32-NEXT: vmsleu.vv v0, v8, v9, v0.t2605; RV32-NEXT: addi sp, sp, 162606; RV32-NEXT: .cfi_def_cfa_offset 02607; RV32-NEXT: ret2608;2609; RV64-LABEL: icmp_uge_vx_swap_nxv1i64:2610; RV64: # %bb.0:2611; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma2612; RV64-NEXT: vmsleu.vx v0, v8, a0, v0.t2613; RV64-NEXT: ret2614 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 02615 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer2616 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %vb, <vscale x 1 x i64> %va, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)2617 ret <vscale x 1 x i1> %v2618}2619 2620define <vscale x 1 x i1> @icmp_uge_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {2621; CHECK-LABEL: icmp_uge_vi_nxv1i64:2622; CHECK: # %bb.0:2623; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2624; CHECK-NEXT: vmsgtu.vi v0, v8, 3, v0.t2625; CHECK-NEXT: ret2626 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 4), metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)2627 ret <vscale x 1 x i1> %v2628}2629 2630define <vscale x 1 x i1> @icmp_uge_vi_swap_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {2631; CHECK-LABEL: icmp_uge_vi_swap_nxv1i64:2632; CHECK: # %bb.0:2633; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2634; CHECK-NEXT: vmsleu.vi v0, v8, 4, v0.t2635; CHECK-NEXT: ret2636 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> splat (i64 4), <vscale x 1 x i64> %va, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)2637 ret <vscale x 1 x i1> %v2638}2639 2640define <vscale x 1 x i1> @icmp_ult_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {2641; CHECK-LABEL: icmp_ult_vv_nxv1i64:2642; CHECK: # %bb.0:2643; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2644; CHECK-NEXT: vmsltu.vv v0, v8, v9, v0.t2645; CHECK-NEXT: ret2646 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)2647 ret <vscale x 1 x i1> %v2648}2649 2650define <vscale x 1 x i1> @icmp_ult_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {2651; RV32-LABEL: icmp_ult_vx_nxv1i64:2652; RV32: # %bb.0:2653; RV32-NEXT: addi sp, sp, -162654; RV32-NEXT: .cfi_def_cfa_offset 162655; RV32-NEXT: sw a0, 8(sp)2656; RV32-NEXT: sw a1, 12(sp)2657; RV32-NEXT: addi a0, sp, 82658; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma2659; RV32-NEXT: vlse64.v v9, (a0), zero2660; RV32-NEXT: vmsltu.vv v0, v8, v9, v0.t2661; RV32-NEXT: addi sp, sp, 162662; RV32-NEXT: .cfi_def_cfa_offset 02663; RV32-NEXT: ret2664;2665; RV64-LABEL: icmp_ult_vx_nxv1i64:2666; RV64: # %bb.0:2667; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma2668; RV64-NEXT: vmsltu.vx v0, v8, a0, v0.t2669; RV64-NEXT: ret2670 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 02671 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer2672 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)2673 ret <vscale x 1 x i1> %v2674}2675 2676define <vscale x 1 x i1> @icmp_ult_vx_swap_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {2677; RV32-LABEL: icmp_ult_vx_swap_nxv1i64:2678; RV32: # %bb.0:2679; RV32-NEXT: addi sp, sp, -162680; RV32-NEXT: .cfi_def_cfa_offset 162681; RV32-NEXT: sw a0, 8(sp)2682; RV32-NEXT: sw a1, 12(sp)2683; RV32-NEXT: addi a0, sp, 82684; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma2685; RV32-NEXT: vlse64.v v9, (a0), zero2686; RV32-NEXT: vmsltu.vv v0, v9, v8, v0.t2687; RV32-NEXT: addi sp, sp, 162688; RV32-NEXT: .cfi_def_cfa_offset 02689; RV32-NEXT: ret2690;2691; RV64-LABEL: icmp_ult_vx_swap_nxv1i64:2692; RV64: # %bb.0:2693; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma2694; RV64-NEXT: vmsgtu.vx v0, v8, a0, v0.t2695; RV64-NEXT: ret2696 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 02697 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer2698 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %vb, <vscale x 1 x i64> %va, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)2699 ret <vscale x 1 x i1> %v2700}2701 2702define <vscale x 1 x i1> @icmp_ult_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {2703; CHECK-LABEL: icmp_ult_vi_nxv1i64:2704; CHECK: # %bb.0:2705; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2706; CHECK-NEXT: vmsleu.vi v0, v8, 3, v0.t2707; CHECK-NEXT: ret2708 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 4), metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)2709 ret <vscale x 1 x i1> %v2710}2711 2712define <vscale x 1 x i1> @icmp_ult_vi_swap_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {2713; CHECK-LABEL: icmp_ult_vi_swap_nxv1i64:2714; CHECK: # %bb.0:2715; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2716; CHECK-NEXT: vmsgtu.vi v0, v8, 4, v0.t2717; CHECK-NEXT: ret2718 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> splat (i64 4), <vscale x 1 x i64> %va, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)2719 ret <vscale x 1 x i1> %v2720}2721 2722define <vscale x 1 x i1> @icmp_sgt_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {2723; CHECK-LABEL: icmp_sgt_vv_nxv1i64:2724; CHECK: # %bb.0:2725; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2726; CHECK-NEXT: vmslt.vv v0, v9, v8, v0.t2727; CHECK-NEXT: ret2728 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)2729 ret <vscale x 1 x i1> %v2730}2731 2732define <vscale x 1 x i1> @icmp_sgt_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {2733; RV32-LABEL: icmp_sgt_vx_nxv1i64:2734; RV32: # %bb.0:2735; RV32-NEXT: addi sp, sp, -162736; RV32-NEXT: .cfi_def_cfa_offset 162737; RV32-NEXT: sw a0, 8(sp)2738; RV32-NEXT: sw a1, 12(sp)2739; RV32-NEXT: addi a0, sp, 82740; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma2741; RV32-NEXT: vlse64.v v9, (a0), zero2742; RV32-NEXT: vmslt.vv v0, v9, v8, v0.t2743; RV32-NEXT: addi sp, sp, 162744; RV32-NEXT: .cfi_def_cfa_offset 02745; RV32-NEXT: ret2746;2747; RV64-LABEL: icmp_sgt_vx_nxv1i64:2748; RV64: # %bb.0:2749; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma2750; RV64-NEXT: vmsgt.vx v0, v8, a0, v0.t2751; RV64-NEXT: ret2752 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 02753 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer2754 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)2755 ret <vscale x 1 x i1> %v2756}2757 2758define <vscale x 1 x i1> @icmp_sgt_vx_swap_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {2759; RV32-LABEL: icmp_sgt_vx_swap_nxv1i64:2760; RV32: # %bb.0:2761; RV32-NEXT: addi sp, sp, -162762; RV32-NEXT: .cfi_def_cfa_offset 162763; RV32-NEXT: sw a0, 8(sp)2764; RV32-NEXT: sw a1, 12(sp)2765; RV32-NEXT: addi a0, sp, 82766; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma2767; RV32-NEXT: vlse64.v v9, (a0), zero2768; RV32-NEXT: vmslt.vv v0, v8, v9, v0.t2769; RV32-NEXT: addi sp, sp, 162770; RV32-NEXT: .cfi_def_cfa_offset 02771; RV32-NEXT: ret2772;2773; RV64-LABEL: icmp_sgt_vx_swap_nxv1i64:2774; RV64: # %bb.0:2775; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma2776; RV64-NEXT: vmslt.vx v0, v8, a0, v0.t2777; RV64-NEXT: ret2778 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 02779 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer2780 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %vb, <vscale x 1 x i64> %va, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)2781 ret <vscale x 1 x i1> %v2782}2783 2784define <vscale x 1 x i1> @icmp_sgt_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {2785; CHECK-LABEL: icmp_sgt_vi_nxv1i64:2786; CHECK: # %bb.0:2787; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2788; CHECK-NEXT: vmsgt.vi v0, v8, 4, v0.t2789; CHECK-NEXT: ret2790 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 4), metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)2791 ret <vscale x 1 x i1> %v2792}2793 2794define <vscale x 1 x i1> @icmp_sgt_vi_swap_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {2795; CHECK-LABEL: icmp_sgt_vi_swap_nxv1i64:2796; CHECK: # %bb.0:2797; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2798; CHECK-NEXT: vmsle.vi v0, v8, 3, v0.t2799; CHECK-NEXT: ret2800 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> splat (i64 4), <vscale x 1 x i64> %va, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)2801 ret <vscale x 1 x i1> %v2802}2803 2804define <vscale x 1 x i1> @icmp_sge_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {2805; CHECK-LABEL: icmp_sge_vv_nxv1i64:2806; CHECK: # %bb.0:2807; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2808; CHECK-NEXT: vmsle.vv v0, v9, v8, v0.t2809; CHECK-NEXT: ret2810 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)2811 ret <vscale x 1 x i1> %v2812}2813 2814define <vscale x 1 x i1> @icmp_sge_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {2815; RV32-LABEL: icmp_sge_vx_nxv1i64:2816; RV32: # %bb.0:2817; RV32-NEXT: addi sp, sp, -162818; RV32-NEXT: .cfi_def_cfa_offset 162819; RV32-NEXT: sw a0, 8(sp)2820; RV32-NEXT: sw a1, 12(sp)2821; RV32-NEXT: addi a0, sp, 82822; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma2823; RV32-NEXT: vlse64.v v9, (a0), zero2824; RV32-NEXT: vmsle.vv v0, v9, v8, v0.t2825; RV32-NEXT: addi sp, sp, 162826; RV32-NEXT: .cfi_def_cfa_offset 02827; RV32-NEXT: ret2828;2829; RV64-LABEL: icmp_sge_vx_nxv1i64:2830; RV64: # %bb.0:2831; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma2832; RV64-NEXT: vmv.v.x v9, a02833; RV64-NEXT: vmsle.vv v0, v9, v8, v0.t2834; RV64-NEXT: ret2835 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 02836 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer2837 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)2838 ret <vscale x 1 x i1> %v2839}2840 2841define <vscale x 1 x i1> @icmp_sge_vx_swap_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {2842; RV32-LABEL: icmp_sge_vx_swap_nxv1i64:2843; RV32: # %bb.0:2844; RV32-NEXT: addi sp, sp, -162845; RV32-NEXT: .cfi_def_cfa_offset 162846; RV32-NEXT: sw a0, 8(sp)2847; RV32-NEXT: sw a1, 12(sp)2848; RV32-NEXT: addi a0, sp, 82849; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma2850; RV32-NEXT: vlse64.v v9, (a0), zero2851; RV32-NEXT: vmsle.vv v0, v8, v9, v0.t2852; RV32-NEXT: addi sp, sp, 162853; RV32-NEXT: .cfi_def_cfa_offset 02854; RV32-NEXT: ret2855;2856; RV64-LABEL: icmp_sge_vx_swap_nxv1i64:2857; RV64: # %bb.0:2858; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma2859; RV64-NEXT: vmsle.vx v0, v8, a0, v0.t2860; RV64-NEXT: ret2861 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 02862 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer2863 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %vb, <vscale x 1 x i64> %va, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)2864 ret <vscale x 1 x i1> %v2865}2866 2867define <vscale x 1 x i1> @icmp_sge_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {2868; CHECK-LABEL: icmp_sge_vi_nxv1i64:2869; CHECK: # %bb.0:2870; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2871; CHECK-NEXT: vmsgt.vi v0, v8, 3, v0.t2872; CHECK-NEXT: ret2873 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 4), metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)2874 ret <vscale x 1 x i1> %v2875}2876 2877define <vscale x 1 x i1> @icmp_sge_vi_swap_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {2878; CHECK-LABEL: icmp_sge_vi_swap_nxv1i64:2879; CHECK: # %bb.0:2880; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2881; CHECK-NEXT: vmsle.vi v0, v8, 4, v0.t2882; CHECK-NEXT: ret2883 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> splat (i64 4), <vscale x 1 x i64> %va, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)2884 ret <vscale x 1 x i1> %v2885}2886 2887define <vscale x 1 x i1> @icmp_slt_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {2888; CHECK-LABEL: icmp_slt_vv_nxv1i64:2889; CHECK: # %bb.0:2890; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2891; CHECK-NEXT: vmslt.vv v0, v8, v9, v0.t2892; CHECK-NEXT: ret2893 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)2894 ret <vscale x 1 x i1> %v2895}2896 2897define <vscale x 1 x i1> @icmp_slt_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {2898; RV32-LABEL: icmp_slt_vx_nxv1i64:2899; RV32: # %bb.0:2900; RV32-NEXT: addi sp, sp, -162901; RV32-NEXT: .cfi_def_cfa_offset 162902; RV32-NEXT: sw a0, 8(sp)2903; RV32-NEXT: sw a1, 12(sp)2904; RV32-NEXT: addi a0, sp, 82905; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma2906; RV32-NEXT: vlse64.v v9, (a0), zero2907; RV32-NEXT: vmslt.vv v0, v8, v9, v0.t2908; RV32-NEXT: addi sp, sp, 162909; RV32-NEXT: .cfi_def_cfa_offset 02910; RV32-NEXT: ret2911;2912; RV64-LABEL: icmp_slt_vx_nxv1i64:2913; RV64: # %bb.0:2914; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma2915; RV64-NEXT: vmslt.vx v0, v8, a0, v0.t2916; RV64-NEXT: ret2917 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 02918 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer2919 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)2920 ret <vscale x 1 x i1> %v2921}2922 2923define <vscale x 1 x i1> @icmp_slt_vx_swap_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {2924; RV32-LABEL: icmp_slt_vx_swap_nxv1i64:2925; RV32: # %bb.0:2926; RV32-NEXT: addi sp, sp, -162927; RV32-NEXT: .cfi_def_cfa_offset 162928; RV32-NEXT: sw a0, 8(sp)2929; RV32-NEXT: sw a1, 12(sp)2930; RV32-NEXT: addi a0, sp, 82931; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma2932; RV32-NEXT: vlse64.v v9, (a0), zero2933; RV32-NEXT: vmslt.vv v0, v9, v8, v0.t2934; RV32-NEXT: addi sp, sp, 162935; RV32-NEXT: .cfi_def_cfa_offset 02936; RV32-NEXT: ret2937;2938; RV64-LABEL: icmp_slt_vx_swap_nxv1i64:2939; RV64: # %bb.0:2940; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma2941; RV64-NEXT: vmsgt.vx v0, v8, a0, v0.t2942; RV64-NEXT: ret2943 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 02944 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer2945 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %vb, <vscale x 1 x i64> %va, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)2946 ret <vscale x 1 x i1> %v2947}2948 2949define <vscale x 1 x i1> @icmp_slt_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {2950; CHECK-LABEL: icmp_slt_vi_nxv1i64:2951; CHECK: # %bb.0:2952; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2953; CHECK-NEXT: vmsle.vi v0, v8, 3, v0.t2954; CHECK-NEXT: ret2955 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 4), metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)2956 ret <vscale x 1 x i1> %v2957}2958 2959define <vscale x 1 x i1> @icmp_slt_vi_swap_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {2960; CHECK-LABEL: icmp_slt_vi_swap_nxv1i64:2961; CHECK: # %bb.0:2962; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2963; CHECK-NEXT: vmsgt.vi v0, v8, 4, v0.t2964; CHECK-NEXT: ret2965 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> splat (i64 4), <vscale x 1 x i64> %va, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)2966 ret <vscale x 1 x i1> %v2967}2968 2969define <vscale x 1 x i1> @icmp_sle_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {2970; CHECK-LABEL: icmp_sle_vv_nxv1i64:2971; CHECK: # %bb.0:2972; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma2973; CHECK-NEXT: vmsle.vv v0, v8, v9, v0.t2974; CHECK-NEXT: ret2975 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)2976 ret <vscale x 1 x i1> %v2977}2978 2979define <vscale x 1 x i1> @icmp_sle_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {2980; RV32-LABEL: icmp_sle_vx_nxv1i64:2981; RV32: # %bb.0:2982; RV32-NEXT: addi sp, sp, -162983; RV32-NEXT: .cfi_def_cfa_offset 162984; RV32-NEXT: sw a0, 8(sp)2985; RV32-NEXT: sw a1, 12(sp)2986; RV32-NEXT: addi a0, sp, 82987; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma2988; RV32-NEXT: vlse64.v v9, (a0), zero2989; RV32-NEXT: vmsle.vv v0, v8, v9, v0.t2990; RV32-NEXT: addi sp, sp, 162991; RV32-NEXT: .cfi_def_cfa_offset 02992; RV32-NEXT: ret2993;2994; RV64-LABEL: icmp_sle_vx_nxv1i64:2995; RV64: # %bb.0:2996; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma2997; RV64-NEXT: vmsle.vx v0, v8, a0, v0.t2998; RV64-NEXT: ret2999 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 03000 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer3001 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)3002 ret <vscale x 1 x i1> %v3003}3004 3005define <vscale x 1 x i1> @icmp_sle_vx_swap_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {3006; RV32-LABEL: icmp_sle_vx_swap_nxv1i64:3007; RV32: # %bb.0:3008; RV32-NEXT: addi sp, sp, -163009; RV32-NEXT: .cfi_def_cfa_offset 163010; RV32-NEXT: sw a0, 8(sp)3011; RV32-NEXT: sw a1, 12(sp)3012; RV32-NEXT: addi a0, sp, 83013; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma3014; RV32-NEXT: vlse64.v v9, (a0), zero3015; RV32-NEXT: vmsle.vv v0, v9, v8, v0.t3016; RV32-NEXT: addi sp, sp, 163017; RV32-NEXT: .cfi_def_cfa_offset 03018; RV32-NEXT: ret3019;3020; RV64-LABEL: icmp_sle_vx_swap_nxv1i64:3021; RV64: # %bb.0:3022; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma3023; RV64-NEXT: vmv.v.x v9, a03024; RV64-NEXT: vmsle.vv v0, v9, v8, v0.t3025; RV64-NEXT: ret3026 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 03027 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer3028 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %vb, <vscale x 1 x i64> %va, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)3029 ret <vscale x 1 x i1> %v3030}3031 3032define <vscale x 1 x i1> @icmp_sle_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {3033; CHECK-LABEL: icmp_sle_vi_nxv1i64:3034; CHECK: # %bb.0:3035; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma3036; CHECK-NEXT: vmsle.vi v0, v8, 4, v0.t3037; CHECK-NEXT: ret3038 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 4), metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)3039 ret <vscale x 1 x i1> %v3040}3041 3042define <vscale x 1 x i1> @icmp_sle_vi_swap_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {3043; CHECK-LABEL: icmp_sle_vi_swap_nxv1i64:3044; CHECK: # %bb.0:3045; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma3046; CHECK-NEXT: vmsgt.vi v0, v8, 3, v0.t3047; CHECK-NEXT: ret3048 %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> splat (i64 4), <vscale x 1 x i64> %va, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)3049 ret <vscale x 1 x i1> %v3050}3051 3052define <vscale x 8 x i1> @icmp_eq_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {3053; CHECK-LABEL: icmp_eq_vv_nxv8i64:3054; CHECK: # %bb.0:3055; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3056; CHECK-NEXT: vmseq.vv v24, v8, v16, v0.t3057; CHECK-NEXT: vmv1r.v v0, v243058; CHECK-NEXT: ret3059 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)3060 ret <vscale x 8 x i1> %v3061}3062 3063define <vscale x 8 x i1> @icmp_eq_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {3064; RV32-LABEL: icmp_eq_vx_nxv8i64:3065; RV32: # %bb.0:3066; RV32-NEXT: addi sp, sp, -163067; RV32-NEXT: .cfi_def_cfa_offset 163068; RV32-NEXT: sw a0, 8(sp)3069; RV32-NEXT: sw a1, 12(sp)3070; RV32-NEXT: addi a0, sp, 83071; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma3072; RV32-NEXT: vlse64.v v24, (a0), zero3073; RV32-NEXT: vmseq.vv v16, v8, v24, v0.t3074; RV32-NEXT: vmv1r.v v0, v163075; RV32-NEXT: addi sp, sp, 163076; RV32-NEXT: .cfi_def_cfa_offset 03077; RV32-NEXT: ret3078;3079; RV64-LABEL: icmp_eq_vx_nxv8i64:3080; RV64: # %bb.0:3081; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma3082; RV64-NEXT: vmseq.vx v16, v8, a0, v0.t3083; RV64-NEXT: vmv1r.v v0, v163084; RV64-NEXT: ret3085 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 03086 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer3087 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)3088 ret <vscale x 8 x i1> %v3089}3090 3091define <vscale x 8 x i1> @icmp_eq_vx_swap_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {3092; RV32-LABEL: icmp_eq_vx_swap_nxv8i64:3093; RV32: # %bb.0:3094; RV32-NEXT: addi sp, sp, -163095; RV32-NEXT: .cfi_def_cfa_offset 163096; RV32-NEXT: sw a0, 8(sp)3097; RV32-NEXT: sw a1, 12(sp)3098; RV32-NEXT: addi a0, sp, 83099; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma3100; RV32-NEXT: vlse64.v v24, (a0), zero3101; RV32-NEXT: vmseq.vv v16, v24, v8, v0.t3102; RV32-NEXT: vmv1r.v v0, v163103; RV32-NEXT: addi sp, sp, 163104; RV32-NEXT: .cfi_def_cfa_offset 03105; RV32-NEXT: ret3106;3107; RV64-LABEL: icmp_eq_vx_swap_nxv8i64:3108; RV64: # %bb.0:3109; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma3110; RV64-NEXT: vmseq.vx v16, v8, a0, v0.t3111; RV64-NEXT: vmv1r.v v0, v163112; RV64-NEXT: ret3113 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 03114 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer3115 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %vb, <vscale x 8 x i64> %va, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)3116 ret <vscale x 8 x i1> %v3117}3118 3119define <vscale x 8 x i1> @icmp_eq_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {3120; CHECK-LABEL: icmp_eq_vi_nxv8i64:3121; CHECK: # %bb.0:3122; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3123; CHECK-NEXT: vmseq.vi v16, v8, 4, v0.t3124; CHECK-NEXT: vmv1r.v v0, v163125; CHECK-NEXT: ret3126 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 4), metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)3127 ret <vscale x 8 x i1> %v3128}3129 3130define <vscale x 8 x i1> @icmp_eq_vi_swap_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {3131; CHECK-LABEL: icmp_eq_vi_swap_nxv8i64:3132; CHECK: # %bb.0:3133; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3134; CHECK-NEXT: vmseq.vi v16, v8, 4, v0.t3135; CHECK-NEXT: vmv1r.v v0, v163136; CHECK-NEXT: ret3137 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> splat (i64 4), <vscale x 8 x i64> %va, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)3138 ret <vscale x 8 x i1> %v3139}3140 3141define <vscale x 8 x i1> @icmp_ne_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {3142; CHECK-LABEL: icmp_ne_vv_nxv8i64:3143; CHECK: # %bb.0:3144; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3145; CHECK-NEXT: vmsne.vv v24, v8, v16, v0.t3146; CHECK-NEXT: vmv1r.v v0, v243147; CHECK-NEXT: ret3148 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)3149 ret <vscale x 8 x i1> %v3150}3151 3152define <vscale x 8 x i1> @icmp_ne_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {3153; RV32-LABEL: icmp_ne_vx_nxv8i64:3154; RV32: # %bb.0:3155; RV32-NEXT: addi sp, sp, -163156; RV32-NEXT: .cfi_def_cfa_offset 163157; RV32-NEXT: sw a0, 8(sp)3158; RV32-NEXT: sw a1, 12(sp)3159; RV32-NEXT: addi a0, sp, 83160; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma3161; RV32-NEXT: vlse64.v v24, (a0), zero3162; RV32-NEXT: vmsne.vv v16, v8, v24, v0.t3163; RV32-NEXT: vmv1r.v v0, v163164; RV32-NEXT: addi sp, sp, 163165; RV32-NEXT: .cfi_def_cfa_offset 03166; RV32-NEXT: ret3167;3168; RV64-LABEL: icmp_ne_vx_nxv8i64:3169; RV64: # %bb.0:3170; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma3171; RV64-NEXT: vmsne.vx v16, v8, a0, v0.t3172; RV64-NEXT: vmv1r.v v0, v163173; RV64-NEXT: ret3174 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 03175 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer3176 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)3177 ret <vscale x 8 x i1> %v3178}3179 3180define <vscale x 8 x i1> @icmp_ne_vx_swap_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {3181; RV32-LABEL: icmp_ne_vx_swap_nxv8i64:3182; RV32: # %bb.0:3183; RV32-NEXT: addi sp, sp, -163184; RV32-NEXT: .cfi_def_cfa_offset 163185; RV32-NEXT: sw a0, 8(sp)3186; RV32-NEXT: sw a1, 12(sp)3187; RV32-NEXT: addi a0, sp, 83188; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma3189; RV32-NEXT: vlse64.v v24, (a0), zero3190; RV32-NEXT: vmsne.vv v16, v24, v8, v0.t3191; RV32-NEXT: vmv1r.v v0, v163192; RV32-NEXT: addi sp, sp, 163193; RV32-NEXT: .cfi_def_cfa_offset 03194; RV32-NEXT: ret3195;3196; RV64-LABEL: icmp_ne_vx_swap_nxv8i64:3197; RV64: # %bb.0:3198; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma3199; RV64-NEXT: vmsne.vx v16, v8, a0, v0.t3200; RV64-NEXT: vmv1r.v v0, v163201; RV64-NEXT: ret3202 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 03203 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer3204 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %vb, <vscale x 8 x i64> %va, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)3205 ret <vscale x 8 x i1> %v3206}3207 3208define <vscale x 8 x i1> @icmp_ne_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {3209; CHECK-LABEL: icmp_ne_vi_nxv8i64:3210; CHECK: # %bb.0:3211; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3212; CHECK-NEXT: vmsne.vi v16, v8, 4, v0.t3213; CHECK-NEXT: vmv1r.v v0, v163214; CHECK-NEXT: ret3215 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 4), metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)3216 ret <vscale x 8 x i1> %v3217}3218 3219define <vscale x 8 x i1> @icmp_ne_vi_swap_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {3220; CHECK-LABEL: icmp_ne_vi_swap_nxv8i64:3221; CHECK: # %bb.0:3222; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3223; CHECK-NEXT: vmsne.vi v16, v8, 4, v0.t3224; CHECK-NEXT: vmv1r.v v0, v163225; CHECK-NEXT: ret3226 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> splat (i64 4), <vscale x 8 x i64> %va, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)3227 ret <vscale x 8 x i1> %v3228}3229 3230define <vscale x 8 x i1> @icmp_ugt_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {3231; CHECK-LABEL: icmp_ugt_vv_nxv8i64:3232; CHECK: # %bb.0:3233; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3234; CHECK-NEXT: vmsltu.vv v24, v16, v8, v0.t3235; CHECK-NEXT: vmv1r.v v0, v243236; CHECK-NEXT: ret3237 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)3238 ret <vscale x 8 x i1> %v3239}3240 3241define <vscale x 8 x i1> @icmp_ugt_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {3242; RV32-LABEL: icmp_ugt_vx_nxv8i64:3243; RV32: # %bb.0:3244; RV32-NEXT: addi sp, sp, -163245; RV32-NEXT: .cfi_def_cfa_offset 163246; RV32-NEXT: sw a0, 8(sp)3247; RV32-NEXT: sw a1, 12(sp)3248; RV32-NEXT: addi a0, sp, 83249; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma3250; RV32-NEXT: vlse64.v v24, (a0), zero3251; RV32-NEXT: vmsltu.vv v16, v24, v8, v0.t3252; RV32-NEXT: vmv1r.v v0, v163253; RV32-NEXT: addi sp, sp, 163254; RV32-NEXT: .cfi_def_cfa_offset 03255; RV32-NEXT: ret3256;3257; RV64-LABEL: icmp_ugt_vx_nxv8i64:3258; RV64: # %bb.0:3259; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma3260; RV64-NEXT: vmsgtu.vx v16, v8, a0, v0.t3261; RV64-NEXT: vmv1r.v v0, v163262; RV64-NEXT: ret3263 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 03264 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer3265 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)3266 ret <vscale x 8 x i1> %v3267}3268 3269define <vscale x 8 x i1> @icmp_ugt_vx_swap_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {3270; RV32-LABEL: icmp_ugt_vx_swap_nxv8i64:3271; RV32: # %bb.0:3272; RV32-NEXT: addi sp, sp, -163273; RV32-NEXT: .cfi_def_cfa_offset 163274; RV32-NEXT: sw a0, 8(sp)3275; RV32-NEXT: sw a1, 12(sp)3276; RV32-NEXT: addi a0, sp, 83277; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma3278; RV32-NEXT: vlse64.v v24, (a0), zero3279; RV32-NEXT: vmsltu.vv v16, v8, v24, v0.t3280; RV32-NEXT: vmv1r.v v0, v163281; RV32-NEXT: addi sp, sp, 163282; RV32-NEXT: .cfi_def_cfa_offset 03283; RV32-NEXT: ret3284;3285; RV64-LABEL: icmp_ugt_vx_swap_nxv8i64:3286; RV64: # %bb.0:3287; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma3288; RV64-NEXT: vmsltu.vx v16, v8, a0, v0.t3289; RV64-NEXT: vmv1r.v v0, v163290; RV64-NEXT: ret3291 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 03292 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer3293 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %vb, <vscale x 8 x i64> %va, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)3294 ret <vscale x 8 x i1> %v3295}3296 3297define <vscale x 8 x i1> @icmp_ugt_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {3298; CHECK-LABEL: icmp_ugt_vi_nxv8i64:3299; CHECK: # %bb.0:3300; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3301; CHECK-NEXT: vmsgtu.vi v16, v8, 4, v0.t3302; CHECK-NEXT: vmv1r.v v0, v163303; CHECK-NEXT: ret3304 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 4), metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)3305 ret <vscale x 8 x i1> %v3306}3307 3308define <vscale x 8 x i1> @icmp_ugt_vi_swap_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {3309; CHECK-LABEL: icmp_ugt_vi_swap_nxv8i64:3310; CHECK: # %bb.0:3311; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3312; CHECK-NEXT: vmsleu.vi v16, v8, 3, v0.t3313; CHECK-NEXT: vmv1r.v v0, v163314; CHECK-NEXT: ret3315 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> splat (i64 4), <vscale x 8 x i64> %va, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)3316 ret <vscale x 8 x i1> %v3317}3318 3319define <vscale x 8 x i1> @icmp_uge_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {3320; CHECK-LABEL: icmp_uge_vv_nxv8i64:3321; CHECK: # %bb.0:3322; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3323; CHECK-NEXT: vmsleu.vv v24, v16, v8, v0.t3324; CHECK-NEXT: vmv1r.v v0, v243325; CHECK-NEXT: ret3326 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)3327 ret <vscale x 8 x i1> %v3328}3329 3330define <vscale x 8 x i1> @icmp_uge_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {3331; RV32-LABEL: icmp_uge_vx_nxv8i64:3332; RV32: # %bb.0:3333; RV32-NEXT: addi sp, sp, -163334; RV32-NEXT: .cfi_def_cfa_offset 163335; RV32-NEXT: sw a0, 8(sp)3336; RV32-NEXT: sw a1, 12(sp)3337; RV32-NEXT: addi a0, sp, 83338; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma3339; RV32-NEXT: vlse64.v v24, (a0), zero3340; RV32-NEXT: vmsleu.vv v16, v24, v8, v0.t3341; RV32-NEXT: vmv1r.v v0, v163342; RV32-NEXT: addi sp, sp, 163343; RV32-NEXT: .cfi_def_cfa_offset 03344; RV32-NEXT: ret3345;3346; RV64-LABEL: icmp_uge_vx_nxv8i64:3347; RV64: # %bb.0:3348; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma3349; RV64-NEXT: vmv.v.x v24, a03350; RV64-NEXT: vmsleu.vv v16, v24, v8, v0.t3351; RV64-NEXT: vmv1r.v v0, v163352; RV64-NEXT: ret3353 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 03354 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer3355 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)3356 ret <vscale x 8 x i1> %v3357}3358 3359define <vscale x 8 x i1> @icmp_uge_vx_swap_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {3360; RV32-LABEL: icmp_uge_vx_swap_nxv8i64:3361; RV32: # %bb.0:3362; RV32-NEXT: addi sp, sp, -163363; RV32-NEXT: .cfi_def_cfa_offset 163364; RV32-NEXT: sw a0, 8(sp)3365; RV32-NEXT: sw a1, 12(sp)3366; RV32-NEXT: addi a0, sp, 83367; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma3368; RV32-NEXT: vlse64.v v24, (a0), zero3369; RV32-NEXT: vmsleu.vv v16, v8, v24, v0.t3370; RV32-NEXT: vmv1r.v v0, v163371; RV32-NEXT: addi sp, sp, 163372; RV32-NEXT: .cfi_def_cfa_offset 03373; RV32-NEXT: ret3374;3375; RV64-LABEL: icmp_uge_vx_swap_nxv8i64:3376; RV64: # %bb.0:3377; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma3378; RV64-NEXT: vmsleu.vx v16, v8, a0, v0.t3379; RV64-NEXT: vmv1r.v v0, v163380; RV64-NEXT: ret3381 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 03382 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer3383 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %vb, <vscale x 8 x i64> %va, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)3384 ret <vscale x 8 x i1> %v3385}3386 3387define <vscale x 8 x i1> @icmp_uge_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {3388; CHECK-LABEL: icmp_uge_vi_nxv8i64:3389; CHECK: # %bb.0:3390; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3391; CHECK-NEXT: vmsgtu.vi v16, v8, 3, v0.t3392; CHECK-NEXT: vmv1r.v v0, v163393; CHECK-NEXT: ret3394 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 4), metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)3395 ret <vscale x 8 x i1> %v3396}3397 3398define <vscale x 8 x i1> @icmp_uge_vi_swap_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {3399; CHECK-LABEL: icmp_uge_vi_swap_nxv8i64:3400; CHECK: # %bb.0:3401; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3402; CHECK-NEXT: vmsleu.vi v16, v8, 4, v0.t3403; CHECK-NEXT: vmv1r.v v0, v163404; CHECK-NEXT: ret3405 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> splat (i64 4), <vscale x 8 x i64> %va, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)3406 ret <vscale x 8 x i1> %v3407}3408 3409define <vscale x 8 x i1> @icmp_ult_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {3410; CHECK-LABEL: icmp_ult_vv_nxv8i64:3411; CHECK: # %bb.0:3412; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3413; CHECK-NEXT: vmsltu.vv v24, v8, v16, v0.t3414; CHECK-NEXT: vmv1r.v v0, v243415; CHECK-NEXT: ret3416 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)3417 ret <vscale x 8 x i1> %v3418}3419 3420define <vscale x 8 x i1> @icmp_ult_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {3421; RV32-LABEL: icmp_ult_vx_nxv8i64:3422; RV32: # %bb.0:3423; RV32-NEXT: addi sp, sp, -163424; RV32-NEXT: .cfi_def_cfa_offset 163425; RV32-NEXT: sw a0, 8(sp)3426; RV32-NEXT: sw a1, 12(sp)3427; RV32-NEXT: addi a0, sp, 83428; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma3429; RV32-NEXT: vlse64.v v24, (a0), zero3430; RV32-NEXT: vmsltu.vv v16, v8, v24, v0.t3431; RV32-NEXT: vmv1r.v v0, v163432; RV32-NEXT: addi sp, sp, 163433; RV32-NEXT: .cfi_def_cfa_offset 03434; RV32-NEXT: ret3435;3436; RV64-LABEL: icmp_ult_vx_nxv8i64:3437; RV64: # %bb.0:3438; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma3439; RV64-NEXT: vmsltu.vx v16, v8, a0, v0.t3440; RV64-NEXT: vmv1r.v v0, v163441; RV64-NEXT: ret3442 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 03443 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer3444 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)3445 ret <vscale x 8 x i1> %v3446}3447 3448define <vscale x 8 x i1> @icmp_ult_vx_swap_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {3449; RV32-LABEL: icmp_ult_vx_swap_nxv8i64:3450; RV32: # %bb.0:3451; RV32-NEXT: addi sp, sp, -163452; RV32-NEXT: .cfi_def_cfa_offset 163453; RV32-NEXT: sw a0, 8(sp)3454; RV32-NEXT: sw a1, 12(sp)3455; RV32-NEXT: addi a0, sp, 83456; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma3457; RV32-NEXT: vlse64.v v24, (a0), zero3458; RV32-NEXT: vmsltu.vv v16, v24, v8, v0.t3459; RV32-NEXT: vmv1r.v v0, v163460; RV32-NEXT: addi sp, sp, 163461; RV32-NEXT: .cfi_def_cfa_offset 03462; RV32-NEXT: ret3463;3464; RV64-LABEL: icmp_ult_vx_swap_nxv8i64:3465; RV64: # %bb.0:3466; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma3467; RV64-NEXT: vmsgtu.vx v16, v8, a0, v0.t3468; RV64-NEXT: vmv1r.v v0, v163469; RV64-NEXT: ret3470 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 03471 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer3472 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %vb, <vscale x 8 x i64> %va, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)3473 ret <vscale x 8 x i1> %v3474}3475 3476define <vscale x 8 x i1> @icmp_ult_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {3477; CHECK-LABEL: icmp_ult_vi_nxv8i64:3478; CHECK: # %bb.0:3479; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3480; CHECK-NEXT: vmsleu.vi v16, v8, 3, v0.t3481; CHECK-NEXT: vmv1r.v v0, v163482; CHECK-NEXT: ret3483 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 4), metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)3484 ret <vscale x 8 x i1> %v3485}3486 3487define <vscale x 8 x i1> @icmp_ult_vi_swap_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {3488; CHECK-LABEL: icmp_ult_vi_swap_nxv8i64:3489; CHECK: # %bb.0:3490; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3491; CHECK-NEXT: vmsgtu.vi v16, v8, 4, v0.t3492; CHECK-NEXT: vmv1r.v v0, v163493; CHECK-NEXT: ret3494 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> splat (i64 4), <vscale x 8 x i64> %va, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)3495 ret <vscale x 8 x i1> %v3496}3497 3498define <vscale x 8 x i1> @icmp_sgt_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {3499; CHECK-LABEL: icmp_sgt_vv_nxv8i64:3500; CHECK: # %bb.0:3501; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3502; CHECK-NEXT: vmslt.vv v24, v16, v8, v0.t3503; CHECK-NEXT: vmv1r.v v0, v243504; CHECK-NEXT: ret3505 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)3506 ret <vscale x 8 x i1> %v3507}3508 3509define <vscale x 8 x i1> @icmp_sgt_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {3510; RV32-LABEL: icmp_sgt_vx_nxv8i64:3511; RV32: # %bb.0:3512; RV32-NEXT: addi sp, sp, -163513; RV32-NEXT: .cfi_def_cfa_offset 163514; RV32-NEXT: sw a0, 8(sp)3515; RV32-NEXT: sw a1, 12(sp)3516; RV32-NEXT: addi a0, sp, 83517; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma3518; RV32-NEXT: vlse64.v v24, (a0), zero3519; RV32-NEXT: vmslt.vv v16, v24, v8, v0.t3520; RV32-NEXT: vmv1r.v v0, v163521; RV32-NEXT: addi sp, sp, 163522; RV32-NEXT: .cfi_def_cfa_offset 03523; RV32-NEXT: ret3524;3525; RV64-LABEL: icmp_sgt_vx_nxv8i64:3526; RV64: # %bb.0:3527; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma3528; RV64-NEXT: vmsgt.vx v16, v8, a0, v0.t3529; RV64-NEXT: vmv1r.v v0, v163530; RV64-NEXT: ret3531 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 03532 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer3533 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)3534 ret <vscale x 8 x i1> %v3535}3536 3537define <vscale x 8 x i1> @icmp_sgt_vx_swap_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {3538; RV32-LABEL: icmp_sgt_vx_swap_nxv8i64:3539; RV32: # %bb.0:3540; RV32-NEXT: addi sp, sp, -163541; RV32-NEXT: .cfi_def_cfa_offset 163542; RV32-NEXT: sw a0, 8(sp)3543; RV32-NEXT: sw a1, 12(sp)3544; RV32-NEXT: addi a0, sp, 83545; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma3546; RV32-NEXT: vlse64.v v24, (a0), zero3547; RV32-NEXT: vmslt.vv v16, v8, v24, v0.t3548; RV32-NEXT: vmv1r.v v0, v163549; RV32-NEXT: addi sp, sp, 163550; RV32-NEXT: .cfi_def_cfa_offset 03551; RV32-NEXT: ret3552;3553; RV64-LABEL: icmp_sgt_vx_swap_nxv8i64:3554; RV64: # %bb.0:3555; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma3556; RV64-NEXT: vmslt.vx v16, v8, a0, v0.t3557; RV64-NEXT: vmv1r.v v0, v163558; RV64-NEXT: ret3559 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 03560 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer3561 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %vb, <vscale x 8 x i64> %va, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)3562 ret <vscale x 8 x i1> %v3563}3564 3565define <vscale x 8 x i1> @icmp_sgt_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {3566; CHECK-LABEL: icmp_sgt_vi_nxv8i64:3567; CHECK: # %bb.0:3568; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3569; CHECK-NEXT: vmsgt.vi v16, v8, 4, v0.t3570; CHECK-NEXT: vmv1r.v v0, v163571; CHECK-NEXT: ret3572 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 4), metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)3573 ret <vscale x 8 x i1> %v3574}3575 3576define <vscale x 8 x i1> @icmp_sgt_vi_swap_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {3577; CHECK-LABEL: icmp_sgt_vi_swap_nxv8i64:3578; CHECK: # %bb.0:3579; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3580; CHECK-NEXT: vmsle.vi v16, v8, 3, v0.t3581; CHECK-NEXT: vmv1r.v v0, v163582; CHECK-NEXT: ret3583 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> splat (i64 4), <vscale x 8 x i64> %va, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)3584 ret <vscale x 8 x i1> %v3585}3586 3587define <vscale x 8 x i1> @icmp_sge_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {3588; CHECK-LABEL: icmp_sge_vv_nxv8i64:3589; CHECK: # %bb.0:3590; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3591; CHECK-NEXT: vmsle.vv v24, v16, v8, v0.t3592; CHECK-NEXT: vmv1r.v v0, v243593; CHECK-NEXT: ret3594 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)3595 ret <vscale x 8 x i1> %v3596}3597 3598define <vscale x 8 x i1> @icmp_sge_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {3599; RV32-LABEL: icmp_sge_vx_nxv8i64:3600; RV32: # %bb.0:3601; RV32-NEXT: addi sp, sp, -163602; RV32-NEXT: .cfi_def_cfa_offset 163603; RV32-NEXT: sw a0, 8(sp)3604; RV32-NEXT: sw a1, 12(sp)3605; RV32-NEXT: addi a0, sp, 83606; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma3607; RV32-NEXT: vlse64.v v24, (a0), zero3608; RV32-NEXT: vmsle.vv v16, v24, v8, v0.t3609; RV32-NEXT: vmv1r.v v0, v163610; RV32-NEXT: addi sp, sp, 163611; RV32-NEXT: .cfi_def_cfa_offset 03612; RV32-NEXT: ret3613;3614; RV64-LABEL: icmp_sge_vx_nxv8i64:3615; RV64: # %bb.0:3616; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma3617; RV64-NEXT: vmv.v.x v24, a03618; RV64-NEXT: vmsle.vv v16, v24, v8, v0.t3619; RV64-NEXT: vmv1r.v v0, v163620; RV64-NEXT: ret3621 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 03622 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer3623 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)3624 ret <vscale x 8 x i1> %v3625}3626 3627define <vscale x 8 x i1> @icmp_sge_vx_swap_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {3628; RV32-LABEL: icmp_sge_vx_swap_nxv8i64:3629; RV32: # %bb.0:3630; RV32-NEXT: addi sp, sp, -163631; RV32-NEXT: .cfi_def_cfa_offset 163632; RV32-NEXT: sw a0, 8(sp)3633; RV32-NEXT: sw a1, 12(sp)3634; RV32-NEXT: addi a0, sp, 83635; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma3636; RV32-NEXT: vlse64.v v24, (a0), zero3637; RV32-NEXT: vmsle.vv v16, v8, v24, v0.t3638; RV32-NEXT: vmv1r.v v0, v163639; RV32-NEXT: addi sp, sp, 163640; RV32-NEXT: .cfi_def_cfa_offset 03641; RV32-NEXT: ret3642;3643; RV64-LABEL: icmp_sge_vx_swap_nxv8i64:3644; RV64: # %bb.0:3645; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma3646; RV64-NEXT: vmsle.vx v16, v8, a0, v0.t3647; RV64-NEXT: vmv1r.v v0, v163648; RV64-NEXT: ret3649 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 03650 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer3651 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %vb, <vscale x 8 x i64> %va, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)3652 ret <vscale x 8 x i1> %v3653}3654 3655define <vscale x 8 x i1> @icmp_sge_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {3656; CHECK-LABEL: icmp_sge_vi_nxv8i64:3657; CHECK: # %bb.0:3658; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3659; CHECK-NEXT: vmsgt.vi v16, v8, 3, v0.t3660; CHECK-NEXT: vmv1r.v v0, v163661; CHECK-NEXT: ret3662 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 4), metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)3663 ret <vscale x 8 x i1> %v3664}3665 3666define <vscale x 8 x i1> @icmp_sge_vi_swap_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {3667; CHECK-LABEL: icmp_sge_vi_swap_nxv8i64:3668; CHECK: # %bb.0:3669; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3670; CHECK-NEXT: vmsle.vi v16, v8, 4, v0.t3671; CHECK-NEXT: vmv1r.v v0, v163672; CHECK-NEXT: ret3673 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> splat (i64 4), <vscale x 8 x i64> %va, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)3674 ret <vscale x 8 x i1> %v3675}3676 3677define <vscale x 8 x i1> @icmp_slt_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {3678; CHECK-LABEL: icmp_slt_vv_nxv8i64:3679; CHECK: # %bb.0:3680; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3681; CHECK-NEXT: vmslt.vv v24, v8, v16, v0.t3682; CHECK-NEXT: vmv1r.v v0, v243683; CHECK-NEXT: ret3684 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)3685 ret <vscale x 8 x i1> %v3686}3687 3688define <vscale x 8 x i1> @icmp_slt_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {3689; RV32-LABEL: icmp_slt_vx_nxv8i64:3690; RV32: # %bb.0:3691; RV32-NEXT: addi sp, sp, -163692; RV32-NEXT: .cfi_def_cfa_offset 163693; RV32-NEXT: sw a0, 8(sp)3694; RV32-NEXT: sw a1, 12(sp)3695; RV32-NEXT: addi a0, sp, 83696; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma3697; RV32-NEXT: vlse64.v v24, (a0), zero3698; RV32-NEXT: vmslt.vv v16, v8, v24, v0.t3699; RV32-NEXT: vmv1r.v v0, v163700; RV32-NEXT: addi sp, sp, 163701; RV32-NEXT: .cfi_def_cfa_offset 03702; RV32-NEXT: ret3703;3704; RV64-LABEL: icmp_slt_vx_nxv8i64:3705; RV64: # %bb.0:3706; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma3707; RV64-NEXT: vmslt.vx v16, v8, a0, v0.t3708; RV64-NEXT: vmv1r.v v0, v163709; RV64-NEXT: ret3710 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 03711 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer3712 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)3713 ret <vscale x 8 x i1> %v3714}3715 3716define <vscale x 8 x i1> @icmp_slt_vx_swap_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {3717; RV32-LABEL: icmp_slt_vx_swap_nxv8i64:3718; RV32: # %bb.0:3719; RV32-NEXT: addi sp, sp, -163720; RV32-NEXT: .cfi_def_cfa_offset 163721; RV32-NEXT: sw a0, 8(sp)3722; RV32-NEXT: sw a1, 12(sp)3723; RV32-NEXT: addi a0, sp, 83724; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma3725; RV32-NEXT: vlse64.v v24, (a0), zero3726; RV32-NEXT: vmslt.vv v16, v24, v8, v0.t3727; RV32-NEXT: vmv1r.v v0, v163728; RV32-NEXT: addi sp, sp, 163729; RV32-NEXT: .cfi_def_cfa_offset 03730; RV32-NEXT: ret3731;3732; RV64-LABEL: icmp_slt_vx_swap_nxv8i64:3733; RV64: # %bb.0:3734; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma3735; RV64-NEXT: vmsgt.vx v16, v8, a0, v0.t3736; RV64-NEXT: vmv1r.v v0, v163737; RV64-NEXT: ret3738 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 03739 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer3740 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %vb, <vscale x 8 x i64> %va, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)3741 ret <vscale x 8 x i1> %v3742}3743 3744define <vscale x 8 x i1> @icmp_slt_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {3745; CHECK-LABEL: icmp_slt_vi_nxv8i64:3746; CHECK: # %bb.0:3747; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3748; CHECK-NEXT: vmsle.vi v16, v8, 3, v0.t3749; CHECK-NEXT: vmv1r.v v0, v163750; CHECK-NEXT: ret3751 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 4), metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)3752 ret <vscale x 8 x i1> %v3753}3754 3755define <vscale x 8 x i1> @icmp_slt_vi_swap_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {3756; CHECK-LABEL: icmp_slt_vi_swap_nxv8i64:3757; CHECK: # %bb.0:3758; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3759; CHECK-NEXT: vmsgt.vi v16, v8, 4, v0.t3760; CHECK-NEXT: vmv1r.v v0, v163761; CHECK-NEXT: ret3762 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> splat (i64 4), <vscale x 8 x i64> %va, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)3763 ret <vscale x 8 x i1> %v3764}3765 3766define <vscale x 8 x i1> @icmp_sle_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {3767; CHECK-LABEL: icmp_sle_vv_nxv8i64:3768; CHECK: # %bb.0:3769; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3770; CHECK-NEXT: vmsle.vv v24, v8, v16, v0.t3771; CHECK-NEXT: vmv1r.v v0, v243772; CHECK-NEXT: ret3773 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)3774 ret <vscale x 8 x i1> %v3775}3776 3777define <vscale x 8 x i1> @icmp_sle_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {3778; RV32-LABEL: icmp_sle_vx_nxv8i64:3779; RV32: # %bb.0:3780; RV32-NEXT: addi sp, sp, -163781; RV32-NEXT: .cfi_def_cfa_offset 163782; RV32-NEXT: sw a0, 8(sp)3783; RV32-NEXT: sw a1, 12(sp)3784; RV32-NEXT: addi a0, sp, 83785; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma3786; RV32-NEXT: vlse64.v v24, (a0), zero3787; RV32-NEXT: vmsle.vv v16, v8, v24, v0.t3788; RV32-NEXT: vmv1r.v v0, v163789; RV32-NEXT: addi sp, sp, 163790; RV32-NEXT: .cfi_def_cfa_offset 03791; RV32-NEXT: ret3792;3793; RV64-LABEL: icmp_sle_vx_nxv8i64:3794; RV64: # %bb.0:3795; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma3796; RV64-NEXT: vmsle.vx v16, v8, a0, v0.t3797; RV64-NEXT: vmv1r.v v0, v163798; RV64-NEXT: ret3799 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 03800 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer3801 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)3802 ret <vscale x 8 x i1> %v3803}3804 3805define <vscale x 8 x i1> @icmp_sle_vx_swap_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {3806; RV32-LABEL: icmp_sle_vx_swap_nxv8i64:3807; RV32: # %bb.0:3808; RV32-NEXT: addi sp, sp, -163809; RV32-NEXT: .cfi_def_cfa_offset 163810; RV32-NEXT: sw a0, 8(sp)3811; RV32-NEXT: sw a1, 12(sp)3812; RV32-NEXT: addi a0, sp, 83813; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma3814; RV32-NEXT: vlse64.v v24, (a0), zero3815; RV32-NEXT: vmsle.vv v16, v24, v8, v0.t3816; RV32-NEXT: vmv1r.v v0, v163817; RV32-NEXT: addi sp, sp, 163818; RV32-NEXT: .cfi_def_cfa_offset 03819; RV32-NEXT: ret3820;3821; RV64-LABEL: icmp_sle_vx_swap_nxv8i64:3822; RV64: # %bb.0:3823; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma3824; RV64-NEXT: vmv.v.x v24, a03825; RV64-NEXT: vmsle.vv v16, v24, v8, v0.t3826; RV64-NEXT: vmv1r.v v0, v163827; RV64-NEXT: ret3828 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 03829 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer3830 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %vb, <vscale x 8 x i64> %va, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)3831 ret <vscale x 8 x i1> %v3832}3833 3834define <vscale x 8 x i1> @icmp_sle_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {3835; CHECK-LABEL: icmp_sle_vi_nxv8i64:3836; CHECK: # %bb.0:3837; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3838; CHECK-NEXT: vmsle.vi v16, v8, 4, v0.t3839; CHECK-NEXT: vmv1r.v v0, v163840; CHECK-NEXT: ret3841 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 4), metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)3842 ret <vscale x 8 x i1> %v3843}3844 3845define <vscale x 8 x i1> @icmp_sle_vi_swap_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {3846; CHECK-LABEL: icmp_sle_vi_swap_nxv8i64:3847; CHECK: # %bb.0:3848; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3849; CHECK-NEXT: vmsgt.vi v16, v8, 3, v0.t3850; CHECK-NEXT: vmv1r.v v0, v163851; CHECK-NEXT: ret3852 %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> splat (i64 4), <vscale x 8 x i64> %va, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)3853 ret <vscale x 8 x i1> %v3854}3855