brintos

brintos / llvm-project-archived public Read only

0
0
Text · 105.9 KiB · 89c2368 Raw
3009 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+m,+v \3; RUN:   -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK,RV324; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+m,+v \5; RUN:   -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK,RV646 7define <vscale x 3 x i1> @icmp_eq_vv_nxv3i8(<vscale x 3 x i8> %va, <vscale x 3 x i8> %vb) {8; CHECK-LABEL: icmp_eq_vv_nxv3i8:9; CHECK:       # %bb.0:10; CHECK-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma11; CHECK-NEXT:    vmseq.vv v0, v8, v912; CHECK-NEXT:    ret13  %vc = icmp eq <vscale x 3 x i8> %va, %vb14  ret <vscale x 3 x i1> %vc15}16 17define <vscale x 3 x i1> @icmp_eq_vx_nxv3i8(<vscale x 3 x i8> %va, i8 %b) {18; CHECK-LABEL: icmp_eq_vx_nxv3i8:19; CHECK:       # %bb.0:20; CHECK-NEXT:    vsetvli a1, zero, e8, mf2, ta, ma21; CHECK-NEXT:    vmseq.vx v0, v8, a022; CHECK-NEXT:    ret23  %head = insertelement <vscale x 3 x i8> poison, i8 %b, i32 024  %splat = shufflevector <vscale x 3 x i8> %head, <vscale x 3 x i8> poison, <vscale x 3 x i32> zeroinitializer25  %vc = icmp eq <vscale x 3 x i8> %va, %splat26  ret <vscale x 3 x i1> %vc27}28 29define <vscale x 3 x i1> @icmp_eq_xv_nxv3i8(<vscale x 3 x i8> %va, i8 %b) {30; CHECK-LABEL: icmp_eq_xv_nxv3i8:31; CHECK:       # %bb.0:32; CHECK-NEXT:    vsetvli a1, zero, e8, mf2, ta, ma33; CHECK-NEXT:    vmseq.vx v0, v8, a034; CHECK-NEXT:    ret35  %head = insertelement <vscale x 3 x i8> poison, i8 %b, i32 036  %splat = shufflevector <vscale x 3 x i8> %head, <vscale x 3 x i8> poison, <vscale x 3 x i32> zeroinitializer37  %vc = icmp eq <vscale x 3 x i8> %splat, %va38  ret <vscale x 3 x i1> %vc39}40 41define <vscale x 8 x i1> @icmp_eq_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb) {42; CHECK-LABEL: icmp_eq_vv_nxv8i8:43; CHECK:       # %bb.0:44; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma45; CHECK-NEXT:    vmseq.vv v0, v8, v946; CHECK-NEXT:    ret47  %vc = icmp eq <vscale x 8 x i8> %va, %vb48  ret <vscale x 8 x i1> %vc49}50 51define <vscale x 8 x i1> @icmp_eq_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {52; CHECK-LABEL: icmp_eq_vx_nxv8i8:53; CHECK:       # %bb.0:54; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma55; CHECK-NEXT:    vmseq.vx v0, v8, a056; CHECK-NEXT:    ret57  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 058  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer59  %vc = icmp eq <vscale x 8 x i8> %va, %splat60  ret <vscale x 8 x i1> %vc61}62 63define <vscale x 8 x i1> @icmp_eq_xv_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {64; CHECK-LABEL: icmp_eq_xv_nxv8i8:65; CHECK:       # %bb.0:66; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma67; CHECK-NEXT:    vmseq.vx v0, v8, a068; CHECK-NEXT:    ret69  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 070  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer71  %vc = icmp eq <vscale x 8 x i8> %splat, %va72  ret <vscale x 8 x i1> %vc73}74 75define <vscale x 8 x i1> @icmp_eq_vi_nxv8i8_0(<vscale x 8 x i8> %va) {76; CHECK-LABEL: icmp_eq_vi_nxv8i8_0:77; CHECK:       # %bb.0:78; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma79; CHECK-NEXT:    vmseq.vi v0, v8, 080; CHECK-NEXT:    ret81  %vc = icmp eq <vscale x 8 x i8> %va, splat (i8 0)82  ret <vscale x 8 x i1> %vc83}84 85define <vscale x 8 x i1> @icmp_eq_vi_nxv8i8_1(<vscale x 8 x i8> %va) {86; CHECK-LABEL: icmp_eq_vi_nxv8i8_1:87; CHECK:       # %bb.0:88; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma89; CHECK-NEXT:    vmseq.vi v0, v8, 590; CHECK-NEXT:    ret91  %vc = icmp eq <vscale x 8 x i8> %va, splat (i8 5)92  ret <vscale x 8 x i1> %vc93}94 95define <vscale x 8 x i1> @icmp_eq_iv_nxv8i8_1(<vscale x 8 x i8> %va) {96; CHECK-LABEL: icmp_eq_iv_nxv8i8_1:97; CHECK:       # %bb.0:98; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma99; CHECK-NEXT:    vmseq.vi v0, v8, 5100; CHECK-NEXT:    ret101  %vc = icmp eq <vscale x 8 x i8> splat (i8 5), %va102  ret <vscale x 8 x i1> %vc103}104 105define <vscale x 8 x i1> @icmp_ne_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb) {106; CHECK-LABEL: icmp_ne_vv_nxv8i8:107; CHECK:       # %bb.0:108; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma109; CHECK-NEXT:    vmsne.vv v0, v8, v9110; CHECK-NEXT:    ret111  %vc = icmp ne <vscale x 8 x i8> %va, %vb112  ret <vscale x 8 x i1> %vc113}114 115define <vscale x 8 x i1> @icmp_ne_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {116; CHECK-LABEL: icmp_ne_vx_nxv8i8:117; CHECK:       # %bb.0:118; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma119; CHECK-NEXT:    vmsne.vx v0, v8, a0120; CHECK-NEXT:    ret121  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0122  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer123  %vc = icmp ne <vscale x 8 x i8> %va, %splat124  ret <vscale x 8 x i1> %vc125}126 127define <vscale x 8 x i1> @icmp_ne_xv_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {128; CHECK-LABEL: icmp_ne_xv_nxv8i8:129; CHECK:       # %bb.0:130; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma131; CHECK-NEXT:    vmsne.vx v0, v8, a0132; CHECK-NEXT:    ret133  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0134  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer135  %vc = icmp ne <vscale x 8 x i8> %splat, %va136  ret <vscale x 8 x i1> %vc137}138 139define <vscale x 8 x i1> @icmp_ne_vi_nxv8i8_0(<vscale x 8 x i8> %va) {140; CHECK-LABEL: icmp_ne_vi_nxv8i8_0:141; CHECK:       # %bb.0:142; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma143; CHECK-NEXT:    vmsne.vi v0, v8, 5144; CHECK-NEXT:    ret145  %vc = icmp ne <vscale x 8 x i8> %va, splat (i8 5)146  ret <vscale x 8 x i1> %vc147}148 149define <vscale x 8 x i1> @icmp_ugt_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb) {150; CHECK-LABEL: icmp_ugt_vv_nxv8i8:151; CHECK:       # %bb.0:152; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma153; CHECK-NEXT:    vmsltu.vv v0, v9, v8154; CHECK-NEXT:    ret155  %vc = icmp ugt <vscale x 8 x i8> %va, %vb156  ret <vscale x 8 x i1> %vc157}158 159define <vscale x 8 x i1> @icmp_ugt_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {160; CHECK-LABEL: icmp_ugt_vx_nxv8i8:161; CHECK:       # %bb.0:162; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma163; CHECK-NEXT:    vmsgtu.vx v0, v8, a0164; CHECK-NEXT:    ret165  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0166  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer167  %vc = icmp ugt <vscale x 8 x i8> %va, %splat168  ret <vscale x 8 x i1> %vc169}170 171define <vscale x 8 x i1> @icmp_ugt_xv_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {172; CHECK-LABEL: icmp_ugt_xv_nxv8i8:173; CHECK:       # %bb.0:174; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma175; CHECK-NEXT:    vmsltu.vx v0, v8, a0176; CHECK-NEXT:    ret177  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0178  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer179  %vc = icmp ugt <vscale x 8 x i8> %splat, %va180  ret <vscale x 8 x i1> %vc181}182 183define <vscale x 8 x i1> @icmp_ugt_vi_nxv8i8_0(<vscale x 8 x i8> %va) {184; CHECK-LABEL: icmp_ugt_vi_nxv8i8_0:185; CHECK:       # %bb.0:186; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma187; CHECK-NEXT:    vmsgtu.vi v0, v8, 5188; CHECK-NEXT:    ret189  %vc = icmp ugt <vscale x 8 x i8> %va, splat (i8 5)190  ret <vscale x 8 x i1> %vc191}192 193define <vscale x 8 x i1> @icmp_uge_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb) {194; CHECK-LABEL: icmp_uge_vv_nxv8i8:195; CHECK:       # %bb.0:196; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma197; CHECK-NEXT:    vmsleu.vv v0, v9, v8198; CHECK-NEXT:    ret199  %vc = icmp uge <vscale x 8 x i8> %va, %vb200  ret <vscale x 8 x i1> %vc201}202 203define <vscale x 8 x i1> @icmp_uge_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {204; CHECK-LABEL: icmp_uge_vx_nxv8i8:205; CHECK:       # %bb.0:206; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma207; CHECK-NEXT:    vmv.v.x v9, a0208; CHECK-NEXT:    vmsleu.vv v0, v9, v8209; CHECK-NEXT:    ret210  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0211  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer212  %vc = icmp uge <vscale x 8 x i8> %va, %splat213  ret <vscale x 8 x i1> %vc214}215 216define <vscale x 8 x i1> @icmp_uge_xv_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {217; CHECK-LABEL: icmp_uge_xv_nxv8i8:218; CHECK:       # %bb.0:219; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma220; CHECK-NEXT:    vmsleu.vx v0, v8, a0221; CHECK-NEXT:    ret222  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0223  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer224  %vc = icmp uge <vscale x 8 x i8> %splat, %va225  ret <vscale x 8 x i1> %vc226}227 228define <vscale x 8 x i1> @icmp_uge_vi_nxv8i8_0(<vscale x 8 x i8> %va) {229; CHECK-LABEL: icmp_uge_vi_nxv8i8_0:230; CHECK:       # %bb.0:231; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma232; CHECK-NEXT:    vmv.v.i v9, -16233; CHECK-NEXT:    vmsleu.vv v0, v9, v8234; CHECK-NEXT:    ret235  %vc = icmp uge <vscale x 8 x i8> %va, splat (i8 -16)236  ret <vscale x 8 x i1> %vc237}238 239define <vscale x 8 x i1> @icmp_uge_vi_nxv8i8_1(<vscale x 8 x i8> %va) {240; CHECK-LABEL: icmp_uge_vi_nxv8i8_1:241; CHECK:       # %bb.0:242; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma243; CHECK-NEXT:    vmsgtu.vi v0, v8, 14244; CHECK-NEXT:    ret245  %vc = icmp uge <vscale x 8 x i8> %va, splat (i8 15)246  ret <vscale x 8 x i1> %vc247}248 249define <vscale x 8 x i1> @icmp_uge_iv_nxv8i8_1(<vscale x 8 x i8> %va) {250; CHECK-LABEL: icmp_uge_iv_nxv8i8_1:251; CHECK:       # %bb.0:252; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma253; CHECK-NEXT:    vmsleu.vi v0, v8, 15254; CHECK-NEXT:    ret255  %vc = icmp uge <vscale x 8 x i8> splat (i8 15), %va256  ret <vscale x 8 x i1> %vc257}258 259define <vscale x 8 x i1> @icmp_uge_vi_nxv8i8_2(<vscale x 8 x i8> %va) {260; CHECK-LABEL: icmp_uge_vi_nxv8i8_2:261; CHECK:       # %bb.0:262; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma263; CHECK-NEXT:    vmset.m v0264; CHECK-NEXT:    ret265  %vc = icmp uge <vscale x 8 x i8> %va, splat (i8 0)266  ret <vscale x 8 x i1> %vc267}268 269define <vscale x 8 x i1> @icmp_uge_vi_nxv8i8_3(<vscale x 8 x i8> %va) {270; CHECK-LABEL: icmp_uge_vi_nxv8i8_3:271; CHECK:       # %bb.0:272; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma273; CHECK-NEXT:    vmsgtu.vi v0, v8, 0274; CHECK-NEXT:    ret275  %vc = icmp uge <vscale x 8 x i8> %va, splat (i8 1)276  ret <vscale x 8 x i1> %vc277}278 279define <vscale x 8 x i1> @icmp_uge_vi_nxv8i8_4(<vscale x 8 x i8> %va) {280; CHECK-LABEL: icmp_uge_vi_nxv8i8_4:281; CHECK:       # %bb.0:282; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma283; CHECK-NEXT:    vmsgtu.vi v0, v8, -16284; CHECK-NEXT:    ret285  %vc = icmp uge <vscale x 8 x i8> %va, splat (i8 -15)286  ret <vscale x 8 x i1> %vc287}288 289define <vscale x 8 x i1> @icmp_uge_vi_nxv8i8_5(<vscale x 8 x i8> %va) {290; CHECK-LABEL: icmp_uge_vi_nxv8i8_5:291; CHECK:       # %bb.0:292; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma293; CHECK-NEXT:    vmsgtu.vi v0, v8, 15294; CHECK-NEXT:    ret295  %vc = icmp uge <vscale x 8 x i8> %va, splat (i8 16)296  ret <vscale x 8 x i1> %vc297}298 299; Test that we don't optimize uge x, 0 -> ugt x, -1300define <vscale x 8 x i1> @icmp_uge_vi_nxv8i8_6(<vscale x 8 x i8> %va, iXLen %vl) {301; CHECK-LABEL: icmp_uge_vi_nxv8i8_6:302; CHECK:       # %bb.0:303; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma304; CHECK-NEXT:    vmv.v.i v9, 0305; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma306; CHECK-NEXT:    vmsleu.vv v0, v9, v8307; CHECK-NEXT:    ret308  %splat = call <vscale x 8 x i8> @llvm.riscv.vmv.v.x.nxv8i8.iXLen(<vscale x 8 x i8> poison, i8 0, iXLen %vl)309  %vc = icmp uge <vscale x 8 x i8> %va, %splat310  ret <vscale x 8 x i1> %vc311}312 313define <vscale x 8 x i1> @icmp_ult_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb) {314; CHECK-LABEL: icmp_ult_vv_nxv8i8:315; CHECK:       # %bb.0:316; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma317; CHECK-NEXT:    vmsltu.vv v0, v8, v9318; CHECK-NEXT:    ret319  %vc = icmp ult <vscale x 8 x i8> %va, %vb320  ret <vscale x 8 x i1> %vc321}322 323define <vscale x 8 x i1> @icmp_ult_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {324; CHECK-LABEL: icmp_ult_vx_nxv8i8:325; CHECK:       # %bb.0:326; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma327; CHECK-NEXT:    vmsltu.vx v0, v8, a0328; CHECK-NEXT:    ret329  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0330  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer331  %vc = icmp ult <vscale x 8 x i8> %va, %splat332  ret <vscale x 8 x i1> %vc333}334 335define <vscale x 8 x i1> @icmp_ult_xv_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {336; CHECK-LABEL: icmp_ult_xv_nxv8i8:337; CHECK:       # %bb.0:338; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma339; CHECK-NEXT:    vmsgtu.vx v0, v8, a0340; CHECK-NEXT:    ret341  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0342  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer343  %vc = icmp ult <vscale x 8 x i8> %splat, %va344  ret <vscale x 8 x i1> %vc345}346 347define <vscale x 8 x i1> @icmp_ult_vi_nxv8i8_0(<vscale x 8 x i8> %va) {348; CHECK-LABEL: icmp_ult_vi_nxv8i8_0:349; CHECK:       # %bb.0:350; CHECK-NEXT:    li a0, -16351; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma352; CHECK-NEXT:    vmsltu.vx v0, v8, a0353; CHECK-NEXT:    ret354  %vc = icmp ult <vscale x 8 x i8> %va, splat (i8 -16)355  ret <vscale x 8 x i1> %vc356}357 358define <vscale x 8 x i1> @icmp_ult_vi_nxv8i8_1(<vscale x 8 x i8> %va) {359; CHECK-LABEL: icmp_ult_vi_nxv8i8_1:360; CHECK:       # %bb.0:361; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma362; CHECK-NEXT:    vmsleu.vi v0, v8, -16363; CHECK-NEXT:    ret364  %vc = icmp ult <vscale x 8 x i8> %va, splat (i8 -15)365  ret <vscale x 8 x i1> %vc366}367 368define <vscale x 8 x i1> @icmp_ult_iv_nxv8i8_1(<vscale x 8 x i8> %va) {369; CHECK-LABEL: icmp_ult_iv_nxv8i8_1:370; CHECK:       # %bb.0:371; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma372; CHECK-NEXT:    vmsgtu.vi v0, v8, -15373; CHECK-NEXT:    ret374  %vc = icmp ult <vscale x 8 x i8> splat (i8 -15), %va375  ret <vscale x 8 x i1> %vc376}377 378define <vscale x 8 x i1> @icmp_ult_vi_nxv8i8_2(<vscale x 8 x i8> %va) {379; CHECK-LABEL: icmp_ult_vi_nxv8i8_2:380; CHECK:       # %bb.0:381; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma382; CHECK-NEXT:    vmclr.m v0383; CHECK-NEXT:    ret384  %vc = icmp ult <vscale x 8 x i8> %va, splat (i8 0)385  ret <vscale x 8 x i1> %vc386}387 388define <vscale x 8 x i1> @icmp_ult_vi_nxv8i8_3(<vscale x 8 x i8> %va) {389; CHECK-LABEL: icmp_ult_vi_nxv8i8_3:390; CHECK:       # %bb.0:391; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma392; CHECK-NEXT:    vmseq.vi v0, v8, 0393; CHECK-NEXT:    ret394  %vc = icmp ult <vscale x 8 x i8> %va, splat (i8 1)395  ret <vscale x 8 x i1> %vc396}397 398define <vscale x 8 x i1> @icmp_ult_vi_nxv8i8_4(<vscale x 8 x i8> %va) {399; CHECK-LABEL: icmp_ult_vi_nxv8i8_4:400; CHECK:       # %bb.0:401; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma402; CHECK-NEXT:    vmsleu.vi v0, v8, 15403; CHECK-NEXT:    ret404  %vc = icmp ult <vscale x 8 x i8> %va, splat (i8 16)405  ret <vscale x 8 x i1> %vc406}407 408; Test that we don't optimize ult x, 0 -> ule x, -1409define <vscale x 8 x i1> @icmp_ult_vi_nxv8i8_5(<vscale x 8 x i8> %va, iXLen %vl) {410; CHECK-LABEL: icmp_ult_vi_nxv8i8_5:411; CHECK:       # %bb.0:412; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma413; CHECK-NEXT:    vmsltu.vx v0, v8, zero414; CHECK-NEXT:    ret415  %splat = call <vscale x 8 x i8> @llvm.riscv.vmv.v.x.nxv8i8.iXLen(<vscale x 8 x i8> poison, i8 0, iXLen %vl)416  %vc = icmp ult <vscale x 8 x i8> %va, %splat417  ret <vscale x 8 x i1> %vc418}419 420define <vscale x 8 x i1> @icmp_ule_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb) {421; CHECK-LABEL: icmp_ule_vv_nxv8i8:422; CHECK:       # %bb.0:423; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma424; CHECK-NEXT:    vmsleu.vv v0, v8, v9425; CHECK-NEXT:    ret426  %vc = icmp ule <vscale x 8 x i8> %va, %vb427  ret <vscale x 8 x i1> %vc428}429 430define <vscale x 8 x i1> @icmp_ule_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {431; CHECK-LABEL: icmp_ule_vx_nxv8i8:432; CHECK:       # %bb.0:433; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma434; CHECK-NEXT:    vmsleu.vx v0, v8, a0435; CHECK-NEXT:    ret436  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0437  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer438  %vc = icmp ule <vscale x 8 x i8> %va, %splat439  ret <vscale x 8 x i1> %vc440}441 442define <vscale x 8 x i1> @icmp_ule_xv_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {443; CHECK-LABEL: icmp_ule_xv_nxv8i8:444; CHECK:       # %bb.0:445; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma446; CHECK-NEXT:    vmv.v.x v9, a0447; CHECK-NEXT:    vmsleu.vv v0, v9, v8448; CHECK-NEXT:    ret449  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0450  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer451  %vc = icmp ule <vscale x 8 x i8> %splat, %va452  ret <vscale x 8 x i1> %vc453}454 455define <vscale x 8 x i1> @icmp_ule_vi_nxv8i8_0(<vscale x 8 x i8> %va) {456; CHECK-LABEL: icmp_ule_vi_nxv8i8_0:457; CHECK:       # %bb.0:458; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma459; CHECK-NEXT:    vmsleu.vi v0, v8, 5460; CHECK-NEXT:    ret461  %vc = icmp ule <vscale x 8 x i8> %va, splat (i8 5)462  ret <vscale x 8 x i1> %vc463}464 465define <vscale x 8 x i1> @icmp_sgt_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb) {466; CHECK-LABEL: icmp_sgt_vv_nxv8i8:467; CHECK:       # %bb.0:468; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma469; CHECK-NEXT:    vmslt.vv v0, v9, v8470; CHECK-NEXT:    ret471  %vc = icmp sgt <vscale x 8 x i8> %va, %vb472  ret <vscale x 8 x i1> %vc473}474 475define <vscale x 8 x i1> @icmp_sgt_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {476; CHECK-LABEL: icmp_sgt_vx_nxv8i8:477; CHECK:       # %bb.0:478; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma479; CHECK-NEXT:    vmsgt.vx v0, v8, a0480; CHECK-NEXT:    ret481  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0482  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer483  %vc = icmp sgt <vscale x 8 x i8> %va, %splat484  ret <vscale x 8 x i1> %vc485}486 487define <vscale x 8 x i1> @icmp_sgt_xv_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {488; CHECK-LABEL: icmp_sgt_xv_nxv8i8:489; CHECK:       # %bb.0:490; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma491; CHECK-NEXT:    vmslt.vx v0, v8, a0492; CHECK-NEXT:    ret493  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0494  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer495  %vc = icmp sgt <vscale x 8 x i8> %splat, %va496  ret <vscale x 8 x i1> %vc497}498 499define <vscale x 8 x i1> @icmp_sgt_vi_nxv8i8_0(<vscale x 8 x i8> %va) {500; CHECK-LABEL: icmp_sgt_vi_nxv8i8_0:501; CHECK:       # %bb.0:502; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma503; CHECK-NEXT:    vmsgt.vi v0, v8, 5504; CHECK-NEXT:    ret505  %vc = icmp sgt <vscale x 8 x i8> %va, splat (i8 5)506  ret <vscale x 8 x i1> %vc507}508 509define <vscale x 8 x i1> @icmp_sge_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb) {510; CHECK-LABEL: icmp_sge_vv_nxv8i8:511; CHECK:       # %bb.0:512; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma513; CHECK-NEXT:    vmsle.vv v0, v9, v8514; CHECK-NEXT:    ret515  %vc = icmp sge <vscale x 8 x i8> %va, %vb516  ret <vscale x 8 x i1> %vc517}518 519define <vscale x 8 x i1> @icmp_sge_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {520; CHECK-LABEL: icmp_sge_vx_nxv8i8:521; CHECK:       # %bb.0:522; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma523; CHECK-NEXT:    vmv.v.x v9, a0524; CHECK-NEXT:    vmsle.vv v0, v9, v8525; CHECK-NEXT:    ret526  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0527  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer528  %vc = icmp sge <vscale x 8 x i8> %va, %splat529  ret <vscale x 8 x i1> %vc530}531 532define <vscale x 8 x i1> @icmp_sge_xv_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {533; CHECK-LABEL: icmp_sge_xv_nxv8i8:534; CHECK:       # %bb.0:535; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma536; CHECK-NEXT:    vmsle.vx v0, v8, a0537; CHECK-NEXT:    ret538  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0539  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer540  %vc = icmp sge <vscale x 8 x i8> %splat, %va541  ret <vscale x 8 x i1> %vc542}543 544define <vscale x 8 x i1> @icmp_sge_vi_nxv8i8_0(<vscale x 8 x i8> %va) {545; CHECK-LABEL: icmp_sge_vi_nxv8i8_0:546; CHECK:       # %bb.0:547; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma548; CHECK-NEXT:    vmv.v.i v9, -16549; CHECK-NEXT:    vmsle.vv v0, v9, v8550; CHECK-NEXT:    ret551  %vc = icmp sge <vscale x 8 x i8> %va, splat (i8 -16)552  ret <vscale x 8 x i1> %vc553}554 555define <vscale x 8 x i1> @icmp_sge_vi_nxv8i8_1(<vscale x 8 x i8> %va) {556; CHECK-LABEL: icmp_sge_vi_nxv8i8_1:557; CHECK:       # %bb.0:558; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma559; CHECK-NEXT:    vmsgt.vi v0, v8, -16560; CHECK-NEXT:    ret561  %vc = icmp sge <vscale x 8 x i8> %va, splat (i8 -15)562  ret <vscale x 8 x i1> %vc563}564 565define <vscale x 8 x i1> @icmp_sge_iv_nxv8i8_1(<vscale x 8 x i8> %va) {566; CHECK-LABEL: icmp_sge_iv_nxv8i8_1:567; CHECK:       # %bb.0:568; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma569; CHECK-NEXT:    vmsle.vi v0, v8, -15570; CHECK-NEXT:    ret571  %vc = icmp sge <vscale x 8 x i8> splat (i8 -15), %va572  ret <vscale x 8 x i1> %vc573}574 575define <vscale x 8 x i1> @icmp_sge_vi_nxv8i8_2(<vscale x 8 x i8> %va) {576; CHECK-LABEL: icmp_sge_vi_nxv8i8_2:577; CHECK:       # %bb.0:578; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma579; CHECK-NEXT:    vmsgt.vi v0, v8, -1580; CHECK-NEXT:    ret581  %vc = icmp sge <vscale x 8 x i8> %va, splat (i8 0)582  ret <vscale x 8 x i1> %vc583}584 585define <vscale x 8 x i1> @icmp_sge_vi_nxv8i8_3(<vscale x 8 x i8> %va) {586; CHECK-LABEL: icmp_sge_vi_nxv8i8_3:587; CHECK:       # %bb.0:588; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma589; CHECK-NEXT:    vmsgt.vi v0, v8, 15590; CHECK-NEXT:    ret591  %vc = icmp sge <vscale x 8 x i8> %va, splat (i8 16)592  ret <vscale x 8 x i1> %vc593}594 595define <vscale x 8 x i1> @icmp_slt_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb) {596; CHECK-LABEL: icmp_slt_vv_nxv8i8:597; CHECK:       # %bb.0:598; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma599; CHECK-NEXT:    vmslt.vv v0, v8, v9600; CHECK-NEXT:    ret601  %vc = icmp slt <vscale x 8 x i8> %va, %vb602  ret <vscale x 8 x i1> %vc603}604 605define <vscale x 8 x i1> @icmp_slt_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {606; CHECK-LABEL: icmp_slt_vx_nxv8i8:607; CHECK:       # %bb.0:608; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma609; CHECK-NEXT:    vmslt.vx v0, v8, a0610; CHECK-NEXT:    ret611  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0612  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer613  %vc = icmp slt <vscale x 8 x i8> %va, %splat614  ret <vscale x 8 x i1> %vc615}616 617define <vscale x 8 x i1> @icmp_slt_xv_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {618; CHECK-LABEL: icmp_slt_xv_nxv8i8:619; CHECK:       # %bb.0:620; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma621; CHECK-NEXT:    vmsgt.vx v0, v8, a0622; CHECK-NEXT:    ret623  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0624  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer625  %vc = icmp slt <vscale x 8 x i8> %splat, %va626  ret <vscale x 8 x i1> %vc627}628 629define <vscale x 8 x i1> @icmp_slt_vi_nxv8i8_0(<vscale x 8 x i8> %va) {630; CHECK-LABEL: icmp_slt_vi_nxv8i8_0:631; CHECK:       # %bb.0:632; CHECK-NEXT:    li a0, -16633; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma634; CHECK-NEXT:    vmslt.vx v0, v8, a0635; CHECK-NEXT:    ret636  %vc = icmp slt <vscale x 8 x i8> %va, splat (i8 -16)637  ret <vscale x 8 x i1> %vc638}639 640define <vscale x 8 x i1> @icmp_slt_vi_nxv8i8_1(<vscale x 8 x i8> %va) {641; CHECK-LABEL: icmp_slt_vi_nxv8i8_1:642; CHECK:       # %bb.0:643; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma644; CHECK-NEXT:    vmsle.vi v0, v8, -16645; CHECK-NEXT:    ret646  %vc = icmp slt <vscale x 8 x i8> %va, splat (i8 -15)647  ret <vscale x 8 x i1> %vc648}649 650define <vscale x 8 x i1> @icmp_slt_iv_nxv8i8_1(<vscale x 8 x i8> %va) {651; CHECK-LABEL: icmp_slt_iv_nxv8i8_1:652; CHECK:       # %bb.0:653; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma654; CHECK-NEXT:    vmsgt.vi v0, v8, -15655; CHECK-NEXT:    ret656  %vc = icmp slt <vscale x 8 x i8> splat (i8 -15), %va657  ret <vscale x 8 x i1> %vc658}659 660define <vscale x 8 x i1> @icmp_slt_vi_nxv8i8_2(<vscale x 8 x i8> %va) {661; CHECK-LABEL: icmp_slt_vi_nxv8i8_2:662; CHECK:       # %bb.0:663; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma664; CHECK-NEXT:    vmsle.vi v0, v8, -1665; CHECK-NEXT:    ret666  %vc = icmp slt <vscale x 8 x i8> %va, splat (i8 0)667  ret <vscale x 8 x i1> %vc668}669 670define <vscale x 8 x i1> @icmp_slt_vi_nxv8i8_3(<vscale x 8 x i8> %va) {671; CHECK-LABEL: icmp_slt_vi_nxv8i8_3:672; CHECK:       # %bb.0:673; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma674; CHECK-NEXT:    vmsle.vi v0, v8, 15675; CHECK-NEXT:    ret676  %vc = icmp slt <vscale x 8 x i8> %va, splat (i8 16)677  ret <vscale x 8 x i1> %vc678}679 680define <vscale x 8 x i1> @icmp_sle_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb) {681; CHECK-LABEL: icmp_sle_vv_nxv8i8:682; CHECK:       # %bb.0:683; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma684; CHECK-NEXT:    vmsle.vv v0, v8, v9685; CHECK-NEXT:    ret686  %vc = icmp sle <vscale x 8 x i8> %va, %vb687  ret <vscale x 8 x i1> %vc688}689 690define <vscale x 8 x i1> @icmp_sle_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {691; CHECK-LABEL: icmp_sle_vx_nxv8i8:692; CHECK:       # %bb.0:693; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma694; CHECK-NEXT:    vmsle.vx v0, v8, a0695; CHECK-NEXT:    ret696  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0697  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer698  %vc = icmp sle <vscale x 8 x i8> %va, %splat699  ret <vscale x 8 x i1> %vc700}701 702define <vscale x 8 x i1> @icmp_sle_xv_nxv8i8(<vscale x 8 x i8> %va, i8 %b) {703; CHECK-LABEL: icmp_sle_xv_nxv8i8:704; CHECK:       # %bb.0:705; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma706; CHECK-NEXT:    vmv.v.x v9, a0707; CHECK-NEXT:    vmsle.vv v0, v9, v8708; CHECK-NEXT:    ret709  %head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0710  %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer711  %vc = icmp sle <vscale x 8 x i8> %splat, %va712  ret <vscale x 8 x i1> %vc713}714 715define <vscale x 8 x i1> @icmp_sle_vi_nxv8i8_0(<vscale x 8 x i8> %va) {716; CHECK-LABEL: icmp_sle_vi_nxv8i8_0:717; CHECK:       # %bb.0:718; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma719; CHECK-NEXT:    vmsle.vi v0, v8, 5720; CHECK-NEXT:    ret721  %vc = icmp sle <vscale x 8 x i8> %va, splat (i8 5)722  ret <vscale x 8 x i1> %vc723}724 725define <vscale x 8 x i1> @icmp_eq_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb) {726; CHECK-LABEL: icmp_eq_vv_nxv8i16:727; CHECK:       # %bb.0:728; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma729; CHECK-NEXT:    vmseq.vv v0, v8, v10730; CHECK-NEXT:    ret731  %vc = icmp eq <vscale x 8 x i16> %va, %vb732  ret <vscale x 8 x i1> %vc733}734 735define <vscale x 8 x i1> @icmp_eq_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {736; CHECK-LABEL: icmp_eq_vx_nxv8i16:737; CHECK:       # %bb.0:738; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma739; CHECK-NEXT:    vmseq.vx v0, v8, a0740; CHECK-NEXT:    ret741  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0742  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer743  %vc = icmp eq <vscale x 8 x i16> %va, %splat744  ret <vscale x 8 x i1> %vc745}746 747define <vscale x 8 x i1> @icmp_eq_xv_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {748; CHECK-LABEL: icmp_eq_xv_nxv8i16:749; CHECK:       # %bb.0:750; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma751; CHECK-NEXT:    vmseq.vx v0, v8, a0752; CHECK-NEXT:    ret753  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0754  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer755  %vc = icmp eq <vscale x 8 x i16> %splat, %va756  ret <vscale x 8 x i1> %vc757}758 759define <vscale x 8 x i1> @icmp_eq_vi_nxv8i16_0(<vscale x 8 x i16> %va) {760; CHECK-LABEL: icmp_eq_vi_nxv8i16_0:761; CHECK:       # %bb.0:762; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma763; CHECK-NEXT:    vmseq.vi v0, v8, 0764; CHECK-NEXT:    ret765  %vc = icmp eq <vscale x 8 x i16> %va, splat (i16 0)766  ret <vscale x 8 x i1> %vc767}768 769define <vscale x 8 x i1> @icmp_eq_vi_nxv8i16_1(<vscale x 8 x i16> %va) {770; CHECK-LABEL: icmp_eq_vi_nxv8i16_1:771; CHECK:       # %bb.0:772; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma773; CHECK-NEXT:    vmseq.vi v0, v8, 5774; CHECK-NEXT:    ret775  %vc = icmp eq <vscale x 8 x i16> %va, splat (i16 5)776  ret <vscale x 8 x i1> %vc777}778 779define <vscale x 8 x i1> @icmp_eq_iv_nxv8i16_1(<vscale x 8 x i16> %va) {780; CHECK-LABEL: icmp_eq_iv_nxv8i16_1:781; CHECK:       # %bb.0:782; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma783; CHECK-NEXT:    vmseq.vi v0, v8, 5784; CHECK-NEXT:    ret785  %vc = icmp eq <vscale x 8 x i16> splat (i16 5), %va786  ret <vscale x 8 x i1> %vc787}788 789define <vscale x 8 x i1> @icmp_ne_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb) {790; CHECK-LABEL: icmp_ne_vv_nxv8i16:791; CHECK:       # %bb.0:792; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma793; CHECK-NEXT:    vmsne.vv v0, v8, v10794; CHECK-NEXT:    ret795  %vc = icmp ne <vscale x 8 x i16> %va, %vb796  ret <vscale x 8 x i1> %vc797}798 799define <vscale x 8 x i1> @icmp_ne_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {800; CHECK-LABEL: icmp_ne_vx_nxv8i16:801; CHECK:       # %bb.0:802; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma803; CHECK-NEXT:    vmsne.vx v0, v8, a0804; CHECK-NEXT:    ret805  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0806  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer807  %vc = icmp ne <vscale x 8 x i16> %va, %splat808  ret <vscale x 8 x i1> %vc809}810 811define <vscale x 8 x i1> @icmp_ne_xv_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {812; CHECK-LABEL: icmp_ne_xv_nxv8i16:813; CHECK:       # %bb.0:814; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma815; CHECK-NEXT:    vmsne.vx v0, v8, a0816; CHECK-NEXT:    ret817  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0818  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer819  %vc = icmp ne <vscale x 8 x i16> %splat, %va820  ret <vscale x 8 x i1> %vc821}822 823define <vscale x 8 x i1> @icmp_ne_vi_nxv8i16_0(<vscale x 8 x i16> %va) {824; CHECK-LABEL: icmp_ne_vi_nxv8i16_0:825; CHECK:       # %bb.0:826; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma827; CHECK-NEXT:    vmsne.vi v0, v8, 5828; CHECK-NEXT:    ret829  %vc = icmp ne <vscale x 8 x i16> %va, splat (i16 5)830  ret <vscale x 8 x i1> %vc831}832 833define <vscale x 8 x i1> @icmp_ugt_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb) {834; CHECK-LABEL: icmp_ugt_vv_nxv8i16:835; CHECK:       # %bb.0:836; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma837; CHECK-NEXT:    vmsltu.vv v0, v10, v8838; CHECK-NEXT:    ret839  %vc = icmp ugt <vscale x 8 x i16> %va, %vb840  ret <vscale x 8 x i1> %vc841}842 843define <vscale x 8 x i1> @icmp_ugt_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {844; CHECK-LABEL: icmp_ugt_vx_nxv8i16:845; CHECK:       # %bb.0:846; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma847; CHECK-NEXT:    vmsgtu.vx v0, v8, a0848; CHECK-NEXT:    ret849  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0850  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer851  %vc = icmp ugt <vscale x 8 x i16> %va, %splat852  ret <vscale x 8 x i1> %vc853}854 855define <vscale x 8 x i1> @icmp_ugt_xv_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {856; CHECK-LABEL: icmp_ugt_xv_nxv8i16:857; CHECK:       # %bb.0:858; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma859; CHECK-NEXT:    vmsltu.vx v0, v8, a0860; CHECK-NEXT:    ret861  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0862  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer863  %vc = icmp ugt <vscale x 8 x i16> %splat, %va864  ret <vscale x 8 x i1> %vc865}866 867define <vscale x 8 x i1> @icmp_ugt_vi_nxv8i16_0(<vscale x 8 x i16> %va) {868; CHECK-LABEL: icmp_ugt_vi_nxv8i16_0:869; CHECK:       # %bb.0:870; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma871; CHECK-NEXT:    vmsgtu.vi v0, v8, 5872; CHECK-NEXT:    ret873  %vc = icmp ugt <vscale x 8 x i16> %va, splat (i16 5)874  ret <vscale x 8 x i1> %vc875}876 877define <vscale x 8 x i1> @icmp_uge_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb) {878; CHECK-LABEL: icmp_uge_vv_nxv8i16:879; CHECK:       # %bb.0:880; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma881; CHECK-NEXT:    vmsleu.vv v0, v10, v8882; CHECK-NEXT:    ret883  %vc = icmp uge <vscale x 8 x i16> %va, %vb884  ret <vscale x 8 x i1> %vc885}886 887define <vscale x 8 x i1> @icmp_uge_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {888; CHECK-LABEL: icmp_uge_vx_nxv8i16:889; CHECK:       # %bb.0:890; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma891; CHECK-NEXT:    vmv.v.x v10, a0892; CHECK-NEXT:    vmsleu.vv v0, v10, v8893; CHECK-NEXT:    ret894  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0895  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer896  %vc = icmp uge <vscale x 8 x i16> %va, %splat897  ret <vscale x 8 x i1> %vc898}899 900define <vscale x 8 x i1> @icmp_uge_xv_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {901; CHECK-LABEL: icmp_uge_xv_nxv8i16:902; CHECK:       # %bb.0:903; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma904; CHECK-NEXT:    vmsleu.vx v0, v8, a0905; CHECK-NEXT:    ret906  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0907  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer908  %vc = icmp uge <vscale x 8 x i16> %splat, %va909  ret <vscale x 8 x i1> %vc910}911 912define <vscale x 8 x i1> @icmp_uge_vi_nxv8i16_0(<vscale x 8 x i16> %va) {913; CHECK-LABEL: icmp_uge_vi_nxv8i16_0:914; CHECK:       # %bb.0:915; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma916; CHECK-NEXT:    vmv.v.i v10, -16917; CHECK-NEXT:    vmsleu.vv v0, v10, v8918; CHECK-NEXT:    ret919  %vc = icmp uge <vscale x 8 x i16> %va, splat (i16 -16)920  ret <vscale x 8 x i1> %vc921}922 923define <vscale x 8 x i1> @icmp_uge_vi_nxv8i16_1(<vscale x 8 x i16> %va) {924; CHECK-LABEL: icmp_uge_vi_nxv8i16_1:925; CHECK:       # %bb.0:926; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma927; CHECK-NEXT:    vmsgtu.vi v0, v8, 14928; CHECK-NEXT:    ret929  %vc = icmp uge <vscale x 8 x i16> %va, splat (i16 15)930  ret <vscale x 8 x i1> %vc931}932 933define <vscale x 8 x i1> @icmp_uge_iv_nxv8i16_1(<vscale x 8 x i16> %va) {934; CHECK-LABEL: icmp_uge_iv_nxv8i16_1:935; CHECK:       # %bb.0:936; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma937; CHECK-NEXT:    vmsleu.vi v0, v8, 15938; CHECK-NEXT:    ret939  %vc = icmp uge <vscale x 8 x i16> splat (i16 15), %va940  ret <vscale x 8 x i1> %vc941}942 943define <vscale x 8 x i1> @icmp_uge_vi_nxv8i16_2(<vscale x 8 x i16> %va) {944; CHECK-LABEL: icmp_uge_vi_nxv8i16_2:945; CHECK:       # %bb.0:946; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma947; CHECK-NEXT:    vmset.m v0948; CHECK-NEXT:    ret949  %vc = icmp uge <vscale x 8 x i16> %va, splat (i16 0)950  ret <vscale x 8 x i1> %vc951}952 953define <vscale x 8 x i1> @icmp_uge_vi_nxv8i16_3(<vscale x 8 x i16> %va) {954; CHECK-LABEL: icmp_uge_vi_nxv8i16_3:955; CHECK:       # %bb.0:956; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma957; CHECK-NEXT:    vmsgtu.vi v0, v8, 0958; CHECK-NEXT:    ret959  %vc = icmp uge <vscale x 8 x i16> %va, splat (i16 1)960  ret <vscale x 8 x i1> %vc961}962 963define <vscale x 8 x i1> @icmp_uge_vi_nxv8i16_4(<vscale x 8 x i16> %va) {964; CHECK-LABEL: icmp_uge_vi_nxv8i16_4:965; CHECK:       # %bb.0:966; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma967; CHECK-NEXT:    vmsgtu.vi v0, v8, -16968; CHECK-NEXT:    ret969  %vc = icmp uge <vscale x 8 x i16> %va, splat (i16 -15)970  ret <vscale x 8 x i1> %vc971}972 973define <vscale x 8 x i1> @icmp_uge_vi_nxv8i16_5(<vscale x 8 x i16> %va) {974; CHECK-LABEL: icmp_uge_vi_nxv8i16_5:975; CHECK:       # %bb.0:976; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma977; CHECK-NEXT:    vmsgtu.vi v0, v8, 15978; CHECK-NEXT:    ret979  %vc = icmp uge <vscale x 8 x i16> %va, splat (i16 16)980  ret <vscale x 8 x i1> %vc981}982 983define <vscale x 8 x i1> @icmp_ult_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb) {984; CHECK-LABEL: icmp_ult_vv_nxv8i16:985; CHECK:       # %bb.0:986; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma987; CHECK-NEXT:    vmsltu.vv v0, v8, v10988; CHECK-NEXT:    ret989  %vc = icmp ult <vscale x 8 x i16> %va, %vb990  ret <vscale x 8 x i1> %vc991}992 993define <vscale x 8 x i1> @icmp_ult_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {994; CHECK-LABEL: icmp_ult_vx_nxv8i16:995; CHECK:       # %bb.0:996; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma997; CHECK-NEXT:    vmsltu.vx v0, v8, a0998; CHECK-NEXT:    ret999  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 01000  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer1001  %vc = icmp ult <vscale x 8 x i16> %va, %splat1002  ret <vscale x 8 x i1> %vc1003}1004 1005define <vscale x 8 x i1> @icmp_ult_xv_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {1006; CHECK-LABEL: icmp_ult_xv_nxv8i16:1007; CHECK:       # %bb.0:1008; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma1009; CHECK-NEXT:    vmsgtu.vx v0, v8, a01010; CHECK-NEXT:    ret1011  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 01012  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer1013  %vc = icmp ult <vscale x 8 x i16> %splat, %va1014  ret <vscale x 8 x i1> %vc1015}1016 1017define <vscale x 8 x i1> @icmp_ult_vi_nxv8i16_0(<vscale x 8 x i16> %va) {1018; CHECK-LABEL: icmp_ult_vi_nxv8i16_0:1019; CHECK:       # %bb.0:1020; CHECK-NEXT:    li a0, -161021; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma1022; CHECK-NEXT:    vmsltu.vx v0, v8, a01023; CHECK-NEXT:    ret1024  %vc = icmp ult <vscale x 8 x i16> %va, splat (i16 -16)1025  ret <vscale x 8 x i1> %vc1026}1027 1028define <vscale x 8 x i1> @icmp_ult_vi_nxv8i16_1(<vscale x 8 x i16> %va) {1029; CHECK-LABEL: icmp_ult_vi_nxv8i16_1:1030; CHECK:       # %bb.0:1031; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1032; CHECK-NEXT:    vmsleu.vi v0, v8, -161033; CHECK-NEXT:    ret1034  %vc = icmp ult <vscale x 8 x i16> %va, splat (i16 -15)1035  ret <vscale x 8 x i1> %vc1036}1037 1038define <vscale x 8 x i1> @icmp_ult_iv_nxv8i16_1(<vscale x 8 x i16> %va) {1039; CHECK-LABEL: icmp_ult_iv_nxv8i16_1:1040; CHECK:       # %bb.0:1041; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1042; CHECK-NEXT:    vmsgtu.vi v0, v8, -151043; CHECK-NEXT:    ret1044  %vc = icmp ult <vscale x 8 x i16> splat (i16 -15), %va1045  ret <vscale x 8 x i1> %vc1046}1047 1048define <vscale x 8 x i1> @icmp_ult_vi_nxv8i16_2(<vscale x 8 x i16> %va) {1049; CHECK-LABEL: icmp_ult_vi_nxv8i16_2:1050; CHECK:       # %bb.0:1051; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma1052; CHECK-NEXT:    vmclr.m v01053; CHECK-NEXT:    ret1054  %vc = icmp ult <vscale x 8 x i16> %va, splat (i16 0)1055  ret <vscale x 8 x i1> %vc1056}1057 1058define <vscale x 8 x i1> @icmp_ult_vi_nxv8i16_3(<vscale x 8 x i16> %va) {1059; CHECK-LABEL: icmp_ult_vi_nxv8i16_3:1060; CHECK:       # %bb.0:1061; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1062; CHECK-NEXT:    vmseq.vi v0, v8, 01063; CHECK-NEXT:    ret1064  %vc = icmp ult <vscale x 8 x i16> %va, splat (i16 1)1065  ret <vscale x 8 x i1> %vc1066}1067 1068define <vscale x 8 x i1> @icmp_ult_vi_nxv8i16_4(<vscale x 8 x i16> %va) {1069; CHECK-LABEL: icmp_ult_vi_nxv8i16_4:1070; CHECK:       # %bb.0:1071; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1072; CHECK-NEXT:    vmsleu.vi v0, v8, 151073; CHECK-NEXT:    ret1074  %vc = icmp ult <vscale x 8 x i16> %va, splat (i16 16)1075  ret <vscale x 8 x i1> %vc1076}1077 1078define <vscale x 8 x i1> @icmp_ule_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb) {1079; CHECK-LABEL: icmp_ule_vv_nxv8i16:1080; CHECK:       # %bb.0:1081; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1082; CHECK-NEXT:    vmsleu.vv v0, v8, v101083; CHECK-NEXT:    ret1084  %vc = icmp ule <vscale x 8 x i16> %va, %vb1085  ret <vscale x 8 x i1> %vc1086}1087 1088define <vscale x 8 x i1> @icmp_ule_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {1089; CHECK-LABEL: icmp_ule_vx_nxv8i16:1090; CHECK:       # %bb.0:1091; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma1092; CHECK-NEXT:    vmsleu.vx v0, v8, a01093; CHECK-NEXT:    ret1094  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 01095  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer1096  %vc = icmp ule <vscale x 8 x i16> %va, %splat1097  ret <vscale x 8 x i1> %vc1098}1099 1100define <vscale x 8 x i1> @icmp_ule_xv_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {1101; CHECK-LABEL: icmp_ule_xv_nxv8i16:1102; CHECK:       # %bb.0:1103; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma1104; CHECK-NEXT:    vmv.v.x v10, a01105; CHECK-NEXT:    vmsleu.vv v0, v10, v81106; CHECK-NEXT:    ret1107  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 01108  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer1109  %vc = icmp ule <vscale x 8 x i16> %splat, %va1110  ret <vscale x 8 x i1> %vc1111}1112 1113define <vscale x 8 x i1> @icmp_ule_vi_nxv8i16_0(<vscale x 8 x i16> %va) {1114; CHECK-LABEL: icmp_ule_vi_nxv8i16_0:1115; CHECK:       # %bb.0:1116; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1117; CHECK-NEXT:    vmsleu.vi v0, v8, 51118; CHECK-NEXT:    ret1119  %vc = icmp ule <vscale x 8 x i16> %va, splat (i16 5)1120  ret <vscale x 8 x i1> %vc1121}1122 1123define <vscale x 8 x i1> @icmp_sgt_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb) {1124; CHECK-LABEL: icmp_sgt_vv_nxv8i16:1125; CHECK:       # %bb.0:1126; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1127; CHECK-NEXT:    vmslt.vv v0, v10, v81128; CHECK-NEXT:    ret1129  %vc = icmp sgt <vscale x 8 x i16> %va, %vb1130  ret <vscale x 8 x i1> %vc1131}1132 1133define <vscale x 8 x i1> @icmp_sgt_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {1134; CHECK-LABEL: icmp_sgt_vx_nxv8i16:1135; CHECK:       # %bb.0:1136; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma1137; CHECK-NEXT:    vmsgt.vx v0, v8, a01138; CHECK-NEXT:    ret1139  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 01140  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer1141  %vc = icmp sgt <vscale x 8 x i16> %va, %splat1142  ret <vscale x 8 x i1> %vc1143}1144 1145define <vscale x 8 x i1> @icmp_sgt_xv_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {1146; CHECK-LABEL: icmp_sgt_xv_nxv8i16:1147; CHECK:       # %bb.0:1148; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma1149; CHECK-NEXT:    vmslt.vx v0, v8, a01150; CHECK-NEXT:    ret1151  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 01152  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer1153  %vc = icmp sgt <vscale x 8 x i16> %splat, %va1154  ret <vscale x 8 x i1> %vc1155}1156 1157define <vscale x 8 x i1> @icmp_sgt_vi_nxv8i16_0(<vscale x 8 x i16> %va) {1158; CHECK-LABEL: icmp_sgt_vi_nxv8i16_0:1159; CHECK:       # %bb.0:1160; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1161; CHECK-NEXT:    vmsgt.vi v0, v8, 51162; CHECK-NEXT:    ret1163  %vc = icmp sgt <vscale x 8 x i16> %va, splat (i16 5)1164  ret <vscale x 8 x i1> %vc1165}1166 1167define <vscale x 8 x i1> @icmp_sge_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb) {1168; CHECK-LABEL: icmp_sge_vv_nxv8i16:1169; CHECK:       # %bb.0:1170; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1171; CHECK-NEXT:    vmsle.vv v0, v10, v81172; CHECK-NEXT:    ret1173  %vc = icmp sge <vscale x 8 x i16> %va, %vb1174  ret <vscale x 8 x i1> %vc1175}1176 1177define <vscale x 8 x i1> @icmp_sge_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {1178; CHECK-LABEL: icmp_sge_vx_nxv8i16:1179; CHECK:       # %bb.0:1180; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma1181; CHECK-NEXT:    vmv.v.x v10, a01182; CHECK-NEXT:    vmsle.vv v0, v10, v81183; CHECK-NEXT:    ret1184  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 01185  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer1186  %vc = icmp sge <vscale x 8 x i16> %va, %splat1187  ret <vscale x 8 x i1> %vc1188}1189 1190define <vscale x 8 x i1> @icmp_sge_xv_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {1191; CHECK-LABEL: icmp_sge_xv_nxv8i16:1192; CHECK:       # %bb.0:1193; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma1194; CHECK-NEXT:    vmsle.vx v0, v8, a01195; CHECK-NEXT:    ret1196  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 01197  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer1198  %vc = icmp sge <vscale x 8 x i16> %splat, %va1199  ret <vscale x 8 x i1> %vc1200}1201 1202define <vscale x 8 x i1> @icmp_sge_vi_nxv8i16_0(<vscale x 8 x i16> %va) {1203; CHECK-LABEL: icmp_sge_vi_nxv8i16_0:1204; CHECK:       # %bb.0:1205; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1206; CHECK-NEXT:    vmv.v.i v10, -161207; CHECK-NEXT:    vmsle.vv v0, v10, v81208; CHECK-NEXT:    ret1209  %vc = icmp sge <vscale x 8 x i16> %va, splat (i16 -16)1210  ret <vscale x 8 x i1> %vc1211}1212 1213define <vscale x 8 x i1> @icmp_sge_vi_nxv8i16_1(<vscale x 8 x i16> %va) {1214; CHECK-LABEL: icmp_sge_vi_nxv8i16_1:1215; CHECK:       # %bb.0:1216; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1217; CHECK-NEXT:    vmsgt.vi v0, v8, -161218; CHECK-NEXT:    ret1219  %vc = icmp sge <vscale x 8 x i16> %va, splat (i16 -15)1220  ret <vscale x 8 x i1> %vc1221}1222 1223define <vscale x 8 x i1> @icmp_sge_iv_nxv8i16_1(<vscale x 8 x i16> %va) {1224; CHECK-LABEL: icmp_sge_iv_nxv8i16_1:1225; CHECK:       # %bb.0:1226; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1227; CHECK-NEXT:    vmsle.vi v0, v8, -151228; CHECK-NEXT:    ret1229  %vc = icmp sge <vscale x 8 x i16> splat (i16 -15), %va1230  ret <vscale x 8 x i1> %vc1231}1232 1233define <vscale x 8 x i1> @icmp_sge_vi_nxv8i16_2(<vscale x 8 x i16> %va) {1234; CHECK-LABEL: icmp_sge_vi_nxv8i16_2:1235; CHECK:       # %bb.0:1236; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1237; CHECK-NEXT:    vmsgt.vi v0, v8, -11238; CHECK-NEXT:    ret1239  %vc = icmp sge <vscale x 8 x i16> %va, splat (i16 0)1240  ret <vscale x 8 x i1> %vc1241}1242 1243define <vscale x 8 x i1> @icmp_sge_vi_nxv8i16_3(<vscale x 8 x i16> %va) {1244; CHECK-LABEL: icmp_sge_vi_nxv8i16_3:1245; CHECK:       # %bb.0:1246; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1247; CHECK-NEXT:    vmsgt.vi v0, v8, 151248; CHECK-NEXT:    ret1249  %vc = icmp sge <vscale x 8 x i16> %va, splat (i16 16)1250  ret <vscale x 8 x i1> %vc1251}1252 1253define <vscale x 8 x i1> @icmp_slt_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb) {1254; CHECK-LABEL: icmp_slt_vv_nxv8i16:1255; CHECK:       # %bb.0:1256; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1257; CHECK-NEXT:    vmslt.vv v0, v8, v101258; CHECK-NEXT:    ret1259  %vc = icmp slt <vscale x 8 x i16> %va, %vb1260  ret <vscale x 8 x i1> %vc1261}1262 1263define <vscale x 8 x i1> @icmp_slt_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {1264; CHECK-LABEL: icmp_slt_vx_nxv8i16:1265; CHECK:       # %bb.0:1266; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma1267; CHECK-NEXT:    vmslt.vx v0, v8, a01268; CHECK-NEXT:    ret1269  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 01270  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer1271  %vc = icmp slt <vscale x 8 x i16> %va, %splat1272  ret <vscale x 8 x i1> %vc1273}1274 1275define <vscale x 8 x i1> @icmp_slt_xv_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {1276; CHECK-LABEL: icmp_slt_xv_nxv8i16:1277; CHECK:       # %bb.0:1278; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma1279; CHECK-NEXT:    vmsgt.vx v0, v8, a01280; CHECK-NEXT:    ret1281  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 01282  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer1283  %vc = icmp slt <vscale x 8 x i16> %splat, %va1284  ret <vscale x 8 x i1> %vc1285}1286 1287define <vscale x 8 x i1> @icmp_slt_vi_nxv8i16_0(<vscale x 8 x i16> %va) {1288; CHECK-LABEL: icmp_slt_vi_nxv8i16_0:1289; CHECK:       # %bb.0:1290; CHECK-NEXT:    li a0, -161291; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma1292; CHECK-NEXT:    vmslt.vx v0, v8, a01293; CHECK-NEXT:    ret1294  %vc = icmp slt <vscale x 8 x i16> %va, splat (i16 -16)1295  ret <vscale x 8 x i1> %vc1296}1297 1298define <vscale x 8 x i1> @icmp_slt_vi_nxv8i16_1(<vscale x 8 x i16> %va) {1299; CHECK-LABEL: icmp_slt_vi_nxv8i16_1:1300; CHECK:       # %bb.0:1301; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1302; CHECK-NEXT:    vmsle.vi v0, v8, -161303; CHECK-NEXT:    ret1304  %vc = icmp slt <vscale x 8 x i16> %va, splat (i16 -15)1305  ret <vscale x 8 x i1> %vc1306}1307 1308define <vscale x 8 x i1> @icmp_slt_iv_nxv8i16_1(<vscale x 8 x i16> %va) {1309; CHECK-LABEL: icmp_slt_iv_nxv8i16_1:1310; CHECK:       # %bb.0:1311; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1312; CHECK-NEXT:    vmsgt.vi v0, v8, -151313; CHECK-NEXT:    ret1314  %vc = icmp slt <vscale x 8 x i16> splat (i16 -15), %va1315  ret <vscale x 8 x i1> %vc1316}1317 1318define <vscale x 8 x i1> @icmp_slt_vi_nxv8i16_2(<vscale x 8 x i16> %va) {1319; CHECK-LABEL: icmp_slt_vi_nxv8i16_2:1320; CHECK:       # %bb.0:1321; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1322; CHECK-NEXT:    vmsle.vi v0, v8, -11323; CHECK-NEXT:    ret1324  %vc = icmp slt <vscale x 8 x i16> %va, splat (i16 0)1325  ret <vscale x 8 x i1> %vc1326}1327 1328define <vscale x 8 x i1> @icmp_slt_vi_nxv8i16_3(<vscale x 8 x i16> %va) {1329; CHECK-LABEL: icmp_slt_vi_nxv8i16_3:1330; CHECK:       # %bb.0:1331; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1332; CHECK-NEXT:    vmsle.vi v0, v8, 151333; CHECK-NEXT:    ret1334  %vc = icmp slt <vscale x 8 x i16> %va, splat (i16 16)1335  ret <vscale x 8 x i1> %vc1336}1337 1338define <vscale x 8 x i1> @icmp_sle_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb) {1339; CHECK-LABEL: icmp_sle_vv_nxv8i16:1340; CHECK:       # %bb.0:1341; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1342; CHECK-NEXT:    vmsle.vv v0, v8, v101343; CHECK-NEXT:    ret1344  %vc = icmp sle <vscale x 8 x i16> %va, %vb1345  ret <vscale x 8 x i1> %vc1346}1347 1348define <vscale x 8 x i1> @icmp_sle_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {1349; CHECK-LABEL: icmp_sle_vx_nxv8i16:1350; CHECK:       # %bb.0:1351; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma1352; CHECK-NEXT:    vmsle.vx v0, v8, a01353; CHECK-NEXT:    ret1354  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 01355  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer1356  %vc = icmp sle <vscale x 8 x i16> %va, %splat1357  ret <vscale x 8 x i1> %vc1358}1359 1360define <vscale x 8 x i1> @icmp_sle_xv_nxv8i16(<vscale x 8 x i16> %va, i16 %b) {1361; CHECK-LABEL: icmp_sle_xv_nxv8i16:1362; CHECK:       # %bb.0:1363; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma1364; CHECK-NEXT:    vmv.v.x v10, a01365; CHECK-NEXT:    vmsle.vv v0, v10, v81366; CHECK-NEXT:    ret1367  %head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 01368  %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer1369  %vc = icmp sle <vscale x 8 x i16> %splat, %va1370  ret <vscale x 8 x i1> %vc1371}1372 1373define <vscale x 8 x i1> @icmp_sle_vi_nxv8i16_0(<vscale x 8 x i16> %va) {1374; CHECK-LABEL: icmp_sle_vi_nxv8i16_0:1375; CHECK:       # %bb.0:1376; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma1377; CHECK-NEXT:    vmsle.vi v0, v8, 51378; CHECK-NEXT:    ret1379  %vc = icmp sle <vscale x 8 x i16> %va, splat (i16 5)1380  ret <vscale x 8 x i1> %vc1381}1382 1383define <vscale x 8 x i1> @icmp_eq_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb) {1384; CHECK-LABEL: icmp_eq_vv_nxv8i32:1385; CHECK:       # %bb.0:1386; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1387; CHECK-NEXT:    vmseq.vv v0, v8, v121388; CHECK-NEXT:    ret1389  %vc = icmp eq <vscale x 8 x i32> %va, %vb1390  ret <vscale x 8 x i1> %vc1391}1392 1393define <vscale x 8 x i1> @icmp_eq_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {1394; CHECK-LABEL: icmp_eq_vx_nxv8i32:1395; CHECK:       # %bb.0:1396; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1397; CHECK-NEXT:    vmseq.vx v0, v8, a01398; CHECK-NEXT:    ret1399  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01400  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1401  %vc = icmp eq <vscale x 8 x i32> %va, %splat1402  ret <vscale x 8 x i1> %vc1403}1404 1405define <vscale x 8 x i1> @icmp_eq_xv_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {1406; CHECK-LABEL: icmp_eq_xv_nxv8i32:1407; CHECK:       # %bb.0:1408; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1409; CHECK-NEXT:    vmseq.vx v0, v8, a01410; CHECK-NEXT:    ret1411  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01412  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1413  %vc = icmp eq <vscale x 8 x i32> %splat, %va1414  ret <vscale x 8 x i1> %vc1415}1416 1417define <vscale x 8 x i1> @icmp_eq_vi_nxv8i32_0(<vscale x 8 x i32> %va) {1418; CHECK-LABEL: icmp_eq_vi_nxv8i32_0:1419; CHECK:       # %bb.0:1420; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1421; CHECK-NEXT:    vmseq.vi v0, v8, 01422; CHECK-NEXT:    ret1423  %vc = icmp eq <vscale x 8 x i32> %va, splat (i32 0)1424  ret <vscale x 8 x i1> %vc1425}1426 1427define <vscale x 8 x i1> @icmp_eq_vi_nxv8i32_1(<vscale x 8 x i32> %va) {1428; CHECK-LABEL: icmp_eq_vi_nxv8i32_1:1429; CHECK:       # %bb.0:1430; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1431; CHECK-NEXT:    vmseq.vi v0, v8, 51432; CHECK-NEXT:    ret1433  %vc = icmp eq <vscale x 8 x i32> %va, splat (i32 5)1434  ret <vscale x 8 x i1> %vc1435}1436 1437define <vscale x 8 x i1> @icmp_eq_iv_nxv8i32_1(<vscale x 8 x i32> %va) {1438; CHECK-LABEL: icmp_eq_iv_nxv8i32_1:1439; CHECK:       # %bb.0:1440; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1441; CHECK-NEXT:    vmseq.vi v0, v8, 51442; CHECK-NEXT:    ret1443  %vc = icmp eq <vscale x 8 x i32> splat (i32 5), %va1444  ret <vscale x 8 x i1> %vc1445}1446 1447define <vscale x 8 x i1> @icmp_ne_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb) {1448; CHECK-LABEL: icmp_ne_vv_nxv8i32:1449; CHECK:       # %bb.0:1450; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1451; CHECK-NEXT:    vmsne.vv v0, v8, v121452; CHECK-NEXT:    ret1453  %vc = icmp ne <vscale x 8 x i32> %va, %vb1454  ret <vscale x 8 x i1> %vc1455}1456 1457define <vscale x 8 x i1> @icmp_ne_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {1458; CHECK-LABEL: icmp_ne_vx_nxv8i32:1459; CHECK:       # %bb.0:1460; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1461; CHECK-NEXT:    vmsne.vx v0, v8, a01462; CHECK-NEXT:    ret1463  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01464  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1465  %vc = icmp ne <vscale x 8 x i32> %va, %splat1466  ret <vscale x 8 x i1> %vc1467}1468 1469define <vscale x 8 x i1> @icmp_ne_xv_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {1470; CHECK-LABEL: icmp_ne_xv_nxv8i32:1471; CHECK:       # %bb.0:1472; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1473; CHECK-NEXT:    vmsne.vx v0, v8, a01474; CHECK-NEXT:    ret1475  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01476  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1477  %vc = icmp ne <vscale x 8 x i32> %splat, %va1478  ret <vscale x 8 x i1> %vc1479}1480 1481define <vscale x 8 x i1> @icmp_ne_vi_nxv8i32_0(<vscale x 8 x i32> %va) {1482; CHECK-LABEL: icmp_ne_vi_nxv8i32_0:1483; CHECK:       # %bb.0:1484; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1485; CHECK-NEXT:    vmsne.vi v0, v8, 51486; CHECK-NEXT:    ret1487  %vc = icmp ne <vscale x 8 x i32> %va, splat (i32 5)1488  ret <vscale x 8 x i1> %vc1489}1490 1491define <vscale x 8 x i1> @icmp_ugt_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb) {1492; CHECK-LABEL: icmp_ugt_vv_nxv8i32:1493; CHECK:       # %bb.0:1494; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1495; CHECK-NEXT:    vmsltu.vv v0, v12, v81496; CHECK-NEXT:    ret1497  %vc = icmp ugt <vscale x 8 x i32> %va, %vb1498  ret <vscale x 8 x i1> %vc1499}1500 1501define <vscale x 8 x i1> @icmp_ugt_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {1502; CHECK-LABEL: icmp_ugt_vx_nxv8i32:1503; CHECK:       # %bb.0:1504; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1505; CHECK-NEXT:    vmsgtu.vx v0, v8, a01506; CHECK-NEXT:    ret1507  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01508  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1509  %vc = icmp ugt <vscale x 8 x i32> %va, %splat1510  ret <vscale x 8 x i1> %vc1511}1512 1513define <vscale x 8 x i1> @icmp_ugt_xv_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {1514; CHECK-LABEL: icmp_ugt_xv_nxv8i32:1515; CHECK:       # %bb.0:1516; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1517; CHECK-NEXT:    vmsltu.vx v0, v8, a01518; CHECK-NEXT:    ret1519  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01520  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1521  %vc = icmp ugt <vscale x 8 x i32> %splat, %va1522  ret <vscale x 8 x i1> %vc1523}1524 1525define <vscale x 8 x i1> @icmp_ugt_vi_nxv8i32_0(<vscale x 8 x i32> %va) {1526; CHECK-LABEL: icmp_ugt_vi_nxv8i32_0:1527; CHECK:       # %bb.0:1528; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1529; CHECK-NEXT:    vmsgtu.vi v0, v8, 51530; CHECK-NEXT:    ret1531  %vc = icmp ugt <vscale x 8 x i32> %va, splat (i32 5)1532  ret <vscale x 8 x i1> %vc1533}1534 1535define <vscale x 8 x i1> @icmp_uge_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb) {1536; CHECK-LABEL: icmp_uge_vv_nxv8i32:1537; CHECK:       # %bb.0:1538; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1539; CHECK-NEXT:    vmsleu.vv v0, v12, v81540; CHECK-NEXT:    ret1541  %vc = icmp uge <vscale x 8 x i32> %va, %vb1542  ret <vscale x 8 x i1> %vc1543}1544 1545define <vscale x 8 x i1> @icmp_uge_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {1546; CHECK-LABEL: icmp_uge_vx_nxv8i32:1547; CHECK:       # %bb.0:1548; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1549; CHECK-NEXT:    vmv.v.x v12, a01550; CHECK-NEXT:    vmsleu.vv v0, v12, v81551; CHECK-NEXT:    ret1552  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01553  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1554  %vc = icmp uge <vscale x 8 x i32> %va, %splat1555  ret <vscale x 8 x i1> %vc1556}1557 1558define <vscale x 8 x i1> @icmp_uge_xv_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {1559; CHECK-LABEL: icmp_uge_xv_nxv8i32:1560; CHECK:       # %bb.0:1561; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1562; CHECK-NEXT:    vmsleu.vx v0, v8, a01563; CHECK-NEXT:    ret1564  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01565  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1566  %vc = icmp uge <vscale x 8 x i32> %splat, %va1567  ret <vscale x 8 x i1> %vc1568}1569 1570define <vscale x 8 x i1> @icmp_uge_vi_nxv8i32_0(<vscale x 8 x i32> %va) {1571; CHECK-LABEL: icmp_uge_vi_nxv8i32_0:1572; CHECK:       # %bb.0:1573; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1574; CHECK-NEXT:    vmv.v.i v12, -161575; CHECK-NEXT:    vmsleu.vv v0, v12, v81576; CHECK-NEXT:    ret1577  %vc = icmp uge <vscale x 8 x i32> %va, splat (i32 -16)1578  ret <vscale x 8 x i1> %vc1579}1580 1581define <vscale x 8 x i1> @icmp_uge_vi_nxv8i32_1(<vscale x 8 x i32> %va) {1582; CHECK-LABEL: icmp_uge_vi_nxv8i32_1:1583; CHECK:       # %bb.0:1584; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1585; CHECK-NEXT:    vmsgtu.vi v0, v8, 141586; CHECK-NEXT:    ret1587  %vc = icmp uge <vscale x 8 x i32> %va, splat (i32 15)1588  ret <vscale x 8 x i1> %vc1589}1590 1591define <vscale x 8 x i1> @icmp_uge_iv_nxv8i32_1(<vscale x 8 x i32> %va) {1592; CHECK-LABEL: icmp_uge_iv_nxv8i32_1:1593; CHECK:       # %bb.0:1594; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1595; CHECK-NEXT:    vmsleu.vi v0, v8, 151596; CHECK-NEXT:    ret1597  %vc = icmp uge <vscale x 8 x i32> splat (i32 15), %va1598  ret <vscale x 8 x i1> %vc1599}1600 1601define <vscale x 8 x i1> @icmp_uge_vi_nxv8i32_2(<vscale x 8 x i32> %va) {1602; CHECK-LABEL: icmp_uge_vi_nxv8i32_2:1603; CHECK:       # %bb.0:1604; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma1605; CHECK-NEXT:    vmset.m v01606; CHECK-NEXT:    ret1607  %vc = icmp uge <vscale x 8 x i32> %va, splat (i32 0)1608  ret <vscale x 8 x i1> %vc1609}1610 1611define <vscale x 8 x i1> @icmp_uge_vi_nxv8i32_3(<vscale x 8 x i32> %va) {1612; CHECK-LABEL: icmp_uge_vi_nxv8i32_3:1613; CHECK:       # %bb.0:1614; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1615; CHECK-NEXT:    vmsgtu.vi v0, v8, 01616; CHECK-NEXT:    ret1617  %vc = icmp uge <vscale x 8 x i32> %va, splat (i32 1)1618  ret <vscale x 8 x i1> %vc1619}1620 1621define <vscale x 8 x i1> @icmp_uge_vi_nxv8i32_4(<vscale x 8 x i32> %va) {1622; CHECK-LABEL: icmp_uge_vi_nxv8i32_4:1623; CHECK:       # %bb.0:1624; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1625; CHECK-NEXT:    vmsgtu.vi v0, v8, -161626; CHECK-NEXT:    ret1627  %vc = icmp uge <vscale x 8 x i32> %va, splat (i32 -15)1628  ret <vscale x 8 x i1> %vc1629}1630 1631define <vscale x 8 x i1> @icmp_uge_vi_nxv8i32_5(<vscale x 8 x i32> %va) {1632; CHECK-LABEL: icmp_uge_vi_nxv8i32_5:1633; CHECK:       # %bb.0:1634; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1635; CHECK-NEXT:    vmsgtu.vi v0, v8, 151636; CHECK-NEXT:    ret1637  %vc = icmp uge <vscale x 8 x i32> %va, splat (i32 16)1638  ret <vscale x 8 x i1> %vc1639}1640 1641define <vscale x 8 x i1> @icmp_ult_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb) {1642; CHECK-LABEL: icmp_ult_vv_nxv8i32:1643; CHECK:       # %bb.0:1644; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1645; CHECK-NEXT:    vmsltu.vv v0, v8, v121646; CHECK-NEXT:    ret1647  %vc = icmp ult <vscale x 8 x i32> %va, %vb1648  ret <vscale x 8 x i1> %vc1649}1650 1651define <vscale x 8 x i1> @icmp_ult_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {1652; CHECK-LABEL: icmp_ult_vx_nxv8i32:1653; CHECK:       # %bb.0:1654; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1655; CHECK-NEXT:    vmsltu.vx v0, v8, a01656; CHECK-NEXT:    ret1657  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01658  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1659  %vc = icmp ult <vscale x 8 x i32> %va, %splat1660  ret <vscale x 8 x i1> %vc1661}1662 1663define <vscale x 8 x i1> @icmp_ult_xv_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {1664; CHECK-LABEL: icmp_ult_xv_nxv8i32:1665; CHECK:       # %bb.0:1666; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1667; CHECK-NEXT:    vmsgtu.vx v0, v8, a01668; CHECK-NEXT:    ret1669  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01670  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1671  %vc = icmp ult <vscale x 8 x i32> %splat, %va1672  ret <vscale x 8 x i1> %vc1673}1674 1675define <vscale x 8 x i1> @icmp_ult_vi_nxv8i32_0(<vscale x 8 x i32> %va) {1676; CHECK-LABEL: icmp_ult_vi_nxv8i32_0:1677; CHECK:       # %bb.0:1678; CHECK-NEXT:    li a0, -161679; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1680; CHECK-NEXT:    vmsltu.vx v0, v8, a01681; CHECK-NEXT:    ret1682  %vc = icmp ult <vscale x 8 x i32> %va, splat (i32 -16)1683  ret <vscale x 8 x i1> %vc1684}1685 1686define <vscale x 8 x i1> @icmp_ult_vi_nxv8i32_1(<vscale x 8 x i32> %va) {1687; CHECK-LABEL: icmp_ult_vi_nxv8i32_1:1688; CHECK:       # %bb.0:1689; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1690; CHECK-NEXT:    vmsleu.vi v0, v8, -161691; CHECK-NEXT:    ret1692  %vc = icmp ult <vscale x 8 x i32> %va, splat (i32 -15)1693  ret <vscale x 8 x i1> %vc1694}1695 1696define <vscale x 8 x i1> @icmp_ult_iv_nxv8i32_1(<vscale x 8 x i32> %va) {1697; CHECK-LABEL: icmp_ult_iv_nxv8i32_1:1698; CHECK:       # %bb.0:1699; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1700; CHECK-NEXT:    vmsgtu.vi v0, v8, -151701; CHECK-NEXT:    ret1702  %vc = icmp ult <vscale x 8 x i32> splat (i32 -15), %va1703  ret <vscale x 8 x i1> %vc1704}1705 1706define <vscale x 8 x i1> @icmp_ult_vi_nxv8i32_2(<vscale x 8 x i32> %va) {1707; CHECK-LABEL: icmp_ult_vi_nxv8i32_2:1708; CHECK:       # %bb.0:1709; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma1710; CHECK-NEXT:    vmclr.m v01711; CHECK-NEXT:    ret1712  %vc = icmp ult <vscale x 8 x i32> %va, splat (i32 0)1713  ret <vscale x 8 x i1> %vc1714}1715 1716define <vscale x 8 x i1> @icmp_ult_vi_nxv8i32_3(<vscale x 8 x i32> %va) {1717; CHECK-LABEL: icmp_ult_vi_nxv8i32_3:1718; CHECK:       # %bb.0:1719; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1720; CHECK-NEXT:    vmseq.vi v0, v8, 01721; CHECK-NEXT:    ret1722  %vc = icmp ult <vscale x 8 x i32> %va, splat (i32 1)1723  ret <vscale x 8 x i1> %vc1724}1725 1726define <vscale x 8 x i1> @icmp_ult_vi_nxv8i32_4(<vscale x 8 x i32> %va) {1727; CHECK-LABEL: icmp_ult_vi_nxv8i32_4:1728; CHECK:       # %bb.0:1729; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1730; CHECK-NEXT:    vmsleu.vi v0, v8, 151731; CHECK-NEXT:    ret1732  %vc = icmp ult <vscale x 8 x i32> %va, splat (i32 16)1733  ret <vscale x 8 x i1> %vc1734}1735 1736define <vscale x 8 x i1> @icmp_ule_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb) {1737; CHECK-LABEL: icmp_ule_vv_nxv8i32:1738; CHECK:       # %bb.0:1739; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1740; CHECK-NEXT:    vmsleu.vv v0, v8, v121741; CHECK-NEXT:    ret1742  %vc = icmp ule <vscale x 8 x i32> %va, %vb1743  ret <vscale x 8 x i1> %vc1744}1745 1746define <vscale x 8 x i1> @icmp_ule_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {1747; CHECK-LABEL: icmp_ule_vx_nxv8i32:1748; CHECK:       # %bb.0:1749; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1750; CHECK-NEXT:    vmsleu.vx v0, v8, a01751; CHECK-NEXT:    ret1752  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01753  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1754  %vc = icmp ule <vscale x 8 x i32> %va, %splat1755  ret <vscale x 8 x i1> %vc1756}1757 1758define <vscale x 8 x i1> @icmp_ule_xv_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {1759; CHECK-LABEL: icmp_ule_xv_nxv8i32:1760; CHECK:       # %bb.0:1761; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1762; CHECK-NEXT:    vmv.v.x v12, a01763; CHECK-NEXT:    vmsleu.vv v0, v12, v81764; CHECK-NEXT:    ret1765  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01766  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1767  %vc = icmp ule <vscale x 8 x i32> %splat, %va1768  ret <vscale x 8 x i1> %vc1769}1770 1771define <vscale x 8 x i1> @icmp_ule_vi_nxv8i32_0(<vscale x 8 x i32> %va) {1772; CHECK-LABEL: icmp_ule_vi_nxv8i32_0:1773; CHECK:       # %bb.0:1774; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1775; CHECK-NEXT:    vmsleu.vi v0, v8, 51776; CHECK-NEXT:    ret1777  %vc = icmp ule <vscale x 8 x i32> %va, splat (i32 5)1778  ret <vscale x 8 x i1> %vc1779}1780 1781define <vscale x 8 x i1> @icmp_sgt_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb) {1782; CHECK-LABEL: icmp_sgt_vv_nxv8i32:1783; CHECK:       # %bb.0:1784; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1785; CHECK-NEXT:    vmslt.vv v0, v12, v81786; CHECK-NEXT:    ret1787  %vc = icmp sgt <vscale x 8 x i32> %va, %vb1788  ret <vscale x 8 x i1> %vc1789}1790 1791define <vscale x 8 x i1> @icmp_sgt_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {1792; CHECK-LABEL: icmp_sgt_vx_nxv8i32:1793; CHECK:       # %bb.0:1794; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1795; CHECK-NEXT:    vmsgt.vx v0, v8, a01796; CHECK-NEXT:    ret1797  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01798  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1799  %vc = icmp sgt <vscale x 8 x i32> %va, %splat1800  ret <vscale x 8 x i1> %vc1801}1802 1803define <vscale x 8 x i1> @icmp_sgt_xv_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {1804; CHECK-LABEL: icmp_sgt_xv_nxv8i32:1805; CHECK:       # %bb.0:1806; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1807; CHECK-NEXT:    vmslt.vx v0, v8, a01808; CHECK-NEXT:    ret1809  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01810  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1811  %vc = icmp sgt <vscale x 8 x i32> %splat, %va1812  ret <vscale x 8 x i1> %vc1813}1814 1815define <vscale x 8 x i1> @icmp_sgt_vi_nxv8i32_0(<vscale x 8 x i32> %va) {1816; CHECK-LABEL: icmp_sgt_vi_nxv8i32_0:1817; CHECK:       # %bb.0:1818; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1819; CHECK-NEXT:    vmsgt.vi v0, v8, 51820; CHECK-NEXT:    ret1821  %vc = icmp sgt <vscale x 8 x i32> %va, splat (i32 5)1822  ret <vscale x 8 x i1> %vc1823}1824 1825define <vscale x 8 x i1> @icmp_sge_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb) {1826; CHECK-LABEL: icmp_sge_vv_nxv8i32:1827; CHECK:       # %bb.0:1828; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1829; CHECK-NEXT:    vmsle.vv v0, v12, v81830; CHECK-NEXT:    ret1831  %vc = icmp sge <vscale x 8 x i32> %va, %vb1832  ret <vscale x 8 x i1> %vc1833}1834 1835define <vscale x 8 x i1> @icmp_sge_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {1836; CHECK-LABEL: icmp_sge_vx_nxv8i32:1837; CHECK:       # %bb.0:1838; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1839; CHECK-NEXT:    vmv.v.x v12, a01840; CHECK-NEXT:    vmsle.vv v0, v12, v81841; CHECK-NEXT:    ret1842  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01843  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1844  %vc = icmp sge <vscale x 8 x i32> %va, %splat1845  ret <vscale x 8 x i1> %vc1846}1847 1848define <vscale x 8 x i1> @icmp_sge_xv_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {1849; CHECK-LABEL: icmp_sge_xv_nxv8i32:1850; CHECK:       # %bb.0:1851; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1852; CHECK-NEXT:    vmsle.vx v0, v8, a01853; CHECK-NEXT:    ret1854  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01855  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1856  %vc = icmp sge <vscale x 8 x i32> %splat, %va1857  ret <vscale x 8 x i1> %vc1858}1859 1860define <vscale x 8 x i1> @icmp_sge_vi_nxv8i32_0(<vscale x 8 x i32> %va) {1861; CHECK-LABEL: icmp_sge_vi_nxv8i32_0:1862; CHECK:       # %bb.0:1863; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1864; CHECK-NEXT:    vmv.v.i v12, -161865; CHECK-NEXT:    vmsle.vv v0, v12, v81866; CHECK-NEXT:    ret1867  %vc = icmp sge <vscale x 8 x i32> %va, splat (i32 -16)1868  ret <vscale x 8 x i1> %vc1869}1870 1871define <vscale x 8 x i1> @icmp_sge_vi_nxv8i32_1(<vscale x 8 x i32> %va) {1872; CHECK-LABEL: icmp_sge_vi_nxv8i32_1:1873; CHECK:       # %bb.0:1874; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1875; CHECK-NEXT:    vmsgt.vi v0, v8, -161876; CHECK-NEXT:    ret1877  %vc = icmp sge <vscale x 8 x i32> %va, splat (i32 -15)1878  ret <vscale x 8 x i1> %vc1879}1880 1881define <vscale x 8 x i1> @icmp_sge_iv_nxv8i32_1(<vscale x 8 x i32> %va) {1882; CHECK-LABEL: icmp_sge_iv_nxv8i32_1:1883; CHECK:       # %bb.0:1884; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1885; CHECK-NEXT:    vmsle.vi v0, v8, -151886; CHECK-NEXT:    ret1887  %vc = icmp sge <vscale x 8 x i32> splat (i32 -15), %va1888  ret <vscale x 8 x i1> %vc1889}1890 1891define <vscale x 8 x i1> @icmp_sge_vi_nxv8i32_2(<vscale x 8 x i32> %va) {1892; CHECK-LABEL: icmp_sge_vi_nxv8i32_2:1893; CHECK:       # %bb.0:1894; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1895; CHECK-NEXT:    vmsgt.vi v0, v8, -11896; CHECK-NEXT:    ret1897  %vc = icmp sge <vscale x 8 x i32> %va, splat (i32 0)1898  ret <vscale x 8 x i1> %vc1899}1900 1901define <vscale x 8 x i1> @icmp_sge_vi_nxv8i32_3(<vscale x 8 x i32> %va) {1902; CHECK-LABEL: icmp_sge_vi_nxv8i32_3:1903; CHECK:       # %bb.0:1904; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1905; CHECK-NEXT:    vmsgt.vi v0, v8, 151906; CHECK-NEXT:    ret1907  %vc = icmp sge <vscale x 8 x i32> %va, splat (i32 16)1908  ret <vscale x 8 x i1> %vc1909}1910 1911define <vscale x 8 x i1> @icmp_slt_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb) {1912; CHECK-LABEL: icmp_slt_vv_nxv8i32:1913; CHECK:       # %bb.0:1914; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1915; CHECK-NEXT:    vmslt.vv v0, v8, v121916; CHECK-NEXT:    ret1917  %vc = icmp slt <vscale x 8 x i32> %va, %vb1918  ret <vscale x 8 x i1> %vc1919}1920 1921define <vscale x 8 x i1> @icmp_slt_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {1922; CHECK-LABEL: icmp_slt_vx_nxv8i32:1923; CHECK:       # %bb.0:1924; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1925; CHECK-NEXT:    vmslt.vx v0, v8, a01926; CHECK-NEXT:    ret1927  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01928  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1929  %vc = icmp slt <vscale x 8 x i32> %va, %splat1930  ret <vscale x 8 x i1> %vc1931}1932 1933define <vscale x 8 x i1> @icmp_slt_xv_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {1934; CHECK-LABEL: icmp_slt_xv_nxv8i32:1935; CHECK:       # %bb.0:1936; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1937; CHECK-NEXT:    vmsgt.vx v0, v8, a01938; CHECK-NEXT:    ret1939  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 01940  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1941  %vc = icmp slt <vscale x 8 x i32> %splat, %va1942  ret <vscale x 8 x i1> %vc1943}1944 1945define <vscale x 8 x i1> @icmp_slt_vi_nxv8i32_0(<vscale x 8 x i32> %va) {1946; CHECK-LABEL: icmp_slt_vi_nxv8i32_0:1947; CHECK:       # %bb.0:1948; CHECK-NEXT:    li a0, -161949; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma1950; CHECK-NEXT:    vmslt.vx v0, v8, a01951; CHECK-NEXT:    ret1952  %vc = icmp slt <vscale x 8 x i32> %va, splat (i32 -16)1953  ret <vscale x 8 x i1> %vc1954}1955 1956define <vscale x 8 x i1> @icmp_slt_vi_nxv8i32_1(<vscale x 8 x i32> %va) {1957; CHECK-LABEL: icmp_slt_vi_nxv8i32_1:1958; CHECK:       # %bb.0:1959; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1960; CHECK-NEXT:    vmsle.vi v0, v8, -161961; CHECK-NEXT:    ret1962  %vc = icmp slt <vscale x 8 x i32> %va, splat (i32 -15)1963  ret <vscale x 8 x i1> %vc1964}1965 1966define <vscale x 8 x i1> @icmp_slt_iv_nxv8i32_1(<vscale x 8 x i32> %va) {1967; CHECK-LABEL: icmp_slt_iv_nxv8i32_1:1968; CHECK:       # %bb.0:1969; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1970; CHECK-NEXT:    vmsgt.vi v0, v8, -151971; CHECK-NEXT:    ret1972  %vc = icmp slt <vscale x 8 x i32> splat (i32 -15), %va1973  ret <vscale x 8 x i1> %vc1974}1975 1976define <vscale x 8 x i1> @icmp_slt_vi_nxv8i32_2(<vscale x 8 x i32> %va) {1977; CHECK-LABEL: icmp_slt_vi_nxv8i32_2:1978; CHECK:       # %bb.0:1979; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1980; CHECK-NEXT:    vmsle.vi v0, v8, -11981; CHECK-NEXT:    ret1982  %vc = icmp slt <vscale x 8 x i32> %va, splat (i32 0)1983  ret <vscale x 8 x i1> %vc1984}1985 1986define <vscale x 8 x i1> @icmp_slt_vi_nxv8i32_3(<vscale x 8 x i32> %va) {1987; CHECK-LABEL: icmp_slt_vi_nxv8i32_3:1988; CHECK:       # %bb.0:1989; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma1990; CHECK-NEXT:    vmsle.vi v0, v8, 151991; CHECK-NEXT:    ret1992  %vc = icmp slt <vscale x 8 x i32> %va, splat (i32 16)1993  ret <vscale x 8 x i1> %vc1994}1995 1996define <vscale x 8 x i1> @icmp_sle_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb) {1997; CHECK-LABEL: icmp_sle_vv_nxv8i32:1998; CHECK:       # %bb.0:1999; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2000; CHECK-NEXT:    vmsle.vv v0, v8, v122001; CHECK-NEXT:    ret2002  %vc = icmp sle <vscale x 8 x i32> %va, %vb2003  ret <vscale x 8 x i1> %vc2004}2005 2006define <vscale x 8 x i1> @icmp_sle_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {2007; CHECK-LABEL: icmp_sle_vx_nxv8i32:2008; CHECK:       # %bb.0:2009; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma2010; CHECK-NEXT:    vmsle.vx v0, v8, a02011; CHECK-NEXT:    ret2012  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 02013  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer2014  %vc = icmp sle <vscale x 8 x i32> %va, %splat2015  ret <vscale x 8 x i1> %vc2016}2017 2018define <vscale x 8 x i1> @icmp_sle_xv_nxv8i32(<vscale x 8 x i32> %va, i32 %b) {2019; CHECK-LABEL: icmp_sle_xv_nxv8i32:2020; CHECK:       # %bb.0:2021; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma2022; CHECK-NEXT:    vmv.v.x v12, a02023; CHECK-NEXT:    vmsle.vv v0, v12, v82024; CHECK-NEXT:    ret2025  %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 02026  %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer2027  %vc = icmp sle <vscale x 8 x i32> %splat, %va2028  ret <vscale x 8 x i1> %vc2029}2030 2031define <vscale x 8 x i1> @icmp_sle_vi_nxv8i32_0(<vscale x 8 x i32> %va) {2032; CHECK-LABEL: icmp_sle_vi_nxv8i32_0:2033; CHECK:       # %bb.0:2034; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma2035; CHECK-NEXT:    vmsle.vi v0, v8, 52036; CHECK-NEXT:    ret2037  %vc = icmp sle <vscale x 8 x i32> %va, splat (i32 5)2038  ret <vscale x 8 x i1> %vc2039}2040 2041define <vscale x 8 x i1> @icmp_eq_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb) {2042; CHECK-LABEL: icmp_eq_vv_nxv8i64:2043; CHECK:       # %bb.0:2044; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2045; CHECK-NEXT:    vmseq.vv v0, v8, v162046; CHECK-NEXT:    ret2047  %vc = icmp eq <vscale x 8 x i64> %va, %vb2048  ret <vscale x 8 x i1> %vc2049}2050 2051define <vscale x 8 x i1> @icmp_eq_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2052; RV32-LABEL: icmp_eq_vx_nxv8i64:2053; RV32:       # %bb.0:2054; RV32-NEXT:    addi sp, sp, -162055; RV32-NEXT:    .cfi_def_cfa_offset 162056; RV32-NEXT:    sw a0, 8(sp)2057; RV32-NEXT:    sw a1, 12(sp)2058; RV32-NEXT:    addi a0, sp, 82059; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2060; RV32-NEXT:    vlse64.v v16, (a0), zero2061; RV32-NEXT:    vmseq.vv v0, v8, v162062; RV32-NEXT:    addi sp, sp, 162063; RV32-NEXT:    .cfi_def_cfa_offset 02064; RV32-NEXT:    ret2065;2066; RV64-LABEL: icmp_eq_vx_nxv8i64:2067; RV64:       # %bb.0:2068; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2069; RV64-NEXT:    vmseq.vx v0, v8, a02070; RV64-NEXT:    ret2071  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02072  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2073  %vc = icmp eq <vscale x 8 x i64> %va, %splat2074  ret <vscale x 8 x i1> %vc2075}2076 2077define <vscale x 8 x i1> @icmp_eq_xv_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2078; RV32-LABEL: icmp_eq_xv_nxv8i64:2079; RV32:       # %bb.0:2080; RV32-NEXT:    addi sp, sp, -162081; RV32-NEXT:    .cfi_def_cfa_offset 162082; RV32-NEXT:    sw a0, 8(sp)2083; RV32-NEXT:    sw a1, 12(sp)2084; RV32-NEXT:    addi a0, sp, 82085; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2086; RV32-NEXT:    vlse64.v v16, (a0), zero2087; RV32-NEXT:    vmseq.vv v0, v16, v82088; RV32-NEXT:    addi sp, sp, 162089; RV32-NEXT:    .cfi_def_cfa_offset 02090; RV32-NEXT:    ret2091;2092; RV64-LABEL: icmp_eq_xv_nxv8i64:2093; RV64:       # %bb.0:2094; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2095; RV64-NEXT:    vmseq.vx v0, v8, a02096; RV64-NEXT:    ret2097  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02098  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2099  %vc = icmp eq <vscale x 8 x i64> %splat, %va2100  ret <vscale x 8 x i1> %vc2101}2102 2103define <vscale x 8 x i1> @icmp_eq_vi_nxv8i64_0(<vscale x 8 x i64> %va) {2104; CHECK-LABEL: icmp_eq_vi_nxv8i64_0:2105; CHECK:       # %bb.0:2106; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2107; CHECK-NEXT:    vmseq.vi v0, v8, 02108; CHECK-NEXT:    ret2109  %vc = icmp eq <vscale x 8 x i64> %va, splat (i64 0)2110  ret <vscale x 8 x i1> %vc2111}2112 2113define <vscale x 8 x i1> @icmp_eq_vi_nxv8i64_1(<vscale x 8 x i64> %va) {2114; CHECK-LABEL: icmp_eq_vi_nxv8i64_1:2115; CHECK:       # %bb.0:2116; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2117; CHECK-NEXT:    vmseq.vi v0, v8, 52118; CHECK-NEXT:    ret2119  %vc = icmp eq <vscale x 8 x i64> %va, splat (i64 5)2120  ret <vscale x 8 x i1> %vc2121}2122 2123define <vscale x 8 x i1> @icmp_eq_iv_nxv8i64_1(<vscale x 8 x i64> %va) {2124; CHECK-LABEL: icmp_eq_iv_nxv8i64_1:2125; CHECK:       # %bb.0:2126; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2127; CHECK-NEXT:    vmseq.vi v0, v8, 52128; CHECK-NEXT:    ret2129  %vc = icmp eq <vscale x 8 x i64> splat (i64 5), %va2130  ret <vscale x 8 x i1> %vc2131}2132 2133define <vscale x 8 x i1> @icmp_ne_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb) {2134; CHECK-LABEL: icmp_ne_vv_nxv8i64:2135; CHECK:       # %bb.0:2136; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2137; CHECK-NEXT:    vmsne.vv v0, v8, v162138; CHECK-NEXT:    ret2139  %vc = icmp ne <vscale x 8 x i64> %va, %vb2140  ret <vscale x 8 x i1> %vc2141}2142 2143define <vscale x 8 x i1> @icmp_ne_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2144; RV32-LABEL: icmp_ne_vx_nxv8i64:2145; RV32:       # %bb.0:2146; RV32-NEXT:    addi sp, sp, -162147; RV32-NEXT:    .cfi_def_cfa_offset 162148; RV32-NEXT:    sw a0, 8(sp)2149; RV32-NEXT:    sw a1, 12(sp)2150; RV32-NEXT:    addi a0, sp, 82151; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2152; RV32-NEXT:    vlse64.v v16, (a0), zero2153; RV32-NEXT:    vmsne.vv v0, v8, v162154; RV32-NEXT:    addi sp, sp, 162155; RV32-NEXT:    .cfi_def_cfa_offset 02156; RV32-NEXT:    ret2157;2158; RV64-LABEL: icmp_ne_vx_nxv8i64:2159; RV64:       # %bb.0:2160; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2161; RV64-NEXT:    vmsne.vx v0, v8, a02162; RV64-NEXT:    ret2163  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02164  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2165  %vc = icmp ne <vscale x 8 x i64> %va, %splat2166  ret <vscale x 8 x i1> %vc2167}2168 2169define <vscale x 8 x i1> @icmp_ne_xv_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2170; RV32-LABEL: icmp_ne_xv_nxv8i64:2171; RV32:       # %bb.0:2172; RV32-NEXT:    addi sp, sp, -162173; RV32-NEXT:    .cfi_def_cfa_offset 162174; RV32-NEXT:    sw a0, 8(sp)2175; RV32-NEXT:    sw a1, 12(sp)2176; RV32-NEXT:    addi a0, sp, 82177; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2178; RV32-NEXT:    vlse64.v v16, (a0), zero2179; RV32-NEXT:    vmsne.vv v0, v16, v82180; RV32-NEXT:    addi sp, sp, 162181; RV32-NEXT:    .cfi_def_cfa_offset 02182; RV32-NEXT:    ret2183;2184; RV64-LABEL: icmp_ne_xv_nxv8i64:2185; RV64:       # %bb.0:2186; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2187; RV64-NEXT:    vmsne.vx v0, v8, a02188; RV64-NEXT:    ret2189  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02190  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2191  %vc = icmp ne <vscale x 8 x i64> %splat, %va2192  ret <vscale x 8 x i1> %vc2193}2194 2195define <vscale x 8 x i1> @icmp_ne_vi_nxv8i64_0(<vscale x 8 x i64> %va) {2196; CHECK-LABEL: icmp_ne_vi_nxv8i64_0:2197; CHECK:       # %bb.0:2198; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2199; CHECK-NEXT:    vmsne.vi v0, v8, 52200; CHECK-NEXT:    ret2201  %vc = icmp ne <vscale x 8 x i64> %va, splat (i64 5)2202  ret <vscale x 8 x i1> %vc2203}2204 2205define <vscale x 8 x i1> @icmp_ugt_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb) {2206; CHECK-LABEL: icmp_ugt_vv_nxv8i64:2207; CHECK:       # %bb.0:2208; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2209; CHECK-NEXT:    vmsltu.vv v0, v16, v82210; CHECK-NEXT:    ret2211  %vc = icmp ugt <vscale x 8 x i64> %va, %vb2212  ret <vscale x 8 x i1> %vc2213}2214 2215define <vscale x 8 x i1> @icmp_ugt_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2216; RV32-LABEL: icmp_ugt_vx_nxv8i64:2217; RV32:       # %bb.0:2218; RV32-NEXT:    addi sp, sp, -162219; RV32-NEXT:    .cfi_def_cfa_offset 162220; RV32-NEXT:    sw a0, 8(sp)2221; RV32-NEXT:    sw a1, 12(sp)2222; RV32-NEXT:    addi a0, sp, 82223; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2224; RV32-NEXT:    vlse64.v v16, (a0), zero2225; RV32-NEXT:    vmsltu.vv v0, v16, v82226; RV32-NEXT:    addi sp, sp, 162227; RV32-NEXT:    .cfi_def_cfa_offset 02228; RV32-NEXT:    ret2229;2230; RV64-LABEL: icmp_ugt_vx_nxv8i64:2231; RV64:       # %bb.0:2232; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2233; RV64-NEXT:    vmsgtu.vx v0, v8, a02234; RV64-NEXT:    ret2235  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02236  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2237  %vc = icmp ugt <vscale x 8 x i64> %va, %splat2238  ret <vscale x 8 x i1> %vc2239}2240 2241define <vscale x 8 x i1> @icmp_ugt_xv_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2242; RV32-LABEL: icmp_ugt_xv_nxv8i64:2243; RV32:       # %bb.0:2244; RV32-NEXT:    addi sp, sp, -162245; RV32-NEXT:    .cfi_def_cfa_offset 162246; RV32-NEXT:    sw a0, 8(sp)2247; RV32-NEXT:    sw a1, 12(sp)2248; RV32-NEXT:    addi a0, sp, 82249; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2250; RV32-NEXT:    vlse64.v v16, (a0), zero2251; RV32-NEXT:    vmsltu.vv v0, v8, v162252; RV32-NEXT:    addi sp, sp, 162253; RV32-NEXT:    .cfi_def_cfa_offset 02254; RV32-NEXT:    ret2255;2256; RV64-LABEL: icmp_ugt_xv_nxv8i64:2257; RV64:       # %bb.0:2258; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2259; RV64-NEXT:    vmsltu.vx v0, v8, a02260; RV64-NEXT:    ret2261  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02262  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2263  %vc = icmp ugt <vscale x 8 x i64> %splat, %va2264  ret <vscale x 8 x i1> %vc2265}2266 2267define <vscale x 8 x i1> @icmp_ugt_vi_nxv8i64_0(<vscale x 8 x i64> %va) {2268; CHECK-LABEL: icmp_ugt_vi_nxv8i64_0:2269; CHECK:       # %bb.0:2270; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2271; CHECK-NEXT:    vmsgtu.vi v0, v8, 52272; CHECK-NEXT:    ret2273  %vc = icmp ugt <vscale x 8 x i64> %va, splat (i64 5)2274  ret <vscale x 8 x i1> %vc2275}2276 2277define <vscale x 8 x i1> @icmp_uge_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb) {2278; CHECK-LABEL: icmp_uge_vv_nxv8i64:2279; CHECK:       # %bb.0:2280; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2281; CHECK-NEXT:    vmsleu.vv v0, v16, v82282; CHECK-NEXT:    ret2283  %vc = icmp uge <vscale x 8 x i64> %va, %vb2284  ret <vscale x 8 x i1> %vc2285}2286 2287define <vscale x 8 x i1> @icmp_uge_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2288; RV32-LABEL: icmp_uge_vx_nxv8i64:2289; RV32:       # %bb.0:2290; RV32-NEXT:    addi sp, sp, -162291; RV32-NEXT:    .cfi_def_cfa_offset 162292; RV32-NEXT:    sw a0, 8(sp)2293; RV32-NEXT:    sw a1, 12(sp)2294; RV32-NEXT:    addi a0, sp, 82295; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2296; RV32-NEXT:    vlse64.v v16, (a0), zero2297; RV32-NEXT:    vmsleu.vv v0, v16, v82298; RV32-NEXT:    addi sp, sp, 162299; RV32-NEXT:    .cfi_def_cfa_offset 02300; RV32-NEXT:    ret2301;2302; RV64-LABEL: icmp_uge_vx_nxv8i64:2303; RV64:       # %bb.0:2304; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2305; RV64-NEXT:    vmv.v.x v16, a02306; RV64-NEXT:    vmsleu.vv v0, v16, v82307; RV64-NEXT:    ret2308  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02309  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2310  %vc = icmp uge <vscale x 8 x i64> %va, %splat2311  ret <vscale x 8 x i1> %vc2312}2313 2314define <vscale x 8 x i1> @icmp_uge_xv_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2315; RV32-LABEL: icmp_uge_xv_nxv8i64:2316; RV32:       # %bb.0:2317; RV32-NEXT:    addi sp, sp, -162318; RV32-NEXT:    .cfi_def_cfa_offset 162319; RV32-NEXT:    sw a0, 8(sp)2320; RV32-NEXT:    sw a1, 12(sp)2321; RV32-NEXT:    addi a0, sp, 82322; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2323; RV32-NEXT:    vlse64.v v16, (a0), zero2324; RV32-NEXT:    vmsleu.vv v0, v8, v162325; RV32-NEXT:    addi sp, sp, 162326; RV32-NEXT:    .cfi_def_cfa_offset 02327; RV32-NEXT:    ret2328;2329; RV64-LABEL: icmp_uge_xv_nxv8i64:2330; RV64:       # %bb.0:2331; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2332; RV64-NEXT:    vmsleu.vx v0, v8, a02333; RV64-NEXT:    ret2334  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02335  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2336  %vc = icmp uge <vscale x 8 x i64> %splat, %va2337  ret <vscale x 8 x i1> %vc2338}2339 2340define <vscale x 8 x i1> @icmp_uge_vi_nxv8i64_0(<vscale x 8 x i64> %va) {2341; CHECK-LABEL: icmp_uge_vi_nxv8i64_0:2342; CHECK:       # %bb.0:2343; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2344; CHECK-NEXT:    vmv.v.i v16, -162345; CHECK-NEXT:    vmsleu.vv v0, v16, v82346; CHECK-NEXT:    ret2347  %vc = icmp uge <vscale x 8 x i64> %va, splat (i64 -16)2348  ret <vscale x 8 x i1> %vc2349}2350 2351define <vscale x 8 x i1> @icmp_uge_vi_nxv8i64_1(<vscale x 8 x i64> %va) {2352; CHECK-LABEL: icmp_uge_vi_nxv8i64_1:2353; CHECK:       # %bb.0:2354; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2355; CHECK-NEXT:    vmsgtu.vi v0, v8, 142356; CHECK-NEXT:    ret2357  %vc = icmp uge <vscale x 8 x i64> %va, splat (i64 15)2358  ret <vscale x 8 x i1> %vc2359}2360 2361define <vscale x 8 x i1> @icmp_uge_iv_nxv8i64_1(<vscale x 8 x i64> %va) {2362; CHECK-LABEL: icmp_uge_iv_nxv8i64_1:2363; CHECK:       # %bb.0:2364; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2365; CHECK-NEXT:    vmsleu.vi v0, v8, 152366; CHECK-NEXT:    ret2367  %vc = icmp uge <vscale x 8 x i64> splat (i64 15), %va2368  ret <vscale x 8 x i1> %vc2369}2370 2371define <vscale x 8 x i1> @icmp_uge_vi_nxv8i64_2(<vscale x 8 x i64> %va) {2372; CHECK-LABEL: icmp_uge_vi_nxv8i64_2:2373; CHECK:       # %bb.0:2374; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma2375; CHECK-NEXT:    vmset.m v02376; CHECK-NEXT:    ret2377  %vc = icmp uge <vscale x 8 x i64> %va, splat (i64 0)2378  ret <vscale x 8 x i1> %vc2379}2380 2381define <vscale x 8 x i1> @icmp_uge_vi_nxv8i64_3(<vscale x 8 x i64> %va) {2382; CHECK-LABEL: icmp_uge_vi_nxv8i64_3:2383; CHECK:       # %bb.0:2384; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2385; CHECK-NEXT:    vmsgtu.vi v0, v8, 02386; CHECK-NEXT:    ret2387  %vc = icmp uge <vscale x 8 x i64> %va, splat (i64 1)2388  ret <vscale x 8 x i1> %vc2389}2390 2391define <vscale x 8 x i1> @icmp_uge_vi_nxv8i64_4(<vscale x 8 x i64> %va) {2392; CHECK-LABEL: icmp_uge_vi_nxv8i64_4:2393; CHECK:       # %bb.0:2394; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2395; CHECK-NEXT:    vmsgtu.vi v0, v8, -162396; CHECK-NEXT:    ret2397  %vc = icmp uge <vscale x 8 x i64> %va, splat (i64 -15)2398  ret <vscale x 8 x i1> %vc2399}2400 2401define <vscale x 8 x i1> @icmp_uge_vi_nxv8i64_5(<vscale x 8 x i64> %va) {2402; CHECK-LABEL: icmp_uge_vi_nxv8i64_5:2403; CHECK:       # %bb.0:2404; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2405; CHECK-NEXT:    vmsgtu.vi v0, v8, 152406; CHECK-NEXT:    ret2407  %vc = icmp uge <vscale x 8 x i64> %va, splat (i64 16)2408  ret <vscale x 8 x i1> %vc2409}2410 2411define <vscale x 8 x i1> @icmp_ult_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb) {2412; CHECK-LABEL: icmp_ult_vv_nxv8i64:2413; CHECK:       # %bb.0:2414; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2415; CHECK-NEXT:    vmsltu.vv v0, v8, v162416; CHECK-NEXT:    ret2417  %vc = icmp ult <vscale x 8 x i64> %va, %vb2418  ret <vscale x 8 x i1> %vc2419}2420 2421define <vscale x 8 x i1> @icmp_ult_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2422; RV32-LABEL: icmp_ult_vx_nxv8i64:2423; RV32:       # %bb.0:2424; RV32-NEXT:    addi sp, sp, -162425; RV32-NEXT:    .cfi_def_cfa_offset 162426; RV32-NEXT:    sw a0, 8(sp)2427; RV32-NEXT:    sw a1, 12(sp)2428; RV32-NEXT:    addi a0, sp, 82429; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2430; RV32-NEXT:    vlse64.v v16, (a0), zero2431; RV32-NEXT:    vmsltu.vv v0, v8, v162432; RV32-NEXT:    addi sp, sp, 162433; RV32-NEXT:    .cfi_def_cfa_offset 02434; RV32-NEXT:    ret2435;2436; RV64-LABEL: icmp_ult_vx_nxv8i64:2437; RV64:       # %bb.0:2438; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2439; RV64-NEXT:    vmsltu.vx v0, v8, a02440; RV64-NEXT:    ret2441  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02442  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2443  %vc = icmp ult <vscale x 8 x i64> %va, %splat2444  ret <vscale x 8 x i1> %vc2445}2446 2447define <vscale x 8 x i1> @icmp_ult_xv_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2448; RV32-LABEL: icmp_ult_xv_nxv8i64:2449; RV32:       # %bb.0:2450; RV32-NEXT:    addi sp, sp, -162451; RV32-NEXT:    .cfi_def_cfa_offset 162452; RV32-NEXT:    sw a0, 8(sp)2453; RV32-NEXT:    sw a1, 12(sp)2454; RV32-NEXT:    addi a0, sp, 82455; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2456; RV32-NEXT:    vlse64.v v16, (a0), zero2457; RV32-NEXT:    vmsltu.vv v0, v16, v82458; RV32-NEXT:    addi sp, sp, 162459; RV32-NEXT:    .cfi_def_cfa_offset 02460; RV32-NEXT:    ret2461;2462; RV64-LABEL: icmp_ult_xv_nxv8i64:2463; RV64:       # %bb.0:2464; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2465; RV64-NEXT:    vmsgtu.vx v0, v8, a02466; RV64-NEXT:    ret2467  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02468  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2469  %vc = icmp ult <vscale x 8 x i64> %splat, %va2470  ret <vscale x 8 x i1> %vc2471}2472 2473define <vscale x 8 x i1> @icmp_ult_vi_nxv8i64_0(<vscale x 8 x i64> %va) {2474; CHECK-LABEL: icmp_ult_vi_nxv8i64_0:2475; CHECK:       # %bb.0:2476; CHECK-NEXT:    li a0, -162477; CHECK-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2478; CHECK-NEXT:    vmsltu.vx v0, v8, a02479; CHECK-NEXT:    ret2480  %vc = icmp ult <vscale x 8 x i64> %va, splat (i64 -16)2481  ret <vscale x 8 x i1> %vc2482}2483 2484define <vscale x 8 x i1> @icmp_ult_vi_nxv8i64_1(<vscale x 8 x i64> %va) {2485; CHECK-LABEL: icmp_ult_vi_nxv8i64_1:2486; CHECK:       # %bb.0:2487; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2488; CHECK-NEXT:    vmsleu.vi v0, v8, -162489; CHECK-NEXT:    ret2490  %vc = icmp ult <vscale x 8 x i64> %va, splat (i64 -15)2491  ret <vscale x 8 x i1> %vc2492}2493 2494define <vscale x 8 x i1> @icmp_ult_iv_nxv8i64_1(<vscale x 8 x i64> %va) {2495; CHECK-LABEL: icmp_ult_iv_nxv8i64_1:2496; CHECK:       # %bb.0:2497; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2498; CHECK-NEXT:    vmsgtu.vi v0, v8, -152499; CHECK-NEXT:    ret2500  %vc = icmp ult <vscale x 8 x i64> splat (i64 -15), %va2501  ret <vscale x 8 x i1> %vc2502}2503 2504define <vscale x 8 x i1> @icmp_ult_vi_nxv8i64_2(<vscale x 8 x i64> %va) {2505; CHECK-LABEL: icmp_ult_vi_nxv8i64_2:2506; CHECK:       # %bb.0:2507; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma2508; CHECK-NEXT:    vmclr.m v02509; CHECK-NEXT:    ret2510  %vc = icmp ult <vscale x 8 x i64> %va, splat (i64 0)2511  ret <vscale x 8 x i1> %vc2512}2513 2514define <vscale x 8 x i1> @icmp_ult_vi_nxv8i64_3(<vscale x 8 x i64> %va) {2515; CHECK-LABEL: icmp_ult_vi_nxv8i64_3:2516; CHECK:       # %bb.0:2517; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2518; CHECK-NEXT:    vmseq.vi v0, v8, 02519; CHECK-NEXT:    ret2520  %vc = icmp ult <vscale x 8 x i64> %va, splat (i64 1)2521  ret <vscale x 8 x i1> %vc2522}2523 2524define <vscale x 8 x i1> @icmp_ult_vi_nxv8i64_4(<vscale x 8 x i64> %va) {2525; CHECK-LABEL: icmp_ult_vi_nxv8i64_4:2526; CHECK:       # %bb.0:2527; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2528; CHECK-NEXT:    vmsleu.vi v0, v8, 152529; CHECK-NEXT:    ret2530  %vc = icmp ult <vscale x 8 x i64> %va, splat (i64 16)2531  ret <vscale x 8 x i1> %vc2532}2533 2534define <vscale x 8 x i1> @icmp_ule_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb) {2535; CHECK-LABEL: icmp_ule_vv_nxv8i64:2536; CHECK:       # %bb.0:2537; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2538; CHECK-NEXT:    vmsleu.vv v0, v8, v162539; CHECK-NEXT:    ret2540  %vc = icmp ule <vscale x 8 x i64> %va, %vb2541  ret <vscale x 8 x i1> %vc2542}2543 2544define <vscale x 8 x i1> @icmp_ule_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2545; RV32-LABEL: icmp_ule_vx_nxv8i64:2546; RV32:       # %bb.0:2547; RV32-NEXT:    addi sp, sp, -162548; RV32-NEXT:    .cfi_def_cfa_offset 162549; RV32-NEXT:    sw a0, 8(sp)2550; RV32-NEXT:    sw a1, 12(sp)2551; RV32-NEXT:    addi a0, sp, 82552; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2553; RV32-NEXT:    vlse64.v v16, (a0), zero2554; RV32-NEXT:    vmsleu.vv v0, v8, v162555; RV32-NEXT:    addi sp, sp, 162556; RV32-NEXT:    .cfi_def_cfa_offset 02557; RV32-NEXT:    ret2558;2559; RV64-LABEL: icmp_ule_vx_nxv8i64:2560; RV64:       # %bb.0:2561; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2562; RV64-NEXT:    vmsleu.vx v0, v8, a02563; RV64-NEXT:    ret2564  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02565  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2566  %vc = icmp ule <vscale x 8 x i64> %va, %splat2567  ret <vscale x 8 x i1> %vc2568}2569 2570define <vscale x 8 x i1> @icmp_ule_xv_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2571; RV32-LABEL: icmp_ule_xv_nxv8i64:2572; RV32:       # %bb.0:2573; RV32-NEXT:    addi sp, sp, -162574; RV32-NEXT:    .cfi_def_cfa_offset 162575; RV32-NEXT:    sw a0, 8(sp)2576; RV32-NEXT:    sw a1, 12(sp)2577; RV32-NEXT:    addi a0, sp, 82578; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2579; RV32-NEXT:    vlse64.v v16, (a0), zero2580; RV32-NEXT:    vmsleu.vv v0, v16, v82581; RV32-NEXT:    addi sp, sp, 162582; RV32-NEXT:    .cfi_def_cfa_offset 02583; RV32-NEXT:    ret2584;2585; RV64-LABEL: icmp_ule_xv_nxv8i64:2586; RV64:       # %bb.0:2587; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2588; RV64-NEXT:    vmv.v.x v16, a02589; RV64-NEXT:    vmsleu.vv v0, v16, v82590; RV64-NEXT:    ret2591  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02592  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2593  %vc = icmp ule <vscale x 8 x i64> %splat, %va2594  ret <vscale x 8 x i1> %vc2595}2596 2597define <vscale x 8 x i1> @icmp_ule_vi_nxv8i64_0(<vscale x 8 x i64> %va) {2598; CHECK-LABEL: icmp_ule_vi_nxv8i64_0:2599; CHECK:       # %bb.0:2600; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2601; CHECK-NEXT:    vmsleu.vi v0, v8, 52602; CHECK-NEXT:    ret2603  %vc = icmp ule <vscale x 8 x i64> %va, splat (i64 5)2604  ret <vscale x 8 x i1> %vc2605}2606 2607define <vscale x 8 x i1> @icmp_sgt_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb) {2608; CHECK-LABEL: icmp_sgt_vv_nxv8i64:2609; CHECK:       # %bb.0:2610; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2611; CHECK-NEXT:    vmslt.vv v0, v16, v82612; CHECK-NEXT:    ret2613  %vc = icmp sgt <vscale x 8 x i64> %va, %vb2614  ret <vscale x 8 x i1> %vc2615}2616 2617define <vscale x 8 x i1> @icmp_sgt_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2618; RV32-LABEL: icmp_sgt_vx_nxv8i64:2619; RV32:       # %bb.0:2620; RV32-NEXT:    addi sp, sp, -162621; RV32-NEXT:    .cfi_def_cfa_offset 162622; RV32-NEXT:    sw a0, 8(sp)2623; RV32-NEXT:    sw a1, 12(sp)2624; RV32-NEXT:    addi a0, sp, 82625; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2626; RV32-NEXT:    vlse64.v v16, (a0), zero2627; RV32-NEXT:    vmslt.vv v0, v16, v82628; RV32-NEXT:    addi sp, sp, 162629; RV32-NEXT:    .cfi_def_cfa_offset 02630; RV32-NEXT:    ret2631;2632; RV64-LABEL: icmp_sgt_vx_nxv8i64:2633; RV64:       # %bb.0:2634; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2635; RV64-NEXT:    vmsgt.vx v0, v8, a02636; RV64-NEXT:    ret2637  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02638  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2639  %vc = icmp sgt <vscale x 8 x i64> %va, %splat2640  ret <vscale x 8 x i1> %vc2641}2642 2643define <vscale x 8 x i1> @icmp_sgt_xv_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2644; RV32-LABEL: icmp_sgt_xv_nxv8i64:2645; RV32:       # %bb.0:2646; RV32-NEXT:    addi sp, sp, -162647; RV32-NEXT:    .cfi_def_cfa_offset 162648; RV32-NEXT:    sw a0, 8(sp)2649; RV32-NEXT:    sw a1, 12(sp)2650; RV32-NEXT:    addi a0, sp, 82651; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2652; RV32-NEXT:    vlse64.v v16, (a0), zero2653; RV32-NEXT:    vmslt.vv v0, v8, v162654; RV32-NEXT:    addi sp, sp, 162655; RV32-NEXT:    .cfi_def_cfa_offset 02656; RV32-NEXT:    ret2657;2658; RV64-LABEL: icmp_sgt_xv_nxv8i64:2659; RV64:       # %bb.0:2660; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2661; RV64-NEXT:    vmslt.vx v0, v8, a02662; RV64-NEXT:    ret2663  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02664  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2665  %vc = icmp sgt <vscale x 8 x i64> %splat, %va2666  ret <vscale x 8 x i1> %vc2667}2668 2669define <vscale x 8 x i1> @icmp_sgt_vi_nxv8i64_0(<vscale x 8 x i64> %va) {2670; CHECK-LABEL: icmp_sgt_vi_nxv8i64_0:2671; CHECK:       # %bb.0:2672; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2673; CHECK-NEXT:    vmsgt.vi v0, v8, 52674; CHECK-NEXT:    ret2675  %vc = icmp sgt <vscale x 8 x i64> %va, splat (i64 5)2676  ret <vscale x 8 x i1> %vc2677}2678 2679define <vscale x 8 x i1> @icmp_sge_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb) {2680; CHECK-LABEL: icmp_sge_vv_nxv8i64:2681; CHECK:       # %bb.0:2682; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2683; CHECK-NEXT:    vmsle.vv v0, v16, v82684; CHECK-NEXT:    ret2685  %vc = icmp sge <vscale x 8 x i64> %va, %vb2686  ret <vscale x 8 x i1> %vc2687}2688 2689define <vscale x 8 x i1> @icmp_sge_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2690; RV32-LABEL: icmp_sge_vx_nxv8i64:2691; RV32:       # %bb.0:2692; RV32-NEXT:    addi sp, sp, -162693; RV32-NEXT:    .cfi_def_cfa_offset 162694; RV32-NEXT:    sw a0, 8(sp)2695; RV32-NEXT:    sw a1, 12(sp)2696; RV32-NEXT:    addi a0, sp, 82697; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2698; RV32-NEXT:    vlse64.v v16, (a0), zero2699; RV32-NEXT:    vmsle.vv v0, v16, v82700; RV32-NEXT:    addi sp, sp, 162701; RV32-NEXT:    .cfi_def_cfa_offset 02702; RV32-NEXT:    ret2703;2704; RV64-LABEL: icmp_sge_vx_nxv8i64:2705; RV64:       # %bb.0:2706; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2707; RV64-NEXT:    vmv.v.x v16, a02708; RV64-NEXT:    vmsle.vv v0, v16, v82709; RV64-NEXT:    ret2710  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02711  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2712  %vc = icmp sge <vscale x 8 x i64> %va, %splat2713  ret <vscale x 8 x i1> %vc2714}2715 2716define <vscale x 8 x i1> @icmp_sge_xv_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2717; RV32-LABEL: icmp_sge_xv_nxv8i64:2718; RV32:       # %bb.0:2719; RV32-NEXT:    addi sp, sp, -162720; RV32-NEXT:    .cfi_def_cfa_offset 162721; RV32-NEXT:    sw a0, 8(sp)2722; RV32-NEXT:    sw a1, 12(sp)2723; RV32-NEXT:    addi a0, sp, 82724; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2725; RV32-NEXT:    vlse64.v v16, (a0), zero2726; RV32-NEXT:    vmsle.vv v0, v8, v162727; RV32-NEXT:    addi sp, sp, 162728; RV32-NEXT:    .cfi_def_cfa_offset 02729; RV32-NEXT:    ret2730;2731; RV64-LABEL: icmp_sge_xv_nxv8i64:2732; RV64:       # %bb.0:2733; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2734; RV64-NEXT:    vmsle.vx v0, v8, a02735; RV64-NEXT:    ret2736  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02737  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2738  %vc = icmp sge <vscale x 8 x i64> %splat, %va2739  ret <vscale x 8 x i1> %vc2740}2741 2742define <vscale x 8 x i1> @icmp_sge_vi_nxv8i64_0(<vscale x 8 x i64> %va) {2743; CHECK-LABEL: icmp_sge_vi_nxv8i64_0:2744; CHECK:       # %bb.0:2745; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2746; CHECK-NEXT:    vmv.v.i v16, -162747; CHECK-NEXT:    vmsle.vv v0, v16, v82748; CHECK-NEXT:    ret2749  %vc = icmp sge <vscale x 8 x i64> %va, splat (i64 -16)2750  ret <vscale x 8 x i1> %vc2751}2752 2753define <vscale x 8 x i1> @icmp_sge_vi_nxv8i64_1(<vscale x 8 x i64> %va) {2754; CHECK-LABEL: icmp_sge_vi_nxv8i64_1:2755; CHECK:       # %bb.0:2756; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2757; CHECK-NEXT:    vmsgt.vi v0, v8, -162758; CHECK-NEXT:    ret2759  %vc = icmp sge <vscale x 8 x i64> %va, splat (i64 -15)2760  ret <vscale x 8 x i1> %vc2761}2762 2763define <vscale x 8 x i1> @icmp_sge_iv_nxv8i64_1(<vscale x 8 x i64> %va) {2764; CHECK-LABEL: icmp_sge_iv_nxv8i64_1:2765; CHECK:       # %bb.0:2766; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2767; CHECK-NEXT:    vmsle.vi v0, v8, -152768; CHECK-NEXT:    ret2769  %vc = icmp sge <vscale x 8 x i64> splat (i64 -15), %va2770  ret <vscale x 8 x i1> %vc2771}2772 2773define <vscale x 8 x i1> @icmp_sge_vi_nxv8i64_2(<vscale x 8 x i64> %va) {2774; CHECK-LABEL: icmp_sge_vi_nxv8i64_2:2775; CHECK:       # %bb.0:2776; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2777; CHECK-NEXT:    vmsgt.vi v0, v8, -12778; CHECK-NEXT:    ret2779  %vc = icmp sge <vscale x 8 x i64> %va, splat (i64 0)2780  ret <vscale x 8 x i1> %vc2781}2782 2783define <vscale x 8 x i1> @icmp_sge_vi_nxv8i64_3(<vscale x 8 x i64> %va) {2784; CHECK-LABEL: icmp_sge_vi_nxv8i64_3:2785; CHECK:       # %bb.0:2786; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2787; CHECK-NEXT:    vmsgt.vi v0, v8, 152788; CHECK-NEXT:    ret2789  %vc = icmp sge <vscale x 8 x i64> %va, splat (i64 16)2790  ret <vscale x 8 x i1> %vc2791}2792 2793define <vscale x 8 x i1> @icmp_slt_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb) {2794; CHECK-LABEL: icmp_slt_vv_nxv8i64:2795; CHECK:       # %bb.0:2796; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2797; CHECK-NEXT:    vmslt.vv v0, v8, v162798; CHECK-NEXT:    ret2799  %vc = icmp slt <vscale x 8 x i64> %va, %vb2800  ret <vscale x 8 x i1> %vc2801}2802 2803define <vscale x 8 x i1> @icmp_slt_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2804; RV32-LABEL: icmp_slt_vx_nxv8i64:2805; RV32:       # %bb.0:2806; RV32-NEXT:    addi sp, sp, -162807; RV32-NEXT:    .cfi_def_cfa_offset 162808; RV32-NEXT:    sw a0, 8(sp)2809; RV32-NEXT:    sw a1, 12(sp)2810; RV32-NEXT:    addi a0, sp, 82811; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2812; RV32-NEXT:    vlse64.v v16, (a0), zero2813; RV32-NEXT:    vmslt.vv v0, v8, v162814; RV32-NEXT:    addi sp, sp, 162815; RV32-NEXT:    .cfi_def_cfa_offset 02816; RV32-NEXT:    ret2817;2818; RV64-LABEL: icmp_slt_vx_nxv8i64:2819; RV64:       # %bb.0:2820; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2821; RV64-NEXT:    vmslt.vx v0, v8, a02822; RV64-NEXT:    ret2823  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02824  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2825  %vc = icmp slt <vscale x 8 x i64> %va, %splat2826  ret <vscale x 8 x i1> %vc2827}2828 2829define <vscale x 8 x i1> @icmp_slt_xv_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2830; RV32-LABEL: icmp_slt_xv_nxv8i64:2831; RV32:       # %bb.0:2832; RV32-NEXT:    addi sp, sp, -162833; RV32-NEXT:    .cfi_def_cfa_offset 162834; RV32-NEXT:    sw a0, 8(sp)2835; RV32-NEXT:    sw a1, 12(sp)2836; RV32-NEXT:    addi a0, sp, 82837; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2838; RV32-NEXT:    vlse64.v v16, (a0), zero2839; RV32-NEXT:    vmslt.vv v0, v16, v82840; RV32-NEXT:    addi sp, sp, 162841; RV32-NEXT:    .cfi_def_cfa_offset 02842; RV32-NEXT:    ret2843;2844; RV64-LABEL: icmp_slt_xv_nxv8i64:2845; RV64:       # %bb.0:2846; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2847; RV64-NEXT:    vmsgt.vx v0, v8, a02848; RV64-NEXT:    ret2849  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02850  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2851  %vc = icmp slt <vscale x 8 x i64> %splat, %va2852  ret <vscale x 8 x i1> %vc2853}2854 2855define <vscale x 8 x i1> @icmp_slt_vi_nxv8i64_0(<vscale x 8 x i64> %va) {2856; CHECK-LABEL: icmp_slt_vi_nxv8i64_0:2857; CHECK:       # %bb.0:2858; CHECK-NEXT:    li a0, -162859; CHECK-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2860; CHECK-NEXT:    vmslt.vx v0, v8, a02861; CHECK-NEXT:    ret2862  %vc = icmp slt <vscale x 8 x i64> %va, splat (i64 -16)2863  ret <vscale x 8 x i1> %vc2864}2865 2866define <vscale x 8 x i1> @icmp_slt_vi_nxv8i64_1(<vscale x 8 x i64> %va) {2867; CHECK-LABEL: icmp_slt_vi_nxv8i64_1:2868; CHECK:       # %bb.0:2869; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2870; CHECK-NEXT:    vmsle.vi v0, v8, -162871; CHECK-NEXT:    ret2872  %vc = icmp slt <vscale x 8 x i64> %va, splat (i64 -15)2873  ret <vscale x 8 x i1> %vc2874}2875 2876define <vscale x 8 x i1> @icmp_slt_iv_nxv8i64_1(<vscale x 8 x i64> %va) {2877; CHECK-LABEL: icmp_slt_iv_nxv8i64_1:2878; CHECK:       # %bb.0:2879; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2880; CHECK-NEXT:    vmsgt.vi v0, v8, -152881; CHECK-NEXT:    ret2882  %vc = icmp slt <vscale x 8 x i64> splat (i64 -15), %va2883  ret <vscale x 8 x i1> %vc2884}2885 2886define <vscale x 8 x i1> @icmp_slt_vi_nxv8i64_2(<vscale x 8 x i64> %va) {2887; CHECK-LABEL: icmp_slt_vi_nxv8i64_2:2888; CHECK:       # %bb.0:2889; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2890; CHECK-NEXT:    vmsle.vi v0, v8, -12891; CHECK-NEXT:    ret2892  %vc = icmp slt <vscale x 8 x i64> %va, splat (i64 0)2893  ret <vscale x 8 x i1> %vc2894}2895 2896define <vscale x 8 x i1> @icmp_slt_vi_nxv8i64_3(<vscale x 8 x i64> %va) {2897; CHECK-LABEL: icmp_slt_vi_nxv8i64_3:2898; CHECK:       # %bb.0:2899; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2900; CHECK-NEXT:    vmsle.vi v0, v8, 152901; CHECK-NEXT:    ret2902  %vc = icmp slt <vscale x 8 x i64> %va, splat (i64 16)2903  ret <vscale x 8 x i1> %vc2904}2905 2906define <vscale x 8 x i1> @icmp_sle_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb) {2907; CHECK-LABEL: icmp_sle_vv_nxv8i64:2908; CHECK:       # %bb.0:2909; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2910; CHECK-NEXT:    vmsle.vv v0, v8, v162911; CHECK-NEXT:    ret2912  %vc = icmp sle <vscale x 8 x i64> %va, %vb2913  ret <vscale x 8 x i1> %vc2914}2915 2916define <vscale x 8 x i1> @icmp_sle_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2917; RV32-LABEL: icmp_sle_vx_nxv8i64:2918; RV32:       # %bb.0:2919; RV32-NEXT:    addi sp, sp, -162920; RV32-NEXT:    .cfi_def_cfa_offset 162921; RV32-NEXT:    sw a0, 8(sp)2922; RV32-NEXT:    sw a1, 12(sp)2923; RV32-NEXT:    addi a0, sp, 82924; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2925; RV32-NEXT:    vlse64.v v16, (a0), zero2926; RV32-NEXT:    vmsle.vv v0, v8, v162927; RV32-NEXT:    addi sp, sp, 162928; RV32-NEXT:    .cfi_def_cfa_offset 02929; RV32-NEXT:    ret2930;2931; RV64-LABEL: icmp_sle_vx_nxv8i64:2932; RV64:       # %bb.0:2933; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2934; RV64-NEXT:    vmsle.vx v0, v8, a02935; RV64-NEXT:    ret2936  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02937  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2938  %vc = icmp sle <vscale x 8 x i64> %va, %splat2939  ret <vscale x 8 x i1> %vc2940}2941 2942define <vscale x 8 x i1> @icmp_sle_xv_nxv8i64(<vscale x 8 x i64> %va, i64 %b) {2943; RV32-LABEL: icmp_sle_xv_nxv8i64:2944; RV32:       # %bb.0:2945; RV32-NEXT:    addi sp, sp, -162946; RV32-NEXT:    .cfi_def_cfa_offset 162947; RV32-NEXT:    sw a0, 8(sp)2948; RV32-NEXT:    sw a1, 12(sp)2949; RV32-NEXT:    addi a0, sp, 82950; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2951; RV32-NEXT:    vlse64.v v16, (a0), zero2952; RV32-NEXT:    vmsle.vv v0, v16, v82953; RV32-NEXT:    addi sp, sp, 162954; RV32-NEXT:    .cfi_def_cfa_offset 02955; RV32-NEXT:    ret2956;2957; RV64-LABEL: icmp_sle_xv_nxv8i64:2958; RV64:       # %bb.0:2959; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma2960; RV64-NEXT:    vmv.v.x v16, a02961; RV64-NEXT:    vmsle.vv v0, v16, v82962; RV64-NEXT:    ret2963  %head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 02964  %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer2965  %vc = icmp sle <vscale x 8 x i64> %splat, %va2966  ret <vscale x 8 x i1> %vc2967}2968 2969define <vscale x 8 x i1> @icmp_sle_vi_nxv8i64_0(<vscale x 8 x i64> %va) {2970; CHECK-LABEL: icmp_sle_vi_nxv8i64_0:2971; CHECK:       # %bb.0:2972; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma2973; CHECK-NEXT:    vmsle.vi v0, v8, 52974; CHECK-NEXT:    ret2975  %vc = icmp sle <vscale x 8 x i64> %va, splat (i64 5)2976  ret <vscale x 8 x i1> %vc2977}2978 2979; Check a setcc with two constant splats, which would previously get stuck in2980; an infinite loop. DAGCombine isn't clever enough to constant-fold2981; splat_vectors but could continuously swap the operands, trying to put the2982; splat on the RHS.2983define <vscale x 8 x i1> @icmp_eq_ii_nxv8i8() {2984; CHECK-LABEL: icmp_eq_ii_nxv8i8:2985; CHECK:       # %bb.0:2986; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma2987; CHECK-NEXT:    vmclr.m v02988; CHECK-NEXT:    ret2989  %vc = icmp eq <vscale x 8 x i8> splat (i8 5), splat (i8 2)2990  ret <vscale x 8 x i1> %vc2991}2992 2993; This icmp/setcc is split and so we find a scalable-vector mask CONCAT_VECTOR2994; node. Ensure we correctly (custom) lower this.2995define <vscale x 16 x i1> @icmp_eq_vi_nx16i64(<vscale x 16 x i64> %va) {2996; CHECK-LABEL: icmp_eq_vi_nx16i64:2997; CHECK:       # %bb.0:2998; CHECK-NEXT:    csrr a0, vlenb2999; CHECK-NEXT:    vsetvli a1, zero, e64, m8, ta, ma3000; CHECK-NEXT:    vmseq.vi v24, v16, 03001; CHECK-NEXT:    srli a0, a0, 33002; CHECK-NEXT:    vmseq.vi v0, v8, 03003; CHECK-NEXT:    vsetvli a1, zero, e8, mf4, ta, ma3004; CHECK-NEXT:    vslideup.vx v0, v24, a03005; CHECK-NEXT:    ret3006  %vc = icmp eq <vscale x 16 x i64> %va, zeroinitializer3007  ret <vscale x 16 x i1> %vc3008}3009