1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s \ 3; RUN: | FileCheck %s --check-prefixes=CHECK,RV32 4; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s \ 5; RUN: | FileCheck %s --check-prefixes=CHECK,RV64 6 7declare <vscale x 8 x i7> @llvm.vp.sdiv.nxv8i7(<vscale x 8 x i7>, <vscale x 8 x i7>, <vscale x 8 x i1>, i32) 8 9define <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) { 10; CHECK-LABEL: vdiv_vx_nxv8i7: 11; CHECK: # %bb.0: 12; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 13; CHECK-NEXT: vsll.vi v8, v8, 1, v0.t 14; CHECK-NEXT: vmv.v.x v9, a0 15; CHECK-NEXT: vsra.vi v8, v8, 1, v0.t 16; CHECK-NEXT: vsll.vi v9, v9, 1, v0.t 17; CHECK-NEXT: vsra.vi v9, v9, 1, v0.t 18; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t 19; CHECK-NEXT: ret 20 %elt.head = insertelement <vscale x 8 x i7> poison, i7 %b, i32 0 21 %vb = shufflevector <vscale x 8 x i7> %elt.head, <vscale x 8 x i7> poison, <vscale x 8 x i32> zeroinitializer 22 %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) 23 ret <vscale x 8 x i7> %v 24} 25 26declare <vscale x 1 x i8> @llvm.vp.sdiv.nxv1i8(<vscale x 1 x i8>, <vscale x 1 x i8>, <vscale x 1 x i1>, i32) 27 28define <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) { 29; CHECK-LABEL: vdiv_vv_nxv1i8: 30; CHECK: # %bb.0: 31; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma 32; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t 33; CHECK-NEXT: ret 34 %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) 35 ret <vscale x 1 x i8> %v 36} 37 38define <vscale x 1 x i8> @vdiv_vv_nxv1i8_unmasked(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, i32 zeroext %evl) { 39; CHECK-LABEL: vdiv_vv_nxv1i8_unmasked: 40; CHECK: # %bb.0: 41; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma 42; CHECK-NEXT: vdiv.vv v8, v8, v9 43; CHECK-NEXT: ret 44 %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) 45 ret <vscale x 1 x i8> %v 46} 47 48define <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) { 49; CHECK-LABEL: vdiv_vx_nxv1i8: 50; CHECK: # %bb.0: 51; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 52; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t 53; CHECK-NEXT: ret 54 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0 55 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer 56 %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) 57 ret <vscale x 1 x i8> %v 58} 59 60define <vscale x 1 x i8> @vdiv_vx_nxv1i8_unmasked(<vscale x 1 x i8> %va, i8 %b, i32 zeroext %evl) { 61; CHECK-LABEL: vdiv_vx_nxv1i8_unmasked: 62; CHECK: # %bb.0: 63; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 64; CHECK-NEXT: vdiv.vx v8, v8, a0 65; CHECK-NEXT: ret 66 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0 67 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer 68 %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) 69 ret <vscale x 1 x i8> %v 70} 71 72declare <vscale x 2 x i8> @llvm.vp.sdiv.nxv2i8(<vscale x 2 x i8>, <vscale x 2 x i8>, <vscale x 2 x i1>, i32) 73 74define <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) { 75; CHECK-LABEL: vdiv_vv_nxv2i8: 76; CHECK: # %bb.0: 77; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma 78; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t 79; CHECK-NEXT: ret 80 %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) 81 ret <vscale x 2 x i8> %v 82} 83 84define <vscale x 2 x i8> @vdiv_vv_nxv2i8_unmasked(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, i32 zeroext %evl) { 85; CHECK-LABEL: vdiv_vv_nxv2i8_unmasked: 86; CHECK: # %bb.0: 87; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma 88; CHECK-NEXT: vdiv.vv v8, v8, v9 89; CHECK-NEXT: ret 90 %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) 91 ret <vscale x 2 x i8> %v 92} 93 94define <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) { 95; CHECK-LABEL: vdiv_vx_nxv2i8: 96; CHECK: # %bb.0: 97; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 98; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t 99; CHECK-NEXT: ret 100 %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0 101 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer 102 %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) 103 ret <vscale x 2 x i8> %v 104} 105 106define <vscale x 2 x i8> @vdiv_vx_nxv2i8_unmasked(<vscale x 2 x i8> %va, i8 %b, i32 zeroext %evl) { 107; CHECK-LABEL: vdiv_vx_nxv2i8_unmasked: 108; CHECK: # %bb.0: 109; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 110; CHECK-NEXT: vdiv.vx v8, v8, a0 111; CHECK-NEXT: ret 112 %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0 113 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer 114 %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) 115 ret <vscale x 2 x i8> %v 116} 117 118declare <vscale x 3 x i8> @llvm.vp.sdiv.nxv3i8(<vscale x 3 x i8>, <vscale x 3 x i8>, <vscale x 3 x i1>, i32) 119 120define <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) { 121; CHECK-LABEL: vdiv_vv_nxv3i8: 122; CHECK: # %bb.0: 123; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma 124; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t 125; CHECK-NEXT: ret 126 %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) 127 ret <vscale x 3 x i8> %v 128} 129 130declare <vscale x 4 x i8> @llvm.vp.sdiv.nxv4i8(<vscale x 4 x i8>, <vscale x 4 x i8>, <vscale x 4 x i1>, i32) 131 132define <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) { 133; CHECK-LABEL: vdiv_vv_nxv4i8: 134; CHECK: # %bb.0: 135; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma 136; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t 137; CHECK-NEXT: ret 138 %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) 139 ret <vscale x 4 x i8> %v 140} 141 142define <vscale x 4 x i8> @vdiv_vv_nxv4i8_unmasked(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, i32 zeroext %evl) { 143; CHECK-LABEL: vdiv_vv_nxv4i8_unmasked: 144; CHECK: # %bb.0: 145; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma 146; CHECK-NEXT: vdiv.vv v8, v8, v9 147; CHECK-NEXT: ret 148 %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) 149 ret <vscale x 4 x i8> %v 150} 151 152define <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) { 153; CHECK-LABEL: vdiv_vx_nxv4i8: 154; CHECK: # %bb.0: 155; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 156; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t 157; CHECK-NEXT: ret 158 %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0 159 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer 160 %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) 161 ret <vscale x 4 x i8> %v 162} 163 164define <vscale x 4 x i8> @vdiv_vx_nxv4i8_unmasked(<vscale x 4 x i8> %va, i8 %b, i32 zeroext %evl) { 165; CHECK-LABEL: vdiv_vx_nxv4i8_unmasked: 166; CHECK: # %bb.0: 167; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 168; CHECK-NEXT: vdiv.vx v8, v8, a0 169; CHECK-NEXT: ret 170 %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0 171 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer 172 %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) 173 ret <vscale x 4 x i8> %v 174} 175 176declare <vscale x 8 x i8> @llvm.vp.sdiv.nxv8i8(<vscale x 8 x i8>, <vscale x 8 x i8>, <vscale x 8 x i1>, i32) 177 178define <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) { 179; CHECK-LABEL: vdiv_vv_nxv8i8: 180; CHECK: # %bb.0: 181; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma 182; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t 183; CHECK-NEXT: ret 184 %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) 185 ret <vscale x 8 x i8> %v 186} 187 188define <vscale x 8 x i8> @vdiv_vv_nxv8i8_unmasked(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, i32 zeroext %evl) { 189; CHECK-LABEL: vdiv_vv_nxv8i8_unmasked: 190; CHECK: # %bb.0: 191; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma 192; CHECK-NEXT: vdiv.vv v8, v8, v9 193; CHECK-NEXT: ret 194 %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) 195 ret <vscale x 8 x i8> %v 196} 197 198define <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) { 199; CHECK-LABEL: vdiv_vx_nxv8i8: 200; CHECK: # %bb.0: 201; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 202; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t 203; CHECK-NEXT: ret 204 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0 205 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer 206 %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) 207 ret <vscale x 8 x i8> %v 208} 209 210define <vscale x 8 x i8> @vdiv_vx_nxv8i8_unmasked(<vscale x 8 x i8> %va, i8 %b, i32 zeroext %evl) { 211; CHECK-LABEL: vdiv_vx_nxv8i8_unmasked: 212; CHECK: # %bb.0: 213; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 214; CHECK-NEXT: vdiv.vx v8, v8, a0 215; CHECK-NEXT: ret 216 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0 217 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer 218 %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) 219 ret <vscale x 8 x i8> %v 220} 221 222declare <vscale x 16 x i8> @llvm.vp.sdiv.nxv16i8(<vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i1>, i32) 223 224define <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) { 225; CHECK-LABEL: vdiv_vv_nxv16i8: 226; CHECK: # %bb.0: 227; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma 228; CHECK-NEXT: vdiv.vv v8, v8, v10, v0.t 229; CHECK-NEXT: ret 230 %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) 231 ret <vscale x 16 x i8> %v 232} 233 234define <vscale x 16 x i8> @vdiv_vv_nxv16i8_unmasked(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, i32 zeroext %evl) { 235; CHECK-LABEL: vdiv_vv_nxv16i8_unmasked: 236; CHECK: # %bb.0: 237; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma 238; CHECK-NEXT: vdiv.vv v8, v8, v10 239; CHECK-NEXT: ret 240 %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) 241 ret <vscale x 16 x i8> %v 242} 243 244define <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) { 245; CHECK-LABEL: vdiv_vx_nxv16i8: 246; CHECK: # %bb.0: 247; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 248; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t 249; CHECK-NEXT: ret 250 %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0 251 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer 252 %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) 253 ret <vscale x 16 x i8> %v 254} 255 256define <vscale x 16 x i8> @vdiv_vx_nxv16i8_unmasked(<vscale x 16 x i8> %va, i8 %b, i32 zeroext %evl) { 257; CHECK-LABEL: vdiv_vx_nxv16i8_unmasked: 258; CHECK: # %bb.0: 259; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 260; CHECK-NEXT: vdiv.vx v8, v8, a0 261; CHECK-NEXT: ret 262 %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0 263 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer 264 %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) 265 ret <vscale x 16 x i8> %v 266} 267 268declare <vscale x 32 x i8> @llvm.vp.sdiv.nxv32i8(<vscale x 32 x i8>, <vscale x 32 x i8>, <vscale x 32 x i1>, i32) 269 270define <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) { 271; CHECK-LABEL: vdiv_vv_nxv32i8: 272; CHECK: # %bb.0: 273; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma 274; CHECK-NEXT: vdiv.vv v8, v8, v12, v0.t 275; CHECK-NEXT: ret 276 %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) 277 ret <vscale x 32 x i8> %v 278} 279 280define <vscale x 32 x i8> @vdiv_vv_nxv32i8_unmasked(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, i32 zeroext %evl) { 281; CHECK-LABEL: vdiv_vv_nxv32i8_unmasked: 282; CHECK: # %bb.0: 283; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma 284; CHECK-NEXT: vdiv.vv v8, v8, v12 285; CHECK-NEXT: ret 286 %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) 287 ret <vscale x 32 x i8> %v 288} 289 290define <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) { 291; CHECK-LABEL: vdiv_vx_nxv32i8: 292; CHECK: # %bb.0: 293; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma 294; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t 295; CHECK-NEXT: ret 296 %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0 297 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer 298 %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) 299 ret <vscale x 32 x i8> %v 300} 301 302define <vscale x 32 x i8> @vdiv_vx_nxv32i8_unmasked(<vscale x 32 x i8> %va, i8 %b, i32 zeroext %evl) { 303; CHECK-LABEL: vdiv_vx_nxv32i8_unmasked: 304; CHECK: # %bb.0: 305; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma 306; CHECK-NEXT: vdiv.vx v8, v8, a0 307; CHECK-NEXT: ret 308 %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0 309 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer 310 %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) 311 ret <vscale x 32 x i8> %v 312} 313 314declare <vscale x 64 x i8> @llvm.vp.sdiv.nxv64i8(<vscale x 64 x i8>, <vscale x 64 x i8>, <vscale x 64 x i1>, i32) 315 316define <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) { 317; CHECK-LABEL: vdiv_vv_nxv64i8: 318; CHECK: # %bb.0: 319; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma 320; CHECK-NEXT: vdiv.vv v8, v8, v16, v0.t 321; CHECK-NEXT: ret 322 %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) 323 ret <vscale x 64 x i8> %v 324} 325 326define <vscale x 64 x i8> @vdiv_vv_nxv64i8_unmasked(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, i32 zeroext %evl) { 327; CHECK-LABEL: vdiv_vv_nxv64i8_unmasked: 328; CHECK: # %bb.0: 329; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma 330; CHECK-NEXT: vdiv.vv v8, v8, v16 331; CHECK-NEXT: ret 332 %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) 333 ret <vscale x 64 x i8> %v 334} 335 336define <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) { 337; CHECK-LABEL: vdiv_vx_nxv64i8: 338; CHECK: # %bb.0: 339; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma 340; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t 341; CHECK-NEXT: ret 342 %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0 343 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer 344 %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) 345 ret <vscale x 64 x i8> %v 346} 347 348define <vscale x 64 x i8> @vdiv_vx_nxv64i8_unmasked(<vscale x 64 x i8> %va, i8 %b, i32 zeroext %evl) { 349; CHECK-LABEL: vdiv_vx_nxv64i8_unmasked: 350; CHECK: # %bb.0: 351; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma 352; CHECK-NEXT: vdiv.vx v8, v8, a0 353; CHECK-NEXT: ret 354 %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0 355 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer 356 %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) 357 ret <vscale x 64 x i8> %v 358} 359 360declare <vscale x 1 x i16> @llvm.vp.sdiv.nxv1i16(<vscale x 1 x i16>, <vscale x 1 x i16>, <vscale x 1 x i1>, i32) 361 362define <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) { 363; CHECK-LABEL: vdiv_vv_nxv1i16: 364; CHECK: # %bb.0: 365; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma 366; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t 367; CHECK-NEXT: ret 368 %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) 369 ret <vscale x 1 x i16> %v 370} 371 372define <vscale x 1 x i16> @vdiv_vv_nxv1i16_unmasked(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, i32 zeroext %evl) { 373; CHECK-LABEL: vdiv_vv_nxv1i16_unmasked: 374; CHECK: # %bb.0: 375; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma 376; CHECK-NEXT: vdiv.vv v8, v8, v9 377; CHECK-NEXT: ret 378 %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) 379 ret <vscale x 1 x i16> %v 380} 381 382define <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) { 383; CHECK-LABEL: vdiv_vx_nxv1i16: 384; CHECK: # %bb.0: 385; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 386; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t 387; CHECK-NEXT: ret 388 %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0 389 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer 390 %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) 391 ret <vscale x 1 x i16> %v 392} 393 394define <vscale x 1 x i16> @vdiv_vx_nxv1i16_unmasked(<vscale x 1 x i16> %va, i16 %b, i32 zeroext %evl) { 395; CHECK-LABEL: vdiv_vx_nxv1i16_unmasked: 396; CHECK: # %bb.0: 397; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 398; CHECK-NEXT: vdiv.vx v8, v8, a0 399; CHECK-NEXT: ret 400 %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0 401 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer 402 %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) 403 ret <vscale x 1 x i16> %v 404} 405 406declare <vscale x 2 x i16> @llvm.vp.sdiv.nxv2i16(<vscale x 2 x i16>, <vscale x 2 x i16>, <vscale x 2 x i1>, i32) 407 408define <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) { 409; CHECK-LABEL: vdiv_vv_nxv2i16: 410; CHECK: # %bb.0: 411; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma 412; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t 413; CHECK-NEXT: ret 414 %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) 415 ret <vscale x 2 x i16> %v 416} 417 418define <vscale x 2 x i16> @vdiv_vv_nxv2i16_unmasked(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, i32 zeroext %evl) { 419; CHECK-LABEL: vdiv_vv_nxv2i16_unmasked: 420; CHECK: # %bb.0: 421; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma 422; CHECK-NEXT: vdiv.vv v8, v8, v9 423; CHECK-NEXT: ret 424 %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) 425 ret <vscale x 2 x i16> %v 426} 427 428define <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) { 429; CHECK-LABEL: vdiv_vx_nxv2i16: 430; CHECK: # %bb.0: 431; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 432; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t 433; CHECK-NEXT: ret 434 %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0 435 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer 436 %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) 437 ret <vscale x 2 x i16> %v 438} 439 440define <vscale x 2 x i16> @vdiv_vx_nxv2i16_unmasked(<vscale x 2 x i16> %va, i16 %b, i32 zeroext %evl) { 441; CHECK-LABEL: vdiv_vx_nxv2i16_unmasked: 442; CHECK: # %bb.0: 443; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 444; CHECK-NEXT: vdiv.vx v8, v8, a0 445; CHECK-NEXT: ret 446 %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0 447 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer 448 %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) 449 ret <vscale x 2 x i16> %v 450} 451 452declare <vscale x 4 x i16> @llvm.vp.sdiv.nxv4i16(<vscale x 4 x i16>, <vscale x 4 x i16>, <vscale x 4 x i1>, i32) 453 454define <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) { 455; CHECK-LABEL: vdiv_vv_nxv4i16: 456; CHECK: # %bb.0: 457; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma 458; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t 459; CHECK-NEXT: ret 460 %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) 461 ret <vscale x 4 x i16> %v 462} 463 464define <vscale x 4 x i16> @vdiv_vv_nxv4i16_unmasked(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, i32 zeroext %evl) { 465; CHECK-LABEL: vdiv_vv_nxv4i16_unmasked: 466; CHECK: # %bb.0: 467; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma 468; CHECK-NEXT: vdiv.vv v8, v8, v9 469; CHECK-NEXT: ret 470 %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) 471 ret <vscale x 4 x i16> %v 472} 473 474define <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) { 475; CHECK-LABEL: vdiv_vx_nxv4i16: 476; CHECK: # %bb.0: 477; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 478; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t 479; CHECK-NEXT: ret 480 %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0 481 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer 482 %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) 483 ret <vscale x 4 x i16> %v 484} 485 486define <vscale x 4 x i16> @vdiv_vx_nxv4i16_unmasked(<vscale x 4 x i16> %va, i16 %b, i32 zeroext %evl) { 487; CHECK-LABEL: vdiv_vx_nxv4i16_unmasked: 488; CHECK: # %bb.0: 489; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 490; CHECK-NEXT: vdiv.vx v8, v8, a0 491; CHECK-NEXT: ret 492 %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0 493 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer 494 %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) 495 ret <vscale x 4 x i16> %v 496} 497 498declare <vscale x 8 x i16> @llvm.vp.sdiv.nxv8i16(<vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i1>, i32) 499 500define <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) { 501; CHECK-LABEL: vdiv_vv_nxv8i16: 502; CHECK: # %bb.0: 503; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma 504; CHECK-NEXT: vdiv.vv v8, v8, v10, v0.t 505; CHECK-NEXT: ret 506 %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) 507 ret <vscale x 8 x i16> %v 508} 509 510define <vscale x 8 x i16> @vdiv_vv_nxv8i16_unmasked(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, i32 zeroext %evl) { 511; CHECK-LABEL: vdiv_vv_nxv8i16_unmasked: 512; CHECK: # %bb.0: 513; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma 514; CHECK-NEXT: vdiv.vv v8, v8, v10 515; CHECK-NEXT: ret 516 %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) 517 ret <vscale x 8 x i16> %v 518} 519 520define <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) { 521; CHECK-LABEL: vdiv_vx_nxv8i16: 522; CHECK: # %bb.0: 523; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 524; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t 525; CHECK-NEXT: ret 526 %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0 527 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer 528 %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) 529 ret <vscale x 8 x i16> %v 530} 531 532define <vscale x 8 x i16> @vdiv_vx_nxv8i16_unmasked(<vscale x 8 x i16> %va, i16 %b, i32 zeroext %evl) { 533; CHECK-LABEL: vdiv_vx_nxv8i16_unmasked: 534; CHECK: # %bb.0: 535; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 536; CHECK-NEXT: vdiv.vx v8, v8, a0 537; CHECK-NEXT: ret 538 %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0 539 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer 540 %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) 541 ret <vscale x 8 x i16> %v 542} 543 544declare <vscale x 16 x i16> @llvm.vp.sdiv.nxv16i16(<vscale x 16 x i16>, <vscale x 16 x i16>, <vscale x 16 x i1>, i32) 545 546define <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) { 547; CHECK-LABEL: vdiv_vv_nxv16i16: 548; CHECK: # %bb.0: 549; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma 550; CHECK-NEXT: vdiv.vv v8, v8, v12, v0.t 551; CHECK-NEXT: ret 552 %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) 553 ret <vscale x 16 x i16> %v 554} 555 556define <vscale x 16 x i16> @vdiv_vv_nxv16i16_unmasked(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, i32 zeroext %evl) { 557; CHECK-LABEL: vdiv_vv_nxv16i16_unmasked: 558; CHECK: # %bb.0: 559; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma 560; CHECK-NEXT: vdiv.vv v8, v8, v12 561; CHECK-NEXT: ret 562 %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) 563 ret <vscale x 16 x i16> %v 564} 565 566define <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) { 567; CHECK-LABEL: vdiv_vx_nxv16i16: 568; CHECK: # %bb.0: 569; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 570; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t 571; CHECK-NEXT: ret 572 %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0 573 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer 574 %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) 575 ret <vscale x 16 x i16> %v 576} 577 578define <vscale x 16 x i16> @vdiv_vx_nxv16i16_unmasked(<vscale x 16 x i16> %va, i16 %b, i32 zeroext %evl) { 579; CHECK-LABEL: vdiv_vx_nxv16i16_unmasked: 580; CHECK: # %bb.0: 581; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 582; CHECK-NEXT: vdiv.vx v8, v8, a0 583; CHECK-NEXT: ret 584 %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0 585 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer 586 %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) 587 ret <vscale x 16 x i16> %v 588} 589 590declare <vscale x 32 x i16> @llvm.vp.sdiv.nxv32i16(<vscale x 32 x i16>, <vscale x 32 x i16>, <vscale x 32 x i1>, i32) 591 592define <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) { 593; CHECK-LABEL: vdiv_vv_nxv32i16: 594; CHECK: # %bb.0: 595; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma 596; CHECK-NEXT: vdiv.vv v8, v8, v16, v0.t 597; CHECK-NEXT: ret 598 %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) 599 ret <vscale x 32 x i16> %v 600} 601 602define <vscale x 32 x i16> @vdiv_vv_nxv32i16_unmasked(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, i32 zeroext %evl) { 603; CHECK-LABEL: vdiv_vv_nxv32i16_unmasked: 604; CHECK: # %bb.0: 605; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma 606; CHECK-NEXT: vdiv.vv v8, v8, v16 607; CHECK-NEXT: ret 608 %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) 609 ret <vscale x 32 x i16> %v 610} 611 612define <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) { 613; CHECK-LABEL: vdiv_vx_nxv32i16: 614; CHECK: # %bb.0: 615; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma 616; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t 617; CHECK-NEXT: ret 618 %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0 619 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer 620 %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) 621 ret <vscale x 32 x i16> %v 622} 623 624define <vscale x 32 x i16> @vdiv_vx_nxv32i16_unmasked(<vscale x 32 x i16> %va, i16 %b, i32 zeroext %evl) { 625; CHECK-LABEL: vdiv_vx_nxv32i16_unmasked: 626; CHECK: # %bb.0: 627; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma 628; CHECK-NEXT: vdiv.vx v8, v8, a0 629; CHECK-NEXT: ret 630 %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0 631 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer 632 %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) 633 ret <vscale x 32 x i16> %v 634} 635 636declare <vscale x 1 x i32> @llvm.vp.sdiv.nxv1i32(<vscale x 1 x i32>, <vscale x 1 x i32>, <vscale x 1 x i1>, i32) 637 638define <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) { 639; CHECK-LABEL: vdiv_vv_nxv1i32: 640; CHECK: # %bb.0: 641; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma 642; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t 643; CHECK-NEXT: ret 644 %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) 645 ret <vscale x 1 x i32> %v 646} 647 648define <vscale x 1 x i32> @vdiv_vv_nxv1i32_unmasked(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, i32 zeroext %evl) { 649; CHECK-LABEL: vdiv_vv_nxv1i32_unmasked: 650; CHECK: # %bb.0: 651; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma 652; CHECK-NEXT: vdiv.vv v8, v8, v9 653; CHECK-NEXT: ret 654 %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) 655 ret <vscale x 1 x i32> %v 656} 657 658define <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) { 659; CHECK-LABEL: vdiv_vx_nxv1i32: 660; CHECK: # %bb.0: 661; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 662; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t 663; CHECK-NEXT: ret 664 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0 665 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer 666 %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) 667 ret <vscale x 1 x i32> %v 668} 669 670define <vscale x 1 x i32> @vdiv_vx_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 %b, i32 zeroext %evl) { 671; CHECK-LABEL: vdiv_vx_nxv1i32_unmasked: 672; CHECK: # %bb.0: 673; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 674; CHECK-NEXT: vdiv.vx v8, v8, a0 675; CHECK-NEXT: ret 676 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0 677 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer 678 %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) 679 ret <vscale x 1 x i32> %v 680} 681 682declare <vscale x 2 x i32> @llvm.vp.sdiv.nxv2i32(<vscale x 2 x i32>, <vscale x 2 x i32>, <vscale x 2 x i1>, i32) 683 684define <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) { 685; CHECK-LABEL: vdiv_vv_nxv2i32: 686; CHECK: # %bb.0: 687; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma 688; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t 689; CHECK-NEXT: ret 690 %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) 691 ret <vscale x 2 x i32> %v 692} 693 694define <vscale x 2 x i32> @vdiv_vv_nxv2i32_unmasked(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, i32 zeroext %evl) { 695; CHECK-LABEL: vdiv_vv_nxv2i32_unmasked: 696; CHECK: # %bb.0: 697; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma 698; CHECK-NEXT: vdiv.vv v8, v8, v9 699; CHECK-NEXT: ret 700 %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) 701 ret <vscale x 2 x i32> %v 702} 703 704define <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) { 705; CHECK-LABEL: vdiv_vx_nxv2i32: 706; CHECK: # %bb.0: 707; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 708; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t 709; CHECK-NEXT: ret 710 %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0 711 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer 712 %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) 713 ret <vscale x 2 x i32> %v 714} 715 716define <vscale x 2 x i32> @vdiv_vx_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 %b, i32 zeroext %evl) { 717; CHECK-LABEL: vdiv_vx_nxv2i32_unmasked: 718; CHECK: # %bb.0: 719; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 720; CHECK-NEXT: vdiv.vx v8, v8, a0 721; CHECK-NEXT: ret 722 %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0 723 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer 724 %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) 725 ret <vscale x 2 x i32> %v 726} 727 728declare <vscale x 4 x i32> @llvm.vp.sdiv.nxv4i32(<vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i1>, i32) 729 730define <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) { 731; CHECK-LABEL: vdiv_vv_nxv4i32: 732; CHECK: # %bb.0: 733; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma 734; CHECK-NEXT: vdiv.vv v8, v8, v10, v0.t 735; CHECK-NEXT: ret 736 %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) 737 ret <vscale x 4 x i32> %v 738} 739 740define <vscale x 4 x i32> @vdiv_vv_nxv4i32_unmasked(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, i32 zeroext %evl) { 741; CHECK-LABEL: vdiv_vv_nxv4i32_unmasked: 742; CHECK: # %bb.0: 743; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma 744; CHECK-NEXT: vdiv.vv v8, v8, v10 745; CHECK-NEXT: ret 746 %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) 747 ret <vscale x 4 x i32> %v 748} 749 750define <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) { 751; CHECK-LABEL: vdiv_vx_nxv4i32: 752; CHECK: # %bb.0: 753; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 754; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t 755; CHECK-NEXT: ret 756 %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0 757 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer 758 %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) 759 ret <vscale x 4 x i32> %v 760} 761 762define <vscale x 4 x i32> @vdiv_vx_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 %b, i32 zeroext %evl) { 763; CHECK-LABEL: vdiv_vx_nxv4i32_unmasked: 764; CHECK: # %bb.0: 765; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 766; CHECK-NEXT: vdiv.vx v8, v8, a0 767; CHECK-NEXT: ret 768 %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0 769 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer 770 %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) 771 ret <vscale x 4 x i32> %v 772} 773 774declare <vscale x 8 x i32> @llvm.vp.sdiv.nxv8i32(<vscale x 8 x i32>, <vscale x 8 x i32>, <vscale x 8 x i1>, i32) 775 776define <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) { 777; CHECK-LABEL: vdiv_vv_nxv8i32: 778; CHECK: # %bb.0: 779; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma 780; CHECK-NEXT: vdiv.vv v8, v8, v12, v0.t 781; CHECK-NEXT: ret 782 %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) 783 ret <vscale x 8 x i32> %v 784} 785 786define <vscale x 8 x i32> @vdiv_vv_nxv8i32_unmasked(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, i32 zeroext %evl) { 787; CHECK-LABEL: vdiv_vv_nxv8i32_unmasked: 788; CHECK: # %bb.0: 789; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma 790; CHECK-NEXT: vdiv.vv v8, v8, v12 791; CHECK-NEXT: ret 792 %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) 793 ret <vscale x 8 x i32> %v 794} 795 796define <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) { 797; CHECK-LABEL: vdiv_vx_nxv8i32: 798; CHECK: # %bb.0: 799; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 800; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t 801; CHECK-NEXT: ret 802 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0 803 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer 804 %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) 805 ret <vscale x 8 x i32> %v 806} 807 808define <vscale x 8 x i32> @vdiv_vx_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 %b, i32 zeroext %evl) { 809; CHECK-LABEL: vdiv_vx_nxv8i32_unmasked: 810; CHECK: # %bb.0: 811; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 812; CHECK-NEXT: vdiv.vx v8, v8, a0 813; CHECK-NEXT: ret 814 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0 815 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer 816 %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) 817 ret <vscale x 8 x i32> %v 818} 819 820declare <vscale x 16 x i32> @llvm.vp.sdiv.nxv16i32(<vscale x 16 x i32>, <vscale x 16 x i32>, <vscale x 16 x i1>, i32) 821 822define <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) { 823; CHECK-LABEL: vdiv_vv_nxv16i32: 824; CHECK: # %bb.0: 825; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma 826; CHECK-NEXT: vdiv.vv v8, v8, v16, v0.t 827; CHECK-NEXT: ret 828 %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) 829 ret <vscale x 16 x i32> %v 830} 831 832define <vscale x 16 x i32> @vdiv_vv_nxv16i32_unmasked(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, i32 zeroext %evl) { 833; CHECK-LABEL: vdiv_vv_nxv16i32_unmasked: 834; CHECK: # %bb.0: 835; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma 836; CHECK-NEXT: vdiv.vv v8, v8, v16 837; CHECK-NEXT: ret 838 %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) 839 ret <vscale x 16 x i32> %v 840} 841 842define <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) { 843; CHECK-LABEL: vdiv_vx_nxv16i32: 844; CHECK: # %bb.0: 845; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma 846; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t 847; CHECK-NEXT: ret 848 %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0 849 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer 850 %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) 851 ret <vscale x 16 x i32> %v 852} 853 854define <vscale x 16 x i32> @vdiv_vx_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 %b, i32 zeroext %evl) { 855; CHECK-LABEL: vdiv_vx_nxv16i32_unmasked: 856; CHECK: # %bb.0: 857; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma 858; CHECK-NEXT: vdiv.vx v8, v8, a0 859; CHECK-NEXT: ret 860 %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0 861 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer 862 %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) 863 ret <vscale x 16 x i32> %v 864} 865 866declare <vscale x 1 x i64> @llvm.vp.sdiv.nxv1i64(<vscale x 1 x i64>, <vscale x 1 x i64>, <vscale x 1 x i1>, i32) 867 868define <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) { 869; CHECK-LABEL: vdiv_vv_nxv1i64: 870; CHECK: # %bb.0: 871; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma 872; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t 873; CHECK-NEXT: ret 874 %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) 875 ret <vscale x 1 x i64> %v 876} 877 878define <vscale x 1 x i64> @vdiv_vv_nxv1i64_unmasked(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, i32 zeroext %evl) { 879; CHECK-LABEL: vdiv_vv_nxv1i64_unmasked: 880; CHECK: # %bb.0: 881; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma 882; CHECK-NEXT: vdiv.vv v8, v8, v9 883; CHECK-NEXT: ret 884 %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) 885 ret <vscale x 1 x i64> %v 886} 887 888define <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) { 889; RV32-LABEL: vdiv_vx_nxv1i64: 890; RV32: # %bb.0: 891; RV32-NEXT: addi sp, sp, -16 892; RV32-NEXT: .cfi_def_cfa_offset 16 893; RV32-NEXT: sw a0, 8(sp) 894; RV32-NEXT: sw a1, 12(sp) 895; RV32-NEXT: addi a0, sp, 8 896; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma 897; RV32-NEXT: vlse64.v v9, (a0), zero 898; RV32-NEXT: vdiv.vv v8, v8, v9, v0.t 899; RV32-NEXT: addi sp, sp, 16 900; RV32-NEXT: .cfi_def_cfa_offset 0 901; RV32-NEXT: ret 902; 903; RV64-LABEL: vdiv_vx_nxv1i64: 904; RV64: # %bb.0: 905; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma 906; RV64-NEXT: vdiv.vx v8, v8, a0, v0.t 907; RV64-NEXT: ret 908 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0 909 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer 910 %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) 911 ret <vscale x 1 x i64> %v 912} 913 914define <vscale x 1 x i64> @vdiv_vx_nxv1i64_unmasked(<vscale x 1 x i64> %va, i64 %b, i32 zeroext %evl) { 915; RV32-LABEL: vdiv_vx_nxv1i64_unmasked: 916; RV32: # %bb.0: 917; RV32-NEXT: addi sp, sp, -16 918; RV32-NEXT: .cfi_def_cfa_offset 16 919; RV32-NEXT: sw a0, 8(sp) 920; RV32-NEXT: sw a1, 12(sp) 921; RV32-NEXT: addi a0, sp, 8 922; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma 923; RV32-NEXT: vlse64.v v9, (a0), zero 924; RV32-NEXT: vdiv.vv v8, v8, v9 925; RV32-NEXT: addi sp, sp, 16 926; RV32-NEXT: .cfi_def_cfa_offset 0 927; RV32-NEXT: ret 928; 929; RV64-LABEL: vdiv_vx_nxv1i64_unmasked: 930; RV64: # %bb.0: 931; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma 932; RV64-NEXT: vdiv.vx v8, v8, a0 933; RV64-NEXT: ret 934 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0 935 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer 936 %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) 937 ret <vscale x 1 x i64> %v 938} 939 940declare <vscale x 2 x i64> @llvm.vp.sdiv.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i1>, i32) 941 942define <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) { 943; CHECK-LABEL: vdiv_vv_nxv2i64: 944; CHECK: # %bb.0: 945; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma 946; CHECK-NEXT: vdiv.vv v8, v8, v10, v0.t 947; CHECK-NEXT: ret 948 %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) 949 ret <vscale x 2 x i64> %v 950} 951 952define <vscale x 2 x i64> @vdiv_vv_nxv2i64_unmasked(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, i32 zeroext %evl) { 953; CHECK-LABEL: vdiv_vv_nxv2i64_unmasked: 954; CHECK: # %bb.0: 955; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma 956; CHECK-NEXT: vdiv.vv v8, v8, v10 957; CHECK-NEXT: ret 958 %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) 959 ret <vscale x 2 x i64> %v 960} 961 962define <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) { 963; RV32-LABEL: vdiv_vx_nxv2i64: 964; RV32: # %bb.0: 965; RV32-NEXT: addi sp, sp, -16 966; RV32-NEXT: .cfi_def_cfa_offset 16 967; RV32-NEXT: sw a0, 8(sp) 968; RV32-NEXT: sw a1, 12(sp) 969; RV32-NEXT: addi a0, sp, 8 970; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma 971; RV32-NEXT: vlse64.v v10, (a0), zero 972; RV32-NEXT: vdiv.vv v8, v8, v10, v0.t 973; RV32-NEXT: addi sp, sp, 16 974; RV32-NEXT: .cfi_def_cfa_offset 0 975; RV32-NEXT: ret 976; 977; RV64-LABEL: vdiv_vx_nxv2i64: 978; RV64: # %bb.0: 979; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma 980; RV64-NEXT: vdiv.vx v8, v8, a0, v0.t 981; RV64-NEXT: ret 982 %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0 983 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer 984 %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) 985 ret <vscale x 2 x i64> %v 986} 987 988define <vscale x 2 x i64> @vdiv_vx_nxv2i64_unmasked(<vscale x 2 x i64> %va, i64 %b, i32 zeroext %evl) { 989; RV32-LABEL: vdiv_vx_nxv2i64_unmasked: 990; RV32: # %bb.0: 991; RV32-NEXT: addi sp, sp, -16 992; RV32-NEXT: .cfi_def_cfa_offset 16 993; RV32-NEXT: sw a0, 8(sp) 994; RV32-NEXT: sw a1, 12(sp) 995; RV32-NEXT: addi a0, sp, 8 996; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma 997; RV32-NEXT: vlse64.v v10, (a0), zero 998; RV32-NEXT: vdiv.vv v8, v8, v10 999; RV32-NEXT: addi sp, sp, 16 1000; RV32-NEXT: .cfi_def_cfa_offset 0 1001; RV32-NEXT: ret 1002; 1003; RV64-LABEL: vdiv_vx_nxv2i64_unmasked: 1004; RV64: # %bb.0: 1005; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma 1006; RV64-NEXT: vdiv.vx v8, v8, a0 1007; RV64-NEXT: ret 1008 %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0 1009 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer 1010 %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) 1011 ret <vscale x 2 x i64> %v 1012} 1013 1014declare <vscale x 4 x i64> @llvm.vp.sdiv.nxv4i64(<vscale x 4 x i64>, <vscale x 4 x i64>, <vscale x 4 x i1>, i32) 1015 1016define <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) { 1017; CHECK-LABEL: vdiv_vv_nxv4i64: 1018; CHECK: # %bb.0: 1019; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma 1020; CHECK-NEXT: vdiv.vv v8, v8, v12, v0.t 1021; CHECK-NEXT: ret 1022 %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) 1023 ret <vscale x 4 x i64> %v 1024} 1025 1026define <vscale x 4 x i64> @vdiv_vv_nxv4i64_unmasked(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, i32 zeroext %evl) { 1027; CHECK-LABEL: vdiv_vv_nxv4i64_unmasked: 1028; CHECK: # %bb.0: 1029; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma 1030; CHECK-NEXT: vdiv.vv v8, v8, v12 1031; CHECK-NEXT: ret 1032 %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) 1033 ret <vscale x 4 x i64> %v 1034} 1035 1036define <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) { 1037; RV32-LABEL: vdiv_vx_nxv4i64: 1038; RV32: # %bb.0: 1039; RV32-NEXT: addi sp, sp, -16 1040; RV32-NEXT: .cfi_def_cfa_offset 16 1041; RV32-NEXT: sw a0, 8(sp) 1042; RV32-NEXT: sw a1, 12(sp) 1043; RV32-NEXT: addi a0, sp, 8 1044; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma 1045; RV32-NEXT: vlse64.v v12, (a0), zero 1046; RV32-NEXT: vdiv.vv v8, v8, v12, v0.t 1047; RV32-NEXT: addi sp, sp, 16 1048; RV32-NEXT: .cfi_def_cfa_offset 0 1049; RV32-NEXT: ret 1050; 1051; RV64-LABEL: vdiv_vx_nxv4i64: 1052; RV64: # %bb.0: 1053; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma 1054; RV64-NEXT: vdiv.vx v8, v8, a0, v0.t 1055; RV64-NEXT: ret 1056 %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0 1057 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer 1058 %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) 1059 ret <vscale x 4 x i64> %v 1060} 1061 1062define <vscale x 4 x i64> @vdiv_vx_nxv4i64_unmasked(<vscale x 4 x i64> %va, i64 %b, i32 zeroext %evl) { 1063; RV32-LABEL: vdiv_vx_nxv4i64_unmasked: 1064; RV32: # %bb.0: 1065; RV32-NEXT: addi sp, sp, -16 1066; RV32-NEXT: .cfi_def_cfa_offset 16 1067; RV32-NEXT: sw a0, 8(sp) 1068; RV32-NEXT: sw a1, 12(sp) 1069; RV32-NEXT: addi a0, sp, 8 1070; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma 1071; RV32-NEXT: vlse64.v v12, (a0), zero 1072; RV32-NEXT: vdiv.vv v8, v8, v12 1073; RV32-NEXT: addi sp, sp, 16 1074; RV32-NEXT: .cfi_def_cfa_offset 0 1075; RV32-NEXT: ret 1076; 1077; RV64-LABEL: vdiv_vx_nxv4i64_unmasked: 1078; RV64: # %bb.0: 1079; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma 1080; RV64-NEXT: vdiv.vx v8, v8, a0 1081; RV64-NEXT: ret 1082 %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0 1083 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer 1084 %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) 1085 ret <vscale x 4 x i64> %v 1086} 1087 1088declare <vscale x 8 x i64> @llvm.vp.sdiv.nxv8i64(<vscale x 8 x i64>, <vscale x 8 x i64>, <vscale x 8 x i1>, i32) 1089 1090define <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) { 1091; CHECK-LABEL: vdiv_vv_nxv8i64: 1092; CHECK: # %bb.0: 1093; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma 1094; CHECK-NEXT: vdiv.vv v8, v8, v16, v0.t 1095; CHECK-NEXT: ret 1096 %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) 1097 ret <vscale x 8 x i64> %v 1098} 1099 1100define <vscale x 8 x i64> @vdiv_vv_nxv8i64_unmasked(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, i32 zeroext %evl) { 1101; CHECK-LABEL: vdiv_vv_nxv8i64_unmasked: 1102; CHECK: # %bb.0: 1103; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma 1104; CHECK-NEXT: vdiv.vv v8, v8, v16 1105; CHECK-NEXT: ret 1106 %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) 1107 ret <vscale x 8 x i64> %v 1108} 1109 1110define <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) { 1111; RV32-LABEL: vdiv_vx_nxv8i64: 1112; RV32: # %bb.0: 1113; RV32-NEXT: addi sp, sp, -16 1114; RV32-NEXT: .cfi_def_cfa_offset 16 1115; RV32-NEXT: sw a0, 8(sp) 1116; RV32-NEXT: sw a1, 12(sp) 1117; RV32-NEXT: addi a0, sp, 8 1118; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma 1119; RV32-NEXT: vlse64.v v16, (a0), zero 1120; RV32-NEXT: vdiv.vv v8, v8, v16, v0.t 1121; RV32-NEXT: addi sp, sp, 16 1122; RV32-NEXT: .cfi_def_cfa_offset 0 1123; RV32-NEXT: ret 1124; 1125; RV64-LABEL: vdiv_vx_nxv8i64: 1126; RV64: # %bb.0: 1127; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma 1128; RV64-NEXT: vdiv.vx v8, v8, a0, v0.t 1129; RV64-NEXT: ret 1130 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0 1131 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer 1132 %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) 1133 ret <vscale x 8 x i64> %v 1134} 1135 1136define <vscale x 8 x i64> @vdiv_vx_nxv8i64_unmasked(<vscale x 8 x i64> %va, i64 %b, i32 zeroext %evl) { 1137; RV32-LABEL: vdiv_vx_nxv8i64_unmasked: 1138; RV32: # %bb.0: 1139; RV32-NEXT: addi sp, sp, -16 1140; RV32-NEXT: .cfi_def_cfa_offset 16 1141; RV32-NEXT: sw a0, 8(sp) 1142; RV32-NEXT: sw a1, 12(sp) 1143; RV32-NEXT: addi a0, sp, 8 1144; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma 1145; RV32-NEXT: vlse64.v v16, (a0), zero 1146; RV32-NEXT: vdiv.vv v8, v8, v16 1147; RV32-NEXT: addi sp, sp, 16 1148; RV32-NEXT: .cfi_def_cfa_offset 0 1149; RV32-NEXT: ret 1150; 1151; RV64-LABEL: vdiv_vx_nxv8i64_unmasked: 1152; RV64: # %bb.0: 1153; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma 1154; RV64-NEXT: vdiv.vx v8, v8, a0 1155; RV64-NEXT: ret 1156 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0 1157 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer 1158 %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) 1159 ret <vscale x 8 x i64> %v 1160} 1161