1113 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> @vdiv_vx_nxv8i7(<vscale x 8 x i7> %a, i7 signext %b, <vscale x 8 x i1> %mask, i32 zeroext %evl) {8; CHECK-LABEL: vdiv_vx_nxv8i7:9; CHECK: # %bb.0:10; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma11; CHECK-NEXT: vsll.vi v8, v8, 1, v0.t12; CHECK-NEXT: vmv.v.x v9, a013; CHECK-NEXT: vsra.vi v8, v8, 1, v0.t14; CHECK-NEXT: vsll.vi v9, v9, 1, v0.t15; CHECK-NEXT: vsra.vi v9, v9, 1, v0.t16; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t17; CHECK-NEXT: ret18 %elt.head = insertelement <vscale x 8 x i7> poison, i7 %b, i32 019 %vb = shufflevector <vscale x 8 x i7> %elt.head, <vscale x 8 x i7> poison, <vscale x 8 x i32> zeroinitializer20 %v = call <vscale x 8 x i7> @llvm.vp.sdiv.nxv8i7(<vscale x 8 x i7> %a, <vscale x 8 x i7> %vb, <vscale x 8 x i1> %mask, i32 %evl)21 ret <vscale x 8 x i7> %v22}23 24define <vscale x 1 x i8> @vdiv_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {25; CHECK-LABEL: vdiv_vv_nxv1i8:26; CHECK: # %bb.0:27; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma28; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t29; CHECK-NEXT: ret30 %v = call <vscale x 1 x i8> @llvm.vp.sdiv.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 %evl)31 ret <vscale x 1 x i8> %v32}33 34define <vscale x 1 x i8> @vdiv_vv_nxv1i8_unmasked(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, i32 zeroext %evl) {35; CHECK-LABEL: vdiv_vv_nxv1i8_unmasked:36; CHECK: # %bb.0:37; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma38; CHECK-NEXT: vdiv.vv v8, v8, v939; CHECK-NEXT: ret40 %v = call <vscale x 1 x i8> @llvm.vp.sdiv.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)41 ret <vscale x 1 x i8> %v42}43 44define <vscale x 1 x i8> @vdiv_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {45; CHECK-LABEL: vdiv_vx_nxv1i8:46; CHECK: # %bb.0:47; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma48; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t49; CHECK-NEXT: ret50 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 051 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer52 %v = call <vscale x 1 x i8> @llvm.vp.sdiv.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)53 ret <vscale x 1 x i8> %v54}55 56define <vscale x 1 x i8> @vdiv_vx_nxv1i8_unmasked(<vscale x 1 x i8> %va, i8 %b, i32 zeroext %evl) {57; CHECK-LABEL: vdiv_vx_nxv1i8_unmasked:58; CHECK: # %bb.0:59; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma60; CHECK-NEXT: vdiv.vx v8, v8, a061; CHECK-NEXT: ret62 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 063 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer64 %v = call <vscale x 1 x i8> @llvm.vp.sdiv.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)65 ret <vscale x 1 x i8> %v66}67 68define <vscale x 2 x i8> @vdiv_vv_nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {69; CHECK-LABEL: vdiv_vv_nxv2i8:70; CHECK: # %bb.0:71; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma72; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t73; CHECK-NEXT: ret74 %v = call <vscale x 2 x i8> @llvm.vp.sdiv.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 %evl)75 ret <vscale x 2 x i8> %v76}77 78define <vscale x 2 x i8> @vdiv_vv_nxv2i8_unmasked(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, i32 zeroext %evl) {79; CHECK-LABEL: vdiv_vv_nxv2i8_unmasked:80; CHECK: # %bb.0:81; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma82; CHECK-NEXT: vdiv.vv v8, v8, v983; CHECK-NEXT: ret84 %v = call <vscale x 2 x i8> @llvm.vp.sdiv.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)85 ret <vscale x 2 x i8> %v86}87 88define <vscale x 2 x i8> @vdiv_vx_nxv2i8(<vscale x 2 x i8> %va, i8 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {89; CHECK-LABEL: vdiv_vx_nxv2i8:90; CHECK: # %bb.0:91; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma92; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t93; CHECK-NEXT: ret94 %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 095 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer96 %v = call <vscale x 2 x i8> @llvm.vp.sdiv.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)97 ret <vscale x 2 x i8> %v98}99 100define <vscale x 2 x i8> @vdiv_vx_nxv2i8_unmasked(<vscale x 2 x i8> %va, i8 %b, i32 zeroext %evl) {101; CHECK-LABEL: vdiv_vx_nxv2i8_unmasked:102; CHECK: # %bb.0:103; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma104; CHECK-NEXT: vdiv.vx v8, v8, a0105; CHECK-NEXT: ret106 %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0107 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer108 %v = call <vscale x 2 x i8> @llvm.vp.sdiv.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)109 ret <vscale x 2 x i8> %v110}111 112define <vscale x 3 x i8> @vdiv_vv_nxv3i8(<vscale x 3 x i8> %va, <vscale x 3 x i8> %b, <vscale x 3 x i1> %m, i32 zeroext %evl) {113; CHECK-LABEL: vdiv_vv_nxv3i8:114; CHECK: # %bb.0:115; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma116; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t117; CHECK-NEXT: ret118 %v = call <vscale x 3 x i8> @llvm.vp.sdiv.nxv3i8(<vscale x 3 x i8> %va, <vscale x 3 x i8> %b, <vscale x 3 x i1> %m, i32 %evl)119 ret <vscale x 3 x i8> %v120}121 122define <vscale x 4 x i8> @vdiv_vv_nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {123; CHECK-LABEL: vdiv_vv_nxv4i8:124; CHECK: # %bb.0:125; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma126; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t127; CHECK-NEXT: ret128 %v = call <vscale x 4 x i8> @llvm.vp.sdiv.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 %evl)129 ret <vscale x 4 x i8> %v130}131 132define <vscale x 4 x i8> @vdiv_vv_nxv4i8_unmasked(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, i32 zeroext %evl) {133; CHECK-LABEL: vdiv_vv_nxv4i8_unmasked:134; CHECK: # %bb.0:135; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma136; CHECK-NEXT: vdiv.vv v8, v8, v9137; CHECK-NEXT: ret138 %v = call <vscale x 4 x i8> @llvm.vp.sdiv.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)139 ret <vscale x 4 x i8> %v140}141 142define <vscale x 4 x i8> @vdiv_vx_nxv4i8(<vscale x 4 x i8> %va, i8 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {143; CHECK-LABEL: vdiv_vx_nxv4i8:144; CHECK: # %bb.0:145; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma146; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t147; CHECK-NEXT: ret148 %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0149 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer150 %v = call <vscale x 4 x i8> @llvm.vp.sdiv.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)151 ret <vscale x 4 x i8> %v152}153 154define <vscale x 4 x i8> @vdiv_vx_nxv4i8_unmasked(<vscale x 4 x i8> %va, i8 %b, i32 zeroext %evl) {155; CHECK-LABEL: vdiv_vx_nxv4i8_unmasked:156; CHECK: # %bb.0:157; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma158; CHECK-NEXT: vdiv.vx v8, v8, a0159; CHECK-NEXT: ret160 %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0161 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer162 %v = call <vscale x 4 x i8> @llvm.vp.sdiv.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)163 ret <vscale x 4 x i8> %v164}165 166define <vscale x 8 x i8> @vdiv_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {167; CHECK-LABEL: vdiv_vv_nxv8i8:168; CHECK: # %bb.0:169; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma170; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t171; CHECK-NEXT: ret172 %v = call <vscale x 8 x i8> @llvm.vp.sdiv.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 %evl)173 ret <vscale x 8 x i8> %v174}175 176define <vscale x 8 x i8> @vdiv_vv_nxv8i8_unmasked(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, i32 zeroext %evl) {177; CHECK-LABEL: vdiv_vv_nxv8i8_unmasked:178; CHECK: # %bb.0:179; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma180; CHECK-NEXT: vdiv.vv v8, v8, v9181; CHECK-NEXT: ret182 %v = call <vscale x 8 x i8> @llvm.vp.sdiv.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)183 ret <vscale x 8 x i8> %v184}185 186define <vscale x 8 x i8> @vdiv_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {187; CHECK-LABEL: vdiv_vx_nxv8i8:188; CHECK: # %bb.0:189; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma190; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t191; CHECK-NEXT: ret192 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0193 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer194 %v = call <vscale x 8 x i8> @llvm.vp.sdiv.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)195 ret <vscale x 8 x i8> %v196}197 198define <vscale x 8 x i8> @vdiv_vx_nxv8i8_unmasked(<vscale x 8 x i8> %va, i8 %b, i32 zeroext %evl) {199; CHECK-LABEL: vdiv_vx_nxv8i8_unmasked:200; CHECK: # %bb.0:201; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma202; CHECK-NEXT: vdiv.vx v8, v8, a0203; CHECK-NEXT: ret204 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0205 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer206 %v = call <vscale x 8 x i8> @llvm.vp.sdiv.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)207 ret <vscale x 8 x i8> %v208}209 210define <vscale x 16 x i8> @vdiv_vv_nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {211; CHECK-LABEL: vdiv_vv_nxv16i8:212; CHECK: # %bb.0:213; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma214; CHECK-NEXT: vdiv.vv v8, v8, v10, v0.t215; CHECK-NEXT: ret216 %v = call <vscale x 16 x i8> @llvm.vp.sdiv.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 %evl)217 ret <vscale x 16 x i8> %v218}219 220define <vscale x 16 x i8> @vdiv_vv_nxv16i8_unmasked(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, i32 zeroext %evl) {221; CHECK-LABEL: vdiv_vv_nxv16i8_unmasked:222; CHECK: # %bb.0:223; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma224; CHECK-NEXT: vdiv.vv v8, v8, v10225; CHECK-NEXT: ret226 %v = call <vscale x 16 x i8> @llvm.vp.sdiv.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)227 ret <vscale x 16 x i8> %v228}229 230define <vscale x 16 x i8> @vdiv_vx_nxv16i8(<vscale x 16 x i8> %va, i8 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {231; CHECK-LABEL: vdiv_vx_nxv16i8:232; CHECK: # %bb.0:233; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma234; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t235; CHECK-NEXT: ret236 %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0237 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer238 %v = call <vscale x 16 x i8> @llvm.vp.sdiv.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)239 ret <vscale x 16 x i8> %v240}241 242define <vscale x 16 x i8> @vdiv_vx_nxv16i8_unmasked(<vscale x 16 x i8> %va, i8 %b, i32 zeroext %evl) {243; CHECK-LABEL: vdiv_vx_nxv16i8_unmasked:244; CHECK: # %bb.0:245; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma246; CHECK-NEXT: vdiv.vx v8, v8, a0247; CHECK-NEXT: ret248 %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0249 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer250 %v = call <vscale x 16 x i8> @llvm.vp.sdiv.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)251 ret <vscale x 16 x i8> %v252}253 254define <vscale x 32 x i8> @vdiv_vv_nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {255; CHECK-LABEL: vdiv_vv_nxv32i8:256; CHECK: # %bb.0:257; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma258; CHECK-NEXT: vdiv.vv v8, v8, v12, v0.t259; CHECK-NEXT: ret260 %v = call <vscale x 32 x i8> @llvm.vp.sdiv.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 %evl)261 ret <vscale x 32 x i8> %v262}263 264define <vscale x 32 x i8> @vdiv_vv_nxv32i8_unmasked(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, i32 zeroext %evl) {265; CHECK-LABEL: vdiv_vv_nxv32i8_unmasked:266; CHECK: # %bb.0:267; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma268; CHECK-NEXT: vdiv.vv v8, v8, v12269; CHECK-NEXT: ret270 %v = call <vscale x 32 x i8> @llvm.vp.sdiv.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> splat (i1 true), i32 %evl)271 ret <vscale x 32 x i8> %v272}273 274define <vscale x 32 x i8> @vdiv_vx_nxv32i8(<vscale x 32 x i8> %va, i8 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {275; CHECK-LABEL: vdiv_vx_nxv32i8:276; CHECK: # %bb.0:277; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma278; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t279; CHECK-NEXT: ret280 %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0281 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer282 %v = call <vscale x 32 x i8> @llvm.vp.sdiv.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)283 ret <vscale x 32 x i8> %v284}285 286define <vscale x 32 x i8> @vdiv_vx_nxv32i8_unmasked(<vscale x 32 x i8> %va, i8 %b, i32 zeroext %evl) {287; CHECK-LABEL: vdiv_vx_nxv32i8_unmasked:288; CHECK: # %bb.0:289; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma290; CHECK-NEXT: vdiv.vx v8, v8, a0291; CHECK-NEXT: ret292 %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0293 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer294 %v = call <vscale x 32 x i8> @llvm.vp.sdiv.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> splat (i1 true), i32 %evl)295 ret <vscale x 32 x i8> %v296}297 298define <vscale x 64 x i8> @vdiv_vv_nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 zeroext %evl) {299; CHECK-LABEL: vdiv_vv_nxv64i8:300; CHECK: # %bb.0:301; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma302; CHECK-NEXT: vdiv.vv v8, v8, v16, v0.t303; CHECK-NEXT: ret304 %v = call <vscale x 64 x i8> @llvm.vp.sdiv.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 %evl)305 ret <vscale x 64 x i8> %v306}307 308define <vscale x 64 x i8> @vdiv_vv_nxv64i8_unmasked(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, i32 zeroext %evl) {309; CHECK-LABEL: vdiv_vv_nxv64i8_unmasked:310; CHECK: # %bb.0:311; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma312; CHECK-NEXT: vdiv.vv v8, v8, v16313; CHECK-NEXT: ret314 %v = call <vscale x 64 x i8> @llvm.vp.sdiv.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> splat (i1 true), i32 %evl)315 ret <vscale x 64 x i8> %v316}317 318define <vscale x 64 x i8> @vdiv_vx_nxv64i8(<vscale x 64 x i8> %va, i8 %b, <vscale x 64 x i1> %m, i32 zeroext %evl) {319; CHECK-LABEL: vdiv_vx_nxv64i8:320; CHECK: # %bb.0:321; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma322; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t323; CHECK-NEXT: ret324 %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0325 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer326 %v = call <vscale x 64 x i8> @llvm.vp.sdiv.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)327 ret <vscale x 64 x i8> %v328}329 330define <vscale x 64 x i8> @vdiv_vx_nxv64i8_unmasked(<vscale x 64 x i8> %va, i8 %b, i32 zeroext %evl) {331; CHECK-LABEL: vdiv_vx_nxv64i8_unmasked:332; CHECK: # %bb.0:333; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma334; CHECK-NEXT: vdiv.vx v8, v8, a0335; CHECK-NEXT: ret336 %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0337 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer338 %v = call <vscale x 64 x i8> @llvm.vp.sdiv.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> splat (i1 true), i32 %evl)339 ret <vscale x 64 x i8> %v340}341 342define <vscale x 1 x i16> @vdiv_vv_nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {343; CHECK-LABEL: vdiv_vv_nxv1i16:344; CHECK: # %bb.0:345; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma346; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t347; CHECK-NEXT: ret348 %v = call <vscale x 1 x i16> @llvm.vp.sdiv.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 %evl)349 ret <vscale x 1 x i16> %v350}351 352define <vscale x 1 x i16> @vdiv_vv_nxv1i16_unmasked(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, i32 zeroext %evl) {353; CHECK-LABEL: vdiv_vv_nxv1i16_unmasked:354; CHECK: # %bb.0:355; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma356; CHECK-NEXT: vdiv.vv v8, v8, v9357; CHECK-NEXT: ret358 %v = call <vscale x 1 x i16> @llvm.vp.sdiv.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)359 ret <vscale x 1 x i16> %v360}361 362define <vscale x 1 x i16> @vdiv_vx_nxv1i16(<vscale x 1 x i16> %va, i16 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {363; CHECK-LABEL: vdiv_vx_nxv1i16:364; CHECK: # %bb.0:365; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma366; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t367; CHECK-NEXT: ret368 %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0369 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer370 %v = call <vscale x 1 x i16> @llvm.vp.sdiv.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)371 ret <vscale x 1 x i16> %v372}373 374define <vscale x 1 x i16> @vdiv_vx_nxv1i16_unmasked(<vscale x 1 x i16> %va, i16 %b, i32 zeroext %evl) {375; CHECK-LABEL: vdiv_vx_nxv1i16_unmasked:376; CHECK: # %bb.0:377; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma378; CHECK-NEXT: vdiv.vx v8, v8, a0379; CHECK-NEXT: ret380 %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0381 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer382 %v = call <vscale x 1 x i16> @llvm.vp.sdiv.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)383 ret <vscale x 1 x i16> %v384}385 386define <vscale x 2 x i16> @vdiv_vv_nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {387; CHECK-LABEL: vdiv_vv_nxv2i16:388; CHECK: # %bb.0:389; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma390; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t391; CHECK-NEXT: ret392 %v = call <vscale x 2 x i16> @llvm.vp.sdiv.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 %evl)393 ret <vscale x 2 x i16> %v394}395 396define <vscale x 2 x i16> @vdiv_vv_nxv2i16_unmasked(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, i32 zeroext %evl) {397; CHECK-LABEL: vdiv_vv_nxv2i16_unmasked:398; CHECK: # %bb.0:399; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma400; CHECK-NEXT: vdiv.vv v8, v8, v9401; CHECK-NEXT: ret402 %v = call <vscale x 2 x i16> @llvm.vp.sdiv.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)403 ret <vscale x 2 x i16> %v404}405 406define <vscale x 2 x i16> @vdiv_vx_nxv2i16(<vscale x 2 x i16> %va, i16 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {407; CHECK-LABEL: vdiv_vx_nxv2i16:408; CHECK: # %bb.0:409; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma410; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t411; CHECK-NEXT: ret412 %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0413 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer414 %v = call <vscale x 2 x i16> @llvm.vp.sdiv.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)415 ret <vscale x 2 x i16> %v416}417 418define <vscale x 2 x i16> @vdiv_vx_nxv2i16_unmasked(<vscale x 2 x i16> %va, i16 %b, i32 zeroext %evl) {419; CHECK-LABEL: vdiv_vx_nxv2i16_unmasked:420; CHECK: # %bb.0:421; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma422; CHECK-NEXT: vdiv.vx v8, v8, a0423; CHECK-NEXT: ret424 %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0425 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer426 %v = call <vscale x 2 x i16> @llvm.vp.sdiv.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)427 ret <vscale x 2 x i16> %v428}429 430define <vscale x 4 x i16> @vdiv_vv_nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {431; CHECK-LABEL: vdiv_vv_nxv4i16:432; CHECK: # %bb.0:433; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma434; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t435; CHECK-NEXT: ret436 %v = call <vscale x 4 x i16> @llvm.vp.sdiv.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 %evl)437 ret <vscale x 4 x i16> %v438}439 440define <vscale x 4 x i16> @vdiv_vv_nxv4i16_unmasked(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, i32 zeroext %evl) {441; CHECK-LABEL: vdiv_vv_nxv4i16_unmasked:442; CHECK: # %bb.0:443; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma444; CHECK-NEXT: vdiv.vv v8, v8, v9445; CHECK-NEXT: ret446 %v = call <vscale x 4 x i16> @llvm.vp.sdiv.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)447 ret <vscale x 4 x i16> %v448}449 450define <vscale x 4 x i16> @vdiv_vx_nxv4i16(<vscale x 4 x i16> %va, i16 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {451; CHECK-LABEL: vdiv_vx_nxv4i16:452; CHECK: # %bb.0:453; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma454; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t455; CHECK-NEXT: ret456 %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0457 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer458 %v = call <vscale x 4 x i16> @llvm.vp.sdiv.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)459 ret <vscale x 4 x i16> %v460}461 462define <vscale x 4 x i16> @vdiv_vx_nxv4i16_unmasked(<vscale x 4 x i16> %va, i16 %b, i32 zeroext %evl) {463; CHECK-LABEL: vdiv_vx_nxv4i16_unmasked:464; CHECK: # %bb.0:465; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma466; CHECK-NEXT: vdiv.vx v8, v8, a0467; CHECK-NEXT: ret468 %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0469 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer470 %v = call <vscale x 4 x i16> @llvm.vp.sdiv.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)471 ret <vscale x 4 x i16> %v472}473 474define <vscale x 8 x i16> @vdiv_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {475; CHECK-LABEL: vdiv_vv_nxv8i16:476; CHECK: # %bb.0:477; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma478; CHECK-NEXT: vdiv.vv v8, v8, v10, v0.t479; CHECK-NEXT: ret480 %v = call <vscale x 8 x i16> @llvm.vp.sdiv.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 %evl)481 ret <vscale x 8 x i16> %v482}483 484define <vscale x 8 x i16> @vdiv_vv_nxv8i16_unmasked(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, i32 zeroext %evl) {485; CHECK-LABEL: vdiv_vv_nxv8i16_unmasked:486; CHECK: # %bb.0:487; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma488; CHECK-NEXT: vdiv.vv v8, v8, v10489; CHECK-NEXT: ret490 %v = call <vscale x 8 x i16> @llvm.vp.sdiv.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)491 ret <vscale x 8 x i16> %v492}493 494define <vscale x 8 x i16> @vdiv_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {495; CHECK-LABEL: vdiv_vx_nxv8i16:496; CHECK: # %bb.0:497; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma498; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t499; CHECK-NEXT: ret500 %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0501 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer502 %v = call <vscale x 8 x i16> @llvm.vp.sdiv.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)503 ret <vscale x 8 x i16> %v504}505 506define <vscale x 8 x i16> @vdiv_vx_nxv8i16_unmasked(<vscale x 8 x i16> %va, i16 %b, i32 zeroext %evl) {507; CHECK-LABEL: vdiv_vx_nxv8i16_unmasked:508; CHECK: # %bb.0:509; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma510; CHECK-NEXT: vdiv.vx v8, v8, a0511; CHECK-NEXT: ret512 %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0513 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer514 %v = call <vscale x 8 x i16> @llvm.vp.sdiv.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)515 ret <vscale x 8 x i16> %v516}517 518define <vscale x 16 x i16> @vdiv_vv_nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {519; CHECK-LABEL: vdiv_vv_nxv16i16:520; CHECK: # %bb.0:521; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma522; CHECK-NEXT: vdiv.vv v8, v8, v12, v0.t523; CHECK-NEXT: ret524 %v = call <vscale x 16 x i16> @llvm.vp.sdiv.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 %evl)525 ret <vscale x 16 x i16> %v526}527 528define <vscale x 16 x i16> @vdiv_vv_nxv16i16_unmasked(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, i32 zeroext %evl) {529; CHECK-LABEL: vdiv_vv_nxv16i16_unmasked:530; CHECK: # %bb.0:531; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma532; CHECK-NEXT: vdiv.vv v8, v8, v12533; CHECK-NEXT: ret534 %v = call <vscale x 16 x i16> @llvm.vp.sdiv.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)535 ret <vscale x 16 x i16> %v536}537 538define <vscale x 16 x i16> @vdiv_vx_nxv16i16(<vscale x 16 x i16> %va, i16 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {539; CHECK-LABEL: vdiv_vx_nxv16i16:540; CHECK: # %bb.0:541; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma542; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t543; CHECK-NEXT: ret544 %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0545 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer546 %v = call <vscale x 16 x i16> @llvm.vp.sdiv.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)547 ret <vscale x 16 x i16> %v548}549 550define <vscale x 16 x i16> @vdiv_vx_nxv16i16_unmasked(<vscale x 16 x i16> %va, i16 %b, i32 zeroext %evl) {551; CHECK-LABEL: vdiv_vx_nxv16i16_unmasked:552; CHECK: # %bb.0:553; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma554; CHECK-NEXT: vdiv.vx v8, v8, a0555; CHECK-NEXT: ret556 %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0557 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer558 %v = call <vscale x 16 x i16> @llvm.vp.sdiv.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)559 ret <vscale x 16 x i16> %v560}561 562define <vscale x 32 x i16> @vdiv_vv_nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {563; CHECK-LABEL: vdiv_vv_nxv32i16:564; CHECK: # %bb.0:565; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma566; CHECK-NEXT: vdiv.vv v8, v8, v16, v0.t567; CHECK-NEXT: ret568 %v = call <vscale x 32 x i16> @llvm.vp.sdiv.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 %evl)569 ret <vscale x 32 x i16> %v570}571 572define <vscale x 32 x i16> @vdiv_vv_nxv32i16_unmasked(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, i32 zeroext %evl) {573; CHECK-LABEL: vdiv_vv_nxv32i16_unmasked:574; CHECK: # %bb.0:575; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma576; CHECK-NEXT: vdiv.vv v8, v8, v16577; CHECK-NEXT: ret578 %v = call <vscale x 32 x i16> @llvm.vp.sdiv.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> splat (i1 true), i32 %evl)579 ret <vscale x 32 x i16> %v580}581 582define <vscale x 32 x i16> @vdiv_vx_nxv32i16(<vscale x 32 x i16> %va, i16 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {583; CHECK-LABEL: vdiv_vx_nxv32i16:584; CHECK: # %bb.0:585; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma586; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t587; CHECK-NEXT: ret588 %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0589 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer590 %v = call <vscale x 32 x i16> @llvm.vp.sdiv.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)591 ret <vscale x 32 x i16> %v592}593 594define <vscale x 32 x i16> @vdiv_vx_nxv32i16_unmasked(<vscale x 32 x i16> %va, i16 %b, i32 zeroext %evl) {595; CHECK-LABEL: vdiv_vx_nxv32i16_unmasked:596; CHECK: # %bb.0:597; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma598; CHECK-NEXT: vdiv.vx v8, v8, a0599; CHECK-NEXT: ret600 %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0601 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer602 %v = call <vscale x 32 x i16> @llvm.vp.sdiv.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> splat (i1 true), i32 %evl)603 ret <vscale x 32 x i16> %v604}605 606define <vscale x 1 x i32> @vdiv_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {607; CHECK-LABEL: vdiv_vv_nxv1i32:608; CHECK: # %bb.0:609; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma610; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t611; CHECK-NEXT: ret612 %v = call <vscale x 1 x i32> @llvm.vp.sdiv.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 %evl)613 ret <vscale x 1 x i32> %v614}615 616define <vscale x 1 x i32> @vdiv_vv_nxv1i32_unmasked(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, i32 zeroext %evl) {617; CHECK-LABEL: vdiv_vv_nxv1i32_unmasked:618; CHECK: # %bb.0:619; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma620; CHECK-NEXT: vdiv.vv v8, v8, v9621; CHECK-NEXT: ret622 %v = call <vscale x 1 x i32> @llvm.vp.sdiv.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)623 ret <vscale x 1 x i32> %v624}625 626define <vscale x 1 x i32> @vdiv_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {627; CHECK-LABEL: vdiv_vx_nxv1i32:628; CHECK: # %bb.0:629; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma630; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t631; CHECK-NEXT: ret632 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0633 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer634 %v = call <vscale x 1 x i32> @llvm.vp.sdiv.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)635 ret <vscale x 1 x i32> %v636}637 638define <vscale x 1 x i32> @vdiv_vx_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 %b, i32 zeroext %evl) {639; CHECK-LABEL: vdiv_vx_nxv1i32_unmasked:640; CHECK: # %bb.0:641; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma642; CHECK-NEXT: vdiv.vx v8, v8, a0643; CHECK-NEXT: ret644 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0645 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer646 %v = call <vscale x 1 x i32> @llvm.vp.sdiv.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)647 ret <vscale x 1 x i32> %v648}649 650define <vscale x 2 x i32> @vdiv_vv_nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {651; CHECK-LABEL: vdiv_vv_nxv2i32:652; CHECK: # %bb.0:653; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma654; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t655; CHECK-NEXT: ret656 %v = call <vscale x 2 x i32> @llvm.vp.sdiv.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 %evl)657 ret <vscale x 2 x i32> %v658}659 660define <vscale x 2 x i32> @vdiv_vv_nxv2i32_unmasked(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, i32 zeroext %evl) {661; CHECK-LABEL: vdiv_vv_nxv2i32_unmasked:662; CHECK: # %bb.0:663; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma664; CHECK-NEXT: vdiv.vv v8, v8, v9665; CHECK-NEXT: ret666 %v = call <vscale x 2 x i32> @llvm.vp.sdiv.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)667 ret <vscale x 2 x i32> %v668}669 670define <vscale x 2 x i32> @vdiv_vx_nxv2i32(<vscale x 2 x i32> %va, i32 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {671; CHECK-LABEL: vdiv_vx_nxv2i32:672; CHECK: # %bb.0:673; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma674; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t675; CHECK-NEXT: ret676 %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0677 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer678 %v = call <vscale x 2 x i32> @llvm.vp.sdiv.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)679 ret <vscale x 2 x i32> %v680}681 682define <vscale x 2 x i32> @vdiv_vx_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 %b, i32 zeroext %evl) {683; CHECK-LABEL: vdiv_vx_nxv2i32_unmasked:684; CHECK: # %bb.0:685; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma686; CHECK-NEXT: vdiv.vx v8, v8, a0687; CHECK-NEXT: ret688 %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0689 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer690 %v = call <vscale x 2 x i32> @llvm.vp.sdiv.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)691 ret <vscale x 2 x i32> %v692}693 694define <vscale x 4 x i32> @vdiv_vv_nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {695; CHECK-LABEL: vdiv_vv_nxv4i32:696; CHECK: # %bb.0:697; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma698; CHECK-NEXT: vdiv.vv v8, v8, v10, v0.t699; CHECK-NEXT: ret700 %v = call <vscale x 4 x i32> @llvm.vp.sdiv.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 %evl)701 ret <vscale x 4 x i32> %v702}703 704define <vscale x 4 x i32> @vdiv_vv_nxv4i32_unmasked(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, i32 zeroext %evl) {705; CHECK-LABEL: vdiv_vv_nxv4i32_unmasked:706; CHECK: # %bb.0:707; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma708; CHECK-NEXT: vdiv.vv v8, v8, v10709; CHECK-NEXT: ret710 %v = call <vscale x 4 x i32> @llvm.vp.sdiv.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)711 ret <vscale x 4 x i32> %v712}713 714define <vscale x 4 x i32> @vdiv_vx_nxv4i32(<vscale x 4 x i32> %va, i32 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {715; CHECK-LABEL: vdiv_vx_nxv4i32:716; CHECK: # %bb.0:717; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma718; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t719; CHECK-NEXT: ret720 %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0721 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer722 %v = call <vscale x 4 x i32> @llvm.vp.sdiv.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)723 ret <vscale x 4 x i32> %v724}725 726define <vscale x 4 x i32> @vdiv_vx_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 %b, i32 zeroext %evl) {727; CHECK-LABEL: vdiv_vx_nxv4i32_unmasked:728; CHECK: # %bb.0:729; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma730; CHECK-NEXT: vdiv.vx v8, v8, a0731; CHECK-NEXT: ret732 %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0733 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer734 %v = call <vscale x 4 x i32> @llvm.vp.sdiv.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)735 ret <vscale x 4 x i32> %v736}737 738define <vscale x 8 x i32> @vdiv_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {739; CHECK-LABEL: vdiv_vv_nxv8i32:740; CHECK: # %bb.0:741; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma742; CHECK-NEXT: vdiv.vv v8, v8, v12, v0.t743; CHECK-NEXT: ret744 %v = call <vscale x 8 x i32> @llvm.vp.sdiv.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 %evl)745 ret <vscale x 8 x i32> %v746}747 748define <vscale x 8 x i32> @vdiv_vv_nxv8i32_unmasked(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, i32 zeroext %evl) {749; CHECK-LABEL: vdiv_vv_nxv8i32_unmasked:750; CHECK: # %bb.0:751; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma752; CHECK-NEXT: vdiv.vv v8, v8, v12753; CHECK-NEXT: ret754 %v = call <vscale x 8 x i32> @llvm.vp.sdiv.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)755 ret <vscale x 8 x i32> %v756}757 758define <vscale x 8 x i32> @vdiv_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {759; CHECK-LABEL: vdiv_vx_nxv8i32:760; CHECK: # %bb.0:761; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma762; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t763; CHECK-NEXT: ret764 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0765 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer766 %v = call <vscale x 8 x i32> @llvm.vp.sdiv.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)767 ret <vscale x 8 x i32> %v768}769 770define <vscale x 8 x i32> @vdiv_vx_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 %b, i32 zeroext %evl) {771; CHECK-LABEL: vdiv_vx_nxv8i32_unmasked:772; CHECK: # %bb.0:773; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma774; CHECK-NEXT: vdiv.vx v8, v8, a0775; CHECK-NEXT: ret776 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0777 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer778 %v = call <vscale x 8 x i32> @llvm.vp.sdiv.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)779 ret <vscale x 8 x i32> %v780}781 782define <vscale x 16 x i32> @vdiv_vv_nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {783; CHECK-LABEL: vdiv_vv_nxv16i32:784; CHECK: # %bb.0:785; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma786; CHECK-NEXT: vdiv.vv v8, v8, v16, v0.t787; CHECK-NEXT: ret788 %v = call <vscale x 16 x i32> @llvm.vp.sdiv.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 %evl)789 ret <vscale x 16 x i32> %v790}791 792define <vscale x 16 x i32> @vdiv_vv_nxv16i32_unmasked(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, i32 zeroext %evl) {793; CHECK-LABEL: vdiv_vv_nxv16i32_unmasked:794; CHECK: # %bb.0:795; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma796; CHECK-NEXT: vdiv.vv v8, v8, v16797; CHECK-NEXT: ret798 %v = call <vscale x 16 x i32> @llvm.vp.sdiv.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)799 ret <vscale x 16 x i32> %v800}801 802define <vscale x 16 x i32> @vdiv_vx_nxv16i32(<vscale x 16 x i32> %va, i32 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {803; CHECK-LABEL: vdiv_vx_nxv16i32:804; CHECK: # %bb.0:805; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma806; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t807; CHECK-NEXT: ret808 %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0809 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer810 %v = call <vscale x 16 x i32> @llvm.vp.sdiv.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)811 ret <vscale x 16 x i32> %v812}813 814define <vscale x 16 x i32> @vdiv_vx_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 %b, i32 zeroext %evl) {815; CHECK-LABEL: vdiv_vx_nxv16i32_unmasked:816; CHECK: # %bb.0:817; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma818; CHECK-NEXT: vdiv.vx v8, v8, a0819; CHECK-NEXT: ret820 %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0821 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer822 %v = call <vscale x 16 x i32> @llvm.vp.sdiv.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)823 ret <vscale x 16 x i32> %v824}825 826define <vscale x 1 x i64> @vdiv_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {827; CHECK-LABEL: vdiv_vv_nxv1i64:828; CHECK: # %bb.0:829; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma830; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t831; CHECK-NEXT: ret832 %v = call <vscale x 1 x i64> @llvm.vp.sdiv.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 %evl)833 ret <vscale x 1 x i64> %v834}835 836define <vscale x 1 x i64> @vdiv_vv_nxv1i64_unmasked(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, i32 zeroext %evl) {837; CHECK-LABEL: vdiv_vv_nxv1i64_unmasked:838; CHECK: # %bb.0:839; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma840; CHECK-NEXT: vdiv.vv v8, v8, v9841; CHECK-NEXT: ret842 %v = call <vscale x 1 x i64> @llvm.vp.sdiv.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)843 ret <vscale x 1 x i64> %v844}845 846define <vscale x 1 x i64> @vdiv_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {847; RV32-LABEL: vdiv_vx_nxv1i64:848; RV32: # %bb.0:849; RV32-NEXT: addi sp, sp, -16850; RV32-NEXT: .cfi_def_cfa_offset 16851; RV32-NEXT: sw a0, 8(sp)852; RV32-NEXT: sw a1, 12(sp)853; RV32-NEXT: addi a0, sp, 8854; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma855; RV32-NEXT: vlse64.v v9, (a0), zero856; RV32-NEXT: vdiv.vv v8, v8, v9, v0.t857; RV32-NEXT: addi sp, sp, 16858; RV32-NEXT: .cfi_def_cfa_offset 0859; RV32-NEXT: ret860;861; RV64-LABEL: vdiv_vx_nxv1i64:862; RV64: # %bb.0:863; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma864; RV64-NEXT: vdiv.vx v8, v8, a0, v0.t865; RV64-NEXT: ret866 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0867 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer868 %v = call <vscale x 1 x i64> @llvm.vp.sdiv.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)869 ret <vscale x 1 x i64> %v870}871 872define <vscale x 1 x i64> @vdiv_vx_nxv1i64_unmasked(<vscale x 1 x i64> %va, i64 %b, i32 zeroext %evl) {873; RV32-LABEL: vdiv_vx_nxv1i64_unmasked:874; RV32: # %bb.0:875; RV32-NEXT: addi sp, sp, -16876; RV32-NEXT: .cfi_def_cfa_offset 16877; RV32-NEXT: sw a0, 8(sp)878; RV32-NEXT: sw a1, 12(sp)879; RV32-NEXT: addi a0, sp, 8880; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma881; RV32-NEXT: vlse64.v v9, (a0), zero882; RV32-NEXT: vdiv.vv v8, v8, v9883; RV32-NEXT: addi sp, sp, 16884; RV32-NEXT: .cfi_def_cfa_offset 0885; RV32-NEXT: ret886;887; RV64-LABEL: vdiv_vx_nxv1i64_unmasked:888; RV64: # %bb.0:889; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma890; RV64-NEXT: vdiv.vx v8, v8, a0891; RV64-NEXT: ret892 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0893 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer894 %v = call <vscale x 1 x i64> @llvm.vp.sdiv.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)895 ret <vscale x 1 x i64> %v896}897 898define <vscale x 2 x i64> @vdiv_vv_nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {899; CHECK-LABEL: vdiv_vv_nxv2i64:900; CHECK: # %bb.0:901; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma902; CHECK-NEXT: vdiv.vv v8, v8, v10, v0.t903; CHECK-NEXT: ret904 %v = call <vscale x 2 x i64> @llvm.vp.sdiv.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 %evl)905 ret <vscale x 2 x i64> %v906}907 908define <vscale x 2 x i64> @vdiv_vv_nxv2i64_unmasked(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, i32 zeroext %evl) {909; CHECK-LABEL: vdiv_vv_nxv2i64_unmasked:910; CHECK: # %bb.0:911; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma912; CHECK-NEXT: vdiv.vv v8, v8, v10913; CHECK-NEXT: ret914 %v = call <vscale x 2 x i64> @llvm.vp.sdiv.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)915 ret <vscale x 2 x i64> %v916}917 918define <vscale x 2 x i64> @vdiv_vx_nxv2i64(<vscale x 2 x i64> %va, i64 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {919; RV32-LABEL: vdiv_vx_nxv2i64:920; RV32: # %bb.0:921; RV32-NEXT: addi sp, sp, -16922; RV32-NEXT: .cfi_def_cfa_offset 16923; RV32-NEXT: sw a0, 8(sp)924; RV32-NEXT: sw a1, 12(sp)925; RV32-NEXT: addi a0, sp, 8926; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma927; RV32-NEXT: vlse64.v v10, (a0), zero928; RV32-NEXT: vdiv.vv v8, v8, v10, v0.t929; RV32-NEXT: addi sp, sp, 16930; RV32-NEXT: .cfi_def_cfa_offset 0931; RV32-NEXT: ret932;933; RV64-LABEL: vdiv_vx_nxv2i64:934; RV64: # %bb.0:935; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma936; RV64-NEXT: vdiv.vx v8, v8, a0, v0.t937; RV64-NEXT: ret938 %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0939 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer940 %v = call <vscale x 2 x i64> @llvm.vp.sdiv.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)941 ret <vscale x 2 x i64> %v942}943 944define <vscale x 2 x i64> @vdiv_vx_nxv2i64_unmasked(<vscale x 2 x i64> %va, i64 %b, i32 zeroext %evl) {945; RV32-LABEL: vdiv_vx_nxv2i64_unmasked:946; RV32: # %bb.0:947; RV32-NEXT: addi sp, sp, -16948; RV32-NEXT: .cfi_def_cfa_offset 16949; RV32-NEXT: sw a0, 8(sp)950; RV32-NEXT: sw a1, 12(sp)951; RV32-NEXT: addi a0, sp, 8952; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma953; RV32-NEXT: vlse64.v v10, (a0), zero954; RV32-NEXT: vdiv.vv v8, v8, v10955; RV32-NEXT: addi sp, sp, 16956; RV32-NEXT: .cfi_def_cfa_offset 0957; RV32-NEXT: ret958;959; RV64-LABEL: vdiv_vx_nxv2i64_unmasked:960; RV64: # %bb.0:961; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma962; RV64-NEXT: vdiv.vx v8, v8, a0963; RV64-NEXT: ret964 %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0965 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer966 %v = call <vscale x 2 x i64> @llvm.vp.sdiv.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)967 ret <vscale x 2 x i64> %v968}969 970define <vscale x 4 x i64> @vdiv_vv_nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {971; CHECK-LABEL: vdiv_vv_nxv4i64:972; CHECK: # %bb.0:973; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma974; CHECK-NEXT: vdiv.vv v8, v8, v12, v0.t975; CHECK-NEXT: ret976 %v = call <vscale x 4 x i64> @llvm.vp.sdiv.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 %evl)977 ret <vscale x 4 x i64> %v978}979 980define <vscale x 4 x i64> @vdiv_vv_nxv4i64_unmasked(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, i32 zeroext %evl) {981; CHECK-LABEL: vdiv_vv_nxv4i64_unmasked:982; CHECK: # %bb.0:983; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma984; CHECK-NEXT: vdiv.vv v8, v8, v12985; CHECK-NEXT: ret986 %v = call <vscale x 4 x i64> @llvm.vp.sdiv.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)987 ret <vscale x 4 x i64> %v988}989 990define <vscale x 4 x i64> @vdiv_vx_nxv4i64(<vscale x 4 x i64> %va, i64 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {991; RV32-LABEL: vdiv_vx_nxv4i64:992; RV32: # %bb.0:993; RV32-NEXT: addi sp, sp, -16994; RV32-NEXT: .cfi_def_cfa_offset 16995; RV32-NEXT: sw a0, 8(sp)996; RV32-NEXT: sw a1, 12(sp)997; RV32-NEXT: addi a0, sp, 8998; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma999; RV32-NEXT: vlse64.v v12, (a0), zero1000; RV32-NEXT: vdiv.vv v8, v8, v12, v0.t1001; RV32-NEXT: addi sp, sp, 161002; RV32-NEXT: .cfi_def_cfa_offset 01003; RV32-NEXT: ret1004;1005; RV64-LABEL: vdiv_vx_nxv4i64:1006; RV64: # %bb.0:1007; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma1008; RV64-NEXT: vdiv.vx v8, v8, a0, v0.t1009; RV64-NEXT: ret1010 %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 01011 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer1012 %v = call <vscale x 4 x i64> @llvm.vp.sdiv.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)1013 ret <vscale x 4 x i64> %v1014}1015 1016define <vscale x 4 x i64> @vdiv_vx_nxv4i64_unmasked(<vscale x 4 x i64> %va, i64 %b, i32 zeroext %evl) {1017; RV32-LABEL: vdiv_vx_nxv4i64_unmasked:1018; RV32: # %bb.0:1019; RV32-NEXT: addi sp, sp, -161020; RV32-NEXT: .cfi_def_cfa_offset 161021; RV32-NEXT: sw a0, 8(sp)1022; RV32-NEXT: sw a1, 12(sp)1023; RV32-NEXT: addi a0, sp, 81024; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma1025; RV32-NEXT: vlse64.v v12, (a0), zero1026; RV32-NEXT: vdiv.vv v8, v8, v121027; RV32-NEXT: addi sp, sp, 161028; RV32-NEXT: .cfi_def_cfa_offset 01029; RV32-NEXT: ret1030;1031; RV64-LABEL: vdiv_vx_nxv4i64_unmasked:1032; RV64: # %bb.0:1033; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma1034; RV64-NEXT: vdiv.vx v8, v8, a01035; RV64-NEXT: ret1036 %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 01037 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer1038 %v = call <vscale x 4 x i64> @llvm.vp.sdiv.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)1039 ret <vscale x 4 x i64> %v1040}1041 1042define <vscale x 8 x i64> @vdiv_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {1043; CHECK-LABEL: vdiv_vv_nxv8i64:1044; CHECK: # %bb.0:1045; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma1046; CHECK-NEXT: vdiv.vv v8, v8, v16, v0.t1047; CHECK-NEXT: ret1048 %v = call <vscale x 8 x i64> @llvm.vp.sdiv.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 %evl)1049 ret <vscale x 8 x i64> %v1050}1051 1052define <vscale x 8 x i64> @vdiv_vv_nxv8i64_unmasked(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, i32 zeroext %evl) {1053; CHECK-LABEL: vdiv_vv_nxv8i64_unmasked:1054; CHECK: # %bb.0:1055; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma1056; CHECK-NEXT: vdiv.vv v8, v8, v161057; CHECK-NEXT: ret1058 %v = call <vscale x 8 x i64> @llvm.vp.sdiv.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)1059 ret <vscale x 8 x i64> %v1060}1061 1062define <vscale x 8 x i64> @vdiv_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {1063; RV32-LABEL: vdiv_vx_nxv8i64:1064; RV32: # %bb.0:1065; RV32-NEXT: addi sp, sp, -161066; RV32-NEXT: .cfi_def_cfa_offset 161067; RV32-NEXT: sw a0, 8(sp)1068; RV32-NEXT: sw a1, 12(sp)1069; RV32-NEXT: addi a0, sp, 81070; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma1071; RV32-NEXT: vlse64.v v16, (a0), zero1072; RV32-NEXT: vdiv.vv v8, v8, v16, v0.t1073; RV32-NEXT: addi sp, sp, 161074; RV32-NEXT: .cfi_def_cfa_offset 01075; RV32-NEXT: ret1076;1077; RV64-LABEL: vdiv_vx_nxv8i64:1078; RV64: # %bb.0:1079; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma1080; RV64-NEXT: vdiv.vx v8, v8, a0, v0.t1081; RV64-NEXT: ret1082 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 01083 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer1084 %v = call <vscale x 8 x i64> @llvm.vp.sdiv.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)1085 ret <vscale x 8 x i64> %v1086}1087 1088define <vscale x 8 x i64> @vdiv_vx_nxv8i64_unmasked(<vscale x 8 x i64> %va, i64 %b, i32 zeroext %evl) {1089; RV32-LABEL: vdiv_vx_nxv8i64_unmasked:1090; RV32: # %bb.0:1091; RV32-NEXT: addi sp, sp, -161092; RV32-NEXT: .cfi_def_cfa_offset 161093; RV32-NEXT: sw a0, 8(sp)1094; RV32-NEXT: sw a1, 12(sp)1095; RV32-NEXT: addi a0, sp, 81096; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma1097; RV32-NEXT: vlse64.v v16, (a0), zero1098; RV32-NEXT: vdiv.vv v8, v8, v161099; RV32-NEXT: addi sp, sp, 161100; RV32-NEXT: .cfi_def_cfa_offset 01101; RV32-NEXT: ret1102;1103; RV64-LABEL: vdiv_vx_nxv8i64_unmasked:1104; RV64: # %bb.0:1105; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma1106; RV64-NEXT: vdiv.vx v8, v8, a01107; RV64-NEXT: ret1108 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 01109 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer1110 %v = call <vscale x 8 x i64> @llvm.vp.sdiv.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)1111 ret <vscale x 8 x i64> %v1112}1113