1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s --check-prefixes=CHECK 3 4; LEGAL INTEGER TYPES 5 6define <vscale x 2 x i64> @stepvector_nxv2i64() { 7; CHECK-LABEL: stepvector_nxv2i64: 8; CHECK: // %bb.0: // %entry 9; CHECK-NEXT: index z0.d, #0, #1 10; CHECK-NEXT: ret 11entry: 12 %0 = call <vscale x 2 x i64> @llvm.experimental.stepvector.nxv2i64() 13 ret <vscale x 2 x i64> %0 14} 15 16define <vscale x 4 x i32> @stepvector_nxv4i32() { 17; CHECK-LABEL: stepvector_nxv4i32: 18; CHECK: // %bb.0: // %entry 19; CHECK-NEXT: index z0.s, #0, #1 20; CHECK-NEXT: ret 21entry: 22 %0 = call <vscale x 4 x i32> @llvm.experimental.stepvector.nxv4i32() 23 ret <vscale x 4 x i32> %0 24} 25 26define <vscale x 8 x i16> @stepvector_nxv8i16() { 27; CHECK-LABEL: stepvector_nxv8i16: 28; CHECK: // %bb.0: // %entry 29; CHECK-NEXT: index z0.h, #0, #1 30; CHECK-NEXT: ret 31entry: 32 %0 = call <vscale x 8 x i16> @llvm.experimental.stepvector.nxv8i16() 33 ret <vscale x 8 x i16> %0 34} 35 36define <vscale x 16 x i8> @stepvector_nxv16i8() { 37; CHECK-LABEL: stepvector_nxv16i8: 38; CHECK: // %bb.0: // %entry 39; CHECK-NEXT: index z0.b, #0, #1 40; CHECK-NEXT: ret 41entry: 42 %0 = call <vscale x 16 x i8> @llvm.experimental.stepvector.nxv16i8() 43 ret <vscale x 16 x i8> %0 44} 45 46; ILLEGAL INTEGER TYPES 47 48define <vscale x 6 x i64> @stepvector_nxv6i64() { 49; CHECK-LABEL: stepvector_nxv6i64: 50; CHECK: // %bb.0: // %entry 51; CHECK-NEXT: index z0.d, #0, #1 52; CHECK-NEXT: mov z1.d, z0.d 53; CHECK-NEXT: mov z2.d, z0.d 54; CHECK-NEXT: incd z1.d 55; CHECK-NEXT: incd z2.d, all, mul #2 56; CHECK-NEXT: ret 57entry: 58 %0 = call <vscale x 6 x i64> @llvm.experimental.stepvector.nxv6i64() 59 ret <vscale x 6 x i64> %0 60} 61 62define <vscale x 4 x i64> @stepvector_nxv4i64() { 63; CHECK-LABEL: stepvector_nxv4i64: 64; CHECK: // %bb.0: // %entry 65; CHECK-NEXT: index z0.d, #0, #1 66; CHECK-NEXT: mov z1.d, z0.d 67; CHECK-NEXT: incd z1.d 68; CHECK-NEXT: ret 69entry: 70 %0 = call <vscale x 4 x i64> @llvm.experimental.stepvector.nxv4i64() 71 ret <vscale x 4 x i64> %0 72} 73 74define <vscale x 16 x i32> @stepvector_nxv16i32() { 75; CHECK-LABEL: stepvector_nxv16i32: 76; CHECK: // %bb.0: // %entry 77; CHECK-NEXT: index z0.s, #0, #1 78; CHECK-NEXT: mov z1.d, z0.d 79; CHECK-NEXT: mov z2.d, z0.d 80; CHECK-NEXT: incw z1.s 81; CHECK-NEXT: incw z2.s, all, mul #2 82; CHECK-NEXT: mov z3.d, z1.d 83; CHECK-NEXT: incw z3.s, all, mul #2 84; CHECK-NEXT: ret 85entry: 86 %0 = call <vscale x 16 x i32> @llvm.experimental.stepvector.nxv16i32() 87 ret <vscale x 16 x i32> %0 88} 89 90define <vscale x 3 x i32> @stepvector_nxv3i32() { 91; CHECK-LABEL: stepvector_nxv3i32: 92; CHECK: // %bb.0: // %entry 93; CHECK-NEXT: index z0.s, #0, #1 94; CHECK-NEXT: ret 95entry: 96 %0 = call <vscale x 3 x i32> @llvm.experimental.stepvector.nxv3i32() 97 ret <vscale x 3 x i32> %0 98} 99 100define <vscale x 2 x i32> @stepvector_nxv2i32() { 101; CHECK-LABEL: stepvector_nxv2i32: 102; CHECK: // %bb.0: // %entry 103; CHECK-NEXT: index z0.d, #0, #1 104; CHECK-NEXT: ret 105entry: 106 %0 = call <vscale x 2 x i32> @llvm.experimental.stepvector.nxv2i32() 107 ret <vscale x 2 x i32> %0 108} 109 110define <vscale x 4 x i16> @stepvector_nxv4i16() { 111; CHECK-LABEL: stepvector_nxv4i16: 112; CHECK: // %bb.0: // %entry 113; CHECK-NEXT: index z0.s, #0, #1 114; CHECK-NEXT: ret 115entry: 116 %0 = call <vscale x 4 x i16> @llvm.experimental.stepvector.nxv4i16() 117 ret <vscale x 4 x i16> %0 118} 119 120define <vscale x 8 x i8> @stepvector_nxv8i8() { 121; CHECK-LABEL: stepvector_nxv8i8: 122; CHECK: // %bb.0: // %entry 123; CHECK-NEXT: index z0.h, #0, #1 124; CHECK-NEXT: ret 125entry: 126 %0 = call <vscale x 8 x i8> @llvm.experimental.stepvector.nxv8i8() 127 ret <vscale x 8 x i8> %0 128} 129 130define <vscale x 8 x i8> @add_stepvector_nxv8i8() { 131; CHECK-LABEL: add_stepvector_nxv8i8: 132; CHECK: // %bb.0: // %entry 133; CHECK-NEXT: index z0.h, #0, #2 134; CHECK-NEXT: ret 135entry: 136 %0 = call <vscale x 8 x i8> @llvm.experimental.stepvector.nxv8i8() 137 %1 = call <vscale x 8 x i8> @llvm.experimental.stepvector.nxv8i8() 138 %2 = add <vscale x 8 x i8> %0, %1 139 ret <vscale x 8 x i8> %2 140} 141 142define <vscale x 8 x i8> @add_stepvector_nxv8i8_1(<vscale x 8 x i8> %p) { 143; CHECK-LABEL: add_stepvector_nxv8i8_1: 144; CHECK: // %bb.0: // %entry 145; CHECK-NEXT: index z1.h, #0, #2 146; CHECK-NEXT: add z0.h, z0.h, z1.h 147; CHECK-NEXT: ret 148entry: 149 %0 = call <vscale x 8 x i8> @llvm.experimental.stepvector.nxv8i8() 150 %1 = add <vscale x 8 x i8> %p, %0 151 %2 = call <vscale x 8 x i8> @llvm.experimental.stepvector.nxv8i8() 152 %3 = add <vscale x 8 x i8> %1, %2 153 ret <vscale x 8 x i8> %3 154} 155 156define <vscale x 8 x i8> @add_stepvector_nxv8i8_2() { 157; CHECK-LABEL: add_stepvector_nxv8i8_2: 158; CHECK: // %bb.0: // %entry 159; CHECK-NEXT: index z0.h, #2, #1 160; CHECK-NEXT: ret 161entry: 162 %0 = insertelement <vscale x 8 x i8> poison, i8 2, i32 0 163 %1 = shufflevector <vscale x 8 x i8> %0, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer 164 %2 = call <vscale x 8 x i8> @llvm.experimental.stepvector.nxv8i8() 165 %3 = add <vscale x 8 x i8> %2, %1 166 ret <vscale x 8 x i8> %3 167} 168 169define <vscale x 8 x i8> @add_stepvector_nxv8i8_2_commutative() { 170; CHECK-LABEL: add_stepvector_nxv8i8_2_commutative: 171; CHECK: // %bb.0: // %entry 172; CHECK-NEXT: index z0.h, #2, #1 173; CHECK-NEXT: ret 174entry: 175 %0 = insertelement <vscale x 8 x i8> poison, i8 2, i32 0 176 %1 = shufflevector <vscale x 8 x i8> %0, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer 177 %2 = call <vscale x 8 x i8> @llvm.experimental.stepvector.nxv8i8() 178 %3 = add <vscale x 8 x i8> %1, %2 179 ret <vscale x 8 x i8> %3 180} 181 182define <vscale x 8 x i16> @add_stepvector_nxv8i16_1(i16 %data) { 183; CHECK-LABEL: add_stepvector_nxv8i16_1: 184; CHECK: // %bb.0: // %entry 185; CHECK-NEXT: index z0.h, w0, #1 186; CHECK-NEXT: ret 187entry: 188 %0 = insertelement <vscale x 8 x i16> poison, i16 %data, i32 0 189 %1 = shufflevector <vscale x 8 x i16> %0, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer 190 %2 = call <vscale x 8 x i16> @llvm.experimental.stepvector.nxv8i16() 191 %3 = add <vscale x 8 x i16> %2, %1 192 ret <vscale x 8 x i16> %3 193} 194 195define <vscale x 4 x i32> @add_stepvector_nxv4i32_1(i32 %data) { 196; CHECK-LABEL: add_stepvector_nxv4i32_1: 197; CHECK: // %bb.0: // %entry 198; CHECK-NEXT: index z0.s, w0, #1 199; CHECK-NEXT: ret 200entry: 201 %0 = insertelement <vscale x 4 x i32> poison, i32 %data, i32 0 202 %1 = shufflevector <vscale x 4 x i32> %0, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer 203 %2 = call <vscale x 4 x i32> @llvm.experimental.stepvector.nxv4i32() 204 %3 = add <vscale x 4 x i32> %2, %1 205 ret <vscale x 4 x i32> %3 206} 207 208define <vscale x 4 x i32> @multiple_use_stepvector_nxv4i32_1(i32 %data) { 209; CHECK-LABEL: multiple_use_stepvector_nxv4i32_1: 210; CHECK: // %bb.0: // %entry 211; CHECK-NEXT: ptrue p0.s 212; CHECK-NEXT: mov z0.s, w0 213; CHECK-NEXT: index z1.s, w0, #1 214; CHECK-NEXT: mul z0.s, p0/m, z0.s, z1.s 215; CHECK-NEXT: sub z0.s, z0.s, z1.s 216; CHECK-NEXT: ret 217entry: 218 %0 = insertelement <vscale x 4 x i32> poison, i32 %data, i32 0 219 %1 = shufflevector <vscale x 4 x i32> %0, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer 220 %2 = call <vscale x 4 x i32> @llvm.experimental.stepvector.nxv4i32() 221 %3 = add <vscale x 4 x i32> %2, %1 222 %4 = mul <vscale x 4 x i32> %1, %3 223 %5 = sub <vscale x 4 x i32> %4, %3 224 ret <vscale x 4 x i32> %5 225} 226 227define <vscale x 2 x i64> @add_stepvector_nxv2i64_1(i64 %data) { 228; CHECK-LABEL: add_stepvector_nxv2i64_1: 229; CHECK: // %bb.0: // %entry 230; CHECK-NEXT: index z0.d, x0, #1 231; CHECK-NEXT: ret 232entry: 233 %0 = insertelement <vscale x 2 x i64> poison, i64 %data, i32 0 234 %1 = shufflevector <vscale x 2 x i64> %0, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer 235 %2 = call <vscale x 2 x i64> @llvm.experimental.stepvector.nxv2i64() 236 %3 = add <vscale x 2 x i64> %1, %2 237 ret <vscale x 2 x i64> %3 238} 239 240define <vscale x 2 x i64> @multiple_use_stepvector_nxv2i64_1(i64 %data) { 241; CHECK-LABEL: multiple_use_stepvector_nxv2i64_1: 242; CHECK: // %bb.0: // %entry 243; CHECK-NEXT: index z0.d, #0, #1 244; CHECK-NEXT: mov z1.d, x0 245; CHECK-NEXT: add z1.d, z0.d, z1.d 246; CHECK-NEXT: ptrue p0.d 247; CHECK-NEXT: mul z0.d, p0/m, z0.d, z1.d 248; CHECK-NEXT: ret 249entry: 250 %0 = insertelement <vscale x 2 x i64> poison, i64 %data, i32 0 251 %1 = shufflevector <vscale x 2 x i64> %0, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer 252 %2 = call <vscale x 2 x i64> @llvm.experimental.stepvector.nxv2i64() 253 %3 = add <vscale x 2 x i64> %1, %2 254 %4 = mul <vscale x 2 x i64> %3, %2 255 ret <vscale x 2 x i64> %4 256} 257 258define <vscale x 8 x i8> @mul_stepvector_nxv8i8() { 259; CHECK-LABEL: mul_stepvector_nxv8i8: 260; CHECK: // %bb.0: // %entry 261; CHECK-NEXT: index z0.h, #0, #2 262; CHECK-NEXT: ret 263entry: 264 %0 = insertelement <vscale x 8 x i8> poison, i8 2, i32 0 265 %1 = shufflevector <vscale x 8 x i8> %0, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer 266 %2 = call <vscale x 8 x i8> @llvm.experimental.stepvector.nxv8i8() 267 %3 = mul <vscale x 8 x i8> %2, %1 268 ret <vscale x 8 x i8> %3 269} 270 271define <vscale x 2 x i64> @mul_stepvector_nxv2i64() { 272; CHECK-LABEL: mul_stepvector_nxv2i64: 273; CHECK: // %bb.0: // %entry 274; CHECK-NEXT: mov w8, #2222 275; CHECK-NEXT: index z0.d, #0, x8 276; CHECK-NEXT: ret 277entry: 278 %0 = insertelement <vscale x 2 x i64> poison, i64 2222, i32 0 279 %1 = shufflevector <vscale x 2 x i64> %0, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer 280 %2 = call <vscale x 2 x i64> @llvm.experimental.stepvector.nxv2i64() 281 %3 = mul <vscale x 2 x i64> %2, %1 282 ret <vscale x 2 x i64> %3 283} 284 285define <vscale x 2 x i64> @mul_stepvector_bigconst_nxv2i64() { 286; CHECK-LABEL: mul_stepvector_bigconst_nxv2i64: 287; CHECK: // %bb.0: // %entry 288; CHECK-NEXT: mov x8, #146028888064 289; CHECK-NEXT: index z0.d, #0, x8 290; CHECK-NEXT: ret 291entry: 292 %0 = insertelement <vscale x 2 x i64> poison, i64 146028888064, i32 0 293 %1 = shufflevector <vscale x 2 x i64> %0, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer 294 %2 = call <vscale x 2 x i64> @llvm.experimental.stepvector.nxv2i64() 295 %3 = mul <vscale x 2 x i64> %2, %1 296 ret <vscale x 2 x i64> %3 297} 298 299define <vscale x 2 x i64> @mul_add_stepvector_nxv2i64(i64 %x) { 300; CHECK-LABEL: mul_add_stepvector_nxv2i64: 301; CHECK: // %bb.0: // %entry 302; CHECK-NEXT: mov w8, #2222 303; CHECK-NEXT: index z0.d, x0, x8 304; CHECK-NEXT: ret 305entry: 306 %0 = insertelement <vscale x 2 x i64> poison, i64 2222, i32 0 307 %1 = shufflevector <vscale x 2 x i64> %0, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer 308 %2 = call <vscale x 2 x i64> @llvm.experimental.stepvector.nxv2i64() 309 %3 = mul <vscale x 2 x i64> %2, %1 310 %4 = insertelement <vscale x 2 x i64> poison, i64 %x, i32 0 311 %5 = shufflevector <vscale x 2 x i64> %4, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer 312 %6 = add <vscale x 2 x i64> %3, %5 313 ret <vscale x 2 x i64> %6 314} 315 316define <vscale x 2 x i64> @mul_add_stepvector_nxv2i64_commutative(i64 %x, i64 %y) { 317; CHECK-LABEL: mul_add_stepvector_nxv2i64_commutative: 318; CHECK: // %bb.0: // %entry 319; CHECK-NEXT: index z0.d, x0, x1 320; CHECK-NEXT: ret 321entry: 322 %0 = insertelement <vscale x 2 x i64> poison, i64 %y, i32 0 323 %1 = shufflevector <vscale x 2 x i64> %0, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer 324 %2 = call <vscale x 2 x i64> @llvm.experimental.stepvector.nxv2i64() 325 %3 = mul <vscale x 2 x i64> %1, %2 326 %4 = insertelement <vscale x 2 x i64> poison, i64 %x, i32 0 327 %5 = shufflevector <vscale x 2 x i64> %4, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer 328 %6 = add <vscale x 2 x i64> %5, %3 329 ret <vscale x 2 x i64> %6 330} 331 332define <vscale x 2 x i64> @mul_add_stepvector_bigconst_nxv2i64(i64 %x) { 333; CHECK-LABEL: mul_add_stepvector_bigconst_nxv2i64: 334; CHECK: // %bb.0: // %entry 335; CHECK-NEXT: mov x8, #146028888064 336; CHECK-NEXT: index z0.d, x0, x8 337; CHECK-NEXT: ret 338entry: 339 %0 = insertelement <vscale x 2 x i64> poison, i64 146028888064, i32 0 340 %1 = shufflevector <vscale x 2 x i64> %0, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer 341 %2 = call <vscale x 2 x i64> @llvm.experimental.stepvector.nxv2i64() 342 %3 = mul <vscale x 2 x i64> %2, %1 343 %4 = insertelement <vscale x 2 x i64> poison, i64 %x, i32 0 344 %5 = shufflevector <vscale x 2 x i64> %4, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer 345 %6 = add <vscale x 2 x i64> %3, %5 346 ret <vscale x 2 x i64> %6 347} 348 349define <vscale x 2 x i64> @mul_mul_add_stepvector_nxv2i64(i64 %x, i64 %y) { 350; CHECK-LABEL: mul_mul_add_stepvector_nxv2i64: 351; CHECK: // %bb.0: // %entry 352; CHECK-NEXT: add x8, x0, x0, lsl #1 353; CHECK-NEXT: index z0.d, x1, x8 354; CHECK-NEXT: ret 355entry: 356 %xmul = mul i64 %x, 3 357 %0 = insertelement <vscale x 2 x i64> poison, i64 %xmul, i32 0 358 %1 = shufflevector <vscale x 2 x i64> %0, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer 359 %2 = call <vscale x 2 x i64> @llvm.experimental.stepvector.nxv2i64() 360 %3 = mul <vscale x 2 x i64> %2, %1 361 %4 = insertelement <vscale x 2 x i64> poison, i64 %y, i32 0 362 %5 = shufflevector <vscale x 2 x i64> %4, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer 363 %6 = add <vscale x 2 x i64> %3, %5 364 ret <vscale x 2 x i64> %6 365} 366 367define <vscale x 8 x i8> @shl_stepvector_nxv8i8() { 368; CHECK-LABEL: shl_stepvector_nxv8i8: 369; CHECK: // %bb.0: // %entry 370; CHECK-NEXT: index z0.h, #0, #4 371; CHECK-NEXT: ret 372entry: 373 %0 = insertelement <vscale x 8 x i8> poison, i8 2, i32 0 374 %1 = shufflevector <vscale x 8 x i8> %0, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer 375 %2 = call <vscale x 8 x i8> @llvm.experimental.stepvector.nxv8i8() 376 %3 = shl <vscale x 8 x i8> %2, %1 377 ret <vscale x 8 x i8> %3 378} 379 380define <vscale x 8 x i16> @sub_multiple_use_stepvector_nxv8i16() { 381; CHECK-LABEL: sub_multiple_use_stepvector_nxv8i16: 382; CHECK: // %bb.0: // %entry 383; CHECK-NEXT: index z0.h, #0, #1 384; CHECK-NEXT: ptrue p0.h 385; CHECK-NEXT: mov z1.d, z0.d 386; CHECK-NEXT: subr z1.h, z1.h, #2 // =0x2 387; CHECK-NEXT: lsl z0.h, p0/m, z0.h, z1.h 388; CHECK-NEXT: ret 389entry: 390 %0 = insertelement <vscale x 8 x i16> poison, i16 2, i32 0 391 %1 = shufflevector <vscale x 8 x i16> %0, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer 392 %2 = call <vscale x 8 x i16> @llvm.experimental.stepvector.nxv8i16() 393 %3 = sub <vscale x 8 x i16> %1, %2 394 %4 = shl <vscale x 8 x i16> %2, %3 395 ret <vscale x 8 x i16> %4 396} 397 398define <vscale x 8 x i16> @sub_stepvector_nxv8i16() { 399; CHECK-LABEL: sub_stepvector_nxv8i16: 400; CHECK: // %bb.0: // %entry 401; CHECK-NEXT: index z0.h, #2, #-1 402; CHECK-NEXT: ret 403entry: 404 %0 = insertelement <vscale x 8 x i16> poison, i16 2, i32 0 405 %1 = shufflevector <vscale x 8 x i16> %0, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer 406 %2 = call <vscale x 8 x i16> @llvm.experimental.stepvector.nxv8i16() 407 %3 = sub <vscale x 8 x i16> %1, %2 408 ret <vscale x 8 x i16> %3 409} 410 411define <vscale x 8 x i8> @promote_sub_stepvector_nxv8i8() { 412; CHECK-LABEL: promote_sub_stepvector_nxv8i8: 413; CHECK: // %bb.0: // %entry 414; CHECK-NEXT: index z0.h, #2, #-1 415; CHECK-NEXT: ret 416entry: 417 %0 = insertelement <vscale x 8 x i8> poison, i8 2, i32 0 418 %1 = shufflevector <vscale x 8 x i8> %0, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer 419 %2 = call <vscale x 8 x i8> @llvm.experimental.stepvector.nxv8i8() 420 %3 = sub <vscale x 8 x i8> %1, %2 421 ret <vscale x 8 x i8> %3 422} 423 424define <vscale x 16 x i32> @split_sub_stepvector_nxv16i32() { 425; CHECK-LABEL: split_sub_stepvector_nxv16i32: 426; CHECK: // %bb.0: // %entry 427; CHECK-NEXT: cntw x8 428; CHECK-NEXT: cnth x9 429; CHECK-NEXT: neg x8, x8 430; CHECK-NEXT: neg x9, x9 431; CHECK-NEXT: index z0.s, #0, #-1 432; CHECK-NEXT: mov z1.s, w8 433; CHECK-NEXT: mov z3.s, w9 434; CHECK-NEXT: add z1.s, z0.s, z1.s 435; CHECK-NEXT: add z2.s, z0.s, z3.s 436; CHECK-NEXT: add z3.s, z1.s, z3.s 437; CHECK-NEXT: ret 438entry: 439 %0 = call <vscale x 16 x i32> @llvm.experimental.stepvector.nxv16i32() 440 %1 = sub <vscale x 16 x i32> zeroinitializer, %0 441 ret <vscale x 16 x i32> %1 442} 443 444declare <vscale x 2 x i64> @llvm.experimental.stepvector.nxv2i64() 445declare <vscale x 4 x i32> @llvm.experimental.stepvector.nxv4i32() 446declare <vscale x 8 x i16> @llvm.experimental.stepvector.nxv8i16() 447declare <vscale x 16 x i8> @llvm.experimental.stepvector.nxv16i8() 448 449declare <vscale x 6 x i64> @llvm.experimental.stepvector.nxv6i64() 450declare <vscale x 4 x i64> @llvm.experimental.stepvector.nxv4i64() 451declare <vscale x 16 x i32> @llvm.experimental.stepvector.nxv16i32() 452declare <vscale x 3 x i32> @llvm.experimental.stepvector.nxv3i32() 453declare <vscale x 2 x i32> @llvm.experimental.stepvector.nxv2i32() 454declare <vscale x 8 x i8> @llvm.experimental.stepvector.nxv8i8() 455declare <vscale x 4 x i16> @llvm.experimental.stepvector.nxv4i16() 456