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