1112 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s \3; RUN: | FileCheck %s --check-prefixes=CHECK,RV324; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s \5; RUN: | FileCheck %s --check-prefixes=CHECK,RV646 7define <vscale x 8 x i7> @vremu_vx_nxv8i7(<vscale x 8 x i7> %a, i7 signext %b, <vscale x 8 x i1> %mask, i32 zeroext %evl) {8; CHECK-LABEL: vremu_vx_nxv8i7:9; CHECK: # %bb.0:10; CHECK-NEXT: li a2, 12711; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma12; CHECK-NEXT: vmv.v.x v9, a013; CHECK-NEXT: vand.vx v8, v8, a2, v0.t14; CHECK-NEXT: vand.vx v9, v9, a2, v0.t15; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t16; CHECK-NEXT: ret17 %elt.head = insertelement <vscale x 8 x i7> poison, i7 %b, i32 018 %vb = shufflevector <vscale x 8 x i7> %elt.head, <vscale x 8 x i7> poison, <vscale x 8 x i32> zeroinitializer19 %v = call <vscale x 8 x i7> @llvm.vp.urem.nxv8i7(<vscale x 8 x i7> %a, <vscale x 8 x i7> %vb, <vscale x 8 x i1> %mask, i32 %evl)20 ret <vscale x 8 x i7> %v21}22 23define <vscale x 1 x i8> @vremu_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {24; CHECK-LABEL: vremu_vv_nxv1i8:25; CHECK: # %bb.0:26; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma27; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t28; CHECK-NEXT: ret29 %v = call <vscale x 1 x i8> @llvm.vp.urem.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 %evl)30 ret <vscale x 1 x i8> %v31}32 33define <vscale x 1 x i8> @vremu_vv_nxv1i8_unmasked(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, i32 zeroext %evl) {34; CHECK-LABEL: vremu_vv_nxv1i8_unmasked:35; CHECK: # %bb.0:36; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma37; CHECK-NEXT: vremu.vv v8, v8, v938; CHECK-NEXT: ret39 %v = call <vscale x 1 x i8> @llvm.vp.urem.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)40 ret <vscale x 1 x i8> %v41}42 43define <vscale x 1 x i8> @vremu_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {44; CHECK-LABEL: vremu_vx_nxv1i8:45; CHECK: # %bb.0:46; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma47; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t48; CHECK-NEXT: ret49 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 050 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer51 %v = call <vscale x 1 x i8> @llvm.vp.urem.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)52 ret <vscale x 1 x i8> %v53}54 55define <vscale x 1 x i8> @vremu_vx_nxv1i8_unmasked(<vscale x 1 x i8> %va, i8 %b, i32 zeroext %evl) {56; CHECK-LABEL: vremu_vx_nxv1i8_unmasked:57; CHECK: # %bb.0:58; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma59; CHECK-NEXT: vremu.vx v8, v8, a060; CHECK-NEXT: ret61 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 062 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer63 %v = call <vscale x 1 x i8> @llvm.vp.urem.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)64 ret <vscale x 1 x i8> %v65}66 67define <vscale x 2 x i8> @vremu_vv_nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {68; CHECK-LABEL: vremu_vv_nxv2i8:69; CHECK: # %bb.0:70; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma71; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t72; CHECK-NEXT: ret73 %v = call <vscale x 2 x i8> @llvm.vp.urem.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 %evl)74 ret <vscale x 2 x i8> %v75}76 77define <vscale x 2 x i8> @vremu_vv_nxv2i8_unmasked(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, i32 zeroext %evl) {78; CHECK-LABEL: vremu_vv_nxv2i8_unmasked:79; CHECK: # %bb.0:80; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma81; CHECK-NEXT: vremu.vv v8, v8, v982; CHECK-NEXT: ret83 %v = call <vscale x 2 x i8> @llvm.vp.urem.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)84 ret <vscale x 2 x i8> %v85}86 87define <vscale x 2 x i8> @vremu_vx_nxv2i8(<vscale x 2 x i8> %va, i8 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {88; CHECK-LABEL: vremu_vx_nxv2i8:89; CHECK: # %bb.0:90; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma91; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t92; CHECK-NEXT: ret93 %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 094 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer95 %v = call <vscale x 2 x i8> @llvm.vp.urem.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)96 ret <vscale x 2 x i8> %v97}98 99define <vscale x 2 x i8> @vremu_vx_nxv2i8_unmasked(<vscale x 2 x i8> %va, i8 %b, i32 zeroext %evl) {100; CHECK-LABEL: vremu_vx_nxv2i8_unmasked:101; CHECK: # %bb.0:102; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma103; CHECK-NEXT: vremu.vx v8, v8, a0104; CHECK-NEXT: ret105 %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0106 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer107 %v = call <vscale x 2 x i8> @llvm.vp.urem.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)108 ret <vscale x 2 x i8> %v109}110 111define <vscale x 3 x i8> @vremu_vv_nxv3i8(<vscale x 3 x i8> %va, <vscale x 3 x i8> %b, <vscale x 3 x i1> %m, i32 zeroext %evl) {112; CHECK-LABEL: vremu_vv_nxv3i8:113; CHECK: # %bb.0:114; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma115; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t116; CHECK-NEXT: ret117 %v = call <vscale x 3 x i8> @llvm.vp.urem.nxv3i8(<vscale x 3 x i8> %va, <vscale x 3 x i8> %b, <vscale x 3 x i1> %m, i32 %evl)118 ret <vscale x 3 x i8> %v119}120 121define <vscale x 4 x i8> @vremu_vv_nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {122; CHECK-LABEL: vremu_vv_nxv4i8:123; CHECK: # %bb.0:124; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma125; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t126; CHECK-NEXT: ret127 %v = call <vscale x 4 x i8> @llvm.vp.urem.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 %evl)128 ret <vscale x 4 x i8> %v129}130 131define <vscale x 4 x i8> @vremu_vv_nxv4i8_unmasked(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, i32 zeroext %evl) {132; CHECK-LABEL: vremu_vv_nxv4i8_unmasked:133; CHECK: # %bb.0:134; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma135; CHECK-NEXT: vremu.vv v8, v8, v9136; CHECK-NEXT: ret137 %v = call <vscale x 4 x i8> @llvm.vp.urem.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)138 ret <vscale x 4 x i8> %v139}140 141define <vscale x 4 x i8> @vremu_vx_nxv4i8(<vscale x 4 x i8> %va, i8 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {142; CHECK-LABEL: vremu_vx_nxv4i8:143; CHECK: # %bb.0:144; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma145; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t146; CHECK-NEXT: ret147 %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0148 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer149 %v = call <vscale x 4 x i8> @llvm.vp.urem.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)150 ret <vscale x 4 x i8> %v151}152 153define <vscale x 4 x i8> @vremu_vx_nxv4i8_unmasked(<vscale x 4 x i8> %va, i8 %b, i32 zeroext %evl) {154; CHECK-LABEL: vremu_vx_nxv4i8_unmasked:155; CHECK: # %bb.0:156; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma157; CHECK-NEXT: vremu.vx v8, v8, a0158; CHECK-NEXT: ret159 %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0160 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer161 %v = call <vscale x 4 x i8> @llvm.vp.urem.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)162 ret <vscale x 4 x i8> %v163}164 165define <vscale x 8 x i8> @vremu_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {166; CHECK-LABEL: vremu_vv_nxv8i8:167; CHECK: # %bb.0:168; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma169; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t170; CHECK-NEXT: ret171 %v = call <vscale x 8 x i8> @llvm.vp.urem.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 %evl)172 ret <vscale x 8 x i8> %v173}174 175define <vscale x 8 x i8> @vremu_vv_nxv8i8_unmasked(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, i32 zeroext %evl) {176; CHECK-LABEL: vremu_vv_nxv8i8_unmasked:177; CHECK: # %bb.0:178; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma179; CHECK-NEXT: vremu.vv v8, v8, v9180; CHECK-NEXT: ret181 %v = call <vscale x 8 x i8> @llvm.vp.urem.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)182 ret <vscale x 8 x i8> %v183}184 185define <vscale x 8 x i8> @vremu_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {186; CHECK-LABEL: vremu_vx_nxv8i8:187; CHECK: # %bb.0:188; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma189; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t190; CHECK-NEXT: ret191 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0192 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer193 %v = call <vscale x 8 x i8> @llvm.vp.urem.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)194 ret <vscale x 8 x i8> %v195}196 197define <vscale x 8 x i8> @vremu_vx_nxv8i8_unmasked(<vscale x 8 x i8> %va, i8 %b, i32 zeroext %evl) {198; CHECK-LABEL: vremu_vx_nxv8i8_unmasked:199; CHECK: # %bb.0:200; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma201; CHECK-NEXT: vremu.vx v8, v8, a0202; CHECK-NEXT: ret203 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0204 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer205 %v = call <vscale x 8 x i8> @llvm.vp.urem.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)206 ret <vscale x 8 x i8> %v207}208 209define <vscale x 16 x i8> @vremu_vv_nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {210; CHECK-LABEL: vremu_vv_nxv16i8:211; CHECK: # %bb.0:212; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma213; CHECK-NEXT: vremu.vv v8, v8, v10, v0.t214; CHECK-NEXT: ret215 %v = call <vscale x 16 x i8> @llvm.vp.urem.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 %evl)216 ret <vscale x 16 x i8> %v217}218 219define <vscale x 16 x i8> @vremu_vv_nxv16i8_unmasked(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, i32 zeroext %evl) {220; CHECK-LABEL: vremu_vv_nxv16i8_unmasked:221; CHECK: # %bb.0:222; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma223; CHECK-NEXT: vremu.vv v8, v8, v10224; CHECK-NEXT: ret225 %v = call <vscale x 16 x i8> @llvm.vp.urem.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)226 ret <vscale x 16 x i8> %v227}228 229define <vscale x 16 x i8> @vremu_vx_nxv16i8(<vscale x 16 x i8> %va, i8 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {230; CHECK-LABEL: vremu_vx_nxv16i8:231; CHECK: # %bb.0:232; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma233; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t234; CHECK-NEXT: ret235 %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0236 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer237 %v = call <vscale x 16 x i8> @llvm.vp.urem.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)238 ret <vscale x 16 x i8> %v239}240 241define <vscale x 16 x i8> @vremu_vx_nxv16i8_unmasked(<vscale x 16 x i8> %va, i8 %b, i32 zeroext %evl) {242; CHECK-LABEL: vremu_vx_nxv16i8_unmasked:243; CHECK: # %bb.0:244; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma245; CHECK-NEXT: vremu.vx v8, v8, a0246; CHECK-NEXT: ret247 %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0248 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer249 %v = call <vscale x 16 x i8> @llvm.vp.urem.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)250 ret <vscale x 16 x i8> %v251}252 253define <vscale x 32 x i8> @vremu_vv_nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {254; CHECK-LABEL: vremu_vv_nxv32i8:255; CHECK: # %bb.0:256; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma257; CHECK-NEXT: vremu.vv v8, v8, v12, v0.t258; CHECK-NEXT: ret259 %v = call <vscale x 32 x i8> @llvm.vp.urem.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 %evl)260 ret <vscale x 32 x i8> %v261}262 263define <vscale x 32 x i8> @vremu_vv_nxv32i8_unmasked(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, i32 zeroext %evl) {264; CHECK-LABEL: vremu_vv_nxv32i8_unmasked:265; CHECK: # %bb.0:266; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma267; CHECK-NEXT: vremu.vv v8, v8, v12268; CHECK-NEXT: ret269 %v = call <vscale x 32 x i8> @llvm.vp.urem.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> splat (i1 true), i32 %evl)270 ret <vscale x 32 x i8> %v271}272 273define <vscale x 32 x i8> @vremu_vx_nxv32i8(<vscale x 32 x i8> %va, i8 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {274; CHECK-LABEL: vremu_vx_nxv32i8:275; CHECK: # %bb.0:276; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma277; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t278; CHECK-NEXT: ret279 %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0280 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer281 %v = call <vscale x 32 x i8> @llvm.vp.urem.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)282 ret <vscale x 32 x i8> %v283}284 285define <vscale x 32 x i8> @vremu_vx_nxv32i8_unmasked(<vscale x 32 x i8> %va, i8 %b, i32 zeroext %evl) {286; CHECK-LABEL: vremu_vx_nxv32i8_unmasked:287; CHECK: # %bb.0:288; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma289; CHECK-NEXT: vremu.vx v8, v8, a0290; CHECK-NEXT: ret291 %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0292 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer293 %v = call <vscale x 32 x i8> @llvm.vp.urem.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> splat (i1 true), i32 %evl)294 ret <vscale x 32 x i8> %v295}296 297define <vscale x 64 x i8> @vremu_vv_nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 zeroext %evl) {298; CHECK-LABEL: vremu_vv_nxv64i8:299; CHECK: # %bb.0:300; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma301; CHECK-NEXT: vremu.vv v8, v8, v16, v0.t302; CHECK-NEXT: ret303 %v = call <vscale x 64 x i8> @llvm.vp.urem.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 %evl)304 ret <vscale x 64 x i8> %v305}306 307define <vscale x 64 x i8> @vremu_vv_nxv64i8_unmasked(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, i32 zeroext %evl) {308; CHECK-LABEL: vremu_vv_nxv64i8_unmasked:309; CHECK: # %bb.0:310; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma311; CHECK-NEXT: vremu.vv v8, v8, v16312; CHECK-NEXT: ret313 %v = call <vscale x 64 x i8> @llvm.vp.urem.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> splat (i1 true), i32 %evl)314 ret <vscale x 64 x i8> %v315}316 317define <vscale x 64 x i8> @vremu_vx_nxv64i8(<vscale x 64 x i8> %va, i8 %b, <vscale x 64 x i1> %m, i32 zeroext %evl) {318; CHECK-LABEL: vremu_vx_nxv64i8:319; CHECK: # %bb.0:320; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma321; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t322; CHECK-NEXT: ret323 %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0324 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer325 %v = call <vscale x 64 x i8> @llvm.vp.urem.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)326 ret <vscale x 64 x i8> %v327}328 329define <vscale x 64 x i8> @vremu_vx_nxv64i8_unmasked(<vscale x 64 x i8> %va, i8 %b, i32 zeroext %evl) {330; CHECK-LABEL: vremu_vx_nxv64i8_unmasked:331; CHECK: # %bb.0:332; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma333; CHECK-NEXT: vremu.vx v8, v8, a0334; CHECK-NEXT: ret335 %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0336 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer337 %v = call <vscale x 64 x i8> @llvm.vp.urem.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> splat (i1 true), i32 %evl)338 ret <vscale x 64 x i8> %v339}340 341define <vscale x 1 x i16> @vremu_vv_nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {342; CHECK-LABEL: vremu_vv_nxv1i16:343; CHECK: # %bb.0:344; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma345; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t346; CHECK-NEXT: ret347 %v = call <vscale x 1 x i16> @llvm.vp.urem.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 %evl)348 ret <vscale x 1 x i16> %v349}350 351define <vscale x 1 x i16> @vremu_vv_nxv1i16_unmasked(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, i32 zeroext %evl) {352; CHECK-LABEL: vremu_vv_nxv1i16_unmasked:353; CHECK: # %bb.0:354; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma355; CHECK-NEXT: vremu.vv v8, v8, v9356; CHECK-NEXT: ret357 %v = call <vscale x 1 x i16> @llvm.vp.urem.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)358 ret <vscale x 1 x i16> %v359}360 361define <vscale x 1 x i16> @vremu_vx_nxv1i16(<vscale x 1 x i16> %va, i16 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {362; CHECK-LABEL: vremu_vx_nxv1i16:363; CHECK: # %bb.0:364; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma365; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t366; CHECK-NEXT: ret367 %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0368 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer369 %v = call <vscale x 1 x i16> @llvm.vp.urem.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)370 ret <vscale x 1 x i16> %v371}372 373define <vscale x 1 x i16> @vremu_vx_nxv1i16_unmasked(<vscale x 1 x i16> %va, i16 %b, i32 zeroext %evl) {374; CHECK-LABEL: vremu_vx_nxv1i16_unmasked:375; CHECK: # %bb.0:376; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma377; CHECK-NEXT: vremu.vx v8, v8, a0378; CHECK-NEXT: ret379 %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0380 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer381 %v = call <vscale x 1 x i16> @llvm.vp.urem.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)382 ret <vscale x 1 x i16> %v383}384 385define <vscale x 2 x i16> @vremu_vv_nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {386; CHECK-LABEL: vremu_vv_nxv2i16:387; CHECK: # %bb.0:388; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma389; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t390; CHECK-NEXT: ret391 %v = call <vscale x 2 x i16> @llvm.vp.urem.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 %evl)392 ret <vscale x 2 x i16> %v393}394 395define <vscale x 2 x i16> @vremu_vv_nxv2i16_unmasked(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, i32 zeroext %evl) {396; CHECK-LABEL: vremu_vv_nxv2i16_unmasked:397; CHECK: # %bb.0:398; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma399; CHECK-NEXT: vremu.vv v8, v8, v9400; CHECK-NEXT: ret401 %v = call <vscale x 2 x i16> @llvm.vp.urem.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)402 ret <vscale x 2 x i16> %v403}404 405define <vscale x 2 x i16> @vremu_vx_nxv2i16(<vscale x 2 x i16> %va, i16 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {406; CHECK-LABEL: vremu_vx_nxv2i16:407; CHECK: # %bb.0:408; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma409; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t410; CHECK-NEXT: ret411 %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0412 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer413 %v = call <vscale x 2 x i16> @llvm.vp.urem.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)414 ret <vscale x 2 x i16> %v415}416 417define <vscale x 2 x i16> @vremu_vx_nxv2i16_unmasked(<vscale x 2 x i16> %va, i16 %b, i32 zeroext %evl) {418; CHECK-LABEL: vremu_vx_nxv2i16_unmasked:419; CHECK: # %bb.0:420; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma421; CHECK-NEXT: vremu.vx v8, v8, a0422; CHECK-NEXT: ret423 %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0424 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer425 %v = call <vscale x 2 x i16> @llvm.vp.urem.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)426 ret <vscale x 2 x i16> %v427}428 429define <vscale x 4 x i16> @vremu_vv_nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {430; CHECK-LABEL: vremu_vv_nxv4i16:431; CHECK: # %bb.0:432; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma433; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t434; CHECK-NEXT: ret435 %v = call <vscale x 4 x i16> @llvm.vp.urem.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 %evl)436 ret <vscale x 4 x i16> %v437}438 439define <vscale x 4 x i16> @vremu_vv_nxv4i16_unmasked(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, i32 zeroext %evl) {440; CHECK-LABEL: vremu_vv_nxv4i16_unmasked:441; CHECK: # %bb.0:442; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma443; CHECK-NEXT: vremu.vv v8, v8, v9444; CHECK-NEXT: ret445 %v = call <vscale x 4 x i16> @llvm.vp.urem.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)446 ret <vscale x 4 x i16> %v447}448 449define <vscale x 4 x i16> @vremu_vx_nxv4i16(<vscale x 4 x i16> %va, i16 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {450; CHECK-LABEL: vremu_vx_nxv4i16:451; CHECK: # %bb.0:452; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma453; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t454; CHECK-NEXT: ret455 %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0456 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer457 %v = call <vscale x 4 x i16> @llvm.vp.urem.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)458 ret <vscale x 4 x i16> %v459}460 461define <vscale x 4 x i16> @vremu_vx_nxv4i16_unmasked(<vscale x 4 x i16> %va, i16 %b, i32 zeroext %evl) {462; CHECK-LABEL: vremu_vx_nxv4i16_unmasked:463; CHECK: # %bb.0:464; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma465; CHECK-NEXT: vremu.vx v8, v8, a0466; CHECK-NEXT: ret467 %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0468 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer469 %v = call <vscale x 4 x i16> @llvm.vp.urem.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)470 ret <vscale x 4 x i16> %v471}472 473define <vscale x 8 x i16> @vremu_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {474; CHECK-LABEL: vremu_vv_nxv8i16:475; CHECK: # %bb.0:476; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma477; CHECK-NEXT: vremu.vv v8, v8, v10, v0.t478; CHECK-NEXT: ret479 %v = call <vscale x 8 x i16> @llvm.vp.urem.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 %evl)480 ret <vscale x 8 x i16> %v481}482 483define <vscale x 8 x i16> @vremu_vv_nxv8i16_unmasked(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, i32 zeroext %evl) {484; CHECK-LABEL: vremu_vv_nxv8i16_unmasked:485; CHECK: # %bb.0:486; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma487; CHECK-NEXT: vremu.vv v8, v8, v10488; CHECK-NEXT: ret489 %v = call <vscale x 8 x i16> @llvm.vp.urem.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)490 ret <vscale x 8 x i16> %v491}492 493define <vscale x 8 x i16> @vremu_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {494; CHECK-LABEL: vremu_vx_nxv8i16:495; CHECK: # %bb.0:496; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma497; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t498; CHECK-NEXT: ret499 %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0500 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer501 %v = call <vscale x 8 x i16> @llvm.vp.urem.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)502 ret <vscale x 8 x i16> %v503}504 505define <vscale x 8 x i16> @vremu_vx_nxv8i16_unmasked(<vscale x 8 x i16> %va, i16 %b, i32 zeroext %evl) {506; CHECK-LABEL: vremu_vx_nxv8i16_unmasked:507; CHECK: # %bb.0:508; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma509; CHECK-NEXT: vremu.vx v8, v8, a0510; CHECK-NEXT: ret511 %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0512 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer513 %v = call <vscale x 8 x i16> @llvm.vp.urem.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)514 ret <vscale x 8 x i16> %v515}516 517define <vscale x 16 x i16> @vremu_vv_nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {518; CHECK-LABEL: vremu_vv_nxv16i16:519; CHECK: # %bb.0:520; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma521; CHECK-NEXT: vremu.vv v8, v8, v12, v0.t522; CHECK-NEXT: ret523 %v = call <vscale x 16 x i16> @llvm.vp.urem.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 %evl)524 ret <vscale x 16 x i16> %v525}526 527define <vscale x 16 x i16> @vremu_vv_nxv16i16_unmasked(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, i32 zeroext %evl) {528; CHECK-LABEL: vremu_vv_nxv16i16_unmasked:529; CHECK: # %bb.0:530; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma531; CHECK-NEXT: vremu.vv v8, v8, v12532; CHECK-NEXT: ret533 %v = call <vscale x 16 x i16> @llvm.vp.urem.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)534 ret <vscale x 16 x i16> %v535}536 537define <vscale x 16 x i16> @vremu_vx_nxv16i16(<vscale x 16 x i16> %va, i16 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {538; CHECK-LABEL: vremu_vx_nxv16i16:539; CHECK: # %bb.0:540; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma541; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t542; CHECK-NEXT: ret543 %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0544 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer545 %v = call <vscale x 16 x i16> @llvm.vp.urem.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)546 ret <vscale x 16 x i16> %v547}548 549define <vscale x 16 x i16> @vremu_vx_nxv16i16_unmasked(<vscale x 16 x i16> %va, i16 %b, i32 zeroext %evl) {550; CHECK-LABEL: vremu_vx_nxv16i16_unmasked:551; CHECK: # %bb.0:552; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma553; CHECK-NEXT: vremu.vx v8, v8, a0554; CHECK-NEXT: ret555 %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0556 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer557 %v = call <vscale x 16 x i16> @llvm.vp.urem.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)558 ret <vscale x 16 x i16> %v559}560 561define <vscale x 32 x i16> @vremu_vv_nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {562; CHECK-LABEL: vremu_vv_nxv32i16:563; CHECK: # %bb.0:564; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma565; CHECK-NEXT: vremu.vv v8, v8, v16, v0.t566; CHECK-NEXT: ret567 %v = call <vscale x 32 x i16> @llvm.vp.urem.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 %evl)568 ret <vscale x 32 x i16> %v569}570 571define <vscale x 32 x i16> @vremu_vv_nxv32i16_unmasked(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, i32 zeroext %evl) {572; CHECK-LABEL: vremu_vv_nxv32i16_unmasked:573; CHECK: # %bb.0:574; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma575; CHECK-NEXT: vremu.vv v8, v8, v16576; CHECK-NEXT: ret577 %v = call <vscale x 32 x i16> @llvm.vp.urem.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> splat (i1 true), i32 %evl)578 ret <vscale x 32 x i16> %v579}580 581define <vscale x 32 x i16> @vremu_vx_nxv32i16(<vscale x 32 x i16> %va, i16 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {582; CHECK-LABEL: vremu_vx_nxv32i16:583; CHECK: # %bb.0:584; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma585; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t586; CHECK-NEXT: ret587 %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0588 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer589 %v = call <vscale x 32 x i16> @llvm.vp.urem.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)590 ret <vscale x 32 x i16> %v591}592 593define <vscale x 32 x i16> @vremu_vx_nxv32i16_unmasked(<vscale x 32 x i16> %va, i16 %b, i32 zeroext %evl) {594; CHECK-LABEL: vremu_vx_nxv32i16_unmasked:595; CHECK: # %bb.0:596; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma597; CHECK-NEXT: vremu.vx v8, v8, a0598; CHECK-NEXT: ret599 %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0600 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer601 %v = call <vscale x 32 x i16> @llvm.vp.urem.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> splat (i1 true), i32 %evl)602 ret <vscale x 32 x i16> %v603}604 605define <vscale x 1 x i32> @vremu_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {606; CHECK-LABEL: vremu_vv_nxv1i32:607; CHECK: # %bb.0:608; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma609; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t610; CHECK-NEXT: ret611 %v = call <vscale x 1 x i32> @llvm.vp.urem.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 %evl)612 ret <vscale x 1 x i32> %v613}614 615define <vscale x 1 x i32> @vremu_vv_nxv1i32_unmasked(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, i32 zeroext %evl) {616; CHECK-LABEL: vremu_vv_nxv1i32_unmasked:617; CHECK: # %bb.0:618; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma619; CHECK-NEXT: vremu.vv v8, v8, v9620; CHECK-NEXT: ret621 %v = call <vscale x 1 x i32> @llvm.vp.urem.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)622 ret <vscale x 1 x i32> %v623}624 625define <vscale x 1 x i32> @vremu_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {626; CHECK-LABEL: vremu_vx_nxv1i32:627; CHECK: # %bb.0:628; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma629; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t630; CHECK-NEXT: ret631 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0632 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer633 %v = call <vscale x 1 x i32> @llvm.vp.urem.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)634 ret <vscale x 1 x i32> %v635}636 637define <vscale x 1 x i32> @vremu_vx_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 %b, i32 zeroext %evl) {638; CHECK-LABEL: vremu_vx_nxv1i32_unmasked:639; CHECK: # %bb.0:640; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma641; CHECK-NEXT: vremu.vx v8, v8, a0642; CHECK-NEXT: ret643 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0644 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer645 %v = call <vscale x 1 x i32> @llvm.vp.urem.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)646 ret <vscale x 1 x i32> %v647}648 649define <vscale x 2 x i32> @vremu_vv_nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {650; CHECK-LABEL: vremu_vv_nxv2i32:651; CHECK: # %bb.0:652; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma653; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t654; CHECK-NEXT: ret655 %v = call <vscale x 2 x i32> @llvm.vp.urem.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 %evl)656 ret <vscale x 2 x i32> %v657}658 659define <vscale x 2 x i32> @vremu_vv_nxv2i32_unmasked(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, i32 zeroext %evl) {660; CHECK-LABEL: vremu_vv_nxv2i32_unmasked:661; CHECK: # %bb.0:662; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma663; CHECK-NEXT: vremu.vv v8, v8, v9664; CHECK-NEXT: ret665 %v = call <vscale x 2 x i32> @llvm.vp.urem.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)666 ret <vscale x 2 x i32> %v667}668 669define <vscale x 2 x i32> @vremu_vx_nxv2i32(<vscale x 2 x i32> %va, i32 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {670; CHECK-LABEL: vremu_vx_nxv2i32:671; CHECK: # %bb.0:672; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma673; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t674; CHECK-NEXT: ret675 %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0676 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer677 %v = call <vscale x 2 x i32> @llvm.vp.urem.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)678 ret <vscale x 2 x i32> %v679}680 681define <vscale x 2 x i32> @vremu_vx_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 %b, i32 zeroext %evl) {682; CHECK-LABEL: vremu_vx_nxv2i32_unmasked:683; CHECK: # %bb.0:684; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma685; CHECK-NEXT: vremu.vx v8, v8, a0686; CHECK-NEXT: ret687 %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0688 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer689 %v = call <vscale x 2 x i32> @llvm.vp.urem.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)690 ret <vscale x 2 x i32> %v691}692 693define <vscale x 4 x i32> @vremu_vv_nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {694; CHECK-LABEL: vremu_vv_nxv4i32:695; CHECK: # %bb.0:696; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma697; CHECK-NEXT: vremu.vv v8, v8, v10, v0.t698; CHECK-NEXT: ret699 %v = call <vscale x 4 x i32> @llvm.vp.urem.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 %evl)700 ret <vscale x 4 x i32> %v701}702 703define <vscale x 4 x i32> @vremu_vv_nxv4i32_unmasked(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, i32 zeroext %evl) {704; CHECK-LABEL: vremu_vv_nxv4i32_unmasked:705; CHECK: # %bb.0:706; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma707; CHECK-NEXT: vremu.vv v8, v8, v10708; CHECK-NEXT: ret709 %v = call <vscale x 4 x i32> @llvm.vp.urem.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)710 ret <vscale x 4 x i32> %v711}712 713define <vscale x 4 x i32> @vremu_vx_nxv4i32(<vscale x 4 x i32> %va, i32 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {714; CHECK-LABEL: vremu_vx_nxv4i32:715; CHECK: # %bb.0:716; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma717; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t718; CHECK-NEXT: ret719 %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0720 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer721 %v = call <vscale x 4 x i32> @llvm.vp.urem.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)722 ret <vscale x 4 x i32> %v723}724 725define <vscale x 4 x i32> @vremu_vx_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 %b, i32 zeroext %evl) {726; CHECK-LABEL: vremu_vx_nxv4i32_unmasked:727; CHECK: # %bb.0:728; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma729; CHECK-NEXT: vremu.vx v8, v8, a0730; CHECK-NEXT: ret731 %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0732 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer733 %v = call <vscale x 4 x i32> @llvm.vp.urem.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)734 ret <vscale x 4 x i32> %v735}736 737define <vscale x 8 x i32> @vremu_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {738; CHECK-LABEL: vremu_vv_nxv8i32:739; CHECK: # %bb.0:740; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma741; CHECK-NEXT: vremu.vv v8, v8, v12, v0.t742; CHECK-NEXT: ret743 %v = call <vscale x 8 x i32> @llvm.vp.urem.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 %evl)744 ret <vscale x 8 x i32> %v745}746 747define <vscale x 8 x i32> @vremu_vv_nxv8i32_unmasked(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, i32 zeroext %evl) {748; CHECK-LABEL: vremu_vv_nxv8i32_unmasked:749; CHECK: # %bb.0:750; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma751; CHECK-NEXT: vremu.vv v8, v8, v12752; CHECK-NEXT: ret753 %v = call <vscale x 8 x i32> @llvm.vp.urem.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)754 ret <vscale x 8 x i32> %v755}756 757define <vscale x 8 x i32> @vremu_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {758; CHECK-LABEL: vremu_vx_nxv8i32:759; CHECK: # %bb.0:760; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma761; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t762; CHECK-NEXT: ret763 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0764 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer765 %v = call <vscale x 8 x i32> @llvm.vp.urem.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)766 ret <vscale x 8 x i32> %v767}768 769define <vscale x 8 x i32> @vremu_vx_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 %b, i32 zeroext %evl) {770; CHECK-LABEL: vremu_vx_nxv8i32_unmasked:771; CHECK: # %bb.0:772; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma773; CHECK-NEXT: vremu.vx v8, v8, a0774; CHECK-NEXT: ret775 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0776 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer777 %v = call <vscale x 8 x i32> @llvm.vp.urem.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)778 ret <vscale x 8 x i32> %v779}780 781define <vscale x 16 x i32> @vremu_vv_nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {782; CHECK-LABEL: vremu_vv_nxv16i32:783; CHECK: # %bb.0:784; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma785; CHECK-NEXT: vremu.vv v8, v8, v16, v0.t786; CHECK-NEXT: ret787 %v = call <vscale x 16 x i32> @llvm.vp.urem.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 %evl)788 ret <vscale x 16 x i32> %v789}790 791define <vscale x 16 x i32> @vremu_vv_nxv16i32_unmasked(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, i32 zeroext %evl) {792; CHECK-LABEL: vremu_vv_nxv16i32_unmasked:793; CHECK: # %bb.0:794; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma795; CHECK-NEXT: vremu.vv v8, v8, v16796; CHECK-NEXT: ret797 %v = call <vscale x 16 x i32> @llvm.vp.urem.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)798 ret <vscale x 16 x i32> %v799}800 801define <vscale x 16 x i32> @vremu_vx_nxv16i32(<vscale x 16 x i32> %va, i32 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {802; CHECK-LABEL: vremu_vx_nxv16i32:803; CHECK: # %bb.0:804; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma805; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t806; CHECK-NEXT: ret807 %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0808 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer809 %v = call <vscale x 16 x i32> @llvm.vp.urem.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)810 ret <vscale x 16 x i32> %v811}812 813define <vscale x 16 x i32> @vremu_vx_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 %b, i32 zeroext %evl) {814; CHECK-LABEL: vremu_vx_nxv16i32_unmasked:815; CHECK: # %bb.0:816; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma817; CHECK-NEXT: vremu.vx v8, v8, a0818; CHECK-NEXT: ret819 %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0820 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer821 %v = call <vscale x 16 x i32> @llvm.vp.urem.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)822 ret <vscale x 16 x i32> %v823}824 825define <vscale x 1 x i64> @vremu_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {826; CHECK-LABEL: vremu_vv_nxv1i64:827; CHECK: # %bb.0:828; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma829; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t830; CHECK-NEXT: ret831 %v = call <vscale x 1 x i64> @llvm.vp.urem.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 %evl)832 ret <vscale x 1 x i64> %v833}834 835define <vscale x 1 x i64> @vremu_vv_nxv1i64_unmasked(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, i32 zeroext %evl) {836; CHECK-LABEL: vremu_vv_nxv1i64_unmasked:837; CHECK: # %bb.0:838; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma839; CHECK-NEXT: vremu.vv v8, v8, v9840; CHECK-NEXT: ret841 %v = call <vscale x 1 x i64> @llvm.vp.urem.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)842 ret <vscale x 1 x i64> %v843}844 845define <vscale x 1 x i64> @vremu_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {846; RV32-LABEL: vremu_vx_nxv1i64:847; RV32: # %bb.0:848; RV32-NEXT: addi sp, sp, -16849; RV32-NEXT: .cfi_def_cfa_offset 16850; RV32-NEXT: sw a0, 8(sp)851; RV32-NEXT: sw a1, 12(sp)852; RV32-NEXT: addi a0, sp, 8853; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma854; RV32-NEXT: vlse64.v v9, (a0), zero855; RV32-NEXT: vremu.vv v8, v8, v9, v0.t856; RV32-NEXT: addi sp, sp, 16857; RV32-NEXT: .cfi_def_cfa_offset 0858; RV32-NEXT: ret859;860; RV64-LABEL: vremu_vx_nxv1i64:861; RV64: # %bb.0:862; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma863; RV64-NEXT: vremu.vx v8, v8, a0, v0.t864; RV64-NEXT: ret865 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0866 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer867 %v = call <vscale x 1 x i64> @llvm.vp.urem.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)868 ret <vscale x 1 x i64> %v869}870 871define <vscale x 1 x i64> @vremu_vx_nxv1i64_unmasked(<vscale x 1 x i64> %va, i64 %b, i32 zeroext %evl) {872; RV32-LABEL: vremu_vx_nxv1i64_unmasked:873; RV32: # %bb.0:874; RV32-NEXT: addi sp, sp, -16875; RV32-NEXT: .cfi_def_cfa_offset 16876; RV32-NEXT: sw a0, 8(sp)877; RV32-NEXT: sw a1, 12(sp)878; RV32-NEXT: addi a0, sp, 8879; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma880; RV32-NEXT: vlse64.v v9, (a0), zero881; RV32-NEXT: vremu.vv v8, v8, v9882; RV32-NEXT: addi sp, sp, 16883; RV32-NEXT: .cfi_def_cfa_offset 0884; RV32-NEXT: ret885;886; RV64-LABEL: vremu_vx_nxv1i64_unmasked:887; RV64: # %bb.0:888; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma889; RV64-NEXT: vremu.vx v8, v8, a0890; RV64-NEXT: ret891 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0892 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer893 %v = call <vscale x 1 x i64> @llvm.vp.urem.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)894 ret <vscale x 1 x i64> %v895}896 897define <vscale x 2 x i64> @vremu_vv_nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {898; CHECK-LABEL: vremu_vv_nxv2i64:899; CHECK: # %bb.0:900; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma901; CHECK-NEXT: vremu.vv v8, v8, v10, v0.t902; CHECK-NEXT: ret903 %v = call <vscale x 2 x i64> @llvm.vp.urem.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 %evl)904 ret <vscale x 2 x i64> %v905}906 907define <vscale x 2 x i64> @vremu_vv_nxv2i64_unmasked(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, i32 zeroext %evl) {908; CHECK-LABEL: vremu_vv_nxv2i64_unmasked:909; CHECK: # %bb.0:910; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma911; CHECK-NEXT: vremu.vv v8, v8, v10912; CHECK-NEXT: ret913 %v = call <vscale x 2 x i64> @llvm.vp.urem.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)914 ret <vscale x 2 x i64> %v915}916 917define <vscale x 2 x i64> @vremu_vx_nxv2i64(<vscale x 2 x i64> %va, i64 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {918; RV32-LABEL: vremu_vx_nxv2i64:919; RV32: # %bb.0:920; RV32-NEXT: addi sp, sp, -16921; RV32-NEXT: .cfi_def_cfa_offset 16922; RV32-NEXT: sw a0, 8(sp)923; RV32-NEXT: sw a1, 12(sp)924; RV32-NEXT: addi a0, sp, 8925; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma926; RV32-NEXT: vlse64.v v10, (a0), zero927; RV32-NEXT: vremu.vv v8, v8, v10, v0.t928; RV32-NEXT: addi sp, sp, 16929; RV32-NEXT: .cfi_def_cfa_offset 0930; RV32-NEXT: ret931;932; RV64-LABEL: vremu_vx_nxv2i64:933; RV64: # %bb.0:934; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma935; RV64-NEXT: vremu.vx v8, v8, a0, v0.t936; RV64-NEXT: ret937 %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0938 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer939 %v = call <vscale x 2 x i64> @llvm.vp.urem.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)940 ret <vscale x 2 x i64> %v941}942 943define <vscale x 2 x i64> @vremu_vx_nxv2i64_unmasked(<vscale x 2 x i64> %va, i64 %b, i32 zeroext %evl) {944; RV32-LABEL: vremu_vx_nxv2i64_unmasked:945; RV32: # %bb.0:946; RV32-NEXT: addi sp, sp, -16947; RV32-NEXT: .cfi_def_cfa_offset 16948; RV32-NEXT: sw a0, 8(sp)949; RV32-NEXT: sw a1, 12(sp)950; RV32-NEXT: addi a0, sp, 8951; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma952; RV32-NEXT: vlse64.v v10, (a0), zero953; RV32-NEXT: vremu.vv v8, v8, v10954; RV32-NEXT: addi sp, sp, 16955; RV32-NEXT: .cfi_def_cfa_offset 0956; RV32-NEXT: ret957;958; RV64-LABEL: vremu_vx_nxv2i64_unmasked:959; RV64: # %bb.0:960; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma961; RV64-NEXT: vremu.vx v8, v8, a0962; RV64-NEXT: ret963 %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0964 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer965 %v = call <vscale x 2 x i64> @llvm.vp.urem.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)966 ret <vscale x 2 x i64> %v967}968 969define <vscale x 4 x i64> @vremu_vv_nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {970; CHECK-LABEL: vremu_vv_nxv4i64:971; CHECK: # %bb.0:972; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma973; CHECK-NEXT: vremu.vv v8, v8, v12, v0.t974; CHECK-NEXT: ret975 %v = call <vscale x 4 x i64> @llvm.vp.urem.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 %evl)976 ret <vscale x 4 x i64> %v977}978 979define <vscale x 4 x i64> @vremu_vv_nxv4i64_unmasked(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, i32 zeroext %evl) {980; CHECK-LABEL: vremu_vv_nxv4i64_unmasked:981; CHECK: # %bb.0:982; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma983; CHECK-NEXT: vremu.vv v8, v8, v12984; CHECK-NEXT: ret985 %v = call <vscale x 4 x i64> @llvm.vp.urem.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)986 ret <vscale x 4 x i64> %v987}988 989define <vscale x 4 x i64> @vremu_vx_nxv4i64(<vscale x 4 x i64> %va, i64 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {990; RV32-LABEL: vremu_vx_nxv4i64:991; RV32: # %bb.0:992; RV32-NEXT: addi sp, sp, -16993; RV32-NEXT: .cfi_def_cfa_offset 16994; RV32-NEXT: sw a0, 8(sp)995; RV32-NEXT: sw a1, 12(sp)996; RV32-NEXT: addi a0, sp, 8997; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma998; RV32-NEXT: vlse64.v v12, (a0), zero999; RV32-NEXT: vremu.vv v8, v8, v12, v0.t1000; RV32-NEXT: addi sp, sp, 161001; RV32-NEXT: .cfi_def_cfa_offset 01002; RV32-NEXT: ret1003;1004; RV64-LABEL: vremu_vx_nxv4i64:1005; RV64: # %bb.0:1006; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma1007; RV64-NEXT: vremu.vx v8, v8, a0, v0.t1008; RV64-NEXT: ret1009 %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 01010 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer1011 %v = call <vscale x 4 x i64> @llvm.vp.urem.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)1012 ret <vscale x 4 x i64> %v1013}1014 1015define <vscale x 4 x i64> @vremu_vx_nxv4i64_unmasked(<vscale x 4 x i64> %va, i64 %b, i32 zeroext %evl) {1016; RV32-LABEL: vremu_vx_nxv4i64_unmasked:1017; RV32: # %bb.0:1018; RV32-NEXT: addi sp, sp, -161019; RV32-NEXT: .cfi_def_cfa_offset 161020; RV32-NEXT: sw a0, 8(sp)1021; RV32-NEXT: sw a1, 12(sp)1022; RV32-NEXT: addi a0, sp, 81023; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma1024; RV32-NEXT: vlse64.v v12, (a0), zero1025; RV32-NEXT: vremu.vv v8, v8, v121026; RV32-NEXT: addi sp, sp, 161027; RV32-NEXT: .cfi_def_cfa_offset 01028; RV32-NEXT: ret1029;1030; RV64-LABEL: vremu_vx_nxv4i64_unmasked:1031; RV64: # %bb.0:1032; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma1033; RV64-NEXT: vremu.vx v8, v8, a01034; RV64-NEXT: ret1035 %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 01036 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer1037 %v = call <vscale x 4 x i64> @llvm.vp.urem.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)1038 ret <vscale x 4 x i64> %v1039}1040 1041define <vscale x 8 x i64> @vremu_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {1042; CHECK-LABEL: vremu_vv_nxv8i64:1043; CHECK: # %bb.0:1044; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma1045; CHECK-NEXT: vremu.vv v8, v8, v16, v0.t1046; CHECK-NEXT: ret1047 %v = call <vscale x 8 x i64> @llvm.vp.urem.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 %evl)1048 ret <vscale x 8 x i64> %v1049}1050 1051define <vscale x 8 x i64> @vremu_vv_nxv8i64_unmasked(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, i32 zeroext %evl) {1052; CHECK-LABEL: vremu_vv_nxv8i64_unmasked:1053; CHECK: # %bb.0:1054; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma1055; CHECK-NEXT: vremu.vv v8, v8, v161056; CHECK-NEXT: ret1057 %v = call <vscale x 8 x i64> @llvm.vp.urem.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)1058 ret <vscale x 8 x i64> %v1059}1060 1061define <vscale x 8 x i64> @vremu_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {1062; RV32-LABEL: vremu_vx_nxv8i64:1063; RV32: # %bb.0:1064; RV32-NEXT: addi sp, sp, -161065; RV32-NEXT: .cfi_def_cfa_offset 161066; RV32-NEXT: sw a0, 8(sp)1067; RV32-NEXT: sw a1, 12(sp)1068; RV32-NEXT: addi a0, sp, 81069; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma1070; RV32-NEXT: vlse64.v v16, (a0), zero1071; RV32-NEXT: vremu.vv v8, v8, v16, v0.t1072; RV32-NEXT: addi sp, sp, 161073; RV32-NEXT: .cfi_def_cfa_offset 01074; RV32-NEXT: ret1075;1076; RV64-LABEL: vremu_vx_nxv8i64:1077; RV64: # %bb.0:1078; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma1079; RV64-NEXT: vremu.vx v8, v8, a0, v0.t1080; RV64-NEXT: ret1081 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 01082 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer1083 %v = call <vscale x 8 x i64> @llvm.vp.urem.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)1084 ret <vscale x 8 x i64> %v1085}1086 1087define <vscale x 8 x i64> @vremu_vx_nxv8i64_unmasked(<vscale x 8 x i64> %va, i64 %b, i32 zeroext %evl) {1088; RV32-LABEL: vremu_vx_nxv8i64_unmasked:1089; RV32: # %bb.0:1090; RV32-NEXT: addi sp, sp, -161091; RV32-NEXT: .cfi_def_cfa_offset 161092; RV32-NEXT: sw a0, 8(sp)1093; RV32-NEXT: sw a1, 12(sp)1094; RV32-NEXT: addi a0, sp, 81095; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma1096; RV32-NEXT: vlse64.v v16, (a0), zero1097; RV32-NEXT: vremu.vv v8, v8, v161098; RV32-NEXT: addi sp, sp, 161099; RV32-NEXT: .cfi_def_cfa_offset 01100; RV32-NEXT: ret1101;1102; RV64-LABEL: vremu_vx_nxv8i64_unmasked:1103; RV64: # %bb.0:1104; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma1105; RV64-NEXT: vremu.vx v8, v8, a01106; RV64-NEXT: ret1107 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 01108 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer1109 %v = call <vscale x 8 x i64> @llvm.vp.urem.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)1110 ret <vscale x 8 x i64> %v1111}1112