1822 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> @ldnt1_x2_i8_z0_z8(<vscale x 16 x i8> %unused, <vscale x 16 x i8> %z1, target("aarch64.svcount") %pn, ptr %ptr) nounwind {7; STRIDED-LABEL: ldnt1_x2_i8_z0_z8:8; STRIDED: // %bb.0:9; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill10; STRIDED-NEXT: addvl sp, sp, #-1711; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill12; STRIDED-NEXT: mov p8.b, p0.b13; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill14; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill15; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill16; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill17; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill18; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill19; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill20; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill21; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill22; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill23; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill24; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill25; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill26; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill27; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill28; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill29; STRIDED-NEXT: ldnt1b { z0.b, z8.b }, pn8/z, [x0]30; STRIDED-NEXT: //APP31; STRIDED-NEXT: nop32; STRIDED-NEXT: //NO_APP33; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload34; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload35; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload36; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload37; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload38; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload39; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload40; STRIDED-NEXT: mov z1.d, z8.d41; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload42; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload43; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload44; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload45; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload46; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload47; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload48; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload49; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload50; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload51; STRIDED-NEXT: addvl sp, sp, #1752; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload53; STRIDED-NEXT: ret54;55; CONTIGUOUS-LABEL: ldnt1_x2_i8_z0_z8:56; CONTIGUOUS: // %bb.0:57; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill58; CONTIGUOUS-NEXT: addvl sp, sp, #-1659; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill60; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill61; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill62; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill63; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill64; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill65; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill66; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill67; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill68; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill69; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill70; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill71; CONTIGUOUS-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill72; CONTIGUOUS-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill73; CONTIGUOUS-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill74; CONTIGUOUS-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill75; CONTIGUOUS-NEXT: addvl sp, sp, #-276; CONTIGUOUS-NEXT: mov p8.b, p0.b77; CONTIGUOUS-NEXT: ldnt1b { z0.b, z1.b }, pn8/z, [x0]78; CONTIGUOUS-NEXT: str z0, [sp]79; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]80; CONTIGUOUS-NEXT: //APP81; CONTIGUOUS-NEXT: nop82; CONTIGUOUS-NEXT: //NO_APP83; CONTIGUOUS-NEXT: ldr z0, [sp]84; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]85; CONTIGUOUS-NEXT: addvl sp, sp, #286; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload87; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload88; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload89; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload90; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload91; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload92; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload93; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload94; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload95; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload96; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload97; CONTIGUOUS-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload98; CONTIGUOUS-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload99; CONTIGUOUS-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload100; CONTIGUOUS-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload101; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload102; CONTIGUOUS-NEXT: addvl sp, sp, #16103; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload104; CONTIGUOUS-NEXT: ret105 %res = call { <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sve.ldnt1.pn.x2.nxv16i8(target("aarch64.svcount") %pn, ptr %ptr)106 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}"() nounwind107 %res.v0 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 0108 %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)109 %res.v1 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 1110 %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)111 ret <vscale x 32 x i8> %v1112}113 114define <vscale x 32 x i8> @ldnt1_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 {115; STRIDED-LABEL: ldnt1_x2_i8_z0_z8_scalar:116; STRIDED: // %bb.0:117; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill118; STRIDED-NEXT: addvl sp, sp, #-17119; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill120; STRIDED-NEXT: mov p8.b, p0.b121; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill122; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill123; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill124; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill125; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill126; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill127; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill128; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill129; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill130; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill131; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill132; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill133; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill134; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill135; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill136; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill137; STRIDED-NEXT: ldnt1b { z0.b, z8.b }, pn8/z, [x0, x1]138; STRIDED-NEXT: //APP139; STRIDED-NEXT: nop140; STRIDED-NEXT: //NO_APP141; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload142; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload143; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload144; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload145; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload146; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload147; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload148; STRIDED-NEXT: mov z1.d, z8.d149; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload150; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload151; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload152; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload153; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload154; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload155; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload156; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload157; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload158; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload159; STRIDED-NEXT: addvl sp, sp, #17160; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload161; STRIDED-NEXT: ret162;163; CONTIGUOUS-LABEL: ldnt1_x2_i8_z0_z8_scalar:164; CONTIGUOUS: // %bb.0:165; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill166; CONTIGUOUS-NEXT: addvl sp, sp, #-16167; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill168; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill169; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill170; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill171; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill172; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill173; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill174; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill175; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill176; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill177; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill178; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill179; CONTIGUOUS-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill180; CONTIGUOUS-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill181; CONTIGUOUS-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill182; CONTIGUOUS-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill183; CONTIGUOUS-NEXT: addvl sp, sp, #-2184; CONTIGUOUS-NEXT: mov p8.b, p0.b185; CONTIGUOUS-NEXT: ldnt1b { z0.b, z1.b }, pn8/z, [x0, x1]186; CONTIGUOUS-NEXT: str z0, [sp]187; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]188; CONTIGUOUS-NEXT: //APP189; CONTIGUOUS-NEXT: nop190; CONTIGUOUS-NEXT: //NO_APP191; CONTIGUOUS-NEXT: ldr z0, [sp]192; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]193; CONTIGUOUS-NEXT: addvl sp, sp, #2194; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload195; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload196; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload197; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload198; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload199; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload200; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload201; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload202; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload203; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload204; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload205; CONTIGUOUS-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload206; CONTIGUOUS-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload207; CONTIGUOUS-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload208; CONTIGUOUS-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload209; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload210; CONTIGUOUS-NEXT: addvl sp, sp, #16211; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload212; CONTIGUOUS-NEXT: ret213 %base = getelementptr i8, ptr %ptr, i64 %index214 %res = call { <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sve.ldnt1.pn.x2.nxv16i8(target("aarch64.svcount") %pn, ptr %base)215 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}"() nounwind216 %res.v0 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 0217 %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)218 %res.v1 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 1219 %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)220 ret <vscale x 32 x i8> %v1221}222 223define <vscale x 16 x i16> @ldnt1_x2_i16_z0_z8(<vscale x 8 x i16> %unused, <vscale x 8 x i16> %z1, target("aarch64.svcount") %pn, ptr %ptr) nounwind {224; STRIDED-LABEL: ldnt1_x2_i16_z0_z8:225; STRIDED: // %bb.0:226; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill227; STRIDED-NEXT: addvl sp, sp, #-17228; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill229; STRIDED-NEXT: mov p8.b, p0.b230; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill231; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill232; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill233; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill234; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill235; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill236; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill237; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill238; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill239; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill240; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill241; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill242; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill243; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill244; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill245; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill246; STRIDED-NEXT: ldnt1h { z0.h, z8.h }, pn8/z, [x0]247; STRIDED-NEXT: //APP248; STRIDED-NEXT: nop249; STRIDED-NEXT: //NO_APP250; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload251; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload252; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload253; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload254; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload255; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload256; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload257; STRIDED-NEXT: mov z1.d, z8.d258; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload259; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload260; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload261; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload262; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload263; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload264; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload265; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload266; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload267; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload268; STRIDED-NEXT: addvl sp, sp, #17269; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload270; STRIDED-NEXT: ret271;272; CONTIGUOUS-LABEL: ldnt1_x2_i16_z0_z8:273; CONTIGUOUS: // %bb.0:274; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill275; CONTIGUOUS-NEXT: addvl sp, sp, #-16276; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill277; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill278; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill279; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill280; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill281; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill282; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill283; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill284; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill285; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill286; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill287; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill288; CONTIGUOUS-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill289; CONTIGUOUS-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill290; CONTIGUOUS-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill291; CONTIGUOUS-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill292; CONTIGUOUS-NEXT: addvl sp, sp, #-2293; CONTIGUOUS-NEXT: mov p8.b, p0.b294; CONTIGUOUS-NEXT: ldnt1h { z0.h, z1.h }, pn8/z, [x0]295; CONTIGUOUS-NEXT: str z0, [sp]296; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]297; CONTIGUOUS-NEXT: //APP298; CONTIGUOUS-NEXT: nop299; CONTIGUOUS-NEXT: //NO_APP300; CONTIGUOUS-NEXT: ldr z0, [sp]301; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]302; CONTIGUOUS-NEXT: addvl sp, sp, #2303; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload304; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload305; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload306; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload307; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload308; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload309; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload310; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload311; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload312; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload313; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload314; CONTIGUOUS-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload315; CONTIGUOUS-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload316; CONTIGUOUS-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload317; CONTIGUOUS-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload318; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload319; CONTIGUOUS-NEXT: addvl sp, sp, #16320; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload321; CONTIGUOUS-NEXT: ret322 %res = call { <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sve.ldnt1.pn.x2.nxv8i16(target("aarch64.svcount") %pn, ptr %ptr)323 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}"() nounwind324 %res.v0 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 0325 %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)326 %res.v1 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 1327 %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)328 ret <vscale x 16 x i16> %v1329}330 331define <vscale x 16 x i16> @ldnt1_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 {332; STRIDED-LABEL: ldnt1_x2_i16_z0_z8_scalar:333; STRIDED: // %bb.0:334; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill335; STRIDED-NEXT: addvl sp, sp, #-17336; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill337; STRIDED-NEXT: mov p8.b, p0.b338; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill339; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill340; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill341; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill342; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill343; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill344; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill345; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill346; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill347; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill348; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill349; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill350; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill351; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill352; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill353; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill354; STRIDED-NEXT: ldnt1h { z0.h, z8.h }, pn8/z, [x0, x1, lsl #1]355; STRIDED-NEXT: //APP356; STRIDED-NEXT: nop357; STRIDED-NEXT: //NO_APP358; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload359; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload360; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload361; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload362; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload363; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload364; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload365; STRIDED-NEXT: mov z1.d, z8.d366; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload367; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload368; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload369; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload370; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload371; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload372; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload373; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload374; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload375; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload376; STRIDED-NEXT: addvl sp, sp, #17377; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload378; STRIDED-NEXT: ret379;380; CONTIGUOUS-LABEL: ldnt1_x2_i16_z0_z8_scalar:381; CONTIGUOUS: // %bb.0:382; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill383; CONTIGUOUS-NEXT: addvl sp, sp, #-16384; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill385; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill386; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill387; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill388; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill389; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill390; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill391; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill392; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill393; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill394; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill395; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill396; CONTIGUOUS-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill397; CONTIGUOUS-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill398; CONTIGUOUS-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill399; CONTIGUOUS-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill400; CONTIGUOUS-NEXT: addvl sp, sp, #-2401; CONTIGUOUS-NEXT: mov p8.b, p0.b402; CONTIGUOUS-NEXT: ldnt1h { z0.h, z1.h }, pn8/z, [x0, x1, lsl #1]403; CONTIGUOUS-NEXT: str z0, [sp]404; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]405; CONTIGUOUS-NEXT: //APP406; CONTIGUOUS-NEXT: nop407; CONTIGUOUS-NEXT: //NO_APP408; CONTIGUOUS-NEXT: ldr z0, [sp]409; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]410; CONTIGUOUS-NEXT: addvl sp, sp, #2411; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload412; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload413; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload414; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload415; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload416; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload417; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload418; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload419; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload420; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload421; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload422; CONTIGUOUS-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload423; CONTIGUOUS-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload424; CONTIGUOUS-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload425; CONTIGUOUS-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload426; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload427; CONTIGUOUS-NEXT: addvl sp, sp, #16428; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload429; CONTIGUOUS-NEXT: ret430 %base = getelementptr i16, ptr %ptr, i64 %index431 %res = call { <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sve.ldnt1.pn.x2.nxv8i16(target("aarch64.svcount") %pn, ptr %base)432 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}"() nounwind433 %res.v0 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 0434 %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)435 %res.v1 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 1436 %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)437 ret <vscale x 16 x i16> %v1438}439 440define <vscale x 8 x i32> @ldnt1_x2_i32_z0_z8(<vscale x 4 x i32> %unused, <vscale x 4 x i32> %z1, target("aarch64.svcount") %pn, ptr %ptr) nounwind {441; STRIDED-LABEL: ldnt1_x2_i32_z0_z8:442; STRIDED: // %bb.0:443; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill444; STRIDED-NEXT: addvl sp, sp, #-17445; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill446; STRIDED-NEXT: mov p8.b, p0.b447; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill448; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill449; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill450; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill451; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill452; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill453; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill454; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill455; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill456; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill457; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill458; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill459; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill460; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill461; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill462; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill463; STRIDED-NEXT: ldnt1w { z0.s, z8.s }, pn8/z, [x0]464; STRIDED-NEXT: //APP465; STRIDED-NEXT: nop466; STRIDED-NEXT: //NO_APP467; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload468; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload469; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload470; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload471; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload472; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload473; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload474; STRIDED-NEXT: mov z1.d, z8.d475; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload476; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload477; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload478; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload479; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload480; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload481; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload482; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload483; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload484; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload485; STRIDED-NEXT: addvl sp, sp, #17486; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload487; STRIDED-NEXT: ret488;489; CONTIGUOUS-LABEL: ldnt1_x2_i32_z0_z8:490; CONTIGUOUS: // %bb.0:491; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill492; CONTIGUOUS-NEXT: addvl sp, sp, #-16493; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill494; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill495; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill496; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill497; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill498; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill499; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill500; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill501; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill502; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill503; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill504; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill505; CONTIGUOUS-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill506; CONTIGUOUS-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill507; CONTIGUOUS-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill508; CONTIGUOUS-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill509; CONTIGUOUS-NEXT: addvl sp, sp, #-2510; CONTIGUOUS-NEXT: mov p8.b, p0.b511; CONTIGUOUS-NEXT: ldnt1w { z0.s, z1.s }, pn8/z, [x0]512; CONTIGUOUS-NEXT: str z0, [sp]513; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]514; CONTIGUOUS-NEXT: //APP515; CONTIGUOUS-NEXT: nop516; CONTIGUOUS-NEXT: //NO_APP517; CONTIGUOUS-NEXT: ldr z0, [sp]518; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]519; CONTIGUOUS-NEXT: addvl sp, sp, #2520; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload521; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload522; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload523; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload524; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload525; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload526; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload527; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload528; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload529; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload530; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload531; CONTIGUOUS-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload532; CONTIGUOUS-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload533; CONTIGUOUS-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload534; CONTIGUOUS-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload535; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload536; CONTIGUOUS-NEXT: addvl sp, sp, #16537; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload538; CONTIGUOUS-NEXT: ret539 %res = call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sve.ldnt1.pn.x2.nxv4i32(target("aarch64.svcount") %pn, ptr %ptr)540 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}"() nounwind541 %res.v0 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 0542 %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)543 %res.v1 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 1544 %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)545 ret <vscale x 8 x i32> %v1546}547 548define <vscale x 8 x i32> @ldnt1_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 {549; STRIDED-LABEL: ldnt1_x2_i32_z0_z8_scalar:550; STRIDED: // %bb.0:551; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill552; STRIDED-NEXT: addvl sp, sp, #-17553; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill554; STRIDED-NEXT: mov p8.b, p0.b555; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill556; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill557; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill558; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill559; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill560; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill561; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill562; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill563; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill564; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill565; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill566; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill567; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill568; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill569; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill570; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill571; STRIDED-NEXT: ldnt1w { z0.s, z8.s }, pn8/z, [x0, x1, lsl #2]572; STRIDED-NEXT: //APP573; STRIDED-NEXT: nop574; STRIDED-NEXT: //NO_APP575; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload576; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload577; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload578; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload579; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload580; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload581; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload582; STRIDED-NEXT: mov z1.d, z8.d583; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload584; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload585; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload586; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload587; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload588; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload589; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload590; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload591; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload592; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload593; STRIDED-NEXT: addvl sp, sp, #17594; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload595; STRIDED-NEXT: ret596;597; CONTIGUOUS-LABEL: ldnt1_x2_i32_z0_z8_scalar:598; CONTIGUOUS: // %bb.0:599; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill600; CONTIGUOUS-NEXT: addvl sp, sp, #-16601; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill602; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill603; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill604; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill605; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill606; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill607; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill608; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill609; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill610; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill611; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill612; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill613; CONTIGUOUS-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill614; CONTIGUOUS-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill615; CONTIGUOUS-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill616; CONTIGUOUS-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill617; CONTIGUOUS-NEXT: addvl sp, sp, #-2618; CONTIGUOUS-NEXT: mov p8.b, p0.b619; CONTIGUOUS-NEXT: ldnt1w { z0.s, z1.s }, pn8/z, [x0, x1, lsl #2]620; CONTIGUOUS-NEXT: str z0, [sp]621; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]622; CONTIGUOUS-NEXT: //APP623; CONTIGUOUS-NEXT: nop624; CONTIGUOUS-NEXT: //NO_APP625; CONTIGUOUS-NEXT: ldr z0, [sp]626; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]627; CONTIGUOUS-NEXT: addvl sp, sp, #2628; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload629; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload630; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload631; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload632; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload633; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload634; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload635; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload636; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload637; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload638; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload639; CONTIGUOUS-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload640; CONTIGUOUS-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload641; CONTIGUOUS-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload642; CONTIGUOUS-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload643; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload644; CONTIGUOUS-NEXT: addvl sp, sp, #16645; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload646; CONTIGUOUS-NEXT: ret647 %base = getelementptr i32, ptr %ptr, i64 %index648 %res = call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sve.ldnt1.pn.x2.nxv4i32(target("aarch64.svcount") %pn, ptr %base)649 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}"() nounwind650 %res.v0 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 0651 %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)652 %res.v1 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 1653 %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)654 ret <vscale x 8 x i32> %v1655}656 657define <vscale x 4 x i64> @ldnt1_x2_i64_z0_z8(<vscale x 2 x i64> %unused, <vscale x 2 x i64> %z1, target("aarch64.svcount") %pn, ptr %ptr) nounwind {658; STRIDED-LABEL: ldnt1_x2_i64_z0_z8:659; STRIDED: // %bb.0:660; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill661; STRIDED-NEXT: addvl sp, sp, #-17662; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill663; STRIDED-NEXT: mov p8.b, p0.b664; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill665; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill666; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill667; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill668; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill669; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill670; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill671; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill672; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill673; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill674; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill675; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill676; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill677; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill678; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill679; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill680; STRIDED-NEXT: ldnt1d { z0.d, z8.d }, pn8/z, [x0]681; STRIDED-NEXT: //APP682; STRIDED-NEXT: nop683; STRIDED-NEXT: //NO_APP684; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload685; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload686; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload687; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload688; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload689; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload690; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload691; STRIDED-NEXT: mov z1.d, z8.d692; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload693; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload694; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload695; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload696; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload697; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload698; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload699; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload700; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload701; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload702; STRIDED-NEXT: addvl sp, sp, #17703; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload704; STRIDED-NEXT: ret705;706; CONTIGUOUS-LABEL: ldnt1_x2_i64_z0_z8:707; CONTIGUOUS: // %bb.0:708; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill709; CONTIGUOUS-NEXT: addvl sp, sp, #-16710; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill711; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill712; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill713; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill714; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill715; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill716; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill717; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill718; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill719; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill720; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill721; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill722; CONTIGUOUS-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill723; CONTIGUOUS-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill724; CONTIGUOUS-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill725; CONTIGUOUS-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill726; CONTIGUOUS-NEXT: addvl sp, sp, #-2727; CONTIGUOUS-NEXT: mov p8.b, p0.b728; CONTIGUOUS-NEXT: ldnt1d { z0.d, z1.d }, pn8/z, [x0]729; CONTIGUOUS-NEXT: str z0, [sp]730; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]731; CONTIGUOUS-NEXT: //APP732; CONTIGUOUS-NEXT: nop733; CONTIGUOUS-NEXT: //NO_APP734; CONTIGUOUS-NEXT: ldr z0, [sp]735; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]736; CONTIGUOUS-NEXT: addvl sp, sp, #2737; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload738; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload739; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload740; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload741; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload742; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload743; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload744; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload745; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload746; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload747; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload748; CONTIGUOUS-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload749; CONTIGUOUS-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload750; CONTIGUOUS-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload751; CONTIGUOUS-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload752; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload753; CONTIGUOUS-NEXT: addvl sp, sp, #16754; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload755; CONTIGUOUS-NEXT: ret756 %res = call { <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sve.ldnt1.pn.x2.nxv2i64(target("aarch64.svcount") %pn, ptr %ptr)757 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}"() nounwind758 %res.v0 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 0759 %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)760 %res.v1 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 1761 %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)762 ret <vscale x 4 x i64> %v1763}764 765define <vscale x 4 x i64> @ldnt1_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 {766; STRIDED-LABEL: ldnt1_x2_i64_z0_z8_scalar:767; STRIDED: // %bb.0:768; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill769; STRIDED-NEXT: addvl sp, sp, #-17770; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill771; STRIDED-NEXT: mov p8.b, p0.b772; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill773; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill774; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill775; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill776; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill777; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill778; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill779; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill780; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill781; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill782; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill783; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill784; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill785; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill786; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill787; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill788; STRIDED-NEXT: ldnt1d { z0.d, z8.d }, pn8/z, [x0, x1, lsl #3]789; STRIDED-NEXT: //APP790; STRIDED-NEXT: nop791; STRIDED-NEXT: //NO_APP792; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload793; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload794; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload795; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload796; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload797; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload798; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload799; STRIDED-NEXT: mov z1.d, z8.d800; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload801; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload802; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload803; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload804; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload805; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload806; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload807; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload808; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload809; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload810; STRIDED-NEXT: addvl sp, sp, #17811; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload812; STRIDED-NEXT: ret813;814; CONTIGUOUS-LABEL: ldnt1_x2_i64_z0_z8_scalar:815; CONTIGUOUS: // %bb.0:816; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill817; CONTIGUOUS-NEXT: addvl sp, sp, #-16818; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill819; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill820; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill821; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill822; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill823; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill824; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill825; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill826; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill827; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill828; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill829; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill830; CONTIGUOUS-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill831; CONTIGUOUS-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill832; CONTIGUOUS-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill833; CONTIGUOUS-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill834; CONTIGUOUS-NEXT: addvl sp, sp, #-2835; CONTIGUOUS-NEXT: mov p8.b, p0.b836; CONTIGUOUS-NEXT: ldnt1d { z0.d, z1.d }, pn8/z, [x0, x1, lsl #3]837; CONTIGUOUS-NEXT: str z0, [sp]838; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]839; CONTIGUOUS-NEXT: //APP840; CONTIGUOUS-NEXT: nop841; CONTIGUOUS-NEXT: //NO_APP842; CONTIGUOUS-NEXT: ldr z0, [sp]843; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]844; CONTIGUOUS-NEXT: addvl sp, sp, #2845; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload846; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload847; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload848; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload849; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload850; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload851; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload852; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload853; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload854; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload855; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload856; CONTIGUOUS-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload857; CONTIGUOUS-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload858; CONTIGUOUS-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload859; CONTIGUOUS-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload860; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload861; CONTIGUOUS-NEXT: addvl sp, sp, #16862; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload863; CONTIGUOUS-NEXT: ret864 %base = getelementptr i64, ptr %ptr, i64 %index865 %res = call { <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sve.ldnt1.pn.x2.nxv2i64(target("aarch64.svcount") %pn, ptr %base)866 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}"() nounwind867 %res.v0 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 0868 %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)869 %res.v1 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 1870 %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)871 ret <vscale x 4 x i64> %v1872}873 874define <vscale x 64 x i8> @ldnt1_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 {875; STRIDED-LABEL: ldnt1_x4_i8_z0_z4_z8_z12:876; STRIDED: // %bb.0:877; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill878; STRIDED-NEXT: addvl sp, sp, #-17879; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill880; STRIDED-NEXT: mov p8.b, p0.b881; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill882; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill883; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill884; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill885; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill886; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill887; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill888; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill889; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill890; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill891; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill892; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill893; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill894; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill895; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill896; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill897; STRIDED-NEXT: ldnt1b { z0.b, z4.b, z8.b, z12.b }, pn8/z, [x0]898; STRIDED-NEXT: //APP899; STRIDED-NEXT: nop900; STRIDED-NEXT: //NO_APP901; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload902; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload903; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload904; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload905; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload906; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload907; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload908; STRIDED-NEXT: mov z2.d, z8.d909; STRIDED-NEXT: mov z3.d, z12.d910; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload911; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload912; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload913; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload914; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload915; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload916; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload917; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload918; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload919; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload920; STRIDED-NEXT: mov z1.d, z4.d921; STRIDED-NEXT: addvl sp, sp, #17922; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload923; STRIDED-NEXT: ret924;925; CONTIGUOUS-LABEL: ldnt1_x4_i8_z0_z4_z8_z12:926; CONTIGUOUS: // %bb.0:927; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill928; CONTIGUOUS-NEXT: addvl sp, sp, #-15929; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill930; CONTIGUOUS-NEXT: ptrue pn8.b931; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill932; CONTIGUOUS-NEXT: st1b { z10.b, z11.b }, pn8, [sp, #12, mul vl] // 32-byte Folded Spill933; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill934; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill935; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill936; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill937; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill938; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill939; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill940; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill941; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill942; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill943; CONTIGUOUS-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill944; CONTIGUOUS-NEXT: addvl sp, sp, #-4945; CONTIGUOUS-NEXT: mov p8.b, p0.b946; CONTIGUOUS-NEXT: ldnt1b { z0.b - z3.b }, pn8/z, [x0]947; CONTIGUOUS-NEXT: str z0, [sp]948; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]949; CONTIGUOUS-NEXT: str z2, [sp, #2, mul vl]950; CONTIGUOUS-NEXT: str z3, [sp, #3, mul vl]951; CONTIGUOUS-NEXT: //APP952; CONTIGUOUS-NEXT: nop953; CONTIGUOUS-NEXT: //NO_APP954; CONTIGUOUS-NEXT: ldr z0, [sp]955; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]956; CONTIGUOUS-NEXT: ldr z2, [sp, #2, mul vl]957; CONTIGUOUS-NEXT: ldr z3, [sp, #3, mul vl]958; CONTIGUOUS-NEXT: addvl sp, sp, #4959; CONTIGUOUS-NEXT: ptrue pn8.b960; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload961; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload962; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload963; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload964; CONTIGUOUS-NEXT: ld1b { z10.b, z11.b }, pn8/z, [sp, #12, mul vl] // 32-byte Folded Reload965; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload966; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload967; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload968; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload969; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload970; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload971; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload972; CONTIGUOUS-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload973; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload974; CONTIGUOUS-NEXT: addvl sp, sp, #15975; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload976; CONTIGUOUS-NEXT: ret977 %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.ldnt1.pn.x4.nxv16i8(target("aarch64.svcount") %pn, ptr %ptr)978 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}"() nounwind979 %res.v0 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 0980 %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)981 %res.v1 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 1982 %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)983 %res.v2 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 2984 %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)985 %res.v3 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 3986 %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)987 ret <vscale x 64 x i8> %v3988}989 990define <vscale x 64 x i8> @ldnt1_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 {991; STRIDED-LABEL: ldnt1_x4_i8_z0_z4_z8_z12_scalar:992; STRIDED: // %bb.0:993; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill994; STRIDED-NEXT: addvl sp, sp, #-17995; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill996; STRIDED-NEXT: mov p8.b, p0.b997; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill998; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill999; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1000; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1001; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1002; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1003; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1004; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1005; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1006; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1007; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1008; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1009; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1010; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1011; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1012; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1013; STRIDED-NEXT: ldnt1b { z0.b, z4.b, z8.b, z12.b }, pn8/z, [x0, x1]1014; STRIDED-NEXT: //APP1015; STRIDED-NEXT: nop1016; STRIDED-NEXT: //NO_APP1017; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1018; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1019; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1020; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1021; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1022; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1023; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1024; STRIDED-NEXT: mov z2.d, z8.d1025; STRIDED-NEXT: mov z3.d, z12.d1026; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1027; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1028; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1029; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1030; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1031; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1032; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1033; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1034; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1035; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1036; STRIDED-NEXT: mov z1.d, z4.d1037; STRIDED-NEXT: addvl sp, sp, #171038; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1039; STRIDED-NEXT: ret1040;1041; CONTIGUOUS-LABEL: ldnt1_x4_i8_z0_z4_z8_z12_scalar:1042; CONTIGUOUS: // %bb.0:1043; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1044; CONTIGUOUS-NEXT: addvl sp, sp, #-151045; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1046; CONTIGUOUS-NEXT: ptrue pn8.b1047; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1048; CONTIGUOUS-NEXT: st1b { z10.b, z11.b }, pn8, [sp, #12, mul vl] // 32-byte Folded Spill1049; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1050; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1051; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1052; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1053; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1054; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1055; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1056; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1057; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1058; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1059; CONTIGUOUS-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill1060; CONTIGUOUS-NEXT: addvl sp, sp, #-41061; CONTIGUOUS-NEXT: mov p8.b, p0.b1062; CONTIGUOUS-NEXT: ldnt1b { z0.b - z3.b }, pn8/z, [x0, x1]1063; CONTIGUOUS-NEXT: str z0, [sp]1064; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]1065; CONTIGUOUS-NEXT: str z2, [sp, #2, mul vl]1066; CONTIGUOUS-NEXT: str z3, [sp, #3, mul vl]1067; CONTIGUOUS-NEXT: //APP1068; CONTIGUOUS-NEXT: nop1069; CONTIGUOUS-NEXT: //NO_APP1070; CONTIGUOUS-NEXT: ldr z0, [sp]1071; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]1072; CONTIGUOUS-NEXT: ldr z2, [sp, #2, mul vl]1073; CONTIGUOUS-NEXT: ldr z3, [sp, #3, mul vl]1074; CONTIGUOUS-NEXT: addvl sp, sp, #41075; CONTIGUOUS-NEXT: ptrue pn8.b1076; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1077; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1078; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1079; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1080; CONTIGUOUS-NEXT: ld1b { z10.b, z11.b }, pn8/z, [sp, #12, mul vl] // 32-byte Folded Reload1081; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1082; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1083; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1084; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1085; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1086; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1087; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1088; CONTIGUOUS-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload1089; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1090; CONTIGUOUS-NEXT: addvl sp, sp, #151091; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1092; CONTIGUOUS-NEXT: ret1093 %base = getelementptr i8, ptr %ptr, i64 %index1094 %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.ldnt1.pn.x4.nxv16i8(target("aarch64.svcount") %pn, ptr %base)1095 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}"() nounwind1096 %res.v0 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 01097 %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)1098 %res.v1 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 11099 %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)1100 %res.v2 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 21101 %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)1102 %res.v3 = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } %res, 31103 %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)1104 ret <vscale x 64 x i8> %v31105}1106 1107define <vscale x 32 x i16> @ldnt1_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 {1108; STRIDED-LABEL: ldnt1_x4_i16_z0_z4_z8_z12:1109; STRIDED: // %bb.0:1110; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1111; STRIDED-NEXT: addvl sp, sp, #-171112; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1113; STRIDED-NEXT: mov p8.b, p0.b1114; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1115; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1116; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1117; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1118; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1119; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1120; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1121; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1122; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1123; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1124; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1125; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1126; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1127; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1128; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1129; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1130; STRIDED-NEXT: ldnt1h { z0.h, z4.h, z8.h, z12.h }, pn8/z, [x0]1131; STRIDED-NEXT: //APP1132; STRIDED-NEXT: nop1133; STRIDED-NEXT: //NO_APP1134; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1135; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1136; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1137; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1138; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1139; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1140; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1141; STRIDED-NEXT: mov z2.d, z8.d1142; STRIDED-NEXT: mov z3.d, z12.d1143; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1144; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1145; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1146; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1147; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1148; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1149; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1150; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1151; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1152; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1153; STRIDED-NEXT: mov z1.d, z4.d1154; STRIDED-NEXT: addvl sp, sp, #171155; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1156; STRIDED-NEXT: ret1157;1158; CONTIGUOUS-LABEL: ldnt1_x4_i16_z0_z4_z8_z12:1159; CONTIGUOUS: // %bb.0:1160; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1161; CONTIGUOUS-NEXT: addvl sp, sp, #-151162; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1163; CONTIGUOUS-NEXT: ptrue pn8.b1164; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1165; CONTIGUOUS-NEXT: st1b { z10.b, z11.b }, pn8, [sp, #12, mul vl] // 32-byte Folded Spill1166; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1167; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1168; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1169; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1170; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1171; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1172; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1173; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1174; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1175; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1176; CONTIGUOUS-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill1177; CONTIGUOUS-NEXT: addvl sp, sp, #-41178; CONTIGUOUS-NEXT: mov p8.b, p0.b1179; CONTIGUOUS-NEXT: ldnt1h { z0.h - z3.h }, pn8/z, [x0]1180; CONTIGUOUS-NEXT: str z0, [sp]1181; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]1182; CONTIGUOUS-NEXT: str z2, [sp, #2, mul vl]1183; CONTIGUOUS-NEXT: str z3, [sp, #3, mul vl]1184; CONTIGUOUS-NEXT: //APP1185; CONTIGUOUS-NEXT: nop1186; CONTIGUOUS-NEXT: //NO_APP1187; CONTIGUOUS-NEXT: ldr z0, [sp]1188; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]1189; CONTIGUOUS-NEXT: ldr z2, [sp, #2, mul vl]1190; CONTIGUOUS-NEXT: ldr z3, [sp, #3, mul vl]1191; CONTIGUOUS-NEXT: addvl sp, sp, #41192; CONTIGUOUS-NEXT: ptrue pn8.b1193; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1194; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1195; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1196; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1197; CONTIGUOUS-NEXT: ld1b { z10.b, z11.b }, pn8/z, [sp, #12, mul vl] // 32-byte Folded Reload1198; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1199; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1200; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1201; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1202; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1203; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1204; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1205; CONTIGUOUS-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload1206; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1207; CONTIGUOUS-NEXT: addvl sp, sp, #151208; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1209; CONTIGUOUS-NEXT: ret1210 %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.ldnt1.pn.x4.nxv8i16(target("aarch64.svcount") %pn, ptr %ptr)1211 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}"() nounwind1212 %res.v0 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 01213 %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)1214 %res.v1 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 11215 %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)1216 %res.v2 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 21217 %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)1218 %res.v3 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 31219 %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)1220 ret <vscale x 32 x i16> %v31221}1222 1223define <vscale x 32 x i16> @ldnt1_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 {1224; STRIDED-LABEL: ldnt1_x4_i16_z0_z4_z8_z12_scalar:1225; STRIDED: // %bb.0:1226; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1227; STRIDED-NEXT: addvl sp, sp, #-171228; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1229; STRIDED-NEXT: mov p8.b, p0.b1230; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1231; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1232; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1233; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1234; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1235; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1236; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1237; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1238; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1239; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1240; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1241; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1242; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1243; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1244; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1245; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1246; STRIDED-NEXT: ldnt1h { z0.h, z4.h, z8.h, z12.h }, pn8/z, [x0, x1, lsl #1]1247; STRIDED-NEXT: //APP1248; STRIDED-NEXT: nop1249; STRIDED-NEXT: //NO_APP1250; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1251; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1252; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1253; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1254; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1255; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1256; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1257; STRIDED-NEXT: mov z2.d, z8.d1258; STRIDED-NEXT: mov z3.d, z12.d1259; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1260; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1261; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1262; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1263; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1264; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1265; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1266; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1267; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1268; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1269; STRIDED-NEXT: mov z1.d, z4.d1270; STRIDED-NEXT: addvl sp, sp, #171271; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1272; STRIDED-NEXT: ret1273;1274; CONTIGUOUS-LABEL: ldnt1_x4_i16_z0_z4_z8_z12_scalar:1275; CONTIGUOUS: // %bb.0:1276; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1277; CONTIGUOUS-NEXT: addvl sp, sp, #-151278; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1279; CONTIGUOUS-NEXT: ptrue pn8.b1280; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1281; CONTIGUOUS-NEXT: st1b { z10.b, z11.b }, pn8, [sp, #12, mul vl] // 32-byte Folded Spill1282; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1283; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1284; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1285; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1286; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1287; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1288; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1289; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1290; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1291; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1292; CONTIGUOUS-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill1293; CONTIGUOUS-NEXT: addvl sp, sp, #-41294; CONTIGUOUS-NEXT: mov p8.b, p0.b1295; CONTIGUOUS-NEXT: ldnt1h { z0.h - z3.h }, pn8/z, [x0, x1, lsl #1]1296; CONTIGUOUS-NEXT: str z0, [sp]1297; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]1298; CONTIGUOUS-NEXT: str z2, [sp, #2, mul vl]1299; CONTIGUOUS-NEXT: str z3, [sp, #3, mul vl]1300; CONTIGUOUS-NEXT: //APP1301; CONTIGUOUS-NEXT: nop1302; CONTIGUOUS-NEXT: //NO_APP1303; CONTIGUOUS-NEXT: ldr z0, [sp]1304; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]1305; CONTIGUOUS-NEXT: ldr z2, [sp, #2, mul vl]1306; CONTIGUOUS-NEXT: ldr z3, [sp, #3, mul vl]1307; CONTIGUOUS-NEXT: addvl sp, sp, #41308; CONTIGUOUS-NEXT: ptrue pn8.b1309; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1310; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1311; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1312; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1313; CONTIGUOUS-NEXT: ld1b { z10.b, z11.b }, pn8/z, [sp, #12, mul vl] // 32-byte Folded Reload1314; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1315; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1316; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1317; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1318; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1319; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1320; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1321; CONTIGUOUS-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload1322; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1323; CONTIGUOUS-NEXT: addvl sp, sp, #151324; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1325; CONTIGUOUS-NEXT: ret1326 %base = getelementptr i16, ptr %ptr, i64 %index1327 %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.ldnt1.pn.x4.nxv8i16(target("aarch64.svcount") %pn, ptr %base)1328 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}"() nounwind1329 %res.v0 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 01330 %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)1331 %res.v1 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 11332 %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)1333 %res.v2 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 21334 %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)1335 %res.v3 = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } %res, 31336 %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)1337 ret <vscale x 32 x i16> %v31338}1339 1340define <vscale x 16 x i32> @ldnt1_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 {1341; STRIDED-LABEL: ldnt1_x4_i32_z0_z4_z8_z12:1342; STRIDED: // %bb.0:1343; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1344; STRIDED-NEXT: addvl sp, sp, #-171345; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1346; STRIDED-NEXT: mov p8.b, p0.b1347; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1348; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1349; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1350; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1351; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1352; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1353; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1354; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1355; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1356; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1357; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1358; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1359; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1360; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1361; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1362; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1363; STRIDED-NEXT: ldnt1w { z0.s, z4.s, z8.s, z12.s }, pn8/z, [x0]1364; STRIDED-NEXT: //APP1365; STRIDED-NEXT: nop1366; STRIDED-NEXT: //NO_APP1367; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1368; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1369; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1370; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1371; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1372; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1373; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1374; STRIDED-NEXT: mov z2.d, z8.d1375; STRIDED-NEXT: mov z3.d, z12.d1376; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1377; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1378; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1379; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1380; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1381; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1382; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1383; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1384; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1385; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1386; STRIDED-NEXT: mov z1.d, z4.d1387; STRIDED-NEXT: addvl sp, sp, #171388; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1389; STRIDED-NEXT: ret1390;1391; CONTIGUOUS-LABEL: ldnt1_x4_i32_z0_z4_z8_z12:1392; CONTIGUOUS: // %bb.0:1393; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1394; CONTIGUOUS-NEXT: addvl sp, sp, #-151395; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1396; CONTIGUOUS-NEXT: ptrue pn8.b1397; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1398; CONTIGUOUS-NEXT: st1b { z10.b, z11.b }, pn8, [sp, #12, mul vl] // 32-byte Folded Spill1399; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1400; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1401; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1402; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1403; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1404; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1405; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1406; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1407; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1408; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1409; CONTIGUOUS-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill1410; CONTIGUOUS-NEXT: addvl sp, sp, #-41411; CONTIGUOUS-NEXT: mov p8.b, p0.b1412; CONTIGUOUS-NEXT: ldnt1w { z0.s - z3.s }, pn8/z, [x0]1413; CONTIGUOUS-NEXT: str z0, [sp]1414; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]1415; CONTIGUOUS-NEXT: str z2, [sp, #2, mul vl]1416; CONTIGUOUS-NEXT: str z3, [sp, #3, mul vl]1417; CONTIGUOUS-NEXT: //APP1418; CONTIGUOUS-NEXT: nop1419; CONTIGUOUS-NEXT: //NO_APP1420; CONTIGUOUS-NEXT: ldr z0, [sp]1421; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]1422; CONTIGUOUS-NEXT: ldr z2, [sp, #2, mul vl]1423; CONTIGUOUS-NEXT: ldr z3, [sp, #3, mul vl]1424; CONTIGUOUS-NEXT: addvl sp, sp, #41425; CONTIGUOUS-NEXT: ptrue pn8.b1426; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1427; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1428; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1429; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1430; CONTIGUOUS-NEXT: ld1b { z10.b, z11.b }, pn8/z, [sp, #12, mul vl] // 32-byte Folded Reload1431; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1432; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1433; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1434; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1435; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1436; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1437; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1438; CONTIGUOUS-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload1439; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1440; CONTIGUOUS-NEXT: addvl sp, sp, #151441; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1442; CONTIGUOUS-NEXT: ret1443 %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.ldnt1.pn.x4.nxv4i32(target("aarch64.svcount") %pn, ptr %ptr)1444 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}"() nounwind1445 %res.v0 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 01446 %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)1447 %res.v1 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 11448 %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)1449 %res.v2 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 21450 %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)1451 %res.v3 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 31452 %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)1453 ret <vscale x 16 x i32> %v31454}1455 1456define <vscale x 16 x i32> @ldnt1_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 {1457; STRIDED-LABEL: ldnt1_x4_i32_z0_z4_z8_z12_scalar:1458; STRIDED: // %bb.0:1459; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1460; STRIDED-NEXT: addvl sp, sp, #-171461; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1462; STRIDED-NEXT: mov p8.b, p0.b1463; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1464; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1465; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1466; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1467; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1468; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1469; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1470; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1471; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1472; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1473; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1474; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1475; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1476; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1477; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1478; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1479; STRIDED-NEXT: ldnt1w { z0.s, z4.s, z8.s, z12.s }, pn8/z, [x0, x1, lsl #2]1480; STRIDED-NEXT: //APP1481; STRIDED-NEXT: nop1482; STRIDED-NEXT: //NO_APP1483; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1484; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1485; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1486; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1487; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1488; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1489; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1490; STRIDED-NEXT: mov z2.d, z8.d1491; STRIDED-NEXT: mov z3.d, z12.d1492; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1493; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1494; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1495; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1496; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1497; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1498; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1499; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1500; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1501; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1502; STRIDED-NEXT: mov z1.d, z4.d1503; STRIDED-NEXT: addvl sp, sp, #171504; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1505; STRIDED-NEXT: ret1506;1507; CONTIGUOUS-LABEL: ldnt1_x4_i32_z0_z4_z8_z12_scalar:1508; CONTIGUOUS: // %bb.0:1509; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1510; CONTIGUOUS-NEXT: addvl sp, sp, #-151511; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1512; CONTIGUOUS-NEXT: ptrue pn8.b1513; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1514; CONTIGUOUS-NEXT: st1b { z10.b, z11.b }, pn8, [sp, #12, mul vl] // 32-byte Folded Spill1515; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1516; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1517; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1518; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1519; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1520; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1521; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1522; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1523; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1524; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1525; CONTIGUOUS-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill1526; CONTIGUOUS-NEXT: addvl sp, sp, #-41527; CONTIGUOUS-NEXT: mov p8.b, p0.b1528; CONTIGUOUS-NEXT: ldnt1w { z0.s - z3.s }, pn8/z, [x0, x1, lsl #2]1529; CONTIGUOUS-NEXT: str z0, [sp]1530; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]1531; CONTIGUOUS-NEXT: str z2, [sp, #2, mul vl]1532; CONTIGUOUS-NEXT: str z3, [sp, #3, mul vl]1533; CONTIGUOUS-NEXT: //APP1534; CONTIGUOUS-NEXT: nop1535; CONTIGUOUS-NEXT: //NO_APP1536; CONTIGUOUS-NEXT: ldr z0, [sp]1537; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]1538; CONTIGUOUS-NEXT: ldr z2, [sp, #2, mul vl]1539; CONTIGUOUS-NEXT: ldr z3, [sp, #3, mul vl]1540; CONTIGUOUS-NEXT: addvl sp, sp, #41541; CONTIGUOUS-NEXT: ptrue pn8.b1542; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1543; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1544; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1545; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1546; CONTIGUOUS-NEXT: ld1b { z10.b, z11.b }, pn8/z, [sp, #12, mul vl] // 32-byte Folded Reload1547; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1548; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1549; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1550; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1551; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1552; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1553; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1554; CONTIGUOUS-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload1555; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1556; CONTIGUOUS-NEXT: addvl sp, sp, #151557; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1558; CONTIGUOUS-NEXT: ret1559 %base = getelementptr i32, ptr %ptr, i64 %index1560 %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.ldnt1.pn.x4.nxv4i32(target("aarch64.svcount") %pn, ptr %base)1561 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}"() nounwind1562 %res.v0 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 01563 %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)1564 %res.v1 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 11565 %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)1566 %res.v2 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 21567 %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)1568 %res.v3 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } %res, 31569 %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)1570 ret <vscale x 16 x i32> %v31571}1572 1573define <vscale x 8 x i64> @ldnt1_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 {1574; STRIDED-LABEL: ldnt1_x4_i64_z0_z4_z8_z12:1575; STRIDED: // %bb.0:1576; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1577; STRIDED-NEXT: addvl sp, sp, #-171578; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1579; STRIDED-NEXT: mov p8.b, p0.b1580; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1581; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1582; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1583; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1584; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1585; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1586; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1587; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1588; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1589; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1590; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1591; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1592; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1593; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1594; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1595; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1596; STRIDED-NEXT: ldnt1d { z0.d, z4.d, z8.d, z12.d }, pn8/z, [x0]1597; STRIDED-NEXT: //APP1598; STRIDED-NEXT: nop1599; STRIDED-NEXT: //NO_APP1600; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1601; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1602; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1603; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1604; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1605; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1606; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1607; STRIDED-NEXT: mov z2.d, z8.d1608; STRIDED-NEXT: mov z3.d, z12.d1609; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1610; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1611; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1612; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1613; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1614; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1615; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1616; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1617; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1618; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1619; STRIDED-NEXT: mov z1.d, z4.d1620; STRIDED-NEXT: addvl sp, sp, #171621; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1622; STRIDED-NEXT: ret1623;1624; CONTIGUOUS-LABEL: ldnt1_x4_i64_z0_z4_z8_z12:1625; CONTIGUOUS: // %bb.0:1626; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1627; CONTIGUOUS-NEXT: addvl sp, sp, #-151628; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1629; CONTIGUOUS-NEXT: ptrue pn8.b1630; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1631; CONTIGUOUS-NEXT: st1b { z10.b, z11.b }, pn8, [sp, #12, mul vl] // 32-byte Folded Spill1632; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1633; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1634; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1635; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1636; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1637; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1638; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1639; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1640; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1641; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1642; CONTIGUOUS-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill1643; CONTIGUOUS-NEXT: addvl sp, sp, #-41644; CONTIGUOUS-NEXT: mov p8.b, p0.b1645; CONTIGUOUS-NEXT: ldnt1d { z0.d - z3.d }, pn8/z, [x0]1646; CONTIGUOUS-NEXT: str z0, [sp]1647; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]1648; CONTIGUOUS-NEXT: str z2, [sp, #2, mul vl]1649; CONTIGUOUS-NEXT: str z3, [sp, #3, mul vl]1650; CONTIGUOUS-NEXT: //APP1651; CONTIGUOUS-NEXT: nop1652; CONTIGUOUS-NEXT: //NO_APP1653; CONTIGUOUS-NEXT: ldr z0, [sp]1654; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]1655; CONTIGUOUS-NEXT: ldr z2, [sp, #2, mul vl]1656; CONTIGUOUS-NEXT: ldr z3, [sp, #3, mul vl]1657; CONTIGUOUS-NEXT: addvl sp, sp, #41658; CONTIGUOUS-NEXT: ptrue pn8.b1659; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1660; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1661; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1662; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1663; CONTIGUOUS-NEXT: ld1b { z10.b, z11.b }, pn8/z, [sp, #12, mul vl] // 32-byte Folded Reload1664; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1665; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1666; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1667; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1668; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1669; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1670; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1671; CONTIGUOUS-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload1672; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1673; CONTIGUOUS-NEXT: addvl sp, sp, #151674; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1675; CONTIGUOUS-NEXT: ret1676 %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.ldnt1.pn.x4.nxv2i64(target("aarch64.svcount") %pn, ptr %ptr)1677 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}"() nounwind1678 %res.v0 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 01679 %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)1680 %res.v1 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 11681 %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)1682 %res.v2 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 21683 %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)1684 %res.v3 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 31685 %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)1686 ret <vscale x 8 x i64> %v31687}1688 1689define <vscale x 8 x i64> @ldnt1_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 {1690; STRIDED-LABEL: ldnt1_x4_i64_z0_z4_z8_z12_scalar:1691; STRIDED: // %bb.0:1692; STRIDED-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1693; STRIDED-NEXT: addvl sp, sp, #-171694; STRIDED-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1695; STRIDED-NEXT: mov p8.b, p0.b1696; STRIDED-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1697; STRIDED-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1698; STRIDED-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1699; STRIDED-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1700; STRIDED-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1701; STRIDED-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1702; STRIDED-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1703; STRIDED-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1704; STRIDED-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1705; STRIDED-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1706; STRIDED-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1707; STRIDED-NEXT: str z12, [sp, #12, mul vl] // 16-byte Folded Spill1708; STRIDED-NEXT: str z11, [sp, #13, mul vl] // 16-byte Folded Spill1709; STRIDED-NEXT: str z10, [sp, #14, mul vl] // 16-byte Folded Spill1710; STRIDED-NEXT: str z9, [sp, #15, mul vl] // 16-byte Folded Spill1711; STRIDED-NEXT: str z8, [sp, #16, mul vl] // 16-byte Folded Spill1712; STRIDED-NEXT: ldnt1d { z0.d, z4.d, z8.d, z12.d }, pn8/z, [x0, x1, lsl #3]1713; STRIDED-NEXT: //APP1714; STRIDED-NEXT: nop1715; STRIDED-NEXT: //NO_APP1716; STRIDED-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1717; STRIDED-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1718; STRIDED-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1719; STRIDED-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1720; STRIDED-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1721; STRIDED-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1722; STRIDED-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1723; STRIDED-NEXT: mov z2.d, z8.d1724; STRIDED-NEXT: mov z3.d, z12.d1725; STRIDED-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1726; STRIDED-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1727; STRIDED-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1728; STRIDED-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1729; STRIDED-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1730; STRIDED-NEXT: ldr z12, [sp, #12, mul vl] // 16-byte Folded Reload1731; STRIDED-NEXT: ldr z11, [sp, #13, mul vl] // 16-byte Folded Reload1732; STRIDED-NEXT: ldr z10, [sp, #14, mul vl] // 16-byte Folded Reload1733; STRIDED-NEXT: ldr z9, [sp, #15, mul vl] // 16-byte Folded Reload1734; STRIDED-NEXT: ldr z8, [sp, #16, mul vl] // 16-byte Folded Reload1735; STRIDED-NEXT: mov z1.d, z4.d1736; STRIDED-NEXT: addvl sp, sp, #171737; STRIDED-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1738; STRIDED-NEXT: ret1739;1740; CONTIGUOUS-LABEL: ldnt1_x4_i64_z0_z4_z8_z12_scalar:1741; CONTIGUOUS: // %bb.0:1742; CONTIGUOUS-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill1743; CONTIGUOUS-NEXT: addvl sp, sp, #-151744; CONTIGUOUS-NEXT: str p8, [sp, #7, mul vl] // 2-byte Spill1745; CONTIGUOUS-NEXT: ptrue pn8.b1746; CONTIGUOUS-NEXT: str z23, [sp, #1, mul vl] // 16-byte Folded Spill1747; CONTIGUOUS-NEXT: st1b { z10.b, z11.b }, pn8, [sp, #12, mul vl] // 32-byte Folded Spill1748; CONTIGUOUS-NEXT: str z22, [sp, #2, mul vl] // 16-byte Folded Spill1749; CONTIGUOUS-NEXT: str z21, [sp, #3, mul vl] // 16-byte Folded Spill1750; CONTIGUOUS-NEXT: str z20, [sp, #4, mul vl] // 16-byte Folded Spill1751; CONTIGUOUS-NEXT: str z19, [sp, #5, mul vl] // 16-byte Folded Spill1752; CONTIGUOUS-NEXT: str z18, [sp, #6, mul vl] // 16-byte Folded Spill1753; CONTIGUOUS-NEXT: str z17, [sp, #7, mul vl] // 16-byte Folded Spill1754; CONTIGUOUS-NEXT: str z16, [sp, #8, mul vl] // 16-byte Folded Spill1755; CONTIGUOUS-NEXT: str z15, [sp, #9, mul vl] // 16-byte Folded Spill1756; CONTIGUOUS-NEXT: str z14, [sp, #10, mul vl] // 16-byte Folded Spill1757; CONTIGUOUS-NEXT: str z13, [sp, #11, mul vl] // 16-byte Folded Spill1758; CONTIGUOUS-NEXT: str z9, [sp, #14, mul vl] // 16-byte Folded Spill1759; CONTIGUOUS-NEXT: addvl sp, sp, #-41760; CONTIGUOUS-NEXT: mov p8.b, p0.b1761; CONTIGUOUS-NEXT: ldnt1d { z0.d - z3.d }, pn8/z, [x0, x1, lsl #3]1762; CONTIGUOUS-NEXT: str z0, [sp]1763; CONTIGUOUS-NEXT: str z1, [sp, #1, mul vl]1764; CONTIGUOUS-NEXT: str z2, [sp, #2, mul vl]1765; CONTIGUOUS-NEXT: str z3, [sp, #3, mul vl]1766; CONTIGUOUS-NEXT: //APP1767; CONTIGUOUS-NEXT: nop1768; CONTIGUOUS-NEXT: //NO_APP1769; CONTIGUOUS-NEXT: ldr z0, [sp]1770; CONTIGUOUS-NEXT: ldr z1, [sp, #1, mul vl]1771; CONTIGUOUS-NEXT: ldr z2, [sp, #2, mul vl]1772; CONTIGUOUS-NEXT: ldr z3, [sp, #3, mul vl]1773; CONTIGUOUS-NEXT: addvl sp, sp, #41774; CONTIGUOUS-NEXT: ptrue pn8.b1775; CONTIGUOUS-NEXT: ldr z23, [sp, #1, mul vl] // 16-byte Folded Reload1776; CONTIGUOUS-NEXT: ldr z22, [sp, #2, mul vl] // 16-byte Folded Reload1777; CONTIGUOUS-NEXT: ldr z21, [sp, #3, mul vl] // 16-byte Folded Reload1778; CONTIGUOUS-NEXT: ldr z20, [sp, #4, mul vl] // 16-byte Folded Reload1779; CONTIGUOUS-NEXT: ld1b { z10.b, z11.b }, pn8/z, [sp, #12, mul vl] // 32-byte Folded Reload1780; CONTIGUOUS-NEXT: ldr z19, [sp, #5, mul vl] // 16-byte Folded Reload1781; CONTIGUOUS-NEXT: ldr z18, [sp, #6, mul vl] // 16-byte Folded Reload1782; CONTIGUOUS-NEXT: ldr z17, [sp, #7, mul vl] // 16-byte Folded Reload1783; CONTIGUOUS-NEXT: ldr z16, [sp, #8, mul vl] // 16-byte Folded Reload1784; CONTIGUOUS-NEXT: ldr z15, [sp, #9, mul vl] // 16-byte Folded Reload1785; CONTIGUOUS-NEXT: ldr z14, [sp, #10, mul vl] // 16-byte Folded Reload1786; CONTIGUOUS-NEXT: ldr z13, [sp, #11, mul vl] // 16-byte Folded Reload1787; CONTIGUOUS-NEXT: ldr z9, [sp, #14, mul vl] // 16-byte Folded Reload1788; CONTIGUOUS-NEXT: ldr p8, [sp, #7, mul vl] // 2-byte Reload1789; CONTIGUOUS-NEXT: addvl sp, sp, #151790; CONTIGUOUS-NEXT: ldr x29, [sp], #16 // 8-byte Folded Reload1791; CONTIGUOUS-NEXT: ret1792 %base = getelementptr i64, ptr %ptr, i64 %index1793 %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.ldnt1.pn.x4.nxv2i64(target("aarch64.svcount") %pn, ptr %base)1794 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}"() nounwind1795 %res.v0 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 01796 %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)1797 %res.v1 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 11798 %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)1799 %res.v2 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 21800 %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)1801 %res.v3 = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } %res, 31802 %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)1803 ret <vscale x 8 x i64> %v31804}1805 1806declare <vscale x 32 x i8> @llvm.vector.insert.nxv32i8.nxv16i8(<vscale x 32 x i8>, <vscale x 16 x i8>, i64)1807declare <vscale x 16 x i16> @llvm.vector.insert.nxv16i16.nxv8i16(<vscale x 16 x i16>, <vscale x 8 x i16>, i64)1808declare <vscale x 8 x i32> @llvm.vector.insert.nxv8i32.nxv4i32(<vscale x 8 x i32>, <vscale x 4 x i32>, i64)1809declare <vscale x 4 x i64> @llvm.vector.insert.nxv4i64.nxv2i64(<vscale x 4 x i64>, <vscale x 2 x i64>, i64)1810declare <vscale x 64 x i8> @llvm.vector.insert.nxv64i8.nxv16i8(<vscale x 64 x i8>, <vscale x 16 x i8>, i64)1811declare <vscale x 32 x i16> @llvm.vector.insert.nxv32i16.nxv8i16(<vscale x 32 x i16>, <vscale x 8 x i16>, i64)1812declare <vscale x 16 x i32> @llvm.vector.insert.nxv16i32.nxv4i32(<vscale x 16 x i32>, <vscale x 4 x i32>, i64)1813declare <vscale x 8 x i64> @llvm.vector.insert.nxv8i64.nxv2i64(<vscale x 8 x i64>, <vscale x 2 x i64>, i64)1814declare { <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sve.ldnt1.pn.x2.nxv16i8(target("aarch64.svcount"), ptr)1815declare { <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sve.ldnt1.pn.x2.nxv8i16(target("aarch64.svcount"), ptr)1816declare { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sve.ldnt1.pn.x2.nxv4i32(target("aarch64.svcount"), ptr)1817declare { <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sve.ldnt1.pn.x2.nxv2i64(target("aarch64.svcount"), ptr)1818declare { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sve.ldnt1.pn.x4.nxv16i8(target("aarch64.svcount"), ptr)1819declare { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sve.ldnt1.pn.x4.nxv8i16(target("aarch64.svcount"), ptr)1820declare { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sve.ldnt1.pn.x4.nxv4i32(target("aarch64.svcount"), ptr)1821declare { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sve.ldnt1.pn.x4.nxv2i64(target("aarch64.svcount"), ptr)1822