2593 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme2 -force-streaming -verify-machineinstrs < %s | FileCheck %s --check-prefixes=STRIDED3; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve2p1 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CONTIGUOUS4; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve2p1,+sme2 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CONTIGUOUS5 6define <vscale x 32 x i8> @ld1_x2_i8_z0_z8(<vscale x 16 x i8> %unused, <vscale x 16 x i8> %z1, target("aarch64.svcount") %pn, ptr %ptr) nounwind {7; CHECK-LABEL: ld1_x2_i8_z0_z8:8; CHECK: // %bb.0:9; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill10; CHECK-NEXT: addvl sp, sp, #-1711; CHECK-NEXT: str p8, [sp, #7, mul vl] // 2-byte Folded Spill12; CHECK-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill13; CHECK-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill14; CHECK-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill15; CHECK-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill16; CHECK-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill17; CHECK-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill18; CHECK-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill19; CHECK-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill20; CHECK-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill21; CHECK-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill22; CHECK-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill23; CHECK-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill24; CHECK-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill25; CHECK-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill26; CHECK-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill27; CHECK-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill28; CHECK-NEXT: mov p8.b, p0.b29; CHECK-NEXT: ld1b { z0.b, z8.b }, pn8/z, [x0]30; CHECK-NEXT: //APP31; CHECK-NEXT: nop32; CHECK-NEXT: //NO_APP33; CHECK-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Folded Reload34; CHECK-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload35; CHECK-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload36; CHECK-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload37; CHECK-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload38; CHECK-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload39; CHECK-NEXT: mov z1.d, z8.d40; CHECK-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload41; CHECK-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload42; CHECK-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload43; CHECK-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload44; CHECK-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload45; CHECK-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload46; CHECK-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload47; CHECK-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload48; CHECK-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload49; CHECK-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload50; CHECK-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload51; CHECK-NEXT: addvl sp, sp, #1752; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload53; CHECK-NEXT: ret54; STRIDED-LABEL: ld1_x2_i8_z0_z8:55; STRIDED: // %bb.0:56; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill57; STRIDED-NEXT: addvl sp, sp, #-1758; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill59; STRIDED-NEXT: mov p8.b, p0.b60; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill61; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill62; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill63; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill64; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill65; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill66; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill67; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill68; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill69; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill70; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill71; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill72; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill73; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill74; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill75; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill76; STRIDED-NEXT: ld1b { z0.b, z8.b }, pn8/z, [x0]77; STRIDED-NEXT: //APP78; STRIDED-NEXT: nop79; STRIDED-NEXT: //NO_APP80; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload81; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload82; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload83; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload84; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload85; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload86; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload87; STRIDED-NEXT: mov z1.d, z8.d88; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload89; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload90; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload91; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload92; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload93; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload94; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload95; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload96; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload97; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload98; STRIDED-NEXT: addvl sp, sp, #1799; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload100; STRIDED-NEXT: ret101;102; CONTIGUOUS-LABEL: ld1_x2_i8_z0_z8:103; CONTIGUOUS: // %bb.0:104; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill105; CONTIGUOUS-NEXT: addvl sp, sp, #-16106; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill107; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill108; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill109; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill110; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill111; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill112; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill113; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill114; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill115; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill116; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill117; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill118; CONTIGUOUS-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill119; CONTIGUOUS-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill120; CONTIGUOUS-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill121; CONTIGUOUS-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill122; CONTIGUOUS-NEXT: addvl sp, sp, #-2123; CONTIGUOUS-NEXT: mov p8.b, p0.b124; CONTIGUOUS-NEXT: ld1b { z0.b, z1.b }, pn8/z, [x0]125; CONTIGUOUS-NEXT: str z0, [sp]126; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]127; CONTIGUOUS-NEXT: //APP128; CONTIGUOUS-NEXT: nop129; CONTIGUOUS-NEXT: //NO_APP130; CONTIGUOUS-NEXT: ldr z0, [sp]131; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]132; CONTIGUOUS-NEXT: addvl sp, sp, #2133; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload134; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload135; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload136; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload137; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload138; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload139; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload140; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload141; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload142; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload143; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload144; CONTIGUOUS-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload145; CONTIGUOUS-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload146; CONTIGUOUS-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload147; CONTIGUOUS-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload148; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload149; CONTIGUOUS-NEXT: addvl sp, sp, #16150; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload151; CONTIGUOUS-NEXT: ret152 %res = call { <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sve.ld1.pn.x2.nxv16i8(target("aarch64.svcount") %pn, ptr %ptr)153 call void asm sideeffect "nop", "~{z1},~{z2},~{z3},~{z4},~{z5},~{z6},~{z7},~{z9},~{z10},~{z11},~{z12},~{z13},~{z14},~{z15},~{z16},~{z17},~{z18},~{z19},~{z20},~{z21},~{z22},~{z23},~{z24},~{z25},~{z26},~{z27},~{z28},~{z29},~{z30},~{z31}"() nounwind154 %res.v0 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 0155 %v0 = call <vscale x 32 x i8> @llvm.vector.insert.nxv32i8.nxv16i8(<vscale x 32 x i8> poison, <vscale x 16 x i8> %res.v0, i64 0)156 %res.v1 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 1157 %v1 = call <vscale x 32 x i8> @llvm.vector.insert.nxv32i8.nxv16i8(<vscale x 32 x i8> %v0, <vscale x 16 x i8> %res.v1, i64 16)158 ret <vscale x 32 x i8> %v1159}160 161define <vscale x 32 x i8> @ld1_x2_i8_z0_z8_scalar(<vscale x 16 x i8> %unused, <vscale x 16 x i8> %z1, target("aarch64.svcount") %pn, ptr %ptr, i64 %index) nounwind {162; CHECK-LABEL: ld1_x2_i8_z0_z8_scalar:163; CHECK: // %bb.0:164; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill165; CHECK-NEXT: addvl sp, sp, #-17166; CHECK-NEXT: str p8, [sp, #7, mul vl] // 2-byte Folded Spill167; CHECK-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill168; CHECK-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill169; CHECK-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill170; CHECK-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill171; CHECK-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill172; CHECK-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill173; CHECK-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill174; CHECK-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill175; CHECK-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill176; CHECK-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill177; CHECK-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill178; CHECK-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill179; CHECK-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill180; CHECK-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill181; CHECK-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill182; CHECK-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill183; CHECK-NEXT: mov p8.b, p0.b184; CHECK-NEXT: ld1b { z0.b, z8.b }, pn8/z, [x0, x1]185; CHECK-NEXT: //APP186; CHECK-NEXT: nop187; CHECK-NEXT: //NO_APP188; CHECK-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Folded Reload189; CHECK-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload190; CHECK-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload191; CHECK-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload192; CHECK-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload193; CHECK-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload194; CHECK-NEXT: mov z1.d, z8.d195; CHECK-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload196; CHECK-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload197; CHECK-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload198; CHECK-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload199; CHECK-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload200; CHECK-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload201; CHECK-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload202; CHECK-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload203; CHECK-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload204; CHECK-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload205; CHECK-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload206; CHECK-NEXT: addvl sp, sp, #17207; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload208; CHECK-NEXT: ret209; STRIDED-LABEL: ld1_x2_i8_z0_z8_scalar:210; STRIDED: // %bb.0:211; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill212; STRIDED-NEXT: addvl sp, sp, #-17213; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill214; STRIDED-NEXT: mov p8.b, p0.b215; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill216; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill217; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill218; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill219; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill220; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill221; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill222; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill223; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill224; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill225; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill226; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill227; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill228; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill229; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill230; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill231; STRIDED-NEXT: ld1b { z0.b, z8.b }, pn8/z, [x0, x1]232; STRIDED-NEXT: //APP233; STRIDED-NEXT: nop234; STRIDED-NEXT: //NO_APP235; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload236; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload237; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload238; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload239; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload240; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload241; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload242; STRIDED-NEXT: mov z1.d, z8.d243; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload244; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload245; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload246; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload247; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload248; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload249; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload250; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload251; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload252; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload253; STRIDED-NEXT: addvl sp, sp, #17254; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload255; STRIDED-NEXT: ret256;257; CONTIGUOUS-LABEL: ld1_x2_i8_z0_z8_scalar:258; CONTIGUOUS: // %bb.0:259; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill260; CONTIGUOUS-NEXT: addvl sp, sp, #-16261; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill262; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill263; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill264; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill265; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill266; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill267; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill268; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill269; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill270; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill271; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill272; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill273; CONTIGUOUS-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill274; CONTIGUOUS-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill275; CONTIGUOUS-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill276; CONTIGUOUS-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill277; CONTIGUOUS-NEXT: addvl sp, sp, #-2278; CONTIGUOUS-NEXT: mov p8.b, p0.b279; CONTIGUOUS-NEXT: ld1b { z0.b, z1.b }, pn8/z, [x0, x1]280; CONTIGUOUS-NEXT: str z0, [sp]281; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]282; CONTIGUOUS-NEXT: //APP283; CONTIGUOUS-NEXT: nop284; CONTIGUOUS-NEXT: //NO_APP285; CONTIGUOUS-NEXT: ldr z0, [sp]286; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]287; CONTIGUOUS-NEXT: addvl sp, sp, #2288; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload289; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload290; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload291; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload292; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload293; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload294; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload295; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload296; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload297; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload298; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload299; CONTIGUOUS-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload300; CONTIGUOUS-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload301; CONTIGUOUS-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload302; CONTIGUOUS-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload303; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload304; CONTIGUOUS-NEXT: addvl sp, sp, #16305; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload306; CONTIGUOUS-NEXT: ret307 %base = getelementptr i8, ptr %ptr, i64 %index308 %res = call { <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sve.ld1.pn.x2.nxv16i8(target("aarch64.svcount") %pn, ptr %base)309 call void asm sideeffect "nop", "~{z1},~{z2},~{z3},~{z4},~{z5},~{z6},~{z7},~{z9},~{z10},~{z11},~{z12},~{z13},~{z14},~{z15},~{z16},~{z17},~{z18},~{z19},~{z20},~{z21},~{z22},~{z23},~{z24},~{z25},~{z26},~{z27},~{z28},~{z29},~{z30},~{z31}"() nounwind310 %res.v0 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 0311 %v0 = call <vscale x 32 x i8> @llvm.vector.insert.nxv32i8.nxv16i8(<vscale x 32 x i8> poison, <vscale x 16 x i8> %res.v0, i64 0)312 %res.v1 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 1313 %v1 = call <vscale x 32 x i8> @llvm.vector.insert.nxv32i8.nxv16i8(<vscale x 32 x i8> %v0, <vscale x 16 x i8> %res.v1, i64 16)314 ret <vscale x 32 x i8> %v1315}316 317define <vscale x 16 x i16> @ld1_x2_i16_z0_z8(<vscale x 8 x i16> %unused, <vscale x 8 x i16> %z1, target("aarch64.svcount") %pn, ptr %ptr) nounwind {318; CHECK-LABEL: ld1_x2_i16_z0_z8:319; CHECK: // %bb.0:320; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill321; CHECK-NEXT: addvl sp, sp, #-17322; CHECK-NEXT: str p8, [sp, #7, mul vl] // 2-byte Folded Spill323; CHECK-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill324; CHECK-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill325; CHECK-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill326; CHECK-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill327; CHECK-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill328; CHECK-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill329; CHECK-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill330; CHECK-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill331; CHECK-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill332; CHECK-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill333; CHECK-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill334; CHECK-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill335; CHECK-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill336; CHECK-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill337; CHECK-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill338; CHECK-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill339; CHECK-NEXT: mov p8.b, p0.b340; CHECK-NEXT: ld1h { z0.h, z8.h }, pn8/z, [x0]341; CHECK-NEXT: //APP342; CHECK-NEXT: nop343; CHECK-NEXT: //NO_APP344; CHECK-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Folded Reload345; CHECK-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload346; CHECK-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload347; CHECK-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload348; CHECK-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload349; CHECK-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload350; CHECK-NEXT: mov z1.d, z8.d351; CHECK-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload352; CHECK-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload353; CHECK-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload354; CHECK-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload355; CHECK-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload356; CHECK-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload357; CHECK-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload358; CHECK-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload359; CHECK-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload360; CHECK-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload361; CHECK-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload362; CHECK-NEXT: addvl sp, sp, #17363; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload364; CHECK-NEXT: ret365; STRIDED-LABEL: ld1_x2_i16_z0_z8:366; STRIDED: // %bb.0:367; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill368; STRIDED-NEXT: addvl sp, sp, #-17369; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill370; STRIDED-NEXT: mov p8.b, p0.b371; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill372; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill373; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill374; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill375; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill376; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill377; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill378; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill379; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill380; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill381; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill382; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill383; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill384; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill385; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill386; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill387; STRIDED-NEXT: ld1h { z0.h, z8.h }, pn8/z, [x0]388; STRIDED-NEXT: //APP389; STRIDED-NEXT: nop390; STRIDED-NEXT: //NO_APP391; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload392; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload393; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload394; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload395; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload396; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload397; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload398; STRIDED-NEXT: mov z1.d, z8.d399; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload400; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload401; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload402; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload403; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload404; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload405; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload406; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload407; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload408; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload409; STRIDED-NEXT: addvl sp, sp, #17410; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload411; STRIDED-NEXT: ret412;413; CONTIGUOUS-LABEL: ld1_x2_i16_z0_z8:414; CONTIGUOUS: // %bb.0:415; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill416; CONTIGUOUS-NEXT: addvl sp, sp, #-16417; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill418; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill419; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill420; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill421; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill422; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill423; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill424; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill425; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill426; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill427; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill428; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill429; CONTIGUOUS-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill430; CONTIGUOUS-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill431; CONTIGUOUS-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill432; CONTIGUOUS-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill433; CONTIGUOUS-NEXT: addvl sp, sp, #-2434; CONTIGUOUS-NEXT: mov p8.b, p0.b435; CONTIGUOUS-NEXT: ld1h { z0.h, z1.h }, pn8/z, [x0]436; CONTIGUOUS-NEXT: str z0, [sp]437; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]438; CONTIGUOUS-NEXT: //APP439; CONTIGUOUS-NEXT: nop440; CONTIGUOUS-NEXT: //NO_APP441; CONTIGUOUS-NEXT: ldr z0, [sp]442; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]443; CONTIGUOUS-NEXT: addvl sp, sp, #2444; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload445; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload446; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload447; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload448; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload449; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload450; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload451; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload452; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload453; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload454; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload455; CONTIGUOUS-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload456; CONTIGUOUS-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload457; CONTIGUOUS-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload458; CONTIGUOUS-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload459; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload460; CONTIGUOUS-NEXT: addvl sp, sp, #16461; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload462; CONTIGUOUS-NEXT: ret463 %res = call { <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sve.ld1.pn.x2.nxv8i16(target("aarch64.svcount") %pn, ptr %ptr)464 call void asm sideeffect "nop", "~{z1},~{z2},~{z3},~{z4},~{z5},~{z6},~{z7},~{z9},~{z10},~{z11},~{z12},~{z13},~{z14},~{z15},~{z16},~{z17},~{z18},~{z19},~{z20},~{z21},~{z22},~{z23},~{z24},~{z25},~{z26},~{z27},~{z28},~{z29},~{z30},~{z31}"() nounwind465 %res.v0 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 0466 %v0 = call <vscale x 16 x i16> @llvm.vector.insert.nxv16i16.nxv8i16(<vscale x 16 x i16> poison, <vscale x 8 x i16> %res.v0, i64 0)467 %res.v1 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 1468 %v1 = call <vscale x 16 x i16> @llvm.vector.insert.nxv16i16.nxv8i16(<vscale x 16 x i16> %v0, <vscale x 8 x i16> %res.v1, i64 8)469 ret <vscale x 16 x i16> %v1470}471 472define <vscale x 16 x i16> @ld1_x2_i16_z0_z8_scalar(<vscale x 8 x i16> %unused, <vscale x 8 x i16> %z1, target("aarch64.svcount") %pn, ptr %ptr, i64 %index) nounwind {473; CHECK-LABEL: ld1_x2_i16_z0_z8_scalar:474; CHECK: // %bb.0:475; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill476; CHECK-NEXT: addvl sp, sp, #-17477; CHECK-NEXT: str p8, [sp, #7, mul vl] // 2-byte Folded Spill478; CHECK-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill479; CHECK-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill480; CHECK-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill481; CHECK-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill482; CHECK-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill483; CHECK-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill484; CHECK-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill485; CHECK-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill486; CHECK-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill487; CHECK-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill488; CHECK-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill489; CHECK-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill490; CHECK-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill491; CHECK-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill492; CHECK-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill493; CHECK-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill494; CHECK-NEXT: mov p8.b, p0.b495; CHECK-NEXT: ld1h { z0.h, z8.h }, pn8/z, [x0, x1, lsl #1]496; CHECK-NEXT: //APP497; CHECK-NEXT: nop498; CHECK-NEXT: //NO_APP499; CHECK-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Folded Reload500; CHECK-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload501; CHECK-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload502; CHECK-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload503; CHECK-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload504; CHECK-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload505; CHECK-NEXT: mov z1.d, z8.d506; CHECK-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload507; CHECK-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload508; CHECK-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload509; CHECK-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload510; CHECK-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload511; CHECK-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload512; CHECK-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload513; CHECK-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload514; CHECK-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload515; CHECK-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload516; CHECK-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload517; CHECK-NEXT: addvl sp, sp, #17518; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload519; CHECK-NEXT: ret520; STRIDED-LABEL: ld1_x2_i16_z0_z8_scalar:521; STRIDED: // %bb.0:522; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill523; STRIDED-NEXT: addvl sp, sp, #-17524; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill525; STRIDED-NEXT: mov p8.b, p0.b526; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill527; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill528; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill529; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill530; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill531; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill532; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill533; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill534; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill535; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill536; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill537; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill538; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill539; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill540; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill541; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill542; STRIDED-NEXT: ld1h { z0.h, z8.h }, pn8/z, [x0, x1, lsl #1]543; STRIDED-NEXT: //APP544; STRIDED-NEXT: nop545; STRIDED-NEXT: //NO_APP546; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload547; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload548; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload549; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload550; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload551; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload552; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload553; STRIDED-NEXT: mov z1.d, z8.d554; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload555; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload556; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload557; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload558; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload559; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload560; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload561; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload562; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload563; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload564; STRIDED-NEXT: addvl sp, sp, #17565; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload566; STRIDED-NEXT: ret567;568; CONTIGUOUS-LABEL: ld1_x2_i16_z0_z8_scalar:569; CONTIGUOUS: // %bb.0:570; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill571; CONTIGUOUS-NEXT: addvl sp, sp, #-16572; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill573; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill574; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill575; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill576; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill577; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill578; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill579; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill580; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill581; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill582; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill583; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill584; CONTIGUOUS-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill585; CONTIGUOUS-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill586; CONTIGUOUS-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill587; CONTIGUOUS-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill588; CONTIGUOUS-NEXT: addvl sp, sp, #-2589; CONTIGUOUS-NEXT: mov p8.b, p0.b590; CONTIGUOUS-NEXT: ld1h { z0.h, z1.h }, pn8/z, [x0, x1, lsl #1]591; CONTIGUOUS-NEXT: str z0, [sp]592; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]593; CONTIGUOUS-NEXT: //APP594; CONTIGUOUS-NEXT: nop595; CONTIGUOUS-NEXT: //NO_APP596; CONTIGUOUS-NEXT: ldr z0, [sp]597; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]598; CONTIGUOUS-NEXT: addvl sp, sp, #2599; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload600; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload601; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload602; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload603; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload604; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload605; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload606; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload607; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload608; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload609; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload610; CONTIGUOUS-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload611; CONTIGUOUS-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload612; CONTIGUOUS-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload613; CONTIGUOUS-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload614; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload615; CONTIGUOUS-NEXT: addvl sp, sp, #16616; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload617; CONTIGUOUS-NEXT: ret618 %base = getelementptr i16, ptr %ptr, i64 %index619 %res = call { <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sve.ld1.pn.x2.nxv8i16(target("aarch64.svcount") %pn, ptr %base)620 call void asm sideeffect "nop", "~{z1},~{z2},~{z3},~{z4},~{z5},~{z6},~{z7},~{z9},~{z10},~{z11},~{z12},~{z13},~{z14},~{z15},~{z16},~{z17},~{z18},~{z19},~{z20},~{z21},~{z22},~{z23},~{z24},~{z25},~{z26},~{z27},~{z28},~{z29},~{z30},~{z31}"() nounwind621 %res.v0 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 0622 %v0 = call <vscale x 16 x i16> @llvm.vector.insert.nxv16i16.nxv8i16(<vscale x 16 x i16> poison, <vscale x 8 x i16> %res.v0, i64 0)623 %res.v1 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 1624 %v1 = call <vscale x 16 x i16> @llvm.vector.insert.nxv16i16.nxv8i16(<vscale x 16 x i16> %v0, <vscale x 8 x i16> %res.v1, i64 8)625 ret <vscale x 16 x i16> %v1626}627 628define <vscale x 8 x i32> @ld1_x2_i32_z0_z8(<vscale x 4 x i32> %unused, <vscale x 4 x i32> %z1, target("aarch64.svcount") %pn, ptr %ptr) nounwind {629; CHECK-LABEL: ld1_x2_i32_z0_z8:630; CHECK: // %bb.0:631; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill632; CHECK-NEXT: addvl sp, sp, #-17633; CHECK-NEXT: str p8, [sp, #7, mul vl] // 2-byte Folded Spill634; CHECK-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill635; CHECK-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill636; CHECK-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill637; CHECK-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill638; CHECK-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill639; CHECK-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill640; CHECK-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill641; CHECK-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill642; CHECK-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill643; CHECK-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill644; CHECK-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill645; CHECK-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill646; CHECK-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill647; CHECK-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill648; CHECK-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill649; CHECK-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill650; CHECK-NEXT: mov p8.b, p0.b651; CHECK-NEXT: ld1w { z0.s, z8.s }, pn8/z, [x0]652; CHECK-NEXT: //APP653; CHECK-NEXT: nop654; CHECK-NEXT: //NO_APP655; CHECK-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Folded Reload656; CHECK-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload657; CHECK-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload658; CHECK-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload659; CHECK-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload660; CHECK-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload661; CHECK-NEXT: mov z1.d, z8.d662; CHECK-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload663; CHECK-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload664; CHECK-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload665; CHECK-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload666; CHECK-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload667; CHECK-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload668; CHECK-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload669; CHECK-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload670; CHECK-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload671; CHECK-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload672; CHECK-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload673; CHECK-NEXT: addvl sp, sp, #17674; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload675; CHECK-NEXT: ret676; STRIDED-LABEL: ld1_x2_i32_z0_z8:677; STRIDED: // %bb.0:678; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill679; STRIDED-NEXT: addvl sp, sp, #-17680; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill681; STRIDED-NEXT: mov p8.b, p0.b682; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill683; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill684; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill685; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill686; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill687; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill688; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill689; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill690; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill691; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill692; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill693; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill694; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill695; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill696; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill697; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill698; STRIDED-NEXT: ld1w { z0.s, z8.s }, pn8/z, [x0]699; STRIDED-NEXT: //APP700; STRIDED-NEXT: nop701; STRIDED-NEXT: //NO_APP702; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload703; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload704; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload705; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload706; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload707; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload708; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload709; STRIDED-NEXT: mov z1.d, z8.d710; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload711; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload712; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload713; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload714; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload715; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload716; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload717; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload718; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload719; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload720; STRIDED-NEXT: addvl sp, sp, #17721; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload722; STRIDED-NEXT: ret723;724; CONTIGUOUS-LABEL: ld1_x2_i32_z0_z8:725; CONTIGUOUS: // %bb.0:726; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill727; CONTIGUOUS-NEXT: addvl sp, sp, #-16728; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill729; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill730; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill731; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill732; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill733; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill734; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill735; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill736; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill737; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill738; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill739; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill740; CONTIGUOUS-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill741; CONTIGUOUS-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill742; CONTIGUOUS-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill743; CONTIGUOUS-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill744; CONTIGUOUS-NEXT: addvl sp, sp, #-2745; CONTIGUOUS-NEXT: mov p8.b, p0.b746; CONTIGUOUS-NEXT: ld1w { z0.s, z1.s }, pn8/z, [x0]747; CONTIGUOUS-NEXT: str z0, [sp]748; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]749; CONTIGUOUS-NEXT: //APP750; CONTIGUOUS-NEXT: nop751; CONTIGUOUS-NEXT: //NO_APP752; CONTIGUOUS-NEXT: ldr z0, [sp]753; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]754; CONTIGUOUS-NEXT: addvl sp, sp, #2755; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload756; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload757; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload758; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload759; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload760; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload761; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload762; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload763; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload764; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload765; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload766; CONTIGUOUS-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload767; CONTIGUOUS-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload768; CONTIGUOUS-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload769; CONTIGUOUS-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload770; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload771; CONTIGUOUS-NEXT: addvl sp, sp, #16772; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload773; CONTIGUOUS-NEXT: ret774 %res = call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sve.ld1.pn.x2.nxv4i32(target("aarch64.svcount") %pn, ptr %ptr)775 call void asm sideeffect "nop", "~{z1},~{z2},~{z3},~{z4},~{z5},~{z6},~{z7},~{z9},~{z10},~{z11},~{z12},~{z13},~{z14},~{z15},~{z16},~{z17},~{z18},~{z19},~{z20},~{z21},~{z22},~{z23},~{z24},~{z25},~{z26},~{z27},~{z28},~{z29},~{z30},~{z31}"() nounwind776 %res.v0 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 0777 %v0 = call <vscale x 8 x i32> @llvm.vector.insert.nxv8i32.nxv4i32(<vscale x 8 x i32> poison, <vscale x 4 x i32> %res.v0, i64 0)778 %res.v1 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 1779 %v1 = call <vscale x 8 x i32> @llvm.vector.insert.nxv8i32.nxv4i32(<vscale x 8 x i32> %v0, <vscale x 4 x i32> %res.v1, i64 4)780 ret <vscale x 8 x i32> %v1781}782 783define <vscale x 8 x i32> @ld1_x2_i32_z0_z8_scalar(<vscale x 4 x i32> %unused, <vscale x 4 x i32> %z1, target("aarch64.svcount") %pn, ptr %ptr, i64 %index) nounwind {784; CHECK-LABEL: ld1_x2_i32_z0_z8_scalar:785; CHECK: // %bb.0:786; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill787; CHECK-NEXT: addvl sp, sp, #-17788; CHECK-NEXT: str p8, [sp, #7, mul vl] // 2-byte Folded Spill789; CHECK-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill790; CHECK-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill791; CHECK-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill792; CHECK-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill793; CHECK-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill794; CHECK-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill795; CHECK-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill796; CHECK-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill797; CHECK-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill798; CHECK-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill799; CHECK-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill800; CHECK-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill801; CHECK-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill802; CHECK-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill803; CHECK-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill804; CHECK-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill805; CHECK-NEXT: mov p8.b, p0.b806; CHECK-NEXT: ld1w { z0.s, z8.s }, pn8/z, [x0, x1, lsl #2]807; CHECK-NEXT: //APP808; CHECK-NEXT: nop809; CHECK-NEXT: //NO_APP810; CHECK-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Folded Reload811; CHECK-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload812; CHECK-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload813; CHECK-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload814; CHECK-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload815; CHECK-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload816; CHECK-NEXT: mov z1.d, z8.d817; CHECK-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload818; CHECK-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload819; CHECK-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload820; CHECK-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload821; CHECK-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload822; CHECK-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload823; CHECK-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload824; CHECK-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload825; CHECK-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload826; CHECK-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload827; CHECK-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload828; CHECK-NEXT: addvl sp, sp, #17829; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload830; CHECK-NEXT: ret831; STRIDED-LABEL: ld1_x2_i32_z0_z8_scalar:832; STRIDED: // %bb.0:833; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill834; STRIDED-NEXT: addvl sp, sp, #-17835; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill836; STRIDED-NEXT: mov p8.b, p0.b837; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill838; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill839; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill840; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill841; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill842; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill843; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill844; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill845; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill846; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill847; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill848; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill849; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill850; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill851; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill852; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill853; STRIDED-NEXT: ld1w { z0.s, z8.s }, pn8/z, [x0, x1, lsl #2]854; STRIDED-NEXT: //APP855; STRIDED-NEXT: nop856; STRIDED-NEXT: //NO_APP857; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload858; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload859; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload860; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload861; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload862; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload863; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload864; STRIDED-NEXT: mov z1.d, z8.d865; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload866; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload867; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload868; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload869; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload870; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload871; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload872; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload873; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload874; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload875; STRIDED-NEXT: addvl sp, sp, #17876; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload877; STRIDED-NEXT: ret878;879; CONTIGUOUS-LABEL: ld1_x2_i32_z0_z8_scalar:880; CONTIGUOUS: // %bb.0:881; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill882; CONTIGUOUS-NEXT: addvl sp, sp, #-16883; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill884; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill885; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill886; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill887; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill888; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill889; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill890; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill891; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill892; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill893; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill894; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill895; CONTIGUOUS-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill896; CONTIGUOUS-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill897; CONTIGUOUS-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill898; CONTIGUOUS-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill899; CONTIGUOUS-NEXT: addvl sp, sp, #-2900; CONTIGUOUS-NEXT: mov p8.b, p0.b901; CONTIGUOUS-NEXT: ld1w { z0.s, z1.s }, pn8/z, [x0, x1, lsl #2]902; CONTIGUOUS-NEXT: str z0, [sp]903; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]904; CONTIGUOUS-NEXT: //APP905; CONTIGUOUS-NEXT: nop906; CONTIGUOUS-NEXT: //NO_APP907; CONTIGUOUS-NEXT: ldr z0, [sp]908; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]909; CONTIGUOUS-NEXT: addvl sp, sp, #2910; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload911; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload912; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload913; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload914; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload915; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload916; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload917; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload918; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload919; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload920; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload921; CONTIGUOUS-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload922; CONTIGUOUS-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload923; CONTIGUOUS-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload924; CONTIGUOUS-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload925; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload926; CONTIGUOUS-NEXT: addvl sp, sp, #16927; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload928; CONTIGUOUS-NEXT: ret929 %base = getelementptr i32, ptr %ptr, i64 %index930 %res = call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sve.ld1.pn.x2.nxv4i32(target("aarch64.svcount") %pn, ptr %base)931 call void asm sideeffect "nop", "~{z1},~{z2},~{z3},~{z4},~{z5},~{z6},~{z7},~{z9},~{z10},~{z11},~{z12},~{z13},~{z14},~{z15},~{z16},~{z17},~{z18},~{z19},~{z20},~{z21},~{z22},~{z23},~{z24},~{z25},~{z26},~{z27},~{z28},~{z29},~{z30},~{z31}"() nounwind932 %res.v0 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 0933 %v0 = call <vscale x 8 x i32> @llvm.vector.insert.nxv8i32.nxv4i32(<vscale x 8 x i32> poison, <vscale x 4 x i32> %res.v0, i64 0)934 %res.v1 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 1935 %v1 = call <vscale x 8 x i32> @llvm.vector.insert.nxv8i32.nxv4i32(<vscale x 8 x i32> %v0, <vscale x 4 x i32> %res.v1, i64 4)936 ret <vscale x 8 x i32> %v1937}938 939define <vscale x 4 x i64> @ld1_x2_i64_z0_z8(<vscale x 2 x i64> %unused, <vscale x 2 x i64> %z1, target("aarch64.svcount") %pn, ptr %ptr) nounwind {940; CHECK-LABEL: ld1_x2_i64_z0_z8:941; CHECK: // %bb.0:942; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill943; CHECK-NEXT: addvl sp, sp, #-17944; CHECK-NEXT: str p8, [sp, #7, mul vl] // 2-byte Folded Spill945; CHECK-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill946; CHECK-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill947; CHECK-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill948; CHECK-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill949; CHECK-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill950; CHECK-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill951; CHECK-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill952; CHECK-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill953; CHECK-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill954; CHECK-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill955; CHECK-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill956; CHECK-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill957; CHECK-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill958; CHECK-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill959; CHECK-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill960; CHECK-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill961; CHECK-NEXT: mov p8.b, p0.b962; CHECK-NEXT: ld1d { z0.d, z8.d }, pn8/z, [x0]963; CHECK-NEXT: //APP964; CHECK-NEXT: nop965; CHECK-NEXT: //NO_APP966; CHECK-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Folded Reload967; CHECK-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload968; CHECK-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload969; CHECK-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload970; CHECK-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload971; CHECK-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload972; CHECK-NEXT: mov z1.d, z8.d973; CHECK-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload974; CHECK-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload975; CHECK-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload976; CHECK-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload977; CHECK-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload978; CHECK-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload979; CHECK-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload980; CHECK-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload981; CHECK-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload982; CHECK-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload983; CHECK-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload984; CHECK-NEXT: addvl sp, sp, #17985; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload986; CHECK-NEXT: ret987; STRIDED-LABEL: ld1_x2_i64_z0_z8:988; STRIDED: // %bb.0:989; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill990; STRIDED-NEXT: addvl sp, sp, #-17991; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill992; STRIDED-NEXT: mov p8.b, p0.b993; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill994; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill995; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill996; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill997; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill998; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill999; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1000; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1001; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1002; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1003; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1004; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1005; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1006; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1007; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1008; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1009; STRIDED-NEXT: ld1d { z0.d, z8.d }, pn8/z, [x0]1010; STRIDED-NEXT: //APP1011; STRIDED-NEXT: nop1012; STRIDED-NEXT: //NO_APP1013; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1014; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1015; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1016; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1017; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1018; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1019; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1020; STRIDED-NEXT: mov z1.d, z8.d1021; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1022; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1023; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1024; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1025; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1026; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1027; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1028; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1029; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1030; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1031; STRIDED-NEXT: addvl sp, sp, #171032; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1033; STRIDED-NEXT: ret1034;1035; CONTIGUOUS-LABEL: ld1_x2_i64_z0_z8:1036; CONTIGUOUS: // %bb.0:1037; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1038; CONTIGUOUS-NEXT: addvl sp, sp, #-161039; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1040; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1041; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1042; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1043; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1044; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1045; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1046; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1047; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1048; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1049; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1050; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1051; CONTIGUOUS-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1052; CONTIGUOUS-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1053; CONTIGUOUS-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1054; CONTIGUOUS-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1055; CONTIGUOUS-NEXT: addvl sp, sp, #-21056; CONTIGUOUS-NEXT: mov p8.b, p0.b1057; CONTIGUOUS-NEXT: ld1d { z0.d, z1.d }, pn8/z, [x0]1058; CONTIGUOUS-NEXT: str z0, [sp]1059; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]1060; CONTIGUOUS-NEXT: //APP1061; CONTIGUOUS-NEXT: nop1062; CONTIGUOUS-NEXT: //NO_APP1063; CONTIGUOUS-NEXT: ldr z0, [sp]1064; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]1065; CONTIGUOUS-NEXT: addvl sp, sp, #21066; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1067; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1068; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1069; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1070; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1071; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1072; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1073; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1074; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1075; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1076; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1077; CONTIGUOUS-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1078; CONTIGUOUS-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1079; CONTIGUOUS-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1080; CONTIGUOUS-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1081; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1082; CONTIGUOUS-NEXT: addvl sp, sp, #161083; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1084; CONTIGUOUS-NEXT: ret1085 %res = call { <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sve.ld1.pn.x2.nxv2i64(target("aarch64.svcount") %pn, ptr %ptr)1086 call void asm sideeffect "nop", "~{z1},~{z2},~{z3},~{z4},~{z5},~{z6},~{z7},~{z9},~{z10},~{z11},~{z12},~{z13},~{z14},~{z15},~{z16},~{z17},~{z18},~{z19},~{z20},~{z21},~{z22},~{z23},~{z24},~{z25},~{z26},~{z27},~{z28},~{z29},~{z30},~{z31}"() nounwind1087 %res.v0 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 01088 %v0 = call <vscale x 4 x i64> @llvm.vector.insert.nxv4i64.nxv2i64(<vscale x 4 x i64> poison, <vscale x 2 x i64> %res.v0, i64 0)1089 %res.v1 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 11090 %v1 = call <vscale x 4 x i64> @llvm.vector.insert.nxv4i64.nxv2i64(<vscale x 4 x i64> %v0, <vscale x 2 x i64> %res.v1, i64 2)1091 ret <vscale x 4 x i64> %v11092}1093 1094define <vscale x 4 x i64> @ld1_x2_i64_z0_z8_scalar(<vscale x 2 x i64> %unused, <vscale x 2 x i64> %z1, target("aarch64.svcount") %pn, ptr %ptr, i64 %index) nounwind {1095; CHECK-LABEL: ld1_x2_i64_z0_z8_scalar:1096; CHECK: // %bb.0:1097; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1098; CHECK-NEXT: addvl sp, sp, #-171099; CHECK-NEXT: str p8, [sp, #7, mul vl] // 2-byte Folded Spill1100; CHECK-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1101; CHECK-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1102; CHECK-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1103; CHECK-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1104; CHECK-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1105; CHECK-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1106; CHECK-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1107; CHECK-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1108; CHECK-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1109; CHECK-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1110; CHECK-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1111; CHECK-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1112; CHECK-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1113; CHECK-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1114; CHECK-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1115; CHECK-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1116; CHECK-NEXT: mov p8.b, p0.b1117; CHECK-NEXT: ld1d { z0.d, z8.d }, pn8/z, [x0, x1, lsl #3]1118; CHECK-NEXT: //APP1119; CHECK-NEXT: nop1120; CHECK-NEXT: //NO_APP1121; CHECK-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Folded Reload1122; CHECK-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1123; CHECK-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1124; CHECK-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1125; CHECK-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1126; CHECK-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1127; CHECK-NEXT: mov z1.d, z8.d1128; CHECK-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1129; CHECK-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1130; CHECK-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1131; CHECK-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1132; CHECK-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1133; CHECK-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1134; CHECK-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1135; CHECK-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1136; CHECK-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1137; CHECK-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1138; CHECK-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1139; CHECK-NEXT: addvl sp, sp, #171140; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1141; CHECK-NEXT: ret1142; STRIDED-LABEL: ld1_x2_i64_z0_z8_scalar:1143; STRIDED: // %bb.0:1144; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1145; STRIDED-NEXT: addvl sp, sp, #-171146; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1147; STRIDED-NEXT: mov p8.b, p0.b1148; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1149; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1150; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1151; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1152; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1153; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1154; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1155; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1156; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1157; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1158; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1159; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1160; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1161; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1162; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1163; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1164; STRIDED-NEXT: ld1d { z0.d, z8.d }, pn8/z, [x0, x1, lsl #3]1165; STRIDED-NEXT: //APP1166; STRIDED-NEXT: nop1167; STRIDED-NEXT: //NO_APP1168; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1169; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1170; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1171; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1172; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1173; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1174; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1175; STRIDED-NEXT: mov z1.d, z8.d1176; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1177; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1178; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1179; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1180; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1181; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1182; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1183; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1184; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1185; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1186; STRIDED-NEXT: addvl sp, sp, #171187; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1188; STRIDED-NEXT: ret1189;1190; CONTIGUOUS-LABEL: ld1_x2_i64_z0_z8_scalar:1191; CONTIGUOUS: // %bb.0:1192; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1193; CONTIGUOUS-NEXT: addvl sp, sp, #-161194; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1195; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1196; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1197; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1198; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1199; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1200; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1201; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1202; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1203; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1204; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1205; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1206; CONTIGUOUS-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1207; CONTIGUOUS-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1208; CONTIGUOUS-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1209; CONTIGUOUS-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1210; CONTIGUOUS-NEXT: addvl sp, sp, #-21211; CONTIGUOUS-NEXT: mov p8.b, p0.b1212; CONTIGUOUS-NEXT: ld1d { z0.d, z1.d }, pn8/z, [x0, x1, lsl #3]1213; CONTIGUOUS-NEXT: str z0, [sp]1214; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]1215; CONTIGUOUS-NEXT: //APP1216; CONTIGUOUS-NEXT: nop1217; CONTIGUOUS-NEXT: //NO_APP1218; CONTIGUOUS-NEXT: ldr z0, [sp]1219; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]1220; CONTIGUOUS-NEXT: addvl sp, sp, #21221; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1222; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1223; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1224; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1225; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1226; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1227; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1228; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1229; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1230; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1231; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1232; CONTIGUOUS-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1233; CONTIGUOUS-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1234; CONTIGUOUS-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1235; CONTIGUOUS-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1236; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1237; CONTIGUOUS-NEXT: addvl sp, sp, #161238; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1239; CONTIGUOUS-NEXT: ret1240 %base = getelementptr i64, ptr %ptr, i64 %index1241 %res = call { <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sve.ld1.pn.x2.nxv2i64(target("aarch64.svcount") %pn, ptr %base)1242 call void asm sideeffect "nop", "~{z1},~{z2},~{z3},~{z4},~{z5},~{z6},~{z7},~{z9},~{z10},~{z11},~{z12},~{z13},~{z14},~{z15},~{z16},~{z17},~{z18},~{z19},~{z20},~{z21},~{z22},~{z23},~{z24},~{z25},~{z26},~{z27},~{z28},~{z29},~{z30},~{z31}"() nounwind1243 %res.v0 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 01244 %v0 = call <vscale x 4 x i64> @llvm.vector.insert.nxv4i64.nxv2i64(<vscale x 4 x i64> poison, <vscale x 2 x i64> %res.v0, i64 0)1245 %res.v1 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 11246 %v1 = call <vscale x 4 x i64> @llvm.vector.insert.nxv4i64.nxv2i64(<vscale x 4 x i64> %v0, <vscale x 2 x i64> %res.v1, i64 2)1247 ret <vscale x 4 x i64> %v11248}1249 1250define <vscale x 64 x i8> @ld1_x4_i8_z0_z4_z8_z12(<vscale x 16 x i8> %unused, <vscale x 16 x i8> %z1, target("aarch64.svcount") %pn, ptr %ptr) nounwind {1251; CHECK-LABEL: ld1_x4_i8_z0_z4_z8_z12:1252; CHECK: // %bb.0:1253; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1254; CHECK-NEXT: addvl sp, sp, #-171255; CHECK-NEXT: str p8, [sp, #7, mul vl] // 2-byte Folded Spill1256; CHECK-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1257; CHECK-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1258; CHECK-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1259; CHECK-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1260; CHECK-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1261; CHECK-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1262; CHECK-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1263; CHECK-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1264; CHECK-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1265; CHECK-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1266; CHECK-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1267; CHECK-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1268; CHECK-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1269; CHECK-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1270; CHECK-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1271; CHECK-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1272; CHECK-NEXT: mov p8.b, p0.b1273; CHECK-NEXT: ld1b { z0.b, z4.b, z8.b, z12.b }, pn8/z, [x0]1274; CHECK-NEXT: //APP1275; CHECK-NEXT: nop1276; CHECK-NEXT: //NO_APP1277; CHECK-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Folded Reload1278; CHECK-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1279; CHECK-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1280; CHECK-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1281; CHECK-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1282; CHECK-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1283; CHECK-NEXT: mov z2.d, z8.d1284; CHECK-NEXT: mov z3.d, z12.d1285; CHECK-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1286; CHECK-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1287; CHECK-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1288; CHECK-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1289; CHECK-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1290; CHECK-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1291; CHECK-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1292; CHECK-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1293; CHECK-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1294; CHECK-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1295; CHECK-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1296; CHECK-NEXT: mov z1.d, z4.d1297; CHECK-NEXT: addvl sp, sp, #171298; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1299; CHECK-NEXT: ret1300; STRIDED-LABEL: ld1_x4_i8_z0_z4_z8_z12:1301; STRIDED: // %bb.0:1302; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1303; STRIDED-NEXT: addvl sp, sp, #-171304; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1305; STRIDED-NEXT: mov p8.b, p0.b1306; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1307; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1308; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1309; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1310; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1311; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1312; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1313; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1314; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1315; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1316; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1317; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1318; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1319; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1320; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1321; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1322; STRIDED-NEXT: ld1b { z0.b, z4.b, z8.b, z12.b }, pn8/z, [x0]1323; STRIDED-NEXT: //APP1324; STRIDED-NEXT: nop1325; STRIDED-NEXT: //NO_APP1326; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1327; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1328; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1329; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1330; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1331; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1332; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1333; STRIDED-NEXT: mov z2.d, z8.d1334; STRIDED-NEXT: mov z3.d, z12.d1335; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1336; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1337; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1338; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1339; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1340; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1341; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1342; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1343; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1344; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1345; STRIDED-NEXT: mov z1.d, z4.d1346; STRIDED-NEXT: addvl sp, sp, #171347; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1348; STRIDED-NEXT: ret1349;1350; CONTIGUOUS-LABEL: ld1_x4_i8_z0_z4_z8_z12:1351; CONTIGUOUS: // %bb.0:1352; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1353; CONTIGUOUS-NEXT: addvl sp, sp, #-151354; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1355; CONTIGUOUS-NEXT: ptrue pn8.b1356; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1357; CONTIGUOUS-NEXT: st1b { z10.b, z11.b }, pn8, [sp, #12, mul vl] // 32-byte Folded Spill1358; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1359; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1360; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1361; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1362; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1363; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1364; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1365; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1366; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1367; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1368; CONTIGUOUS-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill1369; CONTIGUOUS-NEXT: addvl sp, sp, #-41370; CONTIGUOUS-NEXT: mov p8.b, p0.b1371; CONTIGUOUS-NEXT: ld1b { z0.b - z3.b }, pn8/z, [x0]1372; CONTIGUOUS-NEXT: str z0, [sp]1373; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]1374; CONTIGUOUS-NEXT: str z2, [sp, #2, mul vl]1375; CONTIGUOUS-NEXT: str z3, [sp, #3, mul vl]1376; CONTIGUOUS-NEXT: //APP1377; CONTIGUOUS-NEXT: nop1378; CONTIGUOUS-NEXT: //NO_APP1379; CONTIGUOUS-NEXT: ldr z0, [sp]1380; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]1381; CONTIGUOUS-NEXT: ldr z2, [sp, #2, mul vl]1382; CONTIGUOUS-NEXT: ldr z3, [sp, #3, mul vl]1383; CONTIGUOUS-NEXT: addvl sp, sp, #41384; CONTIGUOUS-NEXT: ptrue pn8.b1385; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1386; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1387; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1388; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1389; CONTIGUOUS-NEXT: ld1b { z10.b, z11.b }, pn8/z, [sp, #12, mul vl] // 32-byte Folded Reload1390; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1391; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1392; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1393; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1394; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1395; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1396; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1397; CONTIGUOUS-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload1398; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1399; CONTIGUOUS-NEXT: addvl sp, sp, #151400; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1401; CONTIGUOUS-NEXT: ret1402 %res = call { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sve.ld1.pn.x4.nxv16i8(target("aarch64.svcount") %pn, ptr %ptr)1403 call void asm sideeffect "nop", "~{z1},~{z2},~{z3},~{z5},~{z6},~{z7},~{z9},~{z10},~{z11},~{z13},~{z14},~{z15},~{z16},~{z17},~{z18},~{z19},~{z20},~{z21},~{z22},~{z23},~{z24},~{z25},~{z26},~{z27},~{z28},~{z29},~{z30},~{z31}"() nounwind1404 %res.v0 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 01405 %v0 = call <vscale x 64 x i8> @llvm.vector.insert.nxv64i8.nxv16i8(<vscale x 64 x i8> poison, <vscale x 16 x i8> %res.v0, i64 0)1406 %res.v1 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 11407 %v1 = call <vscale x 64 x i8> @llvm.vector.insert.nxv64i8.nxv16i8(<vscale x 64 x i8> %v0, <vscale x 16 x i8> %res.v1, i64 16)1408 %res.v2 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 21409 %v2 = call <vscale x 64 x i8> @llvm.vector.insert.nxv64i8.nxv16i8(<vscale x 64 x i8> %v1, <vscale x 16 x i8> %res.v2, i64 32)1410 %res.v3 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 31411 %v3 = call <vscale x 64 x i8> @llvm.vector.insert.nxv64i8.nxv16i8(<vscale x 64 x i8> %v2, <vscale x 16 x i8> %res.v3, i64 48)1412 ret <vscale x 64 x i8> %v31413}1414 1415define <vscale x 64 x i8> @ld1_x4_i8_z0_z4_z8_z12_scalar(<vscale x 16 x i8> %unused, <vscale x 16 x i8> %z1, target("aarch64.svcount") %pn, ptr %ptr, i64 %index) nounwind {1416; CHECK-LABEL: ld1_x4_i8_z0_z4_z8_z12_scalar:1417; CHECK: // %bb.0:1418; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1419; CHECK-NEXT: addvl sp, sp, #-171420; CHECK-NEXT: str p8, [sp, #7, mul vl] // 2-byte Folded Spill1421; CHECK-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1422; CHECK-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1423; CHECK-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1424; CHECK-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1425; CHECK-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1426; CHECK-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1427; CHECK-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1428; CHECK-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1429; CHECK-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1430; CHECK-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1431; CHECK-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1432; CHECK-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1433; CHECK-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1434; CHECK-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1435; CHECK-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1436; CHECK-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1437; CHECK-NEXT: mov p8.b, p0.b1438; CHECK-NEXT: ld1b { z0.b, z4.b, z8.b, z12.b }, pn8/z, [x0, x1]1439; CHECK-NEXT: //APP1440; CHECK-NEXT: nop1441; CHECK-NEXT: //NO_APP1442; CHECK-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Folded Reload1443; CHECK-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1444; CHECK-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1445; CHECK-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1446; CHECK-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1447; CHECK-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1448; CHECK-NEXT: mov z2.d, z8.d1449; CHECK-NEXT: mov z3.d, z12.d1450; CHECK-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1451; CHECK-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1452; CHECK-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1453; CHECK-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1454; CHECK-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1455; CHECK-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1456; CHECK-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1457; CHECK-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1458; CHECK-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1459; CHECK-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1460; CHECK-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1461; CHECK-NEXT: mov z1.d, z4.d1462; CHECK-NEXT: addvl sp, sp, #171463; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1464; CHECK-NEXT: ret1465; STRIDED-LABEL: ld1_x4_i8_z0_z4_z8_z12_scalar:1466; STRIDED: // %bb.0:1467; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1468; STRIDED-NEXT: addvl sp, sp, #-171469; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1470; STRIDED-NEXT: mov p8.b, p0.b1471; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1472; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1473; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1474; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1475; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1476; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1477; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1478; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1479; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1480; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1481; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1482; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1483; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1484; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1485; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1486; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1487; STRIDED-NEXT: ld1b { z0.b, z4.b, z8.b, z12.b }, pn8/z, [x0, x1]1488; STRIDED-NEXT: //APP1489; STRIDED-NEXT: nop1490; STRIDED-NEXT: //NO_APP1491; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1492; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1493; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1494; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1495; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1496; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1497; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1498; STRIDED-NEXT: mov z2.d, z8.d1499; STRIDED-NEXT: mov z3.d, z12.d1500; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1501; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1502; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1503; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1504; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1505; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1506; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1507; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1508; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1509; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1510; STRIDED-NEXT: mov z1.d, z4.d1511; STRIDED-NEXT: addvl sp, sp, #171512; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1513; STRIDED-NEXT: ret1514;1515; CONTIGUOUS-LABEL: ld1_x4_i8_z0_z4_z8_z12_scalar:1516; CONTIGUOUS: // %bb.0:1517; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1518; CONTIGUOUS-NEXT: addvl sp, sp, #-151519; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1520; CONTIGUOUS-NEXT: ptrue pn8.b1521; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1522; CONTIGUOUS-NEXT: st1b { z10.b, z11.b }, pn8, [sp, #12, mul vl] // 32-byte Folded Spill1523; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1524; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1525; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1526; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1527; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1528; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1529; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1530; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1531; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1532; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1533; CONTIGUOUS-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill1534; CONTIGUOUS-NEXT: addvl sp, sp, #-41535; CONTIGUOUS-NEXT: mov p8.b, p0.b1536; CONTIGUOUS-NEXT: ld1b { z0.b - z3.b }, pn8/z, [x0, x1]1537; CONTIGUOUS-NEXT: str z0, [sp]1538; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]1539; CONTIGUOUS-NEXT: str z2, [sp, #2, mul vl]1540; CONTIGUOUS-NEXT: str z3, [sp, #3, mul vl]1541; CONTIGUOUS-NEXT: //APP1542; CONTIGUOUS-NEXT: nop1543; CONTIGUOUS-NEXT: //NO_APP1544; CONTIGUOUS-NEXT: ldr z0, [sp]1545; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]1546; CONTIGUOUS-NEXT: ldr z2, [sp, #2, mul vl]1547; CONTIGUOUS-NEXT: ldr z3, [sp, #3, mul vl]1548; CONTIGUOUS-NEXT: addvl sp, sp, #41549; CONTIGUOUS-NEXT: ptrue pn8.b1550; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1551; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1552; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1553; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1554; CONTIGUOUS-NEXT: ld1b { z10.b, z11.b }, pn8/z, [sp, #12, mul vl] // 32-byte Folded Reload1555; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1556; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1557; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1558; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1559; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1560; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1561; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1562; CONTIGUOUS-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload1563; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1564; CONTIGUOUS-NEXT: addvl sp, sp, #151565; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1566; CONTIGUOUS-NEXT: ret1567 %base = getelementptr i8, ptr %ptr, i64 %index1568 %res = call { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sve.ld1.pn.x4.nxv16i8(target("aarch64.svcount") %pn, ptr %base)1569 call void asm sideeffect "nop", "~{z1},~{z2},~{z3},~{z5},~{z6},~{z7},~{z9},~{z10},~{z11},~{z13},~{z14},~{z15},~{z16},~{z17},~{z18},~{z19},~{z20},~{z21},~{z22},~{z23},~{z24},~{z25},~{z26},~{z27},~{z28},~{z29},~{z30},~{z31}"() nounwind1570 %res.v0 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 01571 %v0 = call <vscale x 64 x i8> @llvm.vector.insert.nxv64i8.nxv16i8(<vscale x 64 x i8> poison, <vscale x 16 x i8> %res.v0, i64 0)1572 %res.v1 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 11573 %v1 = call <vscale x 64 x i8> @llvm.vector.insert.nxv64i8.nxv16i8(<vscale x 64 x i8> %v0, <vscale x 16 x i8> %res.v1, i64 16)1574 %res.v2 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 21575 %v2 = call <vscale x 64 x i8> @llvm.vector.insert.nxv64i8.nxv16i8(<vscale x 64 x i8> %v1, <vscale x 16 x i8> %res.v2, i64 32)1576 %res.v3 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 31577 %v3 = call <vscale x 64 x i8> @llvm.vector.insert.nxv64i8.nxv16i8(<vscale x 64 x i8> %v2, <vscale x 16 x i8> %res.v3, i64 48)1578 ret <vscale x 64 x i8> %v31579}1580 1581define <vscale x 32 x i16> @ld1_x4_i16_z0_z4_z8_z12(<vscale x 8 x i16> %unused, <vscale x 8 x i16> %z1, target("aarch64.svcount") %pn, ptr %ptr) nounwind {1582; CHECK-LABEL: ld1_x4_i16_z0_z4_z8_z12:1583; CHECK: // %bb.0:1584; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1585; CHECK-NEXT: addvl sp, sp, #-171586; CHECK-NEXT: str p8, [sp, #7, mul vl] // 2-byte Folded Spill1587; CHECK-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1588; CHECK-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1589; CHECK-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1590; CHECK-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1591; CHECK-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1592; CHECK-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1593; CHECK-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1594; CHECK-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1595; CHECK-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1596; CHECK-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1597; CHECK-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1598; CHECK-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1599; CHECK-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1600; CHECK-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1601; CHECK-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1602; CHECK-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1603; CHECK-NEXT: mov p8.b, p0.b1604; CHECK-NEXT: ld1h { z0.h, z4.h, z8.h, z12.h }, pn8/z, [x0]1605; CHECK-NEXT: //APP1606; CHECK-NEXT: nop1607; CHECK-NEXT: //NO_APP1608; CHECK-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Folded Reload1609; CHECK-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1610; CHECK-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1611; CHECK-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1612; CHECK-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1613; CHECK-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1614; CHECK-NEXT: mov z2.d, z8.d1615; CHECK-NEXT: mov z3.d, z12.d1616; CHECK-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1617; CHECK-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1618; CHECK-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1619; CHECK-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1620; CHECK-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1621; CHECK-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1622; CHECK-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1623; CHECK-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1624; CHECK-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1625; CHECK-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1626; CHECK-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1627; CHECK-NEXT: mov z1.d, z4.d1628; CHECK-NEXT: addvl sp, sp, #171629; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1630; CHECK-NEXT: ret1631; STRIDED-LABEL: ld1_x4_i16_z0_z4_z8_z12:1632; STRIDED: // %bb.0:1633; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1634; STRIDED-NEXT: addvl sp, sp, #-171635; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1636; STRIDED-NEXT: mov p8.b, p0.b1637; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1638; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1639; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1640; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1641; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1642; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1643; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1644; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1645; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1646; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1647; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1648; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1649; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1650; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1651; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1652; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1653; STRIDED-NEXT: ld1h { z0.h, z4.h, z8.h, z12.h }, pn8/z, [x0]1654; STRIDED-NEXT: //APP1655; STRIDED-NEXT: nop1656; STRIDED-NEXT: //NO_APP1657; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1658; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1659; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1660; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1661; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1662; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1663; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1664; STRIDED-NEXT: mov z2.d, z8.d1665; STRIDED-NEXT: mov z3.d, z12.d1666; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1667; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1668; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1669; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1670; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1671; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1672; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1673; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1674; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1675; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1676; STRIDED-NEXT: mov z1.d, z4.d1677; STRIDED-NEXT: addvl sp, sp, #171678; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1679; STRIDED-NEXT: ret1680;1681; CONTIGUOUS-LABEL: ld1_x4_i16_z0_z4_z8_z12:1682; CONTIGUOUS: // %bb.0:1683; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1684; CONTIGUOUS-NEXT: addvl sp, sp, #-151685; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1686; CONTIGUOUS-NEXT: ptrue pn8.b1687; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1688; CONTIGUOUS-NEXT: st1b { z10.b, z11.b }, pn8, [sp, #12, mul vl] // 32-byte Folded Spill1689; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1690; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1691; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1692; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1693; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1694; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1695; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1696; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1697; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1698; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1699; CONTIGUOUS-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill1700; CONTIGUOUS-NEXT: addvl sp, sp, #-41701; CONTIGUOUS-NEXT: mov p8.b, p0.b1702; CONTIGUOUS-NEXT: ld1h { z0.h - z3.h }, pn8/z, [x0]1703; CONTIGUOUS-NEXT: str z0, [sp]1704; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]1705; CONTIGUOUS-NEXT: str z2, [sp, #2, mul vl]1706; CONTIGUOUS-NEXT: str z3, [sp, #3, mul vl]1707; CONTIGUOUS-NEXT: //APP1708; CONTIGUOUS-NEXT: nop1709; CONTIGUOUS-NEXT: //NO_APP1710; CONTIGUOUS-NEXT: ldr z0, [sp]1711; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]1712; CONTIGUOUS-NEXT: ldr z2, [sp, #2, mul vl]1713; CONTIGUOUS-NEXT: ldr z3, [sp, #3, mul vl]1714; CONTIGUOUS-NEXT: addvl sp, sp, #41715; CONTIGUOUS-NEXT: ptrue pn8.b1716; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1717; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1718; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1719; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1720; CONTIGUOUS-NEXT: ld1b { z10.b, z11.b }, pn8/z, [sp, #12, mul vl] // 32-byte Folded Reload1721; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1722; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1723; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1724; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1725; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1726; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1727; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1728; CONTIGUOUS-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload1729; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1730; CONTIGUOUS-NEXT: addvl sp, sp, #151731; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1732; CONTIGUOUS-NEXT: ret1733 %res = call { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sve.ld1.pn.x4.nxv8i16(target("aarch64.svcount") %pn, ptr %ptr)1734 call void asm sideeffect "nop", "~{z1},~{z2},~{z3},~{z5},~{z6},~{z7},~{z9},~{z10},~{z11},~{z13},~{z14},~{z15},~{z16},~{z17},~{z18},~{z19},~{z20},~{z21},~{z22},~{z23},~{z24},~{z25},~{z26},~{z27},~{z28},~{z29},~{z30},~{z31}"() nounwind1735 %res.v0 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 01736 %v0 = call <vscale x 32 x i16> @llvm.vector.insert.nxv32i16.nxv8i16(<vscale x 32 x i16> poison, <vscale x 8 x i16> %res.v0, i64 0)1737 %res.v1 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 11738 %v1 = call <vscale x 32 x i16> @llvm.vector.insert.nxv32i16.nxv8i16(<vscale x 32 x i16> %v0, <vscale x 8 x i16> %res.v1, i64 8)1739 %res.v2 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 21740 %v2 = call <vscale x 32 x i16> @llvm.vector.insert.nxv32i16.nxv8i16(<vscale x 32 x i16> %v1, <vscale x 8 x i16> %res.v2, i64 16)1741 %res.v3 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 31742 %v3 = call <vscale x 32 x i16> @llvm.vector.insert.nxv32i16.nxv8i16(<vscale x 32 x i16> %v2, <vscale x 8 x i16> %res.v3, i64 24)1743 ret <vscale x 32 x i16> %v31744}1745 1746define <vscale x 32 x i16> @ld1_x4_i16_z0_z4_z8_z12_scalar(<vscale x 8 x i16> %unused, <vscale x 8 x i16> %z1, target("aarch64.svcount") %pn, ptr %ptr, i64 %index) nounwind {1747; CHECK-LABEL: ld1_x4_i16_z0_z4_z8_z12_scalar:1748; CHECK: // %bb.0:1749; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1750; CHECK-NEXT: addvl sp, sp, #-171751; CHECK-NEXT: lsl x8, x1, #11752; CHECK-NEXT: str p8, [sp, #7, mul vl] // 2-byte Folded Spill1753; CHECK-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1754; CHECK-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1755; CHECK-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1756; CHECK-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1757; CHECK-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1758; CHECK-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1759; CHECK-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1760; CHECK-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1761; CHECK-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1762; CHECK-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1763; CHECK-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1764; CHECK-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1765; CHECK-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1766; CHECK-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1767; CHECK-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1768; CHECK-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1769; CHECK-NEXT: mov p8.b, p0.b1770; CHECK-NEXT: ld1h { z0.h, z4.h, z8.h, z12.h }, pn8/z, [x0, x8, lsl #1]1771; CHECK-NEXT: //APP1772; CHECK-NEXT: nop1773; CHECK-NEXT: //NO_APP1774; CHECK-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Folded Reload1775; CHECK-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1776; CHECK-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1777; CHECK-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1778; CHECK-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1779; CHECK-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1780; CHECK-NEXT: mov z2.d, z8.d1781; CHECK-NEXT: mov z3.d, z12.d1782; CHECK-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1783; CHECK-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1784; CHECK-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1785; CHECK-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1786; CHECK-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1787; CHECK-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1788; CHECK-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1789; CHECK-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1790; CHECK-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1791; CHECK-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1792; CHECK-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1793; CHECK-NEXT: mov z1.d, z4.d1794; CHECK-NEXT: addvl sp, sp, #171795; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1796; CHECK-NEXT: ret1797; STRIDED-LABEL: ld1_x4_i16_z0_z4_z8_z12_scalar:1798; STRIDED: // %bb.0:1799; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1800; STRIDED-NEXT: addvl sp, sp, #-171801; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1802; STRIDED-NEXT: mov p8.b, p0.b1803; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1804; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1805; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1806; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1807; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1808; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1809; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1810; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1811; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1812; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1813; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1814; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1815; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1816; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1817; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1818; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1819; STRIDED-NEXT: ld1h { z0.h, z4.h, z8.h, z12.h }, pn8/z, [x0, x1, lsl #1]1820; STRIDED-NEXT: //APP1821; STRIDED-NEXT: nop1822; STRIDED-NEXT: //NO_APP1823; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1824; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1825; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1826; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1827; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1828; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1829; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1830; STRIDED-NEXT: mov z2.d, z8.d1831; STRIDED-NEXT: mov z3.d, z12.d1832; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1833; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1834; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1835; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1836; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1837; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1838; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1839; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1840; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1841; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1842; STRIDED-NEXT: mov z1.d, z4.d1843; STRIDED-NEXT: addvl sp, sp, #171844; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1845; STRIDED-NEXT: ret1846;1847; CONTIGUOUS-LABEL: ld1_x4_i16_z0_z4_z8_z12_scalar:1848; CONTIGUOUS: // %bb.0:1849; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1850; CONTIGUOUS-NEXT: addvl sp, sp, #-151851; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1852; CONTIGUOUS-NEXT: ptrue pn8.b1853; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1854; CONTIGUOUS-NEXT: st1b { z10.b, z11.b }, pn8, [sp, #12, mul vl] // 32-byte Folded Spill1855; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1856; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1857; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1858; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1859; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1860; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1861; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1862; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1863; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1864; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1865; CONTIGUOUS-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill1866; CONTIGUOUS-NEXT: addvl sp, sp, #-41867; CONTIGUOUS-NEXT: mov p8.b, p0.b1868; CONTIGUOUS-NEXT: ld1h { z0.h - z3.h }, pn8/z, [x0, x1, lsl #1]1869; CONTIGUOUS-NEXT: str z0, [sp]1870; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]1871; CONTIGUOUS-NEXT: str z2, [sp, #2, mul vl]1872; CONTIGUOUS-NEXT: str z3, [sp, #3, mul vl]1873; CONTIGUOUS-NEXT: //APP1874; CONTIGUOUS-NEXT: nop1875; CONTIGUOUS-NEXT: //NO_APP1876; CONTIGUOUS-NEXT: ldr z0, [sp]1877; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]1878; CONTIGUOUS-NEXT: ldr z2, [sp, #2, mul vl]1879; CONTIGUOUS-NEXT: ldr z3, [sp, #3, mul vl]1880; CONTIGUOUS-NEXT: addvl sp, sp, #41881; CONTIGUOUS-NEXT: ptrue pn8.b1882; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1883; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1884; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1885; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1886; CONTIGUOUS-NEXT: ld1b { z10.b, z11.b }, pn8/z, [sp, #12, mul vl] // 32-byte Folded Reload1887; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1888; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1889; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1890; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1891; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1892; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1893; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1894; CONTIGUOUS-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload1895; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1896; CONTIGUOUS-NEXT: addvl sp, sp, #151897; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1898; CONTIGUOUS-NEXT: ret1899 %base = getelementptr i16, ptr %ptr, i64 %index1900 %res = call { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sve.ld1.pn.x4.nxv8i16(target("aarch64.svcount") %pn, ptr %base)1901 call void asm sideeffect "nop", "~{z1},~{z2},~{z3},~{z5},~{z6},~{z7},~{z9},~{z10},~{z11},~{z13},~{z14},~{z15},~{z16},~{z17},~{z18},~{z19},~{z20},~{z21},~{z22},~{z23},~{z24},~{z25},~{z26},~{z27},~{z28},~{z29},~{z30},~{z31}"() nounwind1902 %res.v0 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 01903 %v0 = call <vscale x 32 x i16> @llvm.vector.insert.nxv32i16.nxv8i16(<vscale x 32 x i16> poison, <vscale x 8 x i16> %res.v0, i64 0)1904 %res.v1 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 11905 %v1 = call <vscale x 32 x i16> @llvm.vector.insert.nxv32i16.nxv8i16(<vscale x 32 x i16> %v0, <vscale x 8 x i16> %res.v1, i64 8)1906 %res.v2 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 21907 %v2 = call <vscale x 32 x i16> @llvm.vector.insert.nxv32i16.nxv8i16(<vscale x 32 x i16> %v1, <vscale x 8 x i16> %res.v2, i64 16)1908 %res.v3 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 31909 %v3 = call <vscale x 32 x i16> @llvm.vector.insert.nxv32i16.nxv8i16(<vscale x 32 x i16> %v2, <vscale x 8 x i16> %res.v3, i64 24)1910 ret <vscale x 32 x i16> %v31911}1912 1913define <vscale x 16 x i32> @ld1_x4_i32_z0_z4_z8_z12(<vscale x 4 x i32> %unused, <vscale x 4 x i32> %z1, target("aarch64.svcount") %pn, ptr %ptr) nounwind {1914; CHECK-LABEL: ld1_x4_i32_z0_z4_z8_z12:1915; CHECK: // %bb.0:1916; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1917; CHECK-NEXT: addvl sp, sp, #-171918; CHECK-NEXT: str p8, [sp, #7, mul vl] // 2-byte Folded Spill1919; CHECK-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1920; CHECK-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1921; CHECK-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1922; CHECK-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1923; CHECK-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1924; CHECK-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1925; CHECK-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1926; CHECK-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1927; CHECK-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1928; CHECK-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1929; CHECK-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1930; CHECK-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1931; CHECK-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1932; CHECK-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1933; CHECK-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1934; CHECK-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1935; CHECK-NEXT: mov p8.b, p0.b1936; CHECK-NEXT: ld1w { z0.s, z4.s, z8.s, z12.s }, pn8/z, [x0]1937; CHECK-NEXT: //APP1938; CHECK-NEXT: nop1939; CHECK-NEXT: //NO_APP1940; CHECK-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Folded Reload1941; CHECK-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1942; CHECK-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1943; CHECK-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1944; CHECK-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1945; CHECK-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1946; CHECK-NEXT: mov z2.d, z8.d1947; CHECK-NEXT: mov z3.d, z12.d1948; CHECK-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1949; CHECK-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1950; CHECK-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1951; CHECK-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1952; CHECK-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1953; CHECK-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1954; CHECK-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1955; CHECK-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1956; CHECK-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1957; CHECK-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1958; CHECK-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1959; CHECK-NEXT: mov z1.d, z4.d1960; CHECK-NEXT: addvl sp, sp, #171961; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1962; CHECK-NEXT: ret1963; STRIDED-LABEL: ld1_x4_i32_z0_z4_z8_z12:1964; STRIDED: // %bb.0:1965; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1966; STRIDED-NEXT: addvl sp, sp, #-171967; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1968; STRIDED-NEXT: mov p8.b, p0.b1969; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1970; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1971; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1972; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1973; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1974; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1975; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1976; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1977; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1978; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1979; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1980; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1981; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1982; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1983; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1984; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1985; STRIDED-NEXT: ld1w { z0.s, z4.s, z8.s, z12.s }, pn8/z, [x0]1986; STRIDED-NEXT: //APP1987; STRIDED-NEXT: nop1988; STRIDED-NEXT: //NO_APP1989; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1990; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1991; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1992; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1993; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1994; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1995; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1996; STRIDED-NEXT: mov z2.d, z8.d1997; STRIDED-NEXT: mov z3.d, z12.d1998; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1999; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload2000; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload2001; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload2002; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload2003; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload2004; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload2005; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload2006; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload2007; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload2008; STRIDED-NEXT: mov z1.d, z4.d2009; STRIDED-NEXT: addvl sp, sp, #172010; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload2011; STRIDED-NEXT: ret2012;2013; CONTIGUOUS-LABEL: ld1_x4_i32_z0_z4_z8_z12:2014; CONTIGUOUS: // %bb.0:2015; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill2016; CONTIGUOUS-NEXT: addvl sp, sp, #-152017; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill2018; CONTIGUOUS-NEXT: ptrue pn8.b2019; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill2020; CONTIGUOUS-NEXT: st1b { z10.b, z11.b }, pn8, [sp, #12, mul vl] // 32-byte Folded Spill2021; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill2022; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill2023; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill2024; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill2025; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill2026; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill2027; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill2028; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill2029; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill2030; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill2031; CONTIGUOUS-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill2032; CONTIGUOUS-NEXT: addvl sp, sp, #-42033; CONTIGUOUS-NEXT: mov p8.b, p0.b2034; CONTIGUOUS-NEXT: ld1w { z0.s - z3.s }, pn8/z, [x0]2035; CONTIGUOUS-NEXT: str z0, [sp]2036; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]2037; CONTIGUOUS-NEXT: str z2, [sp, #2, mul vl]2038; CONTIGUOUS-NEXT: str z3, [sp, #3, mul vl]2039; CONTIGUOUS-NEXT: //APP2040; CONTIGUOUS-NEXT: nop2041; CONTIGUOUS-NEXT: //NO_APP2042; CONTIGUOUS-NEXT: ldr z0, [sp]2043; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]2044; CONTIGUOUS-NEXT: ldr z2, [sp, #2, mul vl]2045; CONTIGUOUS-NEXT: ldr z3, [sp, #3, mul vl]2046; CONTIGUOUS-NEXT: addvl sp, sp, #42047; CONTIGUOUS-NEXT: ptrue pn8.b2048; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload2049; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload2050; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload2051; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload2052; CONTIGUOUS-NEXT: ld1b { z10.b, z11.b }, pn8/z, [sp, #12, mul vl] // 32-byte Folded Reload2053; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload2054; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload2055; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload2056; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload2057; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload2058; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload2059; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload2060; CONTIGUOUS-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload2061; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload2062; CONTIGUOUS-NEXT: addvl sp, sp, #152063; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload2064; CONTIGUOUS-NEXT: ret2065 %res = call { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sve.ld1.pn.x4.nxv4i32(target("aarch64.svcount") %pn, ptr %ptr)2066 call void asm sideeffect "nop", "~{z1},~{z2},~{z3},~{z5},~{z6},~{z7},~{z9},~{z10},~{z11},~{z13},~{z14},~{z15},~{z16},~{z17},~{z18},~{z19},~{z20},~{z21},~{z22},~{z23},~{z24},~{z25},~{z26},~{z27},~{z28},~{z29},~{z30},~{z31}"() nounwind2067 %res.v0 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 02068 %v0 = call <vscale x 16 x i32> @llvm.vector.insert.nxv16i32.nxv4i32(<vscale x 16 x i32> poison, <vscale x 4 x i32> %res.v0, i64 0)2069 %res.v1 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 12070 %v1 = call <vscale x 16 x i32> @llvm.vector.insert.nxv16i32.nxv4i32(<vscale x 16 x i32> %v0, <vscale x 4 x i32> %res.v1, i64 4)2071 %res.v2 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 22072 %v2 = call <vscale x 16 x i32> @llvm.vector.insert.nxv16i32.nxv4i32(<vscale x 16 x i32> %v1, <vscale x 4 x i32> %res.v2, i64 8)2073 %res.v3 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 32074 %v3 = call <vscale x 16 x i32> @llvm.vector.insert.nxv16i32.nxv4i32(<vscale x 16 x i32> %v2, <vscale x 4 x i32> %res.v3, i64 12)2075 ret <vscale x 16 x i32> %v32076}2077 2078define <vscale x 16 x i32> @ld1_x4_i32_z0_z4_z8_z12_scalar(<vscale x 4 x i32> %unused, <vscale x 4 x i32> %z1, target("aarch64.svcount") %pn, ptr %ptr, i64 %index) nounwind {2079; CHECK-LABEL: ld1_x4_i32_z0_z4_z8_z12_scalar:2080; CHECK: // %bb.0:2081; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill2082; CHECK-NEXT: addvl sp, sp, #-172083; CHECK-NEXT: lsl x8, x1, #22084; CHECK-NEXT: str p8, [sp, #7, mul vl] // 2-byte Folded Spill2085; CHECK-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill2086; CHECK-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill2087; CHECK-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill2088; CHECK-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill2089; CHECK-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill2090; CHECK-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill2091; CHECK-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill2092; CHECK-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill2093; CHECK-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill2094; CHECK-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill2095; CHECK-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill2096; CHECK-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill2097; CHECK-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill2098; CHECK-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill2099; CHECK-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill2100; CHECK-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill2101; CHECK-NEXT: mov p8.b, p0.b2102; CHECK-NEXT: ld1w { z0.s, z4.s, z8.s, z12.s }, pn8/z, [x0, x8, lsl #2]2103; CHECK-NEXT: //APP2104; CHECK-NEXT: nop2105; CHECK-NEXT: //NO_APP2106; CHECK-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Folded Reload2107; CHECK-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload2108; CHECK-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload2109; CHECK-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload2110; CHECK-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload2111; CHECK-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload2112; CHECK-NEXT: mov z2.d, z8.d2113; CHECK-NEXT: mov z3.d, z12.d2114; CHECK-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload2115; CHECK-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload2116; CHECK-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload2117; CHECK-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload2118; CHECK-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload2119; CHECK-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload2120; CHECK-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload2121; CHECK-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload2122; CHECK-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload2123; CHECK-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload2124; CHECK-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload2125; CHECK-NEXT: mov z1.d, z4.d2126; CHECK-NEXT: addvl sp, sp, #172127; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload2128; CHECK-NEXT: ret2129; STRIDED-LABEL: ld1_x4_i32_z0_z4_z8_z12_scalar:2130; STRIDED: // %bb.0:2131; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill2132; STRIDED-NEXT: addvl sp, sp, #-172133; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill2134; STRIDED-NEXT: mov p8.b, p0.b2135; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill2136; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill2137; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill2138; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill2139; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill2140; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill2141; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill2142; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill2143; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill2144; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill2145; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill2146; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill2147; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill2148; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill2149; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill2150; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill2151; STRIDED-NEXT: ld1w { z0.s, z4.s, z8.s, z12.s }, pn8/z, [x0, x1, lsl #2]2152; STRIDED-NEXT: //APP2153; STRIDED-NEXT: nop2154; STRIDED-NEXT: //NO_APP2155; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload2156; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload2157; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload2158; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload2159; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload2160; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload2161; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload2162; STRIDED-NEXT: mov z2.d, z8.d2163; STRIDED-NEXT: mov z3.d, z12.d2164; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload2165; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload2166; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload2167; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload2168; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload2169; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload2170; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload2171; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload2172; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload2173; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload2174; STRIDED-NEXT: mov z1.d, z4.d2175; STRIDED-NEXT: addvl sp, sp, #172176; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload2177; STRIDED-NEXT: ret2178;2179; CONTIGUOUS-LABEL: ld1_x4_i32_z0_z4_z8_z12_scalar:2180; CONTIGUOUS: // %bb.0:2181; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill2182; CONTIGUOUS-NEXT: addvl sp, sp, #-152183; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill2184; CONTIGUOUS-NEXT: ptrue pn8.b2185; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill2186; CONTIGUOUS-NEXT: st1b { z10.b, z11.b }, pn8, [sp, #12, mul vl] // 32-byte Folded Spill2187; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill2188; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill2189; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill2190; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill2191; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill2192; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill2193; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill2194; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill2195; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill2196; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill2197; CONTIGUOUS-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill2198; CONTIGUOUS-NEXT: addvl sp, sp, #-42199; CONTIGUOUS-NEXT: mov p8.b, p0.b2200; CONTIGUOUS-NEXT: ld1w { z0.s - z3.s }, pn8/z, [x0, x1, lsl #2]2201; CONTIGUOUS-NEXT: str z0, [sp]2202; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]2203; CONTIGUOUS-NEXT: str z2, [sp, #2, mul vl]2204; CONTIGUOUS-NEXT: str z3, [sp, #3, mul vl]2205; CONTIGUOUS-NEXT: //APP2206; CONTIGUOUS-NEXT: nop2207; CONTIGUOUS-NEXT: //NO_APP2208; CONTIGUOUS-NEXT: ldr z0, [sp]2209; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]2210; CONTIGUOUS-NEXT: ldr z2, [sp, #2, mul vl]2211; CONTIGUOUS-NEXT: ldr z3, [sp, #3, mul vl]2212; CONTIGUOUS-NEXT: addvl sp, sp, #42213; CONTIGUOUS-NEXT: ptrue pn8.b2214; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload2215; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload2216; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload2217; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload2218; CONTIGUOUS-NEXT: ld1b { z10.b, z11.b }, pn8/z, [sp, #12, mul vl] // 32-byte Folded Reload2219; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload2220; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload2221; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload2222; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload2223; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload2224; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload2225; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload2226; CONTIGUOUS-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload2227; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload2228; CONTIGUOUS-NEXT: addvl sp, sp, #152229; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload2230; CONTIGUOUS-NEXT: ret2231 %base = getelementptr i32, ptr %ptr, i64 %index2232 %res = call { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sve.ld1.pn.x4.nxv4i32(target("aarch64.svcount") %pn, ptr %base)2233 call void asm sideeffect "nop", "~{z1},~{z2},~{z3},~{z5},~{z6},~{z7},~{z9},~{z10},~{z11},~{z13},~{z14},~{z15},~{z16},~{z17},~{z18},~{z19},~{z20},~{z21},~{z22},~{z23},~{z24},~{z25},~{z26},~{z27},~{z28},~{z29},~{z30},~{z31}"() nounwind2234 %res.v0 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 02235 %v0 = call <vscale x 16 x i32> @llvm.vector.insert.nxv16i32.nxv4i32(<vscale x 16 x i32> poison, <vscale x 4 x i32> %res.v0, i64 0)2236 %res.v1 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 12237 %v1 = call <vscale x 16 x i32> @llvm.vector.insert.nxv16i32.nxv4i32(<vscale x 16 x i32> %v0, <vscale x 4 x i32> %res.v1, i64 4)2238 %res.v2 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 22239 %v2 = call <vscale x 16 x i32> @llvm.vector.insert.nxv16i32.nxv4i32(<vscale x 16 x i32> %v1, <vscale x 4 x i32> %res.v2, i64 8)2240 %res.v3 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 32241 %v3 = call <vscale x 16 x i32> @llvm.vector.insert.nxv16i32.nxv4i32(<vscale x 16 x i32> %v2, <vscale x 4 x i32> %res.v3, i64 12)2242 ret <vscale x 16 x i32> %v32243}2244 2245define <vscale x 8 x i64> @ld1_x4_i64_z0_z4_z8_z12(<vscale x 2 x i64> %unused, <vscale x 2 x i64> %z1, target("aarch64.svcount") %pn, ptr %ptr) nounwind {2246; CHECK-LABEL: ld1_x4_i64_z0_z4_z8_z12:2247; CHECK: // %bb.0:2248; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill2249; CHECK-NEXT: addvl sp, sp, #-172250; CHECK-NEXT: str p8, [sp, #7, mul vl] // 2-byte Folded Spill2251; CHECK-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill2252; CHECK-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill2253; CHECK-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill2254; CHECK-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill2255; CHECK-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill2256; CHECK-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill2257; CHECK-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill2258; CHECK-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill2259; CHECK-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill2260; CHECK-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill2261; CHECK-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill2262; CHECK-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill2263; CHECK-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill2264; CHECK-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill2265; CHECK-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill2266; CHECK-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill2267; CHECK-NEXT: mov p8.b, p0.b2268; CHECK-NEXT: ld1d { z0.d, z4.d, z8.d, z12.d }, pn8/z, [x0]2269; CHECK-NEXT: //APP2270; CHECK-NEXT: nop2271; CHECK-NEXT: //NO_APP2272; CHECK-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Folded Reload2273; CHECK-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload2274; CHECK-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload2275; CHECK-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload2276; CHECK-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload2277; CHECK-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload2278; CHECK-NEXT: mov z2.d, z8.d2279; CHECK-NEXT: mov z3.d, z12.d2280; CHECK-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload2281; CHECK-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload2282; CHECK-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload2283; CHECK-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload2284; CHECK-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload2285; CHECK-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload2286; CHECK-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload2287; CHECK-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload2288; CHECK-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload2289; CHECK-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload2290; CHECK-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload2291; CHECK-NEXT: mov z1.d, z4.d2292; CHECK-NEXT: addvl sp, sp, #172293; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload2294; CHECK-NEXT: ret2295; STRIDED-LABEL: ld1_x4_i64_z0_z4_z8_z12:2296; STRIDED: // %bb.0:2297; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill2298; STRIDED-NEXT: addvl sp, sp, #-172299; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill2300; STRIDED-NEXT: mov p8.b, p0.b2301; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill2302; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill2303; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill2304; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill2305; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill2306; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill2307; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill2308; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill2309; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill2310; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill2311; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill2312; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill2313; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill2314; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill2315; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill2316; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill2317; STRIDED-NEXT: ld1d { z0.d, z4.d, z8.d, z12.d }, pn8/z, [x0]2318; STRIDED-NEXT: //APP2319; STRIDED-NEXT: nop2320; STRIDED-NEXT: //NO_APP2321; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload2322; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload2323; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload2324; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload2325; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload2326; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload2327; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload2328; STRIDED-NEXT: mov z2.d, z8.d2329; STRIDED-NEXT: mov z3.d, z12.d2330; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload2331; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload2332; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload2333; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload2334; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload2335; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload2336; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload2337; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload2338; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload2339; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload2340; STRIDED-NEXT: mov z1.d, z4.d2341; STRIDED-NEXT: addvl sp, sp, #172342; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload2343; STRIDED-NEXT: ret2344;2345; CONTIGUOUS-LABEL: ld1_x4_i64_z0_z4_z8_z12:2346; CONTIGUOUS: // %bb.0:2347; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill2348; CONTIGUOUS-NEXT: addvl sp, sp, #-152349; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill2350; CONTIGUOUS-NEXT: ptrue pn8.b2351; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill2352; CONTIGUOUS-NEXT: st1b { z10.b, z11.b }, pn8, [sp, #12, mul vl] // 32-byte Folded Spill2353; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill2354; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill2355; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill2356; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill2357; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill2358; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill2359; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill2360; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill2361; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill2362; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill2363; CONTIGUOUS-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill2364; CONTIGUOUS-NEXT: addvl sp, sp, #-42365; CONTIGUOUS-NEXT: mov p8.b, p0.b2366; CONTIGUOUS-NEXT: ld1d { z0.d - z3.d }, pn8/z, [x0]2367; CONTIGUOUS-NEXT: str z0, [sp]2368; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]2369; CONTIGUOUS-NEXT: str z2, [sp, #2, mul vl]2370; CONTIGUOUS-NEXT: str z3, [sp, #3, mul vl]2371; CONTIGUOUS-NEXT: //APP2372; CONTIGUOUS-NEXT: nop2373; CONTIGUOUS-NEXT: //NO_APP2374; CONTIGUOUS-NEXT: ldr z0, [sp]2375; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]2376; CONTIGUOUS-NEXT: ldr z2, [sp, #2, mul vl]2377; CONTIGUOUS-NEXT: ldr z3, [sp, #3, mul vl]2378; CONTIGUOUS-NEXT: addvl sp, sp, #42379; CONTIGUOUS-NEXT: ptrue pn8.b2380; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload2381; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload2382; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload2383; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload2384; CONTIGUOUS-NEXT: ld1b { z10.b, z11.b }, pn8/z, [sp, #12, mul vl] // 32-byte Folded Reload2385; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload2386; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload2387; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload2388; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload2389; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload2390; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload2391; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload2392; CONTIGUOUS-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload2393; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload2394; CONTIGUOUS-NEXT: addvl sp, sp, #152395; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload2396; CONTIGUOUS-NEXT: ret2397 %res = call { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sve.ld1.pn.x4.nxv2i64(target("aarch64.svcount") %pn, ptr %ptr)2398 call void asm sideeffect "nop", "~{z1},~{z2},~{z3},~{z5},~{z6},~{z7},~{z9},~{z10},~{z11},~{z13},~{z14},~{z15},~{z16},~{z17},~{z18},~{z19},~{z20},~{z21},~{z22},~{z23},~{z24},~{z25},~{z26},~{z27},~{z28},~{z29},~{z30},~{z31}"() nounwind2399 %res.v0 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 02400 %v0 = call <vscale x 8 x i64> @llvm.vector.insert.nxv8i64.nxv2i64(<vscale x 8 x i64> poison, <vscale x 2 x i64> %res.v0, i64 0)2401 %res.v1 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 12402 %v1 = call <vscale x 8 x i64> @llvm.vector.insert.nxv8i64.nxv2i64(<vscale x 8 x i64> %v0, <vscale x 2 x i64> %res.v1, i64 2)2403 %res.v2 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 22404 %v2 = call <vscale x 8 x i64> @llvm.vector.insert.nxv8i64.nxv2i64(<vscale x 8 x i64> %v1, <vscale x 2 x i64> %res.v2, i64 4)2405 %res.v3 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 32406 %v3 = call <vscale x 8 x i64> @llvm.vector.insert.nxv8i64.nxv2i64(<vscale x 8 x i64> %v2, <vscale x 2 x i64> %res.v3, i64 6)2407 ret <vscale x 8 x i64> %v32408}2409 2410define <vscale x 8 x i64> @ld1_x4_i64_z0_z4_z8_z12_scalar(<vscale x 2 x i64> %unused, <vscale x 2 x i64> %z1, target("aarch64.svcount") %pn, ptr %ptr, i64 %index) nounwind {2411; CHECK-LABEL: ld1_x4_i64_z0_z4_z8_z12_scalar:2412; CHECK: // %bb.0:2413; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill2414; CHECK-NEXT: addvl sp, sp, #-172415; CHECK-NEXT: lsl x8, x1, #32416; CHECK-NEXT: str p8, [sp, #7, mul vl] // 2-byte Folded Spill2417; CHECK-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill2418; CHECK-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill2419; CHECK-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill2420; CHECK-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill2421; CHECK-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill2422; CHECK-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill2423; CHECK-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill2424; CHECK-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill2425; CHECK-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill2426; CHECK-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill2427; CHECK-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill2428; CHECK-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill2429; CHECK-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill2430; CHECK-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill2431; CHECK-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill2432; CHECK-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill2433; CHECK-NEXT: mov p8.b, p0.b2434; CHECK-NEXT: ld1d { z0.d, z4.d, z8.d, z12.d }, pn8/z, [x0, x8, lsl #3]2435; CHECK-NEXT: //APP2436; CHECK-NEXT: nop2437; CHECK-NEXT: //NO_APP2438; CHECK-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Folded Reload2439; CHECK-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload2440; CHECK-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload2441; CHECK-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload2442; CHECK-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload2443; CHECK-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload2444; CHECK-NEXT: mov z2.d, z8.d2445; CHECK-NEXT: mov z3.d, z12.d2446; CHECK-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload2447; CHECK-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload2448; CHECK-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload2449; CHECK-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload2450; CHECK-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload2451; CHECK-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload2452; CHECK-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload2453; CHECK-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload2454; CHECK-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload2455; CHECK-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload2456; CHECK-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload2457; CHECK-NEXT: mov z1.d, z4.d2458; CHECK-NEXT: addvl sp, sp, #172459; CHECK-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload2460; CHECK-NEXT: ret2461; STRIDED-LABEL: ld1_x4_i64_z0_z4_z8_z12_scalar:2462; STRIDED: // %bb.0:2463; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill2464; STRIDED-NEXT: addvl sp, sp, #-172465; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill2466; STRIDED-NEXT: mov p8.b, p0.b2467; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill2468; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill2469; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill2470; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill2471; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill2472; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill2473; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill2474; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill2475; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill2476; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill2477; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill2478; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill2479; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill2480; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill2481; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill2482; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill2483; STRIDED-NEXT: ld1d { z0.d, z4.d, z8.d, z12.d }, pn8/z, [x0, x1, lsl #3]2484; STRIDED-NEXT: //APP2485; STRIDED-NEXT: nop2486; STRIDED-NEXT: //NO_APP2487; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload2488; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload2489; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload2490; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload2491; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload2492; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload2493; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload2494; STRIDED-NEXT: mov z2.d, z8.d2495; STRIDED-NEXT: mov z3.d, z12.d2496; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload2497; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload2498; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload2499; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload2500; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload2501; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload2502; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload2503; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload2504; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload2505; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload2506; STRIDED-NEXT: mov z1.d, z4.d2507; STRIDED-NEXT: addvl sp, sp, #172508; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload2509; STRIDED-NEXT: ret2510;2511; CONTIGUOUS-LABEL: ld1_x4_i64_z0_z4_z8_z12_scalar:2512; CONTIGUOUS: // %bb.0:2513; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill2514; CONTIGUOUS-NEXT: addvl sp, sp, #-152515; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill2516; CONTIGUOUS-NEXT: ptrue pn8.b2517; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill2518; CONTIGUOUS-NEXT: st1b { z10.b, z11.b }, pn8, [sp, #12, mul vl] // 32-byte Folded Spill2519; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill2520; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill2521; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill2522; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill2523; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill2524; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill2525; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill2526; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill2527; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill2528; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill2529; CONTIGUOUS-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill2530; CONTIGUOUS-NEXT: addvl sp, sp, #-42531; CONTIGUOUS-NEXT: mov p8.b, p0.b2532; CONTIGUOUS-NEXT: ld1d { z0.d - z3.d }, pn8/z, [x0, x1, lsl #3]2533; CONTIGUOUS-NEXT: str z0, [sp]2534; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]2535; CONTIGUOUS-NEXT: str z2, [sp, #2, mul vl]2536; CONTIGUOUS-NEXT: str z3, [sp, #3, mul vl]2537; CONTIGUOUS-NEXT: //APP2538; CONTIGUOUS-NEXT: nop2539; CONTIGUOUS-NEXT: //NO_APP2540; CONTIGUOUS-NEXT: ldr z0, [sp]2541; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]2542; CONTIGUOUS-NEXT: ldr z2, [sp, #2, mul vl]2543; CONTIGUOUS-NEXT: ldr z3, [sp, #3, mul vl]2544; CONTIGUOUS-NEXT: addvl sp, sp, #42545; CONTIGUOUS-NEXT: ptrue pn8.b2546; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload2547; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload2548; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload2549; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload2550; CONTIGUOUS-NEXT: ld1b { z10.b, z11.b }, pn8/z, [sp, #12, mul vl] // 32-byte Folded Reload2551; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload2552; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload2553; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload2554; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload2555; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload2556; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload2557; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload2558; CONTIGUOUS-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload2559; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload2560; CONTIGUOUS-NEXT: addvl sp, sp, #152561; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload2562; CONTIGUOUS-NEXT: ret2563 %base = getelementptr i64, ptr %ptr, i64 %index2564 %res = call { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sve.ld1.pn.x4.nxv2i64(target("aarch64.svcount") %pn, ptr %base)2565 call void asm sideeffect "nop", "~{z1},~{z2},~{z3},~{z5},~{z6},~{z7},~{z9},~{z10},~{z11},~{z13},~{z14},~{z15},~{z16},~{z17},~{z18},~{z19},~{z20},~{z21},~{z22},~{z23},~{z24},~{z25},~{z26},~{z27},~{z28},~{z29},~{z30},~{z31}"() nounwind2566 %res.v0 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 02567 %v0 = call <vscale x 8 x i64> @llvm.vector.insert.nxv8i64.nxv2i64(<vscale x 8 x i64> poison, <vscale x 2 x i64> %res.v0, i64 0)2568 %res.v1 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 12569 %v1 = call <vscale x 8 x i64> @llvm.vector.insert.nxv8i64.nxv2i64(<vscale x 8 x i64> %v0, <vscale x 2 x i64> %res.v1, i64 2)2570 %res.v2 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 22571 %v2 = call <vscale x 8 x i64> @llvm.vector.insert.nxv8i64.nxv2i64(<vscale x 8 x i64> %v1, <vscale x 2 x i64> %res.v2, i64 4)2572 %res.v3 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 32573 %v3 = call <vscale x 8 x i64> @llvm.vector.insert.nxv8i64.nxv2i64(<vscale x 8 x i64> %v2, <vscale x 2 x i64> %res.v3, i64 6)2574 ret <vscale x 8 x i64> %v32575}2576 2577declare <vscale x 32 x i8> @llvm.vector.insert.nxv32i8.nxv16i8(<vscale x 32 x i8>, <vscale x 16 x i8>, i64)2578declare <vscale x 16 x i16> @llvm.vector.insert.nxv16i16.nxv8i16(<vscale x 16 x i16>, <vscale x 8 x i16>, i64)2579declare <vscale x 8 x i32> @llvm.vector.insert.nxv8i32.nxv4i32(<vscale x 8 x i32>, <vscale x 4 x i32>, i64)2580declare <vscale x 4 x i64> @llvm.vector.insert.nxv4i64.nxv2i64(<vscale x 4 x i64>, <vscale x 2 x i64>, i64)2581declare <vscale x 64 x i8> @llvm.vector.insert.nxv64i8.nxv16i8(<vscale x 64 x i8>, <vscale x 16 x i8>, i64)2582declare <vscale x 32 x i16> @llvm.vector.insert.nxv32i16.nxv8i16(<vscale x 32 x i16>, <vscale x 8 x i16>, i64)2583declare <vscale x 16 x i32> @llvm.vector.insert.nxv16i32.nxv4i32(<vscale x 16 x i32>, <vscale x 4 x i32>, i64)2584declare <vscale x 8 x i64> @llvm.vector.insert.nxv8i64.nxv2i64(<vscale x 8 x i64>, <vscale x 2 x i64>, i64)2585declare { <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sve.ld1.pn.x2.nxv16i8(target("aarch64.svcount"), ptr)2586declare { <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sve.ld1.pn.x2.nxv8i16(target("aarch64.svcount"), ptr)2587declare { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sve.ld1.pn.x2.nxv4i32(target("aarch64.svcount"), ptr)2588declare { <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sve.ld1.pn.x2.nxv2i64(target("aarch64.svcount"), ptr)2589declare { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sve.ld1.pn.x4.nxv16i8(target("aarch64.svcount"), ptr)2590declare { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sve.ld1.pn.x4.nxv8i16(target("aarch64.svcount"), ptr)2591declare { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sve.ld1.pn.x4.nxv4i32(target("aarch64.svcount"), ptr)2592declare { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sve.ld1.pn.x4.nxv2i64(target("aarch64.svcount"), ptr)2593