Index: llvm/lib/Target/AArch64/AArch64InstrInfo.h =================================================================== --- llvm/lib/Target/AArch64/AArch64InstrInfo.h +++ llvm/lib/Target/AArch64/AArch64InstrInfo.h @@ -63,6 +63,9 @@ unsigned isStoreToStackSlot(const MachineInstr &MI, int &FrameIndex) const override; + unsigned isStoreToStackSlotPostFE(const MachineInstr &MI, int &FrameIndex) const override; + unsigned isLoadFromStackSlotPostFE(const MachineInstr &MI, int &FrameIndex) const override; + /// Does this instruction set its full destination register to zero? static bool isGPRZero(const MachineInstr &MI); Index: llvm/lib/Target/AArch64/AArch64InstrInfo.cpp =================================================================== --- llvm/lib/Target/AArch64/AArch64InstrInfo.cpp +++ llvm/lib/Target/AArch64/AArch64InstrInfo.cpp @@ -2162,6 +2162,73 @@ return 0; } +unsigned AArch64InstrInfo::isLoadFromStackSlotPostFE(const MachineInstr &MI, + int &FrameIndex) const { + if (!MI.hasOneMemOperand()) + return 0; + + auto MMOI = MI.memoperands_begin(); + const PseudoSourceValue *PVal = (*MMOI)->getPseudoValue(); + if (!PVal) + return 0; + if (PVal->kind() != PseudoSourceValue::FixedStack) + return 0; + FrameIndex = cast(PVal)->getFrameIndex(); + + switch (MI.getOpcode()) { + default: + break; + case AArch64::LDRWui: + case AArch64::LDRXui: + case AArch64::LDRBui: + case AArch64::LDRHui: + case AArch64::LDRSui: + case AArch64::LDRDui: + case AArch64::LDRQui: + if (MI.getOperand(1).isReg() && MI.getOperand(2).isImm() && + (MI.getOperand(1).getReg() == AArch64::SP || + MI.getOperand(1).getReg() == AArch64::WSP)) + return MI.getOperand(0).getReg(); + break; + } + + return 0; +} + +unsigned AArch64InstrInfo::isStoreToStackSlotPostFE(const MachineInstr &MI, + int &FrameIndex) const { + if (!MI.hasOneMemOperand()) + return 0; + + auto MMOI = MI.memoperands_begin(); + const PseudoSourceValue *PVal = (*MMOI)->getPseudoValue(); + if (!PVal) + return 0; + if (PVal->kind() != PseudoSourceValue::FixedStack) + return 0; + FrameIndex = cast(PVal)->getFrameIndex(); + + switch (MI.getOpcode()) { + default: + break; + case AArch64::STRWui: + case AArch64::STRXui: + case AArch64::STRBui: + case AArch64::STRHui: + case AArch64::STRSui: + case AArch64::STRDui: + case AArch64::STRQui: + case AArch64::LDR_PXI: + case AArch64::STR_PXI: + if (MI.getOperand(1).isReg() && MI.getOperand(2).isImm() && + (MI.getOperand(1).getReg() == AArch64::SP || + MI.getOperand(1).getReg() == AArch64::WSP)) + return MI.getOperand(0).getReg(); + break; + } + return 0; +} + /// Check all MachineMemOperands for a hint to suppress pairing. bool AArch64InstrInfo::isLdStPairSuppressed(const MachineInstr &MI) { return llvm::any_of(MI.memoperands(), [](MachineMemOperand *MMO) { Index: llvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic.ll =================================================================== --- llvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic.ll +++ llvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic.ll @@ -326,14 +326,14 @@ ; CHECK-NOLSE-O0-LABEL: fetch_and_nand: ; CHECK-NOLSE-O0: ; %bb.0: ; CHECK-NOLSE-O0-NEXT: sub sp, sp, #32 ; =32 -; CHECK-NOLSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Folded Spill +; CHECK-NOLSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Spill ; CHECK-NOLSE-O0-NEXT: ldr w8, [x0] -; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Folded Spill +; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill ; CHECK-NOLSE-O0-NEXT: LBB6_1: ; %atomicrmw.start ; CHECK-NOLSE-O0-NEXT: ; =>This Loop Header: Depth=1 ; CHECK-NOLSE-O0-NEXT: ; Child Loop BB6_2 Depth 2 -; CHECK-NOLSE-O0-NEXT: ldr w8, [sp, #28] ; 4-byte Folded Reload -; CHECK-NOLSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Folded Reload +; CHECK-NOLSE-O0-NEXT: ldr w8, [sp, #28] ; 4-byte Reload +; CHECK-NOLSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Reload ; CHECK-NOLSE-O0-NEXT: and w9, w8, #0x7 ; CHECK-NOLSE-O0-NEXT: mvn w12, w9 ; CHECK-NOLSE-O0-NEXT: LBB6_2: ; %atomicrmw.start @@ -348,13 +348,13 @@ ; CHECK-NOLSE-O0-NEXT: cbnz w10, LBB6_2 ; CHECK-NOLSE-O0-NEXT: LBB6_4: ; %atomicrmw.start ; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB6_1 Depth=1 -; CHECK-NOLSE-O0-NEXT: str w9, [sp, #12] ; 4-byte Folded Spill +; CHECK-NOLSE-O0-NEXT: str w9, [sp, #12] ; 4-byte Spill ; CHECK-NOLSE-O0-NEXT: subs w8, w9, w8 ; CHECK-NOLSE-O0-NEXT: cset w8, eq -; CHECK-NOLSE-O0-NEXT: str w9, [sp, #28] ; 4-byte Folded Spill +; CHECK-NOLSE-O0-NEXT: str w9, [sp, #28] ; 4-byte Spill ; CHECK-NOLSE-O0-NEXT: tbz w8, #0, LBB6_1 ; CHECK-NOLSE-O0-NEXT: ; %bb.5: ; %atomicrmw.end -; CHECK-NOLSE-O0-NEXT: ldr w0, [sp, #12] ; 4-byte Folded Reload +; CHECK-NOLSE-O0-NEXT: ldr w0, [sp, #12] ; 4-byte Reload ; CHECK-NOLSE-O0-NEXT: add sp, sp, #32 ; =32 ; CHECK-NOLSE-O0-NEXT: ret ; @@ -374,24 +374,24 @@ ; CHECK-LSE-O0-LABEL: fetch_and_nand: ; CHECK-LSE-O0: ; %bb.0: ; CHECK-LSE-O0-NEXT: sub sp, sp, #32 ; =32 -; CHECK-LSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Folded Spill +; CHECK-LSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Spill ; CHECK-LSE-O0-NEXT: ldr w8, [x0] -; CHECK-LSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Folded Spill +; CHECK-LSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill ; CHECK-LSE-O0-NEXT: LBB6_1: ; %atomicrmw.start ; CHECK-LSE-O0-NEXT: ; =>This Inner Loop Header: Depth=1 -; CHECK-LSE-O0-NEXT: ldr w8, [sp, #28] ; 4-byte Folded Reload -; CHECK-LSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Folded Reload +; CHECK-LSE-O0-NEXT: ldr w8, [sp, #28] ; 4-byte Reload +; CHECK-LSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Reload ; CHECK-LSE-O0-NEXT: and w9, w8, #0x7 ; CHECK-LSE-O0-NEXT: mvn w10, w9 ; CHECK-LSE-O0-NEXT: mov x9, x8 ; CHECK-LSE-O0-NEXT: casl w9, w10, [x11] -; CHECK-LSE-O0-NEXT: str w9, [sp, #12] ; 4-byte Folded Spill +; CHECK-LSE-O0-NEXT: str w9, [sp, #12] ; 4-byte Spill ; CHECK-LSE-O0-NEXT: subs w8, w9, w8 ; CHECK-LSE-O0-NEXT: cset w8, eq -; CHECK-LSE-O0-NEXT: str w9, [sp, #28] ; 4-byte Folded Spill +; CHECK-LSE-O0-NEXT: str w9, [sp, #28] ; 4-byte Spill ; CHECK-LSE-O0-NEXT: tbz w8, #0, LBB6_1 ; CHECK-LSE-O0-NEXT: ; %bb.2: ; %atomicrmw.end -; CHECK-LSE-O0-NEXT: ldr w0, [sp, #12] ; 4-byte Folded Reload +; CHECK-LSE-O0-NEXT: ldr w0, [sp, #12] ; 4-byte Reload ; CHECK-LSE-O0-NEXT: add sp, sp, #32 ; =32 ; CHECK-LSE-O0-NEXT: ret %val = atomicrmw nand i32* %p, i32 7 release @@ -415,14 +415,14 @@ ; CHECK-NOLSE-O0-LABEL: fetch_and_nand_64: ; CHECK-NOLSE-O0: ; %bb.0: ; CHECK-NOLSE-O0-NEXT: sub sp, sp, #32 ; =32 -; CHECK-NOLSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Folded Spill +; CHECK-NOLSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Spill ; CHECK-NOLSE-O0-NEXT: ldr x8, [x0] -; CHECK-NOLSE-O0-NEXT: str x8, [sp, #24] ; 8-byte Folded Spill +; CHECK-NOLSE-O0-NEXT: str x8, [sp, #24] ; 8-byte Spill ; CHECK-NOLSE-O0-NEXT: LBB7_1: ; %atomicrmw.start ; CHECK-NOLSE-O0-NEXT: ; =>This Loop Header: Depth=1 ; CHECK-NOLSE-O0-NEXT: ; Child Loop BB7_2 Depth 2 -; CHECK-NOLSE-O0-NEXT: ldr x8, [sp, #24] ; 8-byte Folded Reload -; CHECK-NOLSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Folded Reload +; CHECK-NOLSE-O0-NEXT: ldr x8, [sp, #24] ; 8-byte Reload +; CHECK-NOLSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Reload ; CHECK-NOLSE-O0-NEXT: and x9, x8, #0x7 ; CHECK-NOLSE-O0-NEXT: mvn x12, x9 ; CHECK-NOLSE-O0-NEXT: LBB7_2: ; %atomicrmw.start @@ -437,13 +437,13 @@ ; CHECK-NOLSE-O0-NEXT: cbnz w10, LBB7_2 ; CHECK-NOLSE-O0-NEXT: LBB7_4: ; %atomicrmw.start ; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB7_1 Depth=1 -; CHECK-NOLSE-O0-NEXT: str x9, [sp, #8] ; 8-byte Folded Spill +; CHECK-NOLSE-O0-NEXT: str x9, [sp, #8] ; 8-byte Spill ; CHECK-NOLSE-O0-NEXT: subs x8, x9, x8 ; CHECK-NOLSE-O0-NEXT: cset w8, eq -; CHECK-NOLSE-O0-NEXT: str x9, [sp, #24] ; 8-byte Folded Spill +; CHECK-NOLSE-O0-NEXT: str x9, [sp, #24] ; 8-byte Spill ; CHECK-NOLSE-O0-NEXT: tbz w8, #0, LBB7_1 ; CHECK-NOLSE-O0-NEXT: ; %bb.5: ; %atomicrmw.end -; CHECK-NOLSE-O0-NEXT: ldr x0, [sp, #8] ; 8-byte Folded Reload +; CHECK-NOLSE-O0-NEXT: ldr x0, [sp, #8] ; 8-byte Reload ; CHECK-NOLSE-O0-NEXT: add sp, sp, #32 ; =32 ; CHECK-NOLSE-O0-NEXT: ret ; @@ -463,24 +463,24 @@ ; CHECK-LSE-O0-LABEL: fetch_and_nand_64: ; CHECK-LSE-O0: ; %bb.0: ; CHECK-LSE-O0-NEXT: sub sp, sp, #32 ; =32 -; CHECK-LSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Folded Spill +; CHECK-LSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Spill ; CHECK-LSE-O0-NEXT: ldr x8, [x0] -; CHECK-LSE-O0-NEXT: str x8, [sp, #24] ; 8-byte Folded Spill +; CHECK-LSE-O0-NEXT: str x8, [sp, #24] ; 8-byte Spill ; CHECK-LSE-O0-NEXT: LBB7_1: ; %atomicrmw.start ; CHECK-LSE-O0-NEXT: ; =>This Inner Loop Header: Depth=1 -; CHECK-LSE-O0-NEXT: ldr x8, [sp, #24] ; 8-byte Folded Reload -; CHECK-LSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Folded Reload +; CHECK-LSE-O0-NEXT: ldr x8, [sp, #24] ; 8-byte Reload +; CHECK-LSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Reload ; CHECK-LSE-O0-NEXT: and x9, x8, #0x7 ; CHECK-LSE-O0-NEXT: mvn x10, x9 ; CHECK-LSE-O0-NEXT: mov x9, x8 ; CHECK-LSE-O0-NEXT: casal x9, x10, [x11] -; CHECK-LSE-O0-NEXT: str x9, [sp, #8] ; 8-byte Folded Spill +; CHECK-LSE-O0-NEXT: str x9, [sp, #8] ; 8-byte Spill ; CHECK-LSE-O0-NEXT: subs x8, x9, x8 ; CHECK-LSE-O0-NEXT: cset w8, eq -; CHECK-LSE-O0-NEXT: str x9, [sp, #24] ; 8-byte Folded Spill +; CHECK-LSE-O0-NEXT: str x9, [sp, #24] ; 8-byte Spill ; CHECK-LSE-O0-NEXT: tbz w8, #0, LBB7_1 ; CHECK-LSE-O0-NEXT: ; %bb.2: ; %atomicrmw.end -; CHECK-LSE-O0-NEXT: ldr x0, [sp, #8] ; 8-byte Folded Reload +; CHECK-LSE-O0-NEXT: ldr x0, [sp, #8] ; 8-byte Reload ; CHECK-LSE-O0-NEXT: add sp, sp, #32 ; =32 ; CHECK-LSE-O0-NEXT: ret %val = atomicrmw nand i64* %p, i64 7 acq_rel @@ -504,14 +504,14 @@ ; CHECK-NOLSE-O0-LABEL: fetch_and_or: ; CHECK-NOLSE-O0: ; %bb.0: ; CHECK-NOLSE-O0-NEXT: sub sp, sp, #32 ; =32 -; CHECK-NOLSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Folded Spill +; CHECK-NOLSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Spill ; CHECK-NOLSE-O0-NEXT: ldr w8, [x0] -; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Folded Spill +; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill ; CHECK-NOLSE-O0-NEXT: LBB8_1: ; %atomicrmw.start ; CHECK-NOLSE-O0-NEXT: ; =>This Loop Header: Depth=1 ; CHECK-NOLSE-O0-NEXT: ; Child Loop BB8_2 Depth 2 -; CHECK-NOLSE-O0-NEXT: ldr w8, [sp, #28] ; 4-byte Folded Reload -; CHECK-NOLSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Folded Reload +; CHECK-NOLSE-O0-NEXT: ldr w8, [sp, #28] ; 4-byte Reload +; CHECK-NOLSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Reload ; CHECK-NOLSE-O0-NEXT: mov w9, #5 ; CHECK-NOLSE-O0-NEXT: orr w12, w8, w9 ; CHECK-NOLSE-O0-NEXT: LBB8_2: ; %atomicrmw.start @@ -526,13 +526,13 @@ ; CHECK-NOLSE-O0-NEXT: cbnz w10, LBB8_2 ; CHECK-NOLSE-O0-NEXT: LBB8_4: ; %atomicrmw.start ; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB8_1 Depth=1 -; CHECK-NOLSE-O0-NEXT: str w9, [sp, #12] ; 4-byte Folded Spill +; CHECK-NOLSE-O0-NEXT: str w9, [sp, #12] ; 4-byte Spill ; CHECK-NOLSE-O0-NEXT: subs w8, w9, w8 ; CHECK-NOLSE-O0-NEXT: cset w8, eq -; CHECK-NOLSE-O0-NEXT: str w9, [sp, #28] ; 4-byte Folded Spill +; CHECK-NOLSE-O0-NEXT: str w9, [sp, #28] ; 4-byte Spill ; CHECK-NOLSE-O0-NEXT: tbz w8, #0, LBB8_1 ; CHECK-NOLSE-O0-NEXT: ; %bb.5: ; %atomicrmw.end -; CHECK-NOLSE-O0-NEXT: ldr w0, [sp, #12] ; 4-byte Folded Reload +; CHECK-NOLSE-O0-NEXT: ldr w0, [sp, #12] ; 4-byte Reload ; CHECK-NOLSE-O0-NEXT: add sp, sp, #32 ; =32 ; CHECK-NOLSE-O0-NEXT: ret ; @@ -567,14 +567,14 @@ ; CHECK-NOLSE-O0-LABEL: fetch_and_or_64: ; CHECK-NOLSE-O0: ; %bb.0: ; CHECK-NOLSE-O0-NEXT: sub sp, sp, #32 ; =32 -; CHECK-NOLSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Folded Spill +; CHECK-NOLSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Spill ; CHECK-NOLSE-O0-NEXT: ldr x8, [x0] -; CHECK-NOLSE-O0-NEXT: str x8, [sp, #24] ; 8-byte Folded Spill +; CHECK-NOLSE-O0-NEXT: str x8, [sp, #24] ; 8-byte Spill ; CHECK-NOLSE-O0-NEXT: LBB9_1: ; %atomicrmw.start ; CHECK-NOLSE-O0-NEXT: ; =>This Loop Header: Depth=1 ; CHECK-NOLSE-O0-NEXT: ; Child Loop BB9_2 Depth 2 -; CHECK-NOLSE-O0-NEXT: ldr x8, [sp, #24] ; 8-byte Folded Reload -; CHECK-NOLSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Folded Reload +; CHECK-NOLSE-O0-NEXT: ldr x8, [sp, #24] ; 8-byte Reload +; CHECK-NOLSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Reload ; CHECK-NOLSE-O0-NEXT: orr x12, x8, #0x7 ; CHECK-NOLSE-O0-NEXT: LBB9_2: ; %atomicrmw.start ; CHECK-NOLSE-O0-NEXT: ; Parent Loop BB9_1 Depth=1 @@ -588,13 +588,13 @@ ; CHECK-NOLSE-O0-NEXT: cbnz w10, LBB9_2 ; CHECK-NOLSE-O0-NEXT: LBB9_4: ; %atomicrmw.start ; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB9_1 Depth=1 -; CHECK-NOLSE-O0-NEXT: str x9, [sp, #8] ; 8-byte Folded Spill +; CHECK-NOLSE-O0-NEXT: str x9, [sp, #8] ; 8-byte Spill ; CHECK-NOLSE-O0-NEXT: subs x8, x9, x8 ; CHECK-NOLSE-O0-NEXT: cset w8, eq -; CHECK-NOLSE-O0-NEXT: str x9, [sp, #24] ; 8-byte Folded Spill +; CHECK-NOLSE-O0-NEXT: str x9, [sp, #24] ; 8-byte Spill ; CHECK-NOLSE-O0-NEXT: tbz w8, #0, LBB9_1 ; CHECK-NOLSE-O0-NEXT: ; %bb.5: ; %atomicrmw.end -; CHECK-NOLSE-O0-NEXT: ldr x0, [sp, #8] ; 8-byte Folded Reload +; CHECK-NOLSE-O0-NEXT: ldr x0, [sp, #8] ; 8-byte Reload ; CHECK-NOLSE-O0-NEXT: add sp, sp, #32 ; =32 ; CHECK-NOLSE-O0-NEXT: ret ; Index: llvm/test/CodeGen/AArch64/GlobalISel/byval-call.ll =================================================================== --- llvm/test/CodeGen/AArch64/GlobalISel/byval-call.ll +++ llvm/test/CodeGen/AArch64/GlobalISel/byval-call.ll @@ -7,13 +7,13 @@ ; CHECK-LABEL: call_byval_i32: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #32 // =32 -; CHECK-NEXT: str x30, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #16] // 8-byte Spill ; CHECK-NEXT: .cfi_def_cfa_offset 32 ; CHECK-NEXT: .cfi_offset w30, -16 ; CHECK-NEXT: ldr w8, [x0] ; CHECK-NEXT: str w8, [sp] ; CHECK-NEXT: bl byval_i32 -; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Reload ; CHECK-NEXT: add sp, sp, #32 // =32 ; CHECK-NEXT: ret call void @byval_i32(i32* byval(i32) %incoming) @@ -27,7 +27,7 @@ ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #288 // =288 ; CHECK-NEXT: stp x29, x30, [sp, #256] // 16-byte Folded Spill -; CHECK-NEXT: str x28, [sp, #272] // 8-byte Folded Spill +; CHECK-NEXT: str x28, [sp, #272] // 8-byte Spill ; CHECK-NEXT: add x29, sp, #256 // =256 ; CHECK-NEXT: .cfi_def_cfa w29, 32 ; CHECK-NEXT: .cfi_offset w28, -16 @@ -66,7 +66,7 @@ ; CHECK-NEXT: ldr q0, [x0, #240] ; CHECK-NEXT: str q0, [sp, #240] ; CHECK-NEXT: bl byval_a64i32 -; CHECK-NEXT: ldr x28, [sp, #272] // 8-byte Folded Reload +; CHECK-NEXT: ldr x28, [sp, #272] // 8-byte Reload ; CHECK-NEXT: ldp x29, x30, [sp, #256] // 16-byte Folded Reload ; CHECK-NEXT: add sp, sp, #288 // =288 ; CHECK-NEXT: ret Index: llvm/test/CodeGen/AArch64/addsub-constant-folding.ll =================================================================== --- llvm/test/CodeGen/AArch64/addsub-constant-folding.ll +++ llvm/test/CodeGen/AArch64/addsub-constant-folding.ll @@ -50,15 +50,15 @@ ; CHECK-LABEL: vec_add_const_add_const_extrause: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #32 // =32 -; CHECK-NEXT: str x30, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #16] // 8-byte Spill ; CHECK-NEXT: .cfi_def_cfa_offset 32 ; CHECK-NEXT: .cfi_offset w30, -16 ; CHECK-NEXT: movi v1.4s, #8 -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: add v0.4s, v0.4s, v1.4s ; CHECK-NEXT: bl vec_use -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Reload ; CHECK-NEXT: movi v0.4s, #10 ; CHECK-NEXT: add v0.4s, v1.4s, v0.4s ; CHECK-NEXT: add sp, sp, #32 // =32 @@ -127,15 +127,15 @@ ; CHECK-LABEL: vec_add_const_sub_const_extrause: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #32 // =32 -; CHECK-NEXT: str x30, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #16] // 8-byte Spill ; CHECK-NEXT: .cfi_def_cfa_offset 32 ; CHECK-NEXT: .cfi_offset w30, -16 ; CHECK-NEXT: movi v1.4s, #8 -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: add v0.4s, v0.4s, v1.4s ; CHECK-NEXT: bl vec_use -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Reload ; CHECK-NEXT: movi v0.4s, #6 ; CHECK-NEXT: add v0.4s, v1.4s, v0.4s ; CHECK-NEXT: add sp, sp, #32 // =32 @@ -206,15 +206,15 @@ ; CHECK-LABEL: vec_add_const_const_sub_extrause: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #32 // =32 -; CHECK-NEXT: str x30, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #16] // 8-byte Spill ; CHECK-NEXT: .cfi_def_cfa_offset 32 ; CHECK-NEXT: .cfi_offset w30, -16 ; CHECK-NEXT: movi v1.4s, #8 -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: add v0.4s, v0.4s, v1.4s ; CHECK-NEXT: bl vec_use -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Reload ; CHECK-NEXT: mvni v0.4s, #5 ; CHECK-NEXT: sub v0.4s, v0.4s, v1.4s ; CHECK-NEXT: add sp, sp, #32 // =32 @@ -283,15 +283,15 @@ ; CHECK-LABEL: vec_sub_const_add_const_extrause: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #32 // =32 -; CHECK-NEXT: str x30, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #16] // 8-byte Spill ; CHECK-NEXT: .cfi_def_cfa_offset 32 ; CHECK-NEXT: .cfi_offset w30, -16 ; CHECK-NEXT: movi v1.4s, #8 -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: sub v0.4s, v0.4s, v1.4s ; CHECK-NEXT: bl vec_use -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Reload ; CHECK-NEXT: mvni v0.4s, #5 ; CHECK-NEXT: add v0.4s, v1.4s, v0.4s ; CHECK-NEXT: add sp, sp, #32 // =32 @@ -360,15 +360,15 @@ ; CHECK-LABEL: vec_sub_const_sub_const_extrause: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #32 // =32 -; CHECK-NEXT: str x30, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #16] // 8-byte Spill ; CHECK-NEXT: .cfi_def_cfa_offset 32 ; CHECK-NEXT: .cfi_offset w30, -16 ; CHECK-NEXT: movi v1.4s, #8 -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: sub v0.4s, v0.4s, v1.4s ; CHECK-NEXT: bl vec_use -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Reload ; CHECK-NEXT: movi v0.4s, #10 ; CHECK-NEXT: sub v0.4s, v1.4s, v0.4s ; CHECK-NEXT: add sp, sp, #32 // =32 @@ -439,15 +439,15 @@ ; CHECK-LABEL: vec_sub_const_const_sub_extrause: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #32 // =32 -; CHECK-NEXT: str x30, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #16] // 8-byte Spill ; CHECK-NEXT: .cfi_def_cfa_offset 32 ; CHECK-NEXT: .cfi_offset w30, -16 ; CHECK-NEXT: movi v1.4s, #8 ; CHECK-NEXT: sub v0.4s, v0.4s, v1.4s -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: bl vec_use -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Reload ; CHECK-NEXT: movi v0.4s, #2 ; CHECK-NEXT: sub v0.4s, v0.4s, v1.4s ; CHECK-NEXT: add sp, sp, #32 // =32 @@ -519,15 +519,15 @@ ; CHECK-LABEL: vec_const_sub_add_const_extrause: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #32 // =32 -; CHECK-NEXT: str x30, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #16] // 8-byte Spill ; CHECK-NEXT: .cfi_def_cfa_offset 32 ; CHECK-NEXT: .cfi_offset w30, -16 ; CHECK-NEXT: movi v1.4s, #8 -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: sub v0.4s, v1.4s, v0.4s ; CHECK-NEXT: bl vec_use -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Reload ; CHECK-NEXT: movi v0.4s, #10 ; CHECK-NEXT: sub v0.4s, v0.4s, v1.4s ; CHECK-NEXT: add sp, sp, #32 // =32 @@ -599,15 +599,15 @@ ; CHECK-LABEL: vec_const_sub_sub_const_extrause: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #32 // =32 -; CHECK-NEXT: str x30, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #16] // 8-byte Spill ; CHECK-NEXT: .cfi_def_cfa_offset 32 ; CHECK-NEXT: .cfi_offset w30, -16 ; CHECK-NEXT: movi v1.4s, #8 -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: sub v0.4s, v1.4s, v0.4s ; CHECK-NEXT: bl vec_use -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Reload ; CHECK-NEXT: movi v0.4s, #6 ; CHECK-NEXT: sub v0.4s, v0.4s, v1.4s ; CHECK-NEXT: add sp, sp, #32 // =32 @@ -678,15 +678,15 @@ ; CHECK-LABEL: vec_const_sub_const_sub_extrause: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #32 // =32 -; CHECK-NEXT: str x30, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #16] // 8-byte Spill ; CHECK-NEXT: .cfi_def_cfa_offset 32 ; CHECK-NEXT: .cfi_offset w30, -16 ; CHECK-NEXT: movi v1.4s, #8 ; CHECK-NEXT: sub v0.4s, v1.4s, v0.4s -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: bl vec_use -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Reload ; CHECK-NEXT: movi v0.4s, #2 ; CHECK-NEXT: sub v0.4s, v0.4s, v1.4s ; CHECK-NEXT: add sp, sp, #32 // =32 Index: llvm/test/CodeGen/AArch64/arm64-fp128.ll =================================================================== --- llvm/test/CodeGen/AArch64/arm64-fp128.ll +++ llvm/test/CodeGen/AArch64/arm64-fp128.ll @@ -75,20 +75,20 @@ ; CHECK-LABEL: test_fptosi: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #32 // =32 -; CHECK-NEXT: str x30, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #16] // 8-byte Spill ; CHECK-NEXT: .cfi_def_cfa_offset 32 ; CHECK-NEXT: .cfi_offset w30, -16 ; CHECK-NEXT: adrp x8, lhs ; CHECK-NEXT: ldr q0, [x8, :lo12:lhs] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: bl __fixtfsi ; CHECK-NEXT: adrp x8, var32 ; CHECK-NEXT: str w0, [x8, :lo12:var32] -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: bl __fixtfdi ; CHECK-NEXT: adrp x8, var64 ; CHECK-NEXT: str x0, [x8, :lo12:var64] -; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Reload ; CHECK-NEXT: add sp, sp, #32 // =32 ; CHECK-NEXT: ret %val = load fp128, fp128* @lhs, align 16 @@ -106,20 +106,20 @@ ; CHECK-LABEL: test_fptoui: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #32 // =32 -; CHECK-NEXT: str x30, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #16] // 8-byte Spill ; CHECK-NEXT: .cfi_def_cfa_offset 32 ; CHECK-NEXT: .cfi_offset w30, -16 ; CHECK-NEXT: adrp x8, lhs ; CHECK-NEXT: ldr q0, [x8, :lo12:lhs] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: bl __fixunstfsi ; CHECK-NEXT: adrp x8, var32 ; CHECK-NEXT: str w0, [x8, :lo12:var32] -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: bl __fixunstfdi ; CHECK-NEXT: adrp x8, var64 ; CHECK-NEXT: str x0, [x8, :lo12:var64] -; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Reload ; CHECK-NEXT: add sp, sp, #32 // =32 ; CHECK-NEXT: ret %val = load fp128, fp128* @lhs, align 16 @@ -337,24 +337,24 @@ ; CHECK-LABEL: test_round: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #32 // =32 -; CHECK-NEXT: str x30, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #16] // 8-byte Spill ; CHECK-NEXT: .cfi_def_cfa_offset 32 ; CHECK-NEXT: .cfi_offset w30, -16 ; CHECK-NEXT: adrp x8, lhs ; CHECK-NEXT: ldr q0, [x8, :lo12:lhs] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: bl __trunctfhf2 ; CHECK-NEXT: adrp x8, varhalf ; CHECK-NEXT: str h0, [x8, :lo12:varhalf] -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: bl __trunctfsf2 ; CHECK-NEXT: adrp x8, varfloat ; CHECK-NEXT: str s0, [x8, :lo12:varfloat] -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: bl __trunctfdf2 ; CHECK-NEXT: adrp x8, vardouble ; CHECK-NEXT: str d0, [x8, :lo12:vardouble] -; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Reload ; CHECK-NEXT: add sp, sp, #32 // =32 ; CHECK-NEXT: ret Index: llvm/test/CodeGen/AArch64/atomicrmw-O0.ll =================================================================== --- llvm/test/CodeGen/AArch64/atomicrmw-O0.ll +++ llvm/test/CodeGen/AArch64/atomicrmw-O0.ll @@ -9,15 +9,15 @@ ; NOLSE: // %bb.0: // %entry ; NOLSE-NEXT: sub sp, sp, #32 // =32 ; NOLSE-NEXT: .cfi_def_cfa_offset 32 -; NOLSE-NEXT: str x0, [sp, #16] // 8-byte Folded Spill +; NOLSE-NEXT: str x0, [sp, #16] // 8-byte Spill ; NOLSE-NEXT: ldrb w8, [x0] -; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Folded Spill +; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Spill ; NOLSE-NEXT: b .LBB0_1 ; NOLSE-NEXT: .LBB0_1: // %atomicrmw.start ; NOLSE-NEXT: // =>This Loop Header: Depth=1 ; NOLSE-NEXT: // Child Loop BB0_2 Depth 2 -; NOLSE-NEXT: ldr w9, [sp, #28] // 4-byte Folded Reload -; NOLSE-NEXT: ldr x11, [sp, #16] // 8-byte Folded Reload +; NOLSE-NEXT: ldr w9, [sp, #28] // 4-byte Reload +; NOLSE-NEXT: ldr x11, [sp, #16] // 8-byte Reload ; NOLSE-NEXT: add w12, w9, #1 // =1 ; NOLSE-NEXT: .LBB0_2: // %atomicrmw.start ; NOLSE-NEXT: // Parent Loop BB0_1 Depth=1 @@ -33,13 +33,13 @@ ; NOLSE-NEXT: // in Loop: Header=BB0_1 Depth=1 ; NOLSE-NEXT: subs w9, w8, w9, uxtb ; NOLSE-NEXT: cset w9, eq -; NOLSE-NEXT: str w8, [sp, #12] // 4-byte Folded Spill +; NOLSE-NEXT: str w8, [sp, #12] // 4-byte Spill ; NOLSE-NEXT: subs w9, w9, #1 // =1 -; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Folded Spill +; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Spill ; NOLSE-NEXT: b.ne .LBB0_1 ; NOLSE-NEXT: b .LBB0_5 ; NOLSE-NEXT: .LBB0_5: // %atomicrmw.end -; NOLSE-NEXT: ldr w0, [sp, #12] // 4-byte Folded Reload +; NOLSE-NEXT: ldr w0, [sp, #12] // 4-byte Reload ; NOLSE-NEXT: add sp, sp, #32 // =32 ; NOLSE-NEXT: ret ; @@ -58,15 +58,15 @@ ; NOLSE: // %bb.0: // %entry ; NOLSE-NEXT: sub sp, sp, #32 // =32 ; NOLSE-NEXT: .cfi_def_cfa_offset 32 -; NOLSE-NEXT: str x0, [sp, #16] // 8-byte Folded Spill +; NOLSE-NEXT: str x0, [sp, #16] // 8-byte Spill ; NOLSE-NEXT: ldrh w8, [x0] -; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Folded Spill +; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Spill ; NOLSE-NEXT: b .LBB1_1 ; NOLSE-NEXT: .LBB1_1: // %atomicrmw.start ; NOLSE-NEXT: // =>This Loop Header: Depth=1 ; NOLSE-NEXT: // Child Loop BB1_2 Depth 2 -; NOLSE-NEXT: ldr w9, [sp, #28] // 4-byte Folded Reload -; NOLSE-NEXT: ldr x11, [sp, #16] // 8-byte Folded Reload +; NOLSE-NEXT: ldr w9, [sp, #28] // 4-byte Reload +; NOLSE-NEXT: ldr x11, [sp, #16] // 8-byte Reload ; NOLSE-NEXT: add w12, w9, #1 // =1 ; NOLSE-NEXT: .LBB1_2: // %atomicrmw.start ; NOLSE-NEXT: // Parent Loop BB1_1 Depth=1 @@ -82,13 +82,13 @@ ; NOLSE-NEXT: // in Loop: Header=BB1_1 Depth=1 ; NOLSE-NEXT: subs w9, w8, w9, uxth ; NOLSE-NEXT: cset w9, eq -; NOLSE-NEXT: str w8, [sp, #12] // 4-byte Folded Spill +; NOLSE-NEXT: str w8, [sp, #12] // 4-byte Spill ; NOLSE-NEXT: subs w9, w9, #1 // =1 -; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Folded Spill +; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Spill ; NOLSE-NEXT: b.ne .LBB1_1 ; NOLSE-NEXT: b .LBB1_5 ; NOLSE-NEXT: .LBB1_5: // %atomicrmw.end -; NOLSE-NEXT: ldr w0, [sp, #12] // 4-byte Folded Reload +; NOLSE-NEXT: ldr w0, [sp, #12] // 4-byte Reload ; NOLSE-NEXT: add sp, sp, #32 // =32 ; NOLSE-NEXT: ret ; @@ -107,15 +107,15 @@ ; NOLSE: // %bb.0: // %entry ; NOLSE-NEXT: sub sp, sp, #32 // =32 ; NOLSE-NEXT: .cfi_def_cfa_offset 32 -; NOLSE-NEXT: str x0, [sp, #16] // 8-byte Folded Spill +; NOLSE-NEXT: str x0, [sp, #16] // 8-byte Spill ; NOLSE-NEXT: ldr w8, [x0] -; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Folded Spill +; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Spill ; NOLSE-NEXT: b .LBB2_1 ; NOLSE-NEXT: .LBB2_1: // %atomicrmw.start ; NOLSE-NEXT: // =>This Loop Header: Depth=1 ; NOLSE-NEXT: // Child Loop BB2_2 Depth 2 -; NOLSE-NEXT: ldr w9, [sp, #28] // 4-byte Folded Reload -; NOLSE-NEXT: ldr x11, [sp, #16] // 8-byte Folded Reload +; NOLSE-NEXT: ldr w9, [sp, #28] // 4-byte Reload +; NOLSE-NEXT: ldr x11, [sp, #16] // 8-byte Reload ; NOLSE-NEXT: add w12, w9, #1 // =1 ; NOLSE-NEXT: .LBB2_2: // %atomicrmw.start ; NOLSE-NEXT: // Parent Loop BB2_1 Depth=1 @@ -131,13 +131,13 @@ ; NOLSE-NEXT: // in Loop: Header=BB2_1 Depth=1 ; NOLSE-NEXT: subs w9, w8, w9 ; NOLSE-NEXT: cset w9, eq -; NOLSE-NEXT: str w8, [sp, #12] // 4-byte Folded Spill +; NOLSE-NEXT: str w8, [sp, #12] // 4-byte Spill ; NOLSE-NEXT: subs w9, w9, #1 // =1 -; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Folded Spill +; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Spill ; NOLSE-NEXT: b.ne .LBB2_1 ; NOLSE-NEXT: b .LBB2_5 ; NOLSE-NEXT: .LBB2_5: // %atomicrmw.end -; NOLSE-NEXT: ldr w0, [sp, #12] // 4-byte Folded Reload +; NOLSE-NEXT: ldr w0, [sp, #12] // 4-byte Reload ; NOLSE-NEXT: add sp, sp, #32 // =32 ; NOLSE-NEXT: ret ; @@ -156,15 +156,15 @@ ; NOLSE: // %bb.0: // %entry ; NOLSE-NEXT: sub sp, sp, #32 // =32 ; NOLSE-NEXT: .cfi_def_cfa_offset 32 -; NOLSE-NEXT: str x0, [sp, #16] // 8-byte Folded Spill +; NOLSE-NEXT: str x0, [sp, #16] // 8-byte Spill ; NOLSE-NEXT: ldr x8, [x0] -; NOLSE-NEXT: str x8, [sp, #24] // 8-byte Folded Spill +; NOLSE-NEXT: str x8, [sp, #24] // 8-byte Spill ; NOLSE-NEXT: b .LBB3_1 ; NOLSE-NEXT: .LBB3_1: // %atomicrmw.start ; NOLSE-NEXT: // =>This Loop Header: Depth=1 ; NOLSE-NEXT: // Child Loop BB3_2 Depth 2 -; NOLSE-NEXT: ldr x9, [sp, #24] // 8-byte Folded Reload -; NOLSE-NEXT: ldr x11, [sp, #16] // 8-byte Folded Reload +; NOLSE-NEXT: ldr x9, [sp, #24] // 8-byte Reload +; NOLSE-NEXT: ldr x11, [sp, #16] // 8-byte Reload ; NOLSE-NEXT: add x12, x9, #1 // =1 ; NOLSE-NEXT: .LBB3_2: // %atomicrmw.start ; NOLSE-NEXT: // Parent Loop BB3_1 Depth=1 @@ -180,13 +180,13 @@ ; NOLSE-NEXT: // in Loop: Header=BB3_1 Depth=1 ; NOLSE-NEXT: subs x9, x8, x9 ; NOLSE-NEXT: cset w9, eq -; NOLSE-NEXT: str x8, [sp, #8] // 8-byte Folded Spill +; NOLSE-NEXT: str x8, [sp, #8] // 8-byte Spill ; NOLSE-NEXT: subs w9, w9, #1 // =1 -; NOLSE-NEXT: str x8, [sp, #24] // 8-byte Folded Spill +; NOLSE-NEXT: str x8, [sp, #24] // 8-byte Spill ; NOLSE-NEXT: b.ne .LBB3_1 ; NOLSE-NEXT: b .LBB3_5 ; NOLSE-NEXT: .LBB3_5: // %atomicrmw.end -; NOLSE-NEXT: ldr x0, [sp, #8] // 8-byte Folded Reload +; NOLSE-NEXT: ldr x0, [sp, #8] // 8-byte Reload ; NOLSE-NEXT: add sp, sp, #32 // =32 ; NOLSE-NEXT: ret ; @@ -206,18 +206,18 @@ ; NOLSE: // %bb.0: // %entry ; NOLSE-NEXT: sub sp, sp, #48 // =48 ; NOLSE-NEXT: .cfi_def_cfa_offset 48 -; NOLSE-NEXT: str x0, [sp, #24] // 8-byte Folded Spill +; NOLSE-NEXT: str x0, [sp, #24] // 8-byte Spill ; NOLSE-NEXT: ldr x8, [x0, #8] ; NOLSE-NEXT: ldr x9, [x0] -; NOLSE-NEXT: str x9, [sp, #32] // 8-byte Folded Spill -; NOLSE-NEXT: str x8, [sp, #40] // 8-byte Folded Spill +; NOLSE-NEXT: str x9, [sp, #32] // 8-byte Spill +; NOLSE-NEXT: str x8, [sp, #40] // 8-byte Spill ; NOLSE-NEXT: b .LBB4_1 ; NOLSE-NEXT: .LBB4_1: // %atomicrmw.start ; NOLSE-NEXT: // =>This Loop Header: Depth=1 ; NOLSE-NEXT: // Child Loop BB4_2 Depth 2 -; NOLSE-NEXT: ldr x11, [sp, #40] // 8-byte Folded Reload -; NOLSE-NEXT: ldr x8, [sp, #32] // 8-byte Folded Reload -; NOLSE-NEXT: ldr x13, [sp, #24] // 8-byte Folded Reload +; NOLSE-NEXT: ldr x11, [sp, #40] // 8-byte Reload +; NOLSE-NEXT: ldr x8, [sp, #32] // 8-byte Reload +; NOLSE-NEXT: ldr x13, [sp, #24] // 8-byte Reload ; NOLSE-NEXT: adds x14, x8, #1 // =1 ; NOLSE-NEXT: mov x9, xzr ; NOLSE-NEXT: adcs x15, x11, x9 @@ -239,15 +239,15 @@ ; NOLSE-NEXT: eor x11, x9, x11 ; NOLSE-NEXT: eor x8, x10, x8 ; NOLSE-NEXT: orr x8, x8, x11 -; NOLSE-NEXT: str x9, [sp, #8] // 8-byte Folded Spill -; NOLSE-NEXT: str x10, [sp, #16] // 8-byte Folded Spill -; NOLSE-NEXT: str x10, [sp, #32] // 8-byte Folded Spill -; NOLSE-NEXT: str x9, [sp, #40] // 8-byte Folded Spill +; NOLSE-NEXT: str x9, [sp, #8] // 8-byte Spill +; NOLSE-NEXT: str x10, [sp, #16] // 8-byte Spill +; NOLSE-NEXT: str x10, [sp, #32] // 8-byte Spill +; NOLSE-NEXT: str x9, [sp, #40] // 8-byte Spill ; NOLSE-NEXT: cbnz x8, .LBB4_1 ; NOLSE-NEXT: b .LBB4_5 ; NOLSE-NEXT: .LBB4_5: // %atomicrmw.end -; NOLSE-NEXT: ldr x1, [sp, #8] // 8-byte Folded Reload -; NOLSE-NEXT: ldr x0, [sp, #16] // 8-byte Folded Reload +; NOLSE-NEXT: ldr x1, [sp, #8] // 8-byte Reload +; NOLSE-NEXT: ldr x0, [sp, #16] // 8-byte Reload ; NOLSE-NEXT: add sp, sp, #48 // =48 ; NOLSE-NEXT: ret ; @@ -255,17 +255,17 @@ ; LSE: // %bb.0: // %entry ; LSE-NEXT: sub sp, sp, #80 // =80 ; LSE-NEXT: .cfi_def_cfa_offset 80 -; LSE-NEXT: str x0, [sp, #56] // 8-byte Folded Spill +; LSE-NEXT: str x0, [sp, #56] // 8-byte Spill ; LSE-NEXT: ldr x8, [x0, #8] ; LSE-NEXT: ldr x9, [x0] -; LSE-NEXT: str x9, [sp, #64] // 8-byte Folded Spill -; LSE-NEXT: str x8, [sp, #72] // 8-byte Folded Spill +; LSE-NEXT: str x9, [sp, #64] // 8-byte Spill +; LSE-NEXT: str x8, [sp, #72] // 8-byte Spill ; LSE-NEXT: b .LBB4_1 ; LSE-NEXT: .LBB4_1: // %atomicrmw.start ; LSE-NEXT: // =>This Inner Loop Header: Depth=1 -; LSE-NEXT: ldr x10, [sp, #72] // 8-byte Folded Reload -; LSE-NEXT: ldr x8, [sp, #64] // 8-byte Folded Reload -; LSE-NEXT: ldr x9, [sp, #56] // 8-byte Folded Reload +; LSE-NEXT: ldr x10, [sp, #72] // 8-byte Reload +; LSE-NEXT: ldr x8, [sp, #64] // 8-byte Reload +; LSE-NEXT: ldr x9, [sp, #56] // 8-byte Reload ; LSE-NEXT: adds x2, x8, #1 // =1 ; LSE-NEXT: mov x11, xzr ; LSE-NEXT: adcs x11, x10, x11 @@ -277,19 +277,19 @@ ; LSE-NEXT: caspal x0, x1, x2, x3, [x9] ; LSE-NEXT: stp x0, x1, [sp, #24] // 16-byte Folded Spill ; LSE-NEXT: mov x9, x1 -; LSE-NEXT: str x9, [sp, #40] // 8-byte Folded Spill +; LSE-NEXT: str x9, [sp, #40] // 8-byte Spill ; LSE-NEXT: eor x11, x9, x10 ; LSE-NEXT: mov x10, x0 -; LSE-NEXT: str x10, [sp, #48] // 8-byte Folded Spill +; LSE-NEXT: str x10, [sp, #48] // 8-byte Spill ; LSE-NEXT: eor x8, x10, x8 ; LSE-NEXT: orr x8, x8, x11 -; LSE-NEXT: str x10, [sp, #64] // 8-byte Folded Spill -; LSE-NEXT: str x9, [sp, #72] // 8-byte Folded Spill +; LSE-NEXT: str x10, [sp, #64] // 8-byte Spill +; LSE-NEXT: str x9, [sp, #72] // 8-byte Spill ; LSE-NEXT: cbnz x8, .LBB4_1 ; LSE-NEXT: b .LBB4_2 ; LSE-NEXT: .LBB4_2: // %atomicrmw.end -; LSE-NEXT: ldr x1, [sp, #40] // 8-byte Folded Reload -; LSE-NEXT: ldr x0, [sp, #48] // 8-byte Folded Reload +; LSE-NEXT: ldr x1, [sp, #40] // 8-byte Reload +; LSE-NEXT: ldr x0, [sp, #48] // 8-byte Reload ; LSE-NEXT: add sp, sp, #80 // =80 ; LSE-NEXT: ret entry: @@ -301,15 +301,15 @@ ; NOLSE: // %bb.0: // %entry ; NOLSE-NEXT: sub sp, sp, #32 // =32 ; NOLSE-NEXT: .cfi_def_cfa_offset 32 -; NOLSE-NEXT: str x0, [sp, #16] // 8-byte Folded Spill +; NOLSE-NEXT: str x0, [sp, #16] // 8-byte Spill ; NOLSE-NEXT: ldrb w8, [x0] -; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Folded Spill +; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Spill ; NOLSE-NEXT: b .LBB5_1 ; NOLSE-NEXT: .LBB5_1: // %atomicrmw.start ; NOLSE-NEXT: // =>This Loop Header: Depth=1 ; NOLSE-NEXT: // Child Loop BB5_2 Depth 2 -; NOLSE-NEXT: ldr w9, [sp, #28] // 4-byte Folded Reload -; NOLSE-NEXT: ldr x11, [sp, #16] // 8-byte Folded Reload +; NOLSE-NEXT: ldr w9, [sp, #28] // 4-byte Reload +; NOLSE-NEXT: ldr x11, [sp, #16] // 8-byte Reload ; NOLSE-NEXT: mvn w8, w9 ; NOLSE-NEXT: orr w12, w8, #0xfffffffe ; NOLSE-NEXT: .LBB5_2: // %atomicrmw.start @@ -326,13 +326,13 @@ ; NOLSE-NEXT: // in Loop: Header=BB5_1 Depth=1 ; NOLSE-NEXT: subs w9, w8, w9, uxtb ; NOLSE-NEXT: cset w9, eq -; NOLSE-NEXT: str w8, [sp, #12] // 4-byte Folded Spill +; NOLSE-NEXT: str w8, [sp, #12] // 4-byte Spill ; NOLSE-NEXT: subs w9, w9, #1 // =1 -; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Folded Spill +; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Spill ; NOLSE-NEXT: b.ne .LBB5_1 ; NOLSE-NEXT: b .LBB5_5 ; NOLSE-NEXT: .LBB5_5: // %atomicrmw.end -; NOLSE-NEXT: ldr w0, [sp, #12] // 4-byte Folded Reload +; NOLSE-NEXT: ldr w0, [sp, #12] // 4-byte Reload ; NOLSE-NEXT: add sp, sp, #32 // =32 ; NOLSE-NEXT: ret ; @@ -340,28 +340,28 @@ ; LSE: // %bb.0: // %entry ; LSE-NEXT: sub sp, sp, #32 // =32 ; LSE-NEXT: .cfi_def_cfa_offset 32 -; LSE-NEXT: str x0, [sp, #16] // 8-byte Folded Spill +; LSE-NEXT: str x0, [sp, #16] // 8-byte Spill ; LSE-NEXT: ldrb w8, [x0] -; LSE-NEXT: str w8, [sp, #28] // 4-byte Folded Spill +; LSE-NEXT: str w8, [sp, #28] // 4-byte Spill ; LSE-NEXT: b .LBB5_1 ; LSE-NEXT: .LBB5_1: // %atomicrmw.start ; LSE-NEXT: // =>This Inner Loop Header: Depth=1 -; LSE-NEXT: ldr w9, [sp, #28] // 4-byte Folded Reload -; LSE-NEXT: ldr x11, [sp, #16] // 8-byte Folded Reload +; LSE-NEXT: ldr w9, [sp, #28] // 4-byte Reload +; LSE-NEXT: ldr x11, [sp, #16] // 8-byte Reload ; LSE-NEXT: mvn w8, w9 ; LSE-NEXT: orr w10, w8, #0xfffffffe ; LSE-NEXT: mov w8, w9 ; LSE-NEXT: casalb w8, w10, [x11] -; LSE-NEXT: str w8, [sp, #8] // 4-byte Folded Spill +; LSE-NEXT: str w8, [sp, #8] // 4-byte Spill ; LSE-NEXT: subs w9, w8, w9, uxtb ; LSE-NEXT: cset w9, eq -; LSE-NEXT: str w8, [sp, #12] // 4-byte Folded Spill +; LSE-NEXT: str w8, [sp, #12] // 4-byte Spill ; LSE-NEXT: subs w9, w9, #1 // =1 -; LSE-NEXT: str w8, [sp, #28] // 4-byte Folded Spill +; LSE-NEXT: str w8, [sp, #28] // 4-byte Spill ; LSE-NEXT: b.ne .LBB5_1 ; LSE-NEXT: b .LBB5_2 ; LSE-NEXT: .LBB5_2: // %atomicrmw.end -; LSE-NEXT: ldr w0, [sp, #12] // 4-byte Folded Reload +; LSE-NEXT: ldr w0, [sp, #12] // 4-byte Reload ; LSE-NEXT: add sp, sp, #32 // =32 ; LSE-NEXT: ret entry: @@ -374,15 +374,15 @@ ; NOLSE: // %bb.0: // %entry ; NOLSE-NEXT: sub sp, sp, #32 // =32 ; NOLSE-NEXT: .cfi_def_cfa_offset 32 -; NOLSE-NEXT: str x0, [sp, #16] // 8-byte Folded Spill +; NOLSE-NEXT: str x0, [sp, #16] // 8-byte Spill ; NOLSE-NEXT: ldrh w8, [x0] -; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Folded Spill +; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Spill ; NOLSE-NEXT: b .LBB6_1 ; NOLSE-NEXT: .LBB6_1: // %atomicrmw.start ; NOLSE-NEXT: // =>This Loop Header: Depth=1 ; NOLSE-NEXT: // Child Loop BB6_2 Depth 2 -; NOLSE-NEXT: ldr w9, [sp, #28] // 4-byte Folded Reload -; NOLSE-NEXT: ldr x11, [sp, #16] // 8-byte Folded Reload +; NOLSE-NEXT: ldr w9, [sp, #28] // 4-byte Reload +; NOLSE-NEXT: ldr x11, [sp, #16] // 8-byte Reload ; NOLSE-NEXT: mvn w8, w9 ; NOLSE-NEXT: orr w12, w8, #0xfffffffe ; NOLSE-NEXT: .LBB6_2: // %atomicrmw.start @@ -399,13 +399,13 @@ ; NOLSE-NEXT: // in Loop: Header=BB6_1 Depth=1 ; NOLSE-NEXT: subs w9, w8, w9, uxth ; NOLSE-NEXT: cset w9, eq -; NOLSE-NEXT: str w8, [sp, #12] // 4-byte Folded Spill +; NOLSE-NEXT: str w8, [sp, #12] // 4-byte Spill ; NOLSE-NEXT: subs w9, w9, #1 // =1 -; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Folded Spill +; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Spill ; NOLSE-NEXT: b.ne .LBB6_1 ; NOLSE-NEXT: b .LBB6_5 ; NOLSE-NEXT: .LBB6_5: // %atomicrmw.end -; NOLSE-NEXT: ldr w0, [sp, #12] // 4-byte Folded Reload +; NOLSE-NEXT: ldr w0, [sp, #12] // 4-byte Reload ; NOLSE-NEXT: add sp, sp, #32 // =32 ; NOLSE-NEXT: ret ; @@ -413,28 +413,28 @@ ; LSE: // %bb.0: // %entry ; LSE-NEXT: sub sp, sp, #32 // =32 ; LSE-NEXT: .cfi_def_cfa_offset 32 -; LSE-NEXT: str x0, [sp, #16] // 8-byte Folded Spill +; LSE-NEXT: str x0, [sp, #16] // 8-byte Spill ; LSE-NEXT: ldrh w8, [x0] -; LSE-NEXT: str w8, [sp, #28] // 4-byte Folded Spill +; LSE-NEXT: str w8, [sp, #28] // 4-byte Spill ; LSE-NEXT: b .LBB6_1 ; LSE-NEXT: .LBB6_1: // %atomicrmw.start ; LSE-NEXT: // =>This Inner Loop Header: Depth=1 -; LSE-NEXT: ldr w9, [sp, #28] // 4-byte Folded Reload -; LSE-NEXT: ldr x11, [sp, #16] // 8-byte Folded Reload +; LSE-NEXT: ldr w9, [sp, #28] // 4-byte Reload +; LSE-NEXT: ldr x11, [sp, #16] // 8-byte Reload ; LSE-NEXT: mvn w8, w9 ; LSE-NEXT: orr w10, w8, #0xfffffffe ; LSE-NEXT: mov w8, w9 ; LSE-NEXT: casalh w8, w10, [x11] -; LSE-NEXT: str w8, [sp, #8] // 4-byte Folded Spill +; LSE-NEXT: str w8, [sp, #8] // 4-byte Spill ; LSE-NEXT: subs w9, w8, w9, uxth ; LSE-NEXT: cset w9, eq -; LSE-NEXT: str w8, [sp, #12] // 4-byte Folded Spill +; LSE-NEXT: str w8, [sp, #12] // 4-byte Spill ; LSE-NEXT: subs w9, w9, #1 // =1 -; LSE-NEXT: str w8, [sp, #28] // 4-byte Folded Spill +; LSE-NEXT: str w8, [sp, #28] // 4-byte Spill ; LSE-NEXT: b.ne .LBB6_1 ; LSE-NEXT: b .LBB6_2 ; LSE-NEXT: .LBB6_2: // %atomicrmw.end -; LSE-NEXT: ldr w0, [sp, #12] // 4-byte Folded Reload +; LSE-NEXT: ldr w0, [sp, #12] // 4-byte Reload ; LSE-NEXT: add sp, sp, #32 // =32 ; LSE-NEXT: ret entry: @@ -447,15 +447,15 @@ ; NOLSE: // %bb.0: // %entry ; NOLSE-NEXT: sub sp, sp, #32 // =32 ; NOLSE-NEXT: .cfi_def_cfa_offset 32 -; NOLSE-NEXT: str x0, [sp, #16] // 8-byte Folded Spill +; NOLSE-NEXT: str x0, [sp, #16] // 8-byte Spill ; NOLSE-NEXT: ldr w8, [x0] -; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Folded Spill +; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Spill ; NOLSE-NEXT: b .LBB7_1 ; NOLSE-NEXT: .LBB7_1: // %atomicrmw.start ; NOLSE-NEXT: // =>This Loop Header: Depth=1 ; NOLSE-NEXT: // Child Loop BB7_2 Depth 2 -; NOLSE-NEXT: ldr w9, [sp, #28] // 4-byte Folded Reload -; NOLSE-NEXT: ldr x11, [sp, #16] // 8-byte Folded Reload +; NOLSE-NEXT: ldr w9, [sp, #28] // 4-byte Reload +; NOLSE-NEXT: ldr x11, [sp, #16] // 8-byte Reload ; NOLSE-NEXT: mvn w8, w9 ; NOLSE-NEXT: orr w12, w8, #0xfffffffe ; NOLSE-NEXT: .LBB7_2: // %atomicrmw.start @@ -472,13 +472,13 @@ ; NOLSE-NEXT: // in Loop: Header=BB7_1 Depth=1 ; NOLSE-NEXT: subs w9, w8, w9 ; NOLSE-NEXT: cset w9, eq -; NOLSE-NEXT: str w8, [sp, #12] // 4-byte Folded Spill +; NOLSE-NEXT: str w8, [sp, #12] // 4-byte Spill ; NOLSE-NEXT: subs w9, w9, #1 // =1 -; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Folded Spill +; NOLSE-NEXT: str w8, [sp, #28] // 4-byte Spill ; NOLSE-NEXT: b.ne .LBB7_1 ; NOLSE-NEXT: b .LBB7_5 ; NOLSE-NEXT: .LBB7_5: // %atomicrmw.end -; NOLSE-NEXT: ldr w0, [sp, #12] // 4-byte Folded Reload +; NOLSE-NEXT: ldr w0, [sp, #12] // 4-byte Reload ; NOLSE-NEXT: add sp, sp, #32 // =32 ; NOLSE-NEXT: ret ; @@ -486,28 +486,28 @@ ; LSE: // %bb.0: // %entry ; LSE-NEXT: sub sp, sp, #32 // =32 ; LSE-NEXT: .cfi_def_cfa_offset 32 -; LSE-NEXT: str x0, [sp, #16] // 8-byte Folded Spill +; LSE-NEXT: str x0, [sp, #16] // 8-byte Spill ; LSE-NEXT: ldr w8, [x0] -; LSE-NEXT: str w8, [sp, #28] // 4-byte Folded Spill +; LSE-NEXT: str w8, [sp, #28] // 4-byte Spill ; LSE-NEXT: b .LBB7_1 ; LSE-NEXT: .LBB7_1: // %atomicrmw.start ; LSE-NEXT: // =>This Inner Loop Header: Depth=1 -; LSE-NEXT: ldr w9, [sp, #28] // 4-byte Folded Reload -; LSE-NEXT: ldr x11, [sp, #16] // 8-byte Folded Reload +; LSE-NEXT: ldr w9, [sp, #28] // 4-byte Reload +; LSE-NEXT: ldr x11, [sp, #16] // 8-byte Reload ; LSE-NEXT: mvn w8, w9 ; LSE-NEXT: orr w10, w8, #0xfffffffe ; LSE-NEXT: mov w8, w9 ; LSE-NEXT: casal w8, w10, [x11] -; LSE-NEXT: str w8, [sp, #8] // 4-byte Folded Spill +; LSE-NEXT: str w8, [sp, #8] // 4-byte Spill ; LSE-NEXT: subs w9, w8, w9 ; LSE-NEXT: cset w9, eq -; LSE-NEXT: str w8, [sp, #12] // 4-byte Folded Spill +; LSE-NEXT: str w8, [sp, #12] // 4-byte Spill ; LSE-NEXT: subs w9, w9, #1 // =1 -; LSE-NEXT: str w8, [sp, #28] // 4-byte Folded Spill +; LSE-NEXT: str w8, [sp, #28] // 4-byte Spill ; LSE-NEXT: b.ne .LBB7_1 ; LSE-NEXT: b .LBB7_2 ; LSE-NEXT: .LBB7_2: // %atomicrmw.end -; LSE-NEXT: ldr w0, [sp, #12] // 4-byte Folded Reload +; LSE-NEXT: ldr w0, [sp, #12] // 4-byte Reload ; LSE-NEXT: add sp, sp, #32 // =32 ; LSE-NEXT: ret entry: @@ -520,15 +520,15 @@ ; NOLSE: // %bb.0: // %entry ; NOLSE-NEXT: sub sp, sp, #32 // =32 ; NOLSE-NEXT: .cfi_def_cfa_offset 32 -; NOLSE-NEXT: str x0, [sp, #16] // 8-byte Folded Spill +; NOLSE-NEXT: str x0, [sp, #16] // 8-byte Spill ; NOLSE-NEXT: ldr x8, [x0] -; NOLSE-NEXT: str x8, [sp, #24] // 8-byte Folded Spill +; NOLSE-NEXT: str x8, [sp, #24] // 8-byte Spill ; NOLSE-NEXT: b .LBB8_1 ; NOLSE-NEXT: .LBB8_1: // %atomicrmw.start ; NOLSE-NEXT: // =>This Loop Header: Depth=1 ; NOLSE-NEXT: // Child Loop BB8_2 Depth 2 -; NOLSE-NEXT: ldr x9, [sp, #24] // 8-byte Folded Reload -; NOLSE-NEXT: ldr x11, [sp, #16] // 8-byte Folded Reload +; NOLSE-NEXT: ldr x9, [sp, #24] // 8-byte Reload +; NOLSE-NEXT: ldr x11, [sp, #16] // 8-byte Reload ; NOLSE-NEXT: mov w8, w9 ; NOLSE-NEXT: mvn w10, w8 ; NOLSE-NEXT: // implicit-def: $x8 @@ -548,13 +548,13 @@ ; NOLSE-NEXT: // in Loop: Header=BB8_1 Depth=1 ; NOLSE-NEXT: subs x9, x8, x9 ; NOLSE-NEXT: cset w9, eq -; NOLSE-NEXT: str x8, [sp, #8] // 8-byte Folded Spill +; NOLSE-NEXT: str x8, [sp, #8] // 8-byte Spill ; NOLSE-NEXT: subs w9, w9, #1 // =1 -; NOLSE-NEXT: str x8, [sp, #24] // 8-byte Folded Spill +; NOLSE-NEXT: str x8, [sp, #24] // 8-byte Spill ; NOLSE-NEXT: b.ne .LBB8_1 ; NOLSE-NEXT: b .LBB8_5 ; NOLSE-NEXT: .LBB8_5: // %atomicrmw.end -; NOLSE-NEXT: ldr x0, [sp, #8] // 8-byte Folded Reload +; NOLSE-NEXT: ldr x0, [sp, #8] // 8-byte Reload ; NOLSE-NEXT: add sp, sp, #32 // =32 ; NOLSE-NEXT: ret ; @@ -562,14 +562,14 @@ ; LSE: // %bb.0: // %entry ; LSE-NEXT: sub sp, sp, #32 // =32 ; LSE-NEXT: .cfi_def_cfa_offset 32 -; LSE-NEXT: str x0, [sp, #16] // 8-byte Folded Spill +; LSE-NEXT: str x0, [sp, #16] // 8-byte Spill ; LSE-NEXT: ldr x8, [x0] -; LSE-NEXT: str x8, [sp, #24] // 8-byte Folded Spill +; LSE-NEXT: str x8, [sp, #24] // 8-byte Spill ; LSE-NEXT: b .LBB8_1 ; LSE-NEXT: .LBB8_1: // %atomicrmw.start ; LSE-NEXT: // =>This Inner Loop Header: Depth=1 -; LSE-NEXT: ldr x9, [sp, #24] // 8-byte Folded Reload -; LSE-NEXT: ldr x11, [sp, #16] // 8-byte Folded Reload +; LSE-NEXT: ldr x9, [sp, #24] // 8-byte Reload +; LSE-NEXT: ldr x11, [sp, #16] // 8-byte Reload ; LSE-NEXT: mov w8, w9 ; LSE-NEXT: mvn w10, w8 ; LSE-NEXT: // implicit-def: $x8 @@ -577,16 +577,16 @@ ; LSE-NEXT: orr x10, x8, #0xfffffffffffffffe ; LSE-NEXT: mov x8, x9 ; LSE-NEXT: casal x8, x10, [x11] -; LSE-NEXT: str x8, [sp] // 8-byte Folded Spill +; LSE-NEXT: str x8, [sp] // 8-byte Spill ; LSE-NEXT: subs x9, x8, x9 ; LSE-NEXT: cset w9, eq -; LSE-NEXT: str x8, [sp, #8] // 8-byte Folded Spill +; LSE-NEXT: str x8, [sp, #8] // 8-byte Spill ; LSE-NEXT: subs w9, w9, #1 // =1 -; LSE-NEXT: str x8, [sp, #24] // 8-byte Folded Spill +; LSE-NEXT: str x8, [sp, #24] // 8-byte Spill ; LSE-NEXT: b.ne .LBB8_1 ; LSE-NEXT: b .LBB8_2 ; LSE-NEXT: .LBB8_2: // %atomicrmw.end -; LSE-NEXT: ldr x0, [sp, #8] // 8-byte Folded Reload +; LSE-NEXT: ldr x0, [sp, #8] // 8-byte Reload ; LSE-NEXT: add sp, sp, #32 // =32 ; LSE-NEXT: ret entry: @@ -599,18 +599,18 @@ ; NOLSE: // %bb.0: // %entry ; NOLSE-NEXT: sub sp, sp, #48 // =48 ; NOLSE-NEXT: .cfi_def_cfa_offset 48 -; NOLSE-NEXT: str x0, [sp, #24] // 8-byte Folded Spill +; NOLSE-NEXT: str x0, [sp, #24] // 8-byte Spill ; NOLSE-NEXT: ldr x8, [x0, #8] ; NOLSE-NEXT: ldr x9, [x0] -; NOLSE-NEXT: str x9, [sp, #32] // 8-byte Folded Spill -; NOLSE-NEXT: str x8, [sp, #40] // 8-byte Folded Spill +; NOLSE-NEXT: str x9, [sp, #32] // 8-byte Spill +; NOLSE-NEXT: str x8, [sp, #40] // 8-byte Spill ; NOLSE-NEXT: b .LBB9_1 ; NOLSE-NEXT: .LBB9_1: // %atomicrmw.start ; NOLSE-NEXT: // =>This Loop Header: Depth=1 ; NOLSE-NEXT: // Child Loop BB9_2 Depth 2 -; NOLSE-NEXT: ldr x11, [sp, #40] // 8-byte Folded Reload -; NOLSE-NEXT: ldr x8, [sp, #32] // 8-byte Folded Reload -; NOLSE-NEXT: ldr x13, [sp, #24] // 8-byte Folded Reload +; NOLSE-NEXT: ldr x11, [sp, #40] // 8-byte Reload +; NOLSE-NEXT: ldr x8, [sp, #32] // 8-byte Reload +; NOLSE-NEXT: ldr x13, [sp, #24] // 8-byte Reload ; NOLSE-NEXT: mov w9, w8 ; NOLSE-NEXT: mvn w10, w9 ; NOLSE-NEXT: // implicit-def: $x9 @@ -635,15 +635,15 @@ ; NOLSE-NEXT: eor x11, x9, x11 ; NOLSE-NEXT: eor x8, x10, x8 ; NOLSE-NEXT: orr x8, x8, x11 -; NOLSE-NEXT: str x9, [sp, #8] // 8-byte Folded Spill -; NOLSE-NEXT: str x10, [sp, #16] // 8-byte Folded Spill -; NOLSE-NEXT: str x10, [sp, #32] // 8-byte Folded Spill -; NOLSE-NEXT: str x9, [sp, #40] // 8-byte Folded Spill +; NOLSE-NEXT: str x9, [sp, #8] // 8-byte Spill +; NOLSE-NEXT: str x10, [sp, #16] // 8-byte Spill +; NOLSE-NEXT: str x10, [sp, #32] // 8-byte Spill +; NOLSE-NEXT: str x9, [sp, #40] // 8-byte Spill ; NOLSE-NEXT: cbnz x8, .LBB9_1 ; NOLSE-NEXT: b .LBB9_5 ; NOLSE-NEXT: .LBB9_5: // %atomicrmw.end -; NOLSE-NEXT: ldr x1, [sp, #8] // 8-byte Folded Reload -; NOLSE-NEXT: ldr x0, [sp, #16] // 8-byte Folded Reload +; NOLSE-NEXT: ldr x1, [sp, #8] // 8-byte Reload +; NOLSE-NEXT: ldr x0, [sp, #16] // 8-byte Reload ; NOLSE-NEXT: add sp, sp, #48 // =48 ; NOLSE-NEXT: ret ; @@ -651,17 +651,17 @@ ; LSE: // %bb.0: // %entry ; LSE-NEXT: sub sp, sp, #80 // =80 ; LSE-NEXT: .cfi_def_cfa_offset 80 -; LSE-NEXT: str x0, [sp, #56] // 8-byte Folded Spill +; LSE-NEXT: str x0, [sp, #56] // 8-byte Spill ; LSE-NEXT: ldr x8, [x0, #8] ; LSE-NEXT: ldr x9, [x0] -; LSE-NEXT: str x9, [sp, #64] // 8-byte Folded Spill -; LSE-NEXT: str x8, [sp, #72] // 8-byte Folded Spill +; LSE-NEXT: str x9, [sp, #64] // 8-byte Spill +; LSE-NEXT: str x8, [sp, #72] // 8-byte Spill ; LSE-NEXT: b .LBB9_1 ; LSE-NEXT: .LBB9_1: // %atomicrmw.start ; LSE-NEXT: // =>This Inner Loop Header: Depth=1 -; LSE-NEXT: ldr x10, [sp, #72] // 8-byte Folded Reload -; LSE-NEXT: ldr x8, [sp, #64] // 8-byte Folded Reload -; LSE-NEXT: ldr x9, [sp, #56] // 8-byte Folded Reload +; LSE-NEXT: ldr x10, [sp, #72] // 8-byte Reload +; LSE-NEXT: ldr x8, [sp, #64] // 8-byte Reload +; LSE-NEXT: ldr x9, [sp, #56] // 8-byte Reload ; LSE-NEXT: mov x0, x8 ; LSE-NEXT: mov x1, x10 ; LSE-NEXT: stp x0, x1, [sp, #8] // 16-byte Folded Spill @@ -676,19 +676,19 @@ ; LSE-NEXT: caspal x0, x1, x2, x3, [x9] ; LSE-NEXT: stp x0, x1, [sp, #24] // 16-byte Folded Spill ; LSE-NEXT: mov x9, x1 -; LSE-NEXT: str x9, [sp, #40] // 8-byte Folded Spill +; LSE-NEXT: str x9, [sp, #40] // 8-byte Spill ; LSE-NEXT: eor x11, x9, x10 ; LSE-NEXT: mov x10, x0 -; LSE-NEXT: str x10, [sp, #48] // 8-byte Folded Spill +; LSE-NEXT: str x10, [sp, #48] // 8-byte Spill ; LSE-NEXT: eor x8, x10, x8 ; LSE-NEXT: orr x8, x8, x11 -; LSE-NEXT: str x10, [sp, #64] // 8-byte Folded Spill -; LSE-NEXT: str x9, [sp, #72] // 8-byte Folded Spill +; LSE-NEXT: str x10, [sp, #64] // 8-byte Spill +; LSE-NEXT: str x9, [sp, #72] // 8-byte Spill ; LSE-NEXT: cbnz x8, .LBB9_1 ; LSE-NEXT: b .LBB9_2 ; LSE-NEXT: .LBB9_2: // %atomicrmw.end -; LSE-NEXT: ldr x1, [sp, #40] // 8-byte Folded Reload -; LSE-NEXT: ldr x0, [sp, #48] // 8-byte Folded Reload +; LSE-NEXT: ldr x1, [sp, #40] // 8-byte Reload +; LSE-NEXT: ldr x0, [sp, #48] // 8-byte Reload ; LSE-NEXT: add sp, sp, #80 // =80 ; LSE-NEXT: ret entry: Index: llvm/test/CodeGen/AArch64/cmp-select-sign.ll =================================================================== --- llvm/test/CodeGen/AArch64/cmp-select-sign.ll +++ llvm/test/CodeGen/AArch64/cmp-select-sign.ll @@ -173,7 +173,7 @@ ; CHECK-LABEL: sign_4xi32_multi_use: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #32 // =32 -; CHECK-NEXT: str x30, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #16] // 8-byte Spill ; CHECK-NEXT: .cfi_def_cfa_offset 32 ; CHECK-NEXT: .cfi_offset w30, -16 ; CHECK-NEXT: movi v1.2d, #0xffffffffffffffff @@ -181,10 +181,10 @@ ; CHECK-NEXT: cmgt v0.4s, v0.4s, v1.4s ; CHECK-NEXT: orr v2.4s, #1 ; CHECK-NEXT: xtn v0.4h, v0.4s -; CHECK-NEXT: str q2, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q2, [sp] // 16-byte Spill ; CHECK-NEXT: bl use_4xi1 -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Reload ; CHECK-NEXT: add sp, sp, #32 // =32 ; CHECK-NEXT: ret %c = icmp sgt <4 x i32> %a, Index: llvm/test/CodeGen/AArch64/fadd-combines.ll =================================================================== --- llvm/test/CodeGen/AArch64/fadd-combines.ll +++ llvm/test/CodeGen/AArch64/fadd-combines.ll @@ -117,9 +117,9 @@ ; CHECK-NEXT: fmul d1, d1, d2 ; CHECK-NEXT: fadd d8, d0, d1 ; CHECK-NEXT: mov v0.16b, v1.16b -; CHECK-NEXT: str x30, [sp, #8] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #8] // 8-byte Spill ; CHECK-NEXT: bl use -; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Reload ; CHECK-NEXT: mov v0.16b, v8.16b ; CHECK-NEXT: ldr d8, [sp], #16 // 8-byte Folded Reload ; CHECK-NEXT: ret Index: llvm/test/CodeGen/AArch64/fptosi-sat-scalar.ll =================================================================== --- llvm/test/CodeGen/AArch64/fptosi-sat-scalar.ll +++ llvm/test/CodeGen/AArch64/fptosi-sat-scalar.ll @@ -147,7 +147,7 @@ ; CHECK-LABEL: test_signed_i100_f32: ; CHECK: // %bb.0: ; CHECK-NEXT: str d8, [sp, #-16]! // 8-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #8] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #8] // 8-byte Spill ; CHECK-NEXT: mov v8.16b, v0.16b ; CHECK-NEXT: bl __fixsfti ; CHECK-NEXT: mov w8, #-251658240 @@ -156,7 +156,7 @@ ; CHECK-NEXT: fcmp s8, s0 ; CHECK-NEXT: fmov s0, w8 ; CHECK-NEXT: mov x8, #-34359738368 -; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Reload ; CHECK-NEXT: csel x8, x8, x1, lt ; CHECK-NEXT: mov x9, #34359738367 ; CHECK-NEXT: csel x10, xzr, x0, lt @@ -176,7 +176,7 @@ ; CHECK-LABEL: test_signed_i128_f32: ; CHECK: // %bb.0: ; CHECK-NEXT: str d8, [sp, #-16]! // 8-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #8] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #8] // 8-byte Spill ; CHECK-NEXT: mov v8.16b, v0.16b ; CHECK-NEXT: bl __fixsfti ; CHECK-NEXT: mov w8, #-16777216 @@ -185,7 +185,7 @@ ; CHECK-NEXT: fcmp s8, s0 ; CHECK-NEXT: fmov s0, w8 ; CHECK-NEXT: mov x8, #-9223372036854775808 -; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Reload ; CHECK-NEXT: csel x8, x8, x1, lt ; CHECK-NEXT: mov x9, #9223372036854775807 ; CHECK-NEXT: csel x10, xzr, x0, lt @@ -344,7 +344,7 @@ ; CHECK-LABEL: test_signed_i100_f64: ; CHECK: // %bb.0: ; CHECK-NEXT: str d8, [sp, #-16]! // 8-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #8] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #8] // 8-byte Spill ; CHECK-NEXT: mov v8.16b, v0.16b ; CHECK-NEXT: bl __fixdfti ; CHECK-NEXT: mov x8, #-4170333254945079296 @@ -353,7 +353,7 @@ ; CHECK-NEXT: fcmp d8, d0 ; CHECK-NEXT: fmov d0, x8 ; CHECK-NEXT: mov x8, #-34359738368 -; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Reload ; CHECK-NEXT: csel x8, x8, x1, lt ; CHECK-NEXT: mov x9, #34359738367 ; CHECK-NEXT: csel x10, xzr, x0, lt @@ -373,7 +373,7 @@ ; CHECK-LABEL: test_signed_i128_f64: ; CHECK: // %bb.0: ; CHECK-NEXT: str d8, [sp, #-16]! // 8-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #8] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #8] // 8-byte Spill ; CHECK-NEXT: mov v8.16b, v0.16b ; CHECK-NEXT: bl __fixdfti ; CHECK-NEXT: mov x8, #-4044232465378705408 @@ -382,7 +382,7 @@ ; CHECK-NEXT: fcmp d8, d0 ; CHECK-NEXT: fmov d0, x8 ; CHECK-NEXT: mov x8, #-9223372036854775808 -; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Reload ; CHECK-NEXT: csel x8, x8, x1, lt ; CHECK-NEXT: mov x9, #9223372036854775807 ; CHECK-NEXT: csel x10, xzr, x0, lt @@ -563,7 +563,7 @@ ; CHECK-NEXT: str d8, [sp, #-16]! // 8-byte Folded Spill ; CHECK-NEXT: fcvt s8, h0 ; CHECK-NEXT: mov v0.16b, v8.16b -; CHECK-NEXT: str x30, [sp, #8] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #8] // 8-byte Spill ; CHECK-NEXT: bl __fixsfti ; CHECK-NEXT: mov w8, #-251658240 ; CHECK-NEXT: fmov s0, w8 @@ -571,7 +571,7 @@ ; CHECK-NEXT: fcmp s8, s0 ; CHECK-NEXT: fmov s0, w8 ; CHECK-NEXT: mov x8, #-34359738368 -; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Reload ; CHECK-NEXT: csel x8, x8, x1, lt ; CHECK-NEXT: mov x9, #34359738367 ; CHECK-NEXT: csel x10, xzr, x0, lt @@ -593,7 +593,7 @@ ; CHECK-NEXT: str d8, [sp, #-16]! // 8-byte Folded Spill ; CHECK-NEXT: fcvt s8, h0 ; CHECK-NEXT: mov v0.16b, v8.16b -; CHECK-NEXT: str x30, [sp, #8] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #8] // 8-byte Spill ; CHECK-NEXT: bl __fixsfti ; CHECK-NEXT: mov w8, #-16777216 ; CHECK-NEXT: fmov s0, w8 @@ -601,7 +601,7 @@ ; CHECK-NEXT: fcmp s8, s0 ; CHECK-NEXT: fmov s0, w8 ; CHECK-NEXT: mov x8, #-9223372036854775808 -; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Reload ; CHECK-NEXT: csel x8, x8, x1, lt ; CHECK-NEXT: mov x9, #9223372036854775807 ; CHECK-NEXT: csel x10, xzr, x0, lt Index: llvm/test/CodeGen/AArch64/fptosi-sat-vector.ll =================================================================== --- llvm/test/CodeGen/AArch64/fptosi-sat-vector.ll +++ llvm/test/CodeGen/AArch64/fptosi-sat-vector.ll @@ -279,9 +279,9 @@ ; CHECK-NEXT: .cfi_offset w30, -16 ; CHECK-NEXT: adrp x8, .LCPI14_0 ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI14_0] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixtfsi ; CHECK-NEXT: cmp w19, #0 // =0 @@ -289,9 +289,9 @@ ; CHECK-NEXT: csel w19, w8, w0, lt ; CHECK-NEXT: adrp x8, .LCPI14_1 ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI14_1] -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: bl __gttf2 -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: cmp w0, #0 // =0 ; CHECK-NEXT: mov w8, #2147483647 ; CHECK-NEXT: csel w19, w8, w19, gt @@ -311,7 +311,7 @@ ; CHECK-LABEL: test_signed_v2f128_v2i32: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #112 // =112 -; CHECK-NEXT: str x30, [sp, #64] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #64] // 8-byte Spill ; CHECK-NEXT: stp x22, x21, [sp, #80] // 16-byte Folded Spill ; CHECK-NEXT: stp x20, x19, [sp, #96] // 16-byte Folded Spill ; CHECK-NEXT: .cfi_def_cfa_offset 112 @@ -325,39 +325,39 @@ ; CHECK-NEXT: stp q1, q0, [sp, #32] // 32-byte Folded Spill ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI15_0] ; CHECK-NEXT: mov v0.16b, v2.16b -; CHECK-NEXT: str q1, [sp, #16] // 16-byte Folded Spill +; CHECK-NEXT: str q1, [sp, #16] // 16-byte Spill ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixtfsi ; CHECK-NEXT: adrp x8, .LCPI15_1 ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI15_1] -; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: mov w20, #-2147483648 ; CHECK-NEXT: csel w19, w20, w0, lt -; CHECK-NEXT: str q1, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q1, [sp] // 16-byte Spill ; CHECK-NEXT: bl __gttf2 -; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Reload ; CHECK-NEXT: cmp w0, #0 // =0 ; CHECK-NEXT: mov w21, #2147483647 ; CHECK-NEXT: csel w19, w21, w19, gt ; CHECK-NEXT: mov v1.16b, v0.16b ; CHECK-NEXT: bl __unordtf2 -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Reload ; CHECK-NEXT: cmp w0, #0 // =0 ; CHECK-NEXT: csel w22, wzr, w19, ne ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixtfsi -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: csel w19, w20, w0, lt ; CHECK-NEXT: bl __gttf2 -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload ; CHECK-NEXT: cmp w0, #0 // =0 ; CHECK-NEXT: csel w19, w21, w19, gt ; CHECK-NEXT: mov v1.16b, v0.16b @@ -368,7 +368,7 @@ ; CHECK-NEXT: mov v0.s[1], w22 ; CHECK-NEXT: ldp x20, x19, [sp, #96] // 16-byte Folded Reload ; CHECK-NEXT: ldp x22, x21, [sp, #80] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #64] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #64] // 8-byte Reload ; CHECK-NEXT: // kill: def $d0 killed $d0 killed $q0 ; CHECK-NEXT: add sp, sp, #112 // =112 ; CHECK-NEXT: ret @@ -380,7 +380,7 @@ ; CHECK-LABEL: test_signed_v3f128_v3i32: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #128 // =128 -; CHECK-NEXT: str x30, [sp, #80] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #80] // 8-byte Spill ; CHECK-NEXT: stp x22, x21, [sp, #96] // 16-byte Folded Spill ; CHECK-NEXT: stp x20, x19, [sp, #112] // 16-byte Folded Spill ; CHECK-NEXT: .cfi_def_cfa_offset 128 @@ -392,42 +392,42 @@ ; CHECK-NEXT: adrp x8, .LCPI16_0 ; CHECK-NEXT: stp q0, q2, [sp, #48] // 32-byte Folded Spill ; CHECK-NEXT: mov v2.16b, v1.16b -; CHECK-NEXT: str q1, [sp, #32] // 16-byte Folded Spill +; CHECK-NEXT: str q1, [sp, #32] // 16-byte Spill ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI16_0] ; CHECK-NEXT: mov v0.16b, v2.16b -; CHECK-NEXT: str q1, [sp, #16] // 16-byte Folded Spill +; CHECK-NEXT: str q1, [sp, #16] // 16-byte Spill ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixtfsi ; CHECK-NEXT: adrp x8, .LCPI16_1 ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI16_1] -; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: mov w20, #-2147483648 ; CHECK-NEXT: csel w19, w20, w0, lt -; CHECK-NEXT: str q1, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q1, [sp] // 16-byte Spill ; CHECK-NEXT: bl __gttf2 -; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Reload ; CHECK-NEXT: cmp w0, #0 // =0 ; CHECK-NEXT: mov w21, #2147483647 ; CHECK-NEXT: csel w19, w21, w19, gt ; CHECK-NEXT: mov v1.16b, v0.16b ; CHECK-NEXT: bl __unordtf2 -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Reload ; CHECK-NEXT: cmp w0, #0 // =0 ; CHECK-NEXT: csel w22, wzr, w19, ne ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixtfsi -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: csel w19, w20, w0, lt ; CHECK-NEXT: bl __gttf2 -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload ; CHECK-NEXT: cmp w0, #0 // =0 ; CHECK-NEXT: csel w19, w21, w19, gt ; CHECK-NEXT: mov v1.16b, v0.16b @@ -436,29 +436,29 @@ ; CHECK-NEXT: csel w8, wzr, w19, ne ; CHECK-NEXT: fmov s0, w8 ; CHECK-NEXT: mov v0.s[1], w22 -; CHECK-NEXT: str q0, [sp, #48] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: str q0, [sp, #48] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Reload ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixtfsi -; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: csel w19, w20, w0, lt ; CHECK-NEXT: bl __gttf2 -; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Reload ; CHECK-NEXT: cmp w0, #0 // =0 ; CHECK-NEXT: csel w19, w21, w19, gt ; CHECK-NEXT: mov v1.16b, v0.16b ; CHECK-NEXT: bl __unordtf2 ; CHECK-NEXT: cmp w0, #0 // =0 -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload ; CHECK-NEXT: csel w8, wzr, w19, ne ; CHECK-NEXT: ldp x20, x19, [sp, #112] // 16-byte Folded Reload ; CHECK-NEXT: ldp x22, x21, [sp, #96] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #80] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #80] // 8-byte Reload ; CHECK-NEXT: mov v0.s[2], w8 ; CHECK-NEXT: add sp, sp, #128 // =128 ; CHECK-NEXT: ret @@ -470,7 +470,7 @@ ; CHECK-LABEL: test_signed_v4f128_v4i32: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #144 // =144 -; CHECK-NEXT: str x30, [sp, #96] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #96] // 8-byte Spill ; CHECK-NEXT: stp x22, x21, [sp, #112] // 16-byte Folded Spill ; CHECK-NEXT: stp x20, x19, [sp, #128] // 16-byte Folded Spill ; CHECK-NEXT: .cfi_def_cfa_offset 144 @@ -482,24 +482,24 @@ ; CHECK-NEXT: adrp x8, .LCPI17_0 ; CHECK-NEXT: stp q2, q3, [sp, #64] // 32-byte Folded Spill ; CHECK-NEXT: mov v2.16b, v1.16b -; CHECK-NEXT: str q1, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q1, [sp] // 16-byte Spill ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI17_0] -; CHECK-NEXT: str q0, [sp, #48] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp, #48] // 16-byte Spill ; CHECK-NEXT: mov v0.16b, v2.16b -; CHECK-NEXT: str q1, [sp, #32] // 16-byte Folded Spill +; CHECK-NEXT: str q1, [sp, #32] // 16-byte Spill ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixtfsi ; CHECK-NEXT: adrp x8, .LCPI17_1 ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI17_1] -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: mov w20, #-2147483648 ; CHECK-NEXT: csel w19, w20, w0, lt -; CHECK-NEXT: str q1, [sp, #16] // 16-byte Folded Spill +; CHECK-NEXT: str q1, [sp, #16] // 16-byte Spill ; CHECK-NEXT: bl __gttf2 -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: cmp w0, #0 // =0 ; CHECK-NEXT: mov w21, #2147483647 ; CHECK-NEXT: csel w19, w21, w19, gt @@ -509,15 +509,15 @@ ; CHECK-NEXT: cmp w0, #0 // =0 ; CHECK-NEXT: csel w22, wzr, w19, ne ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixtfsi -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: csel w19, w20, w0, lt ; CHECK-NEXT: bl __gttf2 -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload ; CHECK-NEXT: cmp w0, #0 // =0 ; CHECK-NEXT: csel w19, w21, w19, gt ; CHECK-NEXT: mov v1.16b, v0.16b @@ -526,19 +526,19 @@ ; CHECK-NEXT: csel w8, wzr, w19, ne ; CHECK-NEXT: fmov s0, w8 ; CHECK-NEXT: mov v0.s[1], w22 -; CHECK-NEXT: str q0, [sp, #48] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp, #32] // 16-byte Folded Reload +; CHECK-NEXT: str q0, [sp, #48] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp, #32] // 16-byte Reload ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixtfsi -; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: csel w19, w20, w0, lt ; CHECK-NEXT: bl __gttf2 -; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Reload ; CHECK-NEXT: cmp w0, #0 // =0 ; CHECK-NEXT: csel w19, w21, w19, gt ; CHECK-NEXT: mov v1.16b, v0.16b @@ -547,28 +547,28 @@ ; CHECK-NEXT: cmp w0, #0 // =0 ; CHECK-NEXT: csel w8, wzr, w19, ne ; CHECK-NEXT: mov v0.s[2], w8 -; CHECK-NEXT: str q0, [sp, #48] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #80] // 16-byte Folded Reload +; CHECK-NEXT: str q0, [sp, #48] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #80] // 16-byte Reload ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp, #80] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #80] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixtfsi -; CHECK-NEXT: ldr q0, [sp, #80] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #80] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: csel w19, w20, w0, lt ; CHECK-NEXT: bl __gttf2 -; CHECK-NEXT: ldr q0, [sp, #80] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #80] // 16-byte Reload ; CHECK-NEXT: cmp w0, #0 // =0 ; CHECK-NEXT: csel w19, w21, w19, gt ; CHECK-NEXT: mov v1.16b, v0.16b ; CHECK-NEXT: bl __unordtf2 ; CHECK-NEXT: cmp w0, #0 // =0 -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload ; CHECK-NEXT: csel w8, wzr, w19, ne ; CHECK-NEXT: ldp x20, x19, [sp, #128] // 16-byte Folded Reload ; CHECK-NEXT: ldp x22, x21, [sp, #112] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #96] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #96] // 8-byte Reload ; CHECK-NEXT: mov v0.s[3], w8 ; CHECK-NEXT: add sp, sp, #144 // =144 ; CHECK-NEXT: ret @@ -1005,9 +1005,9 @@ ; CHECK-LABEL: test_signed_v2f32_v2i100: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #80 // =80 -; CHECK-NEXT: str d10, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str d10, [sp, #16] // 8-byte Spill ; CHECK-NEXT: stp d9, d8, [sp, #24] // 16-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #40] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #40] // 8-byte Spill ; CHECK-NEXT: stp x22, x21, [sp, #48] // 16-byte Folded Spill ; CHECK-NEXT: stp x20, x19, [sp, #64] // 16-byte Folded Spill ; CHECK-NEXT: .cfi_def_cfa_offset 80 @@ -1021,7 +1021,7 @@ ; CHECK-NEXT: .cfi_offset b10, -64 ; CHECK-NEXT: // kill: def $d0 killed $d0 def $q0 ; CHECK-NEXT: mov s8, v0.s[1] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: mov v0.16b, v8.16b ; CHECK-NEXT: bl __fixsfti ; CHECK-NEXT: mov w8, #-251658240 @@ -1037,12 +1037,12 @@ ; CHECK-NEXT: csel x9, x22, x9, gt ; CHECK-NEXT: csinv x8, x8, xzr, le ; CHECK-NEXT: fcmp s8, s8 -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: csel x19, xzr, x8, vs ; CHECK-NEXT: csel x20, xzr, x9, vs ; CHECK-NEXT: // kill: def $s0 killed $s0 killed $q0 ; CHECK-NEXT: bl __fixsfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: mov x2, x19 ; CHECK-NEXT: mov x3, x20 ; CHECK-NEXT: ldp x20, x19, [sp, #64] // 16-byte Folded Reload @@ -1055,9 +1055,9 @@ ; CHECK-NEXT: fcmp s0, s0 ; CHECK-NEXT: csel x9, xzr, x9, vs ; CHECK-NEXT: ldp x22, x21, [sp, #48] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #40] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #40] // 8-byte Reload ; CHECK-NEXT: ldp d9, d8, [sp, #24] // 16-byte Folded Reload -; CHECK-NEXT: ldr d10, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr d10, [sp, #16] // 8-byte Reload ; CHECK-NEXT: csel x1, xzr, x8, vs ; CHECK-NEXT: fmov d0, x9 ; CHECK-NEXT: mov v0.d[1], x1 @@ -1072,9 +1072,9 @@ ; CHECK-LABEL: test_signed_v2f32_v2i128: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #80 // =80 -; CHECK-NEXT: str d10, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str d10, [sp, #16] // 8-byte Spill ; CHECK-NEXT: stp d9, d8, [sp, #24] // 16-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #40] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #40] // 8-byte Spill ; CHECK-NEXT: stp x22, x21, [sp, #48] // 16-byte Folded Spill ; CHECK-NEXT: stp x20, x19, [sp, #64] // 16-byte Folded Spill ; CHECK-NEXT: .cfi_def_cfa_offset 80 @@ -1088,7 +1088,7 @@ ; CHECK-NEXT: .cfi_offset b10, -64 ; CHECK-NEXT: // kill: def $d0 killed $d0 def $q0 ; CHECK-NEXT: mov s8, v0.s[1] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: mov v0.16b, v8.16b ; CHECK-NEXT: bl __fixsfti ; CHECK-NEXT: mov w8, #-16777216 @@ -1104,12 +1104,12 @@ ; CHECK-NEXT: csel x9, x22, x9, gt ; CHECK-NEXT: csinv x8, x8, xzr, le ; CHECK-NEXT: fcmp s8, s8 -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: csel x19, xzr, x8, vs ; CHECK-NEXT: csel x20, xzr, x9, vs ; CHECK-NEXT: // kill: def $s0 killed $s0 killed $q0 ; CHECK-NEXT: bl __fixsfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: mov x2, x19 ; CHECK-NEXT: mov x3, x20 ; CHECK-NEXT: ldp x20, x19, [sp, #64] // 16-byte Folded Reload @@ -1122,9 +1122,9 @@ ; CHECK-NEXT: fcmp s0, s0 ; CHECK-NEXT: csel x9, xzr, x9, vs ; CHECK-NEXT: ldp x22, x21, [sp, #48] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #40] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #40] // 8-byte Reload ; CHECK-NEXT: ldp d9, d8, [sp, #24] // 16-byte Folded Reload -; CHECK-NEXT: ldr d10, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr d10, [sp, #16] // 8-byte Reload ; CHECK-NEXT: csel x1, xzr, x8, vs ; CHECK-NEXT: fmov d0, x9 ; CHECK-NEXT: mov v0.d[1], x1 @@ -1338,9 +1338,9 @@ ; CHECK-LABEL: test_signed_v2f64_v2i100: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #80 // =80 -; CHECK-NEXT: str d10, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str d10, [sp, #16] // 8-byte Spill ; CHECK-NEXT: stp d9, d8, [sp, #24] // 16-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #40] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #40] // 8-byte Spill ; CHECK-NEXT: stp x22, x21, [sp, #48] // 16-byte Folded Spill ; CHECK-NEXT: stp x20, x19, [sp, #64] // 16-byte Folded Spill ; CHECK-NEXT: .cfi_def_cfa_offset 80 @@ -1353,7 +1353,7 @@ ; CHECK-NEXT: .cfi_offset b9, -56 ; CHECK-NEXT: .cfi_offset b10, -64 ; CHECK-NEXT: mov d8, v0.d[1] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: mov v0.16b, v8.16b ; CHECK-NEXT: bl __fixdfti ; CHECK-NEXT: mov x8, #-4170333254945079296 @@ -1369,12 +1369,12 @@ ; CHECK-NEXT: csel x9, x22, x9, gt ; CHECK-NEXT: csinv x8, x8, xzr, le ; CHECK-NEXT: fcmp d8, d8 -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: csel x19, xzr, x8, vs ; CHECK-NEXT: csel x20, xzr, x9, vs ; CHECK-NEXT: // kill: def $d0 killed $d0 killed $q0 ; CHECK-NEXT: bl __fixdfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: mov x2, x19 ; CHECK-NEXT: mov x3, x20 ; CHECK-NEXT: ldp x20, x19, [sp, #64] // 16-byte Folded Reload @@ -1387,9 +1387,9 @@ ; CHECK-NEXT: fcmp d0, d0 ; CHECK-NEXT: csel x9, xzr, x9, vs ; CHECK-NEXT: ldp x22, x21, [sp, #48] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #40] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #40] // 8-byte Reload ; CHECK-NEXT: ldp d9, d8, [sp, #24] // 16-byte Folded Reload -; CHECK-NEXT: ldr d10, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr d10, [sp, #16] // 8-byte Reload ; CHECK-NEXT: csel x1, xzr, x8, vs ; CHECK-NEXT: fmov d0, x9 ; CHECK-NEXT: mov v0.d[1], x1 @@ -1404,9 +1404,9 @@ ; CHECK-LABEL: test_signed_v2f64_v2i128: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #80 // =80 -; CHECK-NEXT: str d10, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str d10, [sp, #16] // 8-byte Spill ; CHECK-NEXT: stp d9, d8, [sp, #24] // 16-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #40] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #40] // 8-byte Spill ; CHECK-NEXT: stp x22, x21, [sp, #48] // 16-byte Folded Spill ; CHECK-NEXT: stp x20, x19, [sp, #64] // 16-byte Folded Spill ; CHECK-NEXT: .cfi_def_cfa_offset 80 @@ -1419,7 +1419,7 @@ ; CHECK-NEXT: .cfi_offset b9, -56 ; CHECK-NEXT: .cfi_offset b10, -64 ; CHECK-NEXT: mov d8, v0.d[1] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: mov v0.16b, v8.16b ; CHECK-NEXT: bl __fixdfti ; CHECK-NEXT: mov x8, #-4044232465378705408 @@ -1435,12 +1435,12 @@ ; CHECK-NEXT: csel x9, x22, x9, gt ; CHECK-NEXT: csinv x8, x8, xzr, le ; CHECK-NEXT: fcmp d8, d8 -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: csel x19, xzr, x8, vs ; CHECK-NEXT: csel x20, xzr, x9, vs ; CHECK-NEXT: // kill: def $d0 killed $d0 killed $q0 ; CHECK-NEXT: bl __fixdfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: mov x2, x19 ; CHECK-NEXT: mov x3, x20 ; CHECK-NEXT: ldp x20, x19, [sp, #64] // 16-byte Folded Reload @@ -1453,9 +1453,9 @@ ; CHECK-NEXT: fcmp d0, d0 ; CHECK-NEXT: csel x9, xzr, x9, vs ; CHECK-NEXT: ldp x22, x21, [sp, #48] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #40] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #40] // 8-byte Reload ; CHECK-NEXT: ldp d9, d8, [sp, #24] // 16-byte Folded Reload -; CHECK-NEXT: ldr d10, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr d10, [sp, #16] // 8-byte Reload ; CHECK-NEXT: csel x1, xzr, x8, vs ; CHECK-NEXT: fmov d0, x9 ; CHECK-NEXT: mov v0.d[1], x1 @@ -1809,9 +1809,9 @@ ; CHECK-LABEL: test_signed_v4f16_v4i100: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #112 // =112 -; CHECK-NEXT: str d10, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str d10, [sp, #16] // 8-byte Spill ; CHECK-NEXT: stp d9, d8, [sp, #24] // 16-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #40] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #40] // 8-byte Spill ; CHECK-NEXT: stp x26, x25, [sp, #48] // 16-byte Folded Spill ; CHECK-NEXT: stp x24, x23, [sp, #64] // 16-byte Folded Spill ; CHECK-NEXT: stp x22, x21, [sp, #80] // 16-byte Folded Spill @@ -1832,10 +1832,10 @@ ; CHECK-NEXT: // kill: def $d0 killed $d0 def $q0 ; CHECK-NEXT: mov h1, v0.h[1] ; CHECK-NEXT: fcvt s8, h1 -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: mov v0.16b, v8.16b ; CHECK-NEXT: bl __fixsfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: mov w8, #-251658240 ; CHECK-NEXT: mov w9, #1895825407 ; CHECK-NEXT: fmov s9, w8 @@ -1855,7 +1855,7 @@ ; CHECK-NEXT: csel x19, xzr, x8, vs ; CHECK-NEXT: csel x20, xzr, x9, vs ; CHECK-NEXT: bl __fixsfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: fcmp s8, s9 ; CHECK-NEXT: csel x8, xzr, x0, lt ; CHECK-NEXT: csel x9, x25, x1, lt @@ -1869,7 +1869,7 @@ ; CHECK-NEXT: csel x21, xzr, x8, vs ; CHECK-NEXT: csel x22, xzr, x9, vs ; CHECK-NEXT: bl __fixsfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: fcmp s8, s9 ; CHECK-NEXT: csel x8, xzr, x0, lt ; CHECK-NEXT: csel x9, x25, x1, lt @@ -1900,9 +1900,9 @@ ; CHECK-NEXT: ldp x22, x21, [sp, #80] // 16-byte Folded Reload ; CHECK-NEXT: ldp x24, x23, [sp, #64] // 16-byte Folded Reload ; CHECK-NEXT: ldp x26, x25, [sp, #48] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #40] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #40] // 8-byte Reload ; CHECK-NEXT: ldp d9, d8, [sp, #24] // 16-byte Folded Reload -; CHECK-NEXT: ldr d10, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr d10, [sp, #16] // 8-byte Reload ; CHECK-NEXT: csel x1, xzr, x8, vs ; CHECK-NEXT: fmov d0, x9 ; CHECK-NEXT: mov v0.d[1], x1 @@ -1917,9 +1917,9 @@ ; CHECK-LABEL: test_signed_v4f16_v4i128: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #112 // =112 -; CHECK-NEXT: str d10, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str d10, [sp, #16] // 8-byte Spill ; CHECK-NEXT: stp d9, d8, [sp, #24] // 16-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #40] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #40] // 8-byte Spill ; CHECK-NEXT: stp x26, x25, [sp, #48] // 16-byte Folded Spill ; CHECK-NEXT: stp x24, x23, [sp, #64] // 16-byte Folded Spill ; CHECK-NEXT: stp x22, x21, [sp, #80] // 16-byte Folded Spill @@ -1940,10 +1940,10 @@ ; CHECK-NEXT: // kill: def $d0 killed $d0 def $q0 ; CHECK-NEXT: mov h1, v0.h[1] ; CHECK-NEXT: fcvt s8, h1 -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: mov v0.16b, v8.16b ; CHECK-NEXT: bl __fixsfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: mov w8, #-16777216 ; CHECK-NEXT: mov w9, #2130706431 ; CHECK-NEXT: fmov s9, w8 @@ -1963,7 +1963,7 @@ ; CHECK-NEXT: csel x19, xzr, x8, vs ; CHECK-NEXT: csel x20, xzr, x9, vs ; CHECK-NEXT: bl __fixsfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: fcmp s8, s9 ; CHECK-NEXT: csel x8, xzr, x0, lt ; CHECK-NEXT: csel x9, x25, x1, lt @@ -1977,7 +1977,7 @@ ; CHECK-NEXT: csel x21, xzr, x8, vs ; CHECK-NEXT: csel x22, xzr, x9, vs ; CHECK-NEXT: bl __fixsfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: fcmp s8, s9 ; CHECK-NEXT: csel x8, xzr, x0, lt ; CHECK-NEXT: csel x9, x25, x1, lt @@ -2008,9 +2008,9 @@ ; CHECK-NEXT: ldp x22, x21, [sp, #80] // 16-byte Folded Reload ; CHECK-NEXT: ldp x24, x23, [sp, #64] // 16-byte Folded Reload ; CHECK-NEXT: ldp x26, x25, [sp, #48] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #40] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #40] // 8-byte Reload ; CHECK-NEXT: ldp d9, d8, [sp, #24] // 16-byte Folded Reload -; CHECK-NEXT: ldr d10, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr d10, [sp, #16] // 8-byte Reload ; CHECK-NEXT: csel x1, xzr, x8, vs ; CHECK-NEXT: fmov d0, x9 ; CHECK-NEXT: mov v0.d[1], x1 Index: llvm/test/CodeGen/AArch64/fptoui-sat-scalar.ll =================================================================== --- llvm/test/CodeGen/AArch64/fptoui-sat-scalar.ll +++ llvm/test/CodeGen/AArch64/fptoui-sat-scalar.ll @@ -128,11 +128,11 @@ ; CHECK-LABEL: test_unsigned_i100_f32: ; CHECK: // %bb.0: ; CHECK-NEXT: str d8, [sp, #-16]! // 8-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #8] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #8] // 8-byte Spill ; CHECK-NEXT: mov v8.16b, v0.16b ; CHECK-NEXT: bl __fixunssfti ; CHECK-NEXT: mov w8, #1904214015 -; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Reload ; CHECK-NEXT: fcmp s8, #0.0 ; CHECK-NEXT: fmov s0, w8 ; CHECK-NEXT: mov x9, #68719476735 @@ -151,11 +151,11 @@ ; CHECK-LABEL: test_unsigned_i128_f32: ; CHECK: // %bb.0: ; CHECK-NEXT: str d8, [sp, #-16]! // 8-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #8] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #8] // 8-byte Spill ; CHECK-NEXT: mov v8.16b, v0.16b ; CHECK-NEXT: bl __fixunssfti ; CHECK-NEXT: mov w8, #2139095039 -; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Reload ; CHECK-NEXT: fcmp s8, #0.0 ; CHECK-NEXT: fmov s0, w8 ; CHECK-NEXT: csel x9, xzr, x1, lt @@ -295,11 +295,11 @@ ; CHECK-LABEL: test_unsigned_i100_f64: ; CHECK: // %bb.0: ; CHECK-NEXT: str d8, [sp, #-16]! // 8-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #8] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #8] // 8-byte Spill ; CHECK-NEXT: mov v8.16b, v0.16b ; CHECK-NEXT: bl __fixunsdfti ; CHECK-NEXT: mov x8, #5057542381537067007 -; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Reload ; CHECK-NEXT: fcmp d8, #0.0 ; CHECK-NEXT: fmov d0, x8 ; CHECK-NEXT: mov x9, #68719476735 @@ -318,11 +318,11 @@ ; CHECK-LABEL: test_unsigned_i128_f64: ; CHECK: // %bb.0: ; CHECK-NEXT: str d8, [sp, #-16]! // 8-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #8] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #8] // 8-byte Spill ; CHECK-NEXT: mov v8.16b, v0.16b ; CHECK-NEXT: bl __fixunsdfti ; CHECK-NEXT: mov x8, #5183643171103440895 -; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Reload ; CHECK-NEXT: fcmp d8, #0.0 ; CHECK-NEXT: fmov d0, x8 ; CHECK-NEXT: csel x9, xzr, x1, lt @@ -482,10 +482,10 @@ ; CHECK-NEXT: str d8, [sp, #-16]! // 8-byte Folded Spill ; CHECK-NEXT: fcvt s8, h0 ; CHECK-NEXT: mov v0.16b, v8.16b -; CHECK-NEXT: str x30, [sp, #8] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #8] // 8-byte Spill ; CHECK-NEXT: bl __fixunssfti ; CHECK-NEXT: mov w8, #1904214015 -; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Reload ; CHECK-NEXT: fcmp s8, #0.0 ; CHECK-NEXT: fmov s0, w8 ; CHECK-NEXT: mov x9, #68719476735 @@ -506,10 +506,10 @@ ; CHECK-NEXT: str d8, [sp, #-16]! // 8-byte Folded Spill ; CHECK-NEXT: fcvt s8, h0 ; CHECK-NEXT: mov v0.16b, v8.16b -; CHECK-NEXT: str x30, [sp, #8] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #8] // 8-byte Spill ; CHECK-NEXT: bl __fixunssfti ; CHECK-NEXT: mov w8, #2139095039 -; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Reload ; CHECK-NEXT: fcmp s8, #0.0 ; CHECK-NEXT: fmov s0, w8 ; CHECK-NEXT: csel x9, xzr, x1, lt Index: llvm/test/CodeGen/AArch64/fptoui-sat-vector.ll =================================================================== --- llvm/test/CodeGen/AArch64/fptoui-sat-vector.ll +++ llvm/test/CodeGen/AArch64/fptoui-sat-vector.ll @@ -279,14 +279,14 @@ ; CHECK-NEXT: .cfi_offset w30, -16 ; CHECK-NEXT: adrp x8, .LCPI14_0 ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI14_0] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixunstfsi ; CHECK-NEXT: adrp x8, .LCPI14_1 ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI14_1] -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: csel w19, wzr, w0, lt ; CHECK-NEXT: bl __gttf2 @@ -304,7 +304,7 @@ ; CHECK-LABEL: test_unsigned_v2f128_v2i32: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #96 // =96 -; CHECK-NEXT: str x30, [sp, #64] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #64] // 8-byte Spill ; CHECK-NEXT: stp x20, x19, [sp, #80] // 16-byte Folded Spill ; CHECK-NEXT: .cfi_def_cfa_offset 96 ; CHECK-NEXT: .cfi_offset w19, -8 @@ -315,28 +315,28 @@ ; CHECK-NEXT: stp q1, q0, [sp, #32] // 32-byte Folded Spill ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI15_0] ; CHECK-NEXT: mov v0.16b, v2.16b -; CHECK-NEXT: str q1, [sp, #16] // 16-byte Folded Spill +; CHECK-NEXT: str q1, [sp, #16] // 16-byte Spill ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixunstfsi ; CHECK-NEXT: adrp x8, .LCPI15_1 ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI15_1] -; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: csel w19, wzr, w0, lt -; CHECK-NEXT: str q1, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q1, [sp] // 16-byte Spill ; CHECK-NEXT: bl __gttf2 -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Reload ; CHECK-NEXT: cmp w0, #0 // =0 ; CHECK-NEXT: csinv w20, w19, wzr, le ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixunstfsi -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: csel w19, wzr, w0, lt ; CHECK-NEXT: bl __gttf2 @@ -345,7 +345,7 @@ ; CHECK-NEXT: fmov s0, w8 ; CHECK-NEXT: mov v0.s[1], w20 ; CHECK-NEXT: ldp x20, x19, [sp, #80] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #64] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #64] // 8-byte Reload ; CHECK-NEXT: // kill: def $d0 killed $d0 killed $q0 ; CHECK-NEXT: add sp, sp, #96 // =96 ; CHECK-NEXT: ret @@ -357,7 +357,7 @@ ; CHECK-LABEL: test_unsigned_v3f128_v3i32: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #112 // =112 -; CHECK-NEXT: str x30, [sp, #80] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #80] // 8-byte Spill ; CHECK-NEXT: stp x20, x19, [sp, #96] // 16-byte Folded Spill ; CHECK-NEXT: .cfi_def_cfa_offset 112 ; CHECK-NEXT: .cfi_offset w19, -8 @@ -366,30 +366,30 @@ ; CHECK-NEXT: adrp x8, .LCPI16_0 ; CHECK-NEXT: stp q0, q2, [sp, #48] // 32-byte Folded Spill ; CHECK-NEXT: mov v2.16b, v1.16b -; CHECK-NEXT: str q1, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q1, [sp] // 16-byte Spill ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI16_0] ; CHECK-NEXT: mov v0.16b, v2.16b -; CHECK-NEXT: str q1, [sp, #32] // 16-byte Folded Spill +; CHECK-NEXT: str q1, [sp, #32] // 16-byte Spill ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixunstfsi ; CHECK-NEXT: adrp x8, .LCPI16_1 ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI16_1] -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: csel w19, wzr, w0, lt -; CHECK-NEXT: str q1, [sp, #16] // 16-byte Folded Spill +; CHECK-NEXT: str q1, [sp, #16] // 16-byte Spill ; CHECK-NEXT: bl __gttf2 ; CHECK-NEXT: ldp q1, q0, [sp, #32] // 32-byte Folded Reload ; CHECK-NEXT: cmp w0, #0 // =0 ; CHECK-NEXT: csinv w20, w19, wzr, le ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixunstfsi -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: csel w19, wzr, w0, lt ; CHECK-NEXT: bl __gttf2 @@ -397,23 +397,23 @@ ; CHECK-NEXT: csinv w8, w19, wzr, le ; CHECK-NEXT: fmov s0, w8 ; CHECK-NEXT: mov v0.s[1], w20 -; CHECK-NEXT: str q0, [sp, #48] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp, #32] // 16-byte Folded Reload +; CHECK-NEXT: str q0, [sp, #48] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp, #32] // 16-byte Reload ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixunstfsi -; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #64] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: csel w19, wzr, w0, lt ; CHECK-NEXT: bl __gttf2 ; CHECK-NEXT: cmp w0, #0 // =0 -; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #48] // 16-byte Reload ; CHECK-NEXT: csinv w8, w19, wzr, le ; CHECK-NEXT: ldp x20, x19, [sp, #96] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #80] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #80] // 8-byte Reload ; CHECK-NEXT: mov v0.s[2], w8 ; CHECK-NEXT: add sp, sp, #112 // =112 ; CHECK-NEXT: ret @@ -425,7 +425,7 @@ ; CHECK-LABEL: test_unsigned_v4f128_v4i32: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #128 // =128 -; CHECK-NEXT: str x30, [sp, #96] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #96] // 8-byte Spill ; CHECK-NEXT: stp x20, x19, [sp, #112] // 16-byte Folded Spill ; CHECK-NEXT: .cfi_def_cfa_offset 128 ; CHECK-NEXT: .cfi_offset w19, -8 @@ -434,32 +434,32 @@ ; CHECK-NEXT: adrp x8, .LCPI17_0 ; CHECK-NEXT: stp q0, q2, [sp, #16] // 32-byte Folded Spill ; CHECK-NEXT: mov v2.16b, v1.16b -; CHECK-NEXT: str q1, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q1, [sp] // 16-byte Spill ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI17_0] ; CHECK-NEXT: mov v0.16b, v2.16b -; CHECK-NEXT: str q3, [sp, #80] // 16-byte Folded Spill -; CHECK-NEXT: str q1, [sp, #64] // 16-byte Folded Spill +; CHECK-NEXT: str q3, [sp, #80] // 16-byte Spill +; CHECK-NEXT: str q1, [sp, #64] // 16-byte Spill ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixunstfsi ; CHECK-NEXT: adrp x8, .LCPI17_1 ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI17_1] -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: csel w19, wzr, w0, lt -; CHECK-NEXT: str q1, [sp, #48] // 16-byte Folded Spill +; CHECK-NEXT: str q1, [sp, #48] // 16-byte Spill ; CHECK-NEXT: bl __gttf2 -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp, #64] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp, #64] // 16-byte Reload ; CHECK-NEXT: cmp w0, #0 // =0 ; CHECK-NEXT: csinv w20, w19, wzr, le ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixunstfsi -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp, #48] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp, #48] // 16-byte Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: csel w19, wzr, w0, lt ; CHECK-NEXT: bl __gttf2 @@ -467,37 +467,37 @@ ; CHECK-NEXT: csinv w8, w19, wzr, le ; CHECK-NEXT: fmov s0, w8 ; CHECK-NEXT: mov v0.s[1], w20 -; CHECK-NEXT: str q0, [sp, #16] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp, #64] // 16-byte Folded Reload +; CHECK-NEXT: str q0, [sp, #16] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp, #64] // 16-byte Reload ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #32] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixunstfsi ; CHECK-NEXT: ldp q0, q1, [sp, #32] // 32-byte Folded Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: csel w19, wzr, w0, lt ; CHECK-NEXT: bl __gttf2 -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: cmp w0, #0 // =0 ; CHECK-NEXT: csinv w8, w19, wzr, le ; CHECK-NEXT: mov v0.s[2], w8 -; CHECK-NEXT: str q0, [sp, #16] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp, #16] // 16-byte Spill ; CHECK-NEXT: ldp q1, q0, [sp, #64] // 32-byte Folded Reload ; CHECK-NEXT: bl __getf2 -; CHECK-NEXT: ldr q0, [sp, #80] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #80] // 16-byte Reload ; CHECK-NEXT: mov w19, w0 ; CHECK-NEXT: bl __fixunstfsi -; CHECK-NEXT: ldr q0, [sp, #80] // 16-byte Folded Reload -; CHECK-NEXT: ldr q1, [sp, #48] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #80] // 16-byte Reload +; CHECK-NEXT: ldr q1, [sp, #48] // 16-byte Reload ; CHECK-NEXT: cmp w19, #0 // =0 ; CHECK-NEXT: csel w19, wzr, w0, lt ; CHECK-NEXT: bl __gttf2 ; CHECK-NEXT: cmp w0, #0 // =0 -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: csinv w8, w19, wzr, le ; CHECK-NEXT: ldp x20, x19, [sp, #112] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #96] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #96] // 8-byte Reload ; CHECK-NEXT: mov v0.s[3], w8 ; CHECK-NEXT: add sp, sp, #128 // =128 ; CHECK-NEXT: ret @@ -915,7 +915,7 @@ ; CHECK-NEXT: .cfi_offset b9, -48 ; CHECK-NEXT: // kill: def $d0 killed $d0 def $q0 ; CHECK-NEXT: mov s8, v0.s[1] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: mov v0.16b, v8.16b ; CHECK-NEXT: bl __fixunssfti ; CHECK-NEXT: mov w8, #1904214015 @@ -925,12 +925,12 @@ ; CHECK-NEXT: csel x9, xzr, x0, lt ; CHECK-NEXT: csel x10, xzr, x1, lt ; CHECK-NEXT: fcmp s8, s9 -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: csel x19, x21, x10, gt ; CHECK-NEXT: csinv x20, x9, xzr, le ; CHECK-NEXT: // kill: def $s0 killed $s0 killed $q0 ; CHECK-NEXT: bl __fixunssfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: mov x2, x20 ; CHECK-NEXT: mov x3, x19 ; CHECK-NEXT: ldp x20, x19, [sp, #48] // 16-byte Folded Reload @@ -956,7 +956,7 @@ ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #64 // =64 ; CHECK-NEXT: stp d9, d8, [sp, #16] // 16-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #32] // 8-byte Spill ; CHECK-NEXT: stp x20, x19, [sp, #48] // 16-byte Folded Spill ; CHECK-NEXT: .cfi_def_cfa_offset 64 ; CHECK-NEXT: .cfi_offset w19, -8 @@ -966,7 +966,7 @@ ; CHECK-NEXT: .cfi_offset b9, -48 ; CHECK-NEXT: // kill: def $d0 killed $d0 def $q0 ; CHECK-NEXT: mov s8, v0.s[1] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: mov v0.16b, v8.16b ; CHECK-NEXT: bl __fixunssfti ; CHECK-NEXT: mov w8, #2139095039 @@ -975,12 +975,12 @@ ; CHECK-NEXT: csel x9, xzr, x1, lt ; CHECK-NEXT: csel x10, xzr, x0, lt ; CHECK-NEXT: fcmp s8, s9 -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: csinv x19, x10, xzr, le ; CHECK-NEXT: csinv x20, x9, xzr, le ; CHECK-NEXT: // kill: def $s0 killed $s0 killed $q0 ; CHECK-NEXT: bl __fixunssfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: mov x2, x19 ; CHECK-NEXT: mov x3, x20 ; CHECK-NEXT: ldp x20, x19, [sp, #48] // 16-byte Folded Reload @@ -989,7 +989,7 @@ ; CHECK-NEXT: csel x9, xzr, x1, lt ; CHECK-NEXT: fcmp s0, s9 ; CHECK-NEXT: csinv x8, x8, xzr, le -; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Reload ; CHECK-NEXT: ldp d9, d8, [sp, #16] // 16-byte Folded Reload ; CHECK-NEXT: csinv x1, x9, xzr, le ; CHECK-NEXT: fmov d0, x8 @@ -1186,7 +1186,7 @@ ; CHECK-NEXT: .cfi_offset b8, -40 ; CHECK-NEXT: .cfi_offset b9, -48 ; CHECK-NEXT: mov d8, v0.d[1] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: mov v0.16b, v8.16b ; CHECK-NEXT: bl __fixunsdfti ; CHECK-NEXT: mov x8, #5057542381537067007 @@ -1196,12 +1196,12 @@ ; CHECK-NEXT: csel x9, xzr, x0, lt ; CHECK-NEXT: csel x10, xzr, x1, lt ; CHECK-NEXT: fcmp d8, d9 -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: csel x19, x21, x10, gt ; CHECK-NEXT: csinv x20, x9, xzr, le ; CHECK-NEXT: // kill: def $d0 killed $d0 killed $q0 ; CHECK-NEXT: bl __fixunsdfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: mov x2, x20 ; CHECK-NEXT: mov x3, x19 ; CHECK-NEXT: ldp x20, x19, [sp, #48] // 16-byte Folded Reload @@ -1227,7 +1227,7 @@ ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #64 // =64 ; CHECK-NEXT: stp d9, d8, [sp, #16] // 16-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #32] // 8-byte Spill ; CHECK-NEXT: stp x20, x19, [sp, #48] // 16-byte Folded Spill ; CHECK-NEXT: .cfi_def_cfa_offset 64 ; CHECK-NEXT: .cfi_offset w19, -8 @@ -1236,7 +1236,7 @@ ; CHECK-NEXT: .cfi_offset b8, -40 ; CHECK-NEXT: .cfi_offset b9, -48 ; CHECK-NEXT: mov d8, v0.d[1] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: mov v0.16b, v8.16b ; CHECK-NEXT: bl __fixunsdfti ; CHECK-NEXT: mov x8, #5183643171103440895 @@ -1245,12 +1245,12 @@ ; CHECK-NEXT: csel x9, xzr, x1, lt ; CHECK-NEXT: csel x10, xzr, x0, lt ; CHECK-NEXT: fcmp d8, d9 -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: csinv x19, x10, xzr, le ; CHECK-NEXT: csinv x20, x9, xzr, le ; CHECK-NEXT: // kill: def $d0 killed $d0 killed $q0 ; CHECK-NEXT: bl __fixunsdfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: mov x2, x19 ; CHECK-NEXT: mov x3, x20 ; CHECK-NEXT: ldp x20, x19, [sp, #48] // 16-byte Folded Reload @@ -1259,7 +1259,7 @@ ; CHECK-NEXT: csel x9, xzr, x1, lt ; CHECK-NEXT: fcmp d0, d9 ; CHECK-NEXT: csinv x8, x8, xzr, le -; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Reload ; CHECK-NEXT: ldp d9, d8, [sp, #16] // 16-byte Folded Reload ; CHECK-NEXT: csinv x1, x9, xzr, le ; CHECK-NEXT: fmov d0, x8 @@ -1578,10 +1578,10 @@ ; CHECK-NEXT: // kill: def $d0 killed $d0 def $q0 ; CHECK-NEXT: mov h1, v0.h[2] ; CHECK-NEXT: fcvt s8, h1 -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: mov v0.16b, v8.16b ; CHECK-NEXT: bl __fixunssfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: mov w8, #1904214015 ; CHECK-NEXT: fcmp s8, #0.0 ; CHECK-NEXT: fmov s9, w8 @@ -1595,7 +1595,7 @@ ; CHECK-NEXT: csel x19, x25, x10, gt ; CHECK-NEXT: csinv x20, x9, xzr, le ; CHECK-NEXT: bl __fixunssfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: fcmp s8, #0.0 ; CHECK-NEXT: csel x8, xzr, x0, lt ; CHECK-NEXT: csel x9, xzr, x1, lt @@ -1606,7 +1606,7 @@ ; CHECK-NEXT: csel x21, x25, x9, gt ; CHECK-NEXT: csinv x22, x8, xzr, le ; CHECK-NEXT: bl __fixunssfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: fcmp s8, #0.0 ; CHECK-NEXT: csel x8, xzr, x0, lt ; CHECK-NEXT: csel x9, xzr, x1, lt @@ -1647,7 +1647,7 @@ ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #96 // =96 ; CHECK-NEXT: stp d9, d8, [sp, #16] // 16-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #32] // 8-byte Spill ; CHECK-NEXT: stp x24, x23, [sp, #48] // 16-byte Folded Spill ; CHECK-NEXT: stp x22, x21, [sp, #64] // 16-byte Folded Spill ; CHECK-NEXT: stp x20, x19, [sp, #80] // 16-byte Folded Spill @@ -1664,10 +1664,10 @@ ; CHECK-NEXT: // kill: def $d0 killed $d0 def $q0 ; CHECK-NEXT: mov h1, v0.h[1] ; CHECK-NEXT: fcvt s8, h1 -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: mov v0.16b, v8.16b ; CHECK-NEXT: bl __fixunssfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: mov w8, #2139095039 ; CHECK-NEXT: fcmp s8, #0.0 ; CHECK-NEXT: fmov s9, w8 @@ -1680,7 +1680,7 @@ ; CHECK-NEXT: csinv x19, x10, xzr, le ; CHECK-NEXT: csinv x20, x9, xzr, le ; CHECK-NEXT: bl __fixunssfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: fcmp s8, #0.0 ; CHECK-NEXT: csel x8, xzr, x1, lt ; CHECK-NEXT: csel x9, xzr, x0, lt @@ -1691,7 +1691,7 @@ ; CHECK-NEXT: csinv x21, x9, xzr, le ; CHECK-NEXT: csinv x22, x8, xzr, le ; CHECK-NEXT: bl __fixunssfti -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: fcmp s8, #0.0 ; CHECK-NEXT: csel x8, xzr, x1, lt ; CHECK-NEXT: csel x9, xzr, x0, lt @@ -1715,7 +1715,7 @@ ; CHECK-NEXT: ldp x20, x19, [sp, #80] // 16-byte Folded Reload ; CHECK-NEXT: ldp x22, x21, [sp, #64] // 16-byte Folded Reload ; CHECK-NEXT: ldp x24, x23, [sp, #48] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Reload ; CHECK-NEXT: ldp d9, d8, [sp, #16] // 16-byte Folded Reload ; CHECK-NEXT: csinv x1, x9, xzr, le ; CHECK-NEXT: fmov d0, x8 Index: llvm/test/CodeGen/AArch64/framelayout-sve-calleesaves-fix.mir =================================================================== --- llvm/test/CodeGen/AArch64/framelayout-sve-calleesaves-fix.mir +++ llvm/test/CodeGen/AArch64/framelayout-sve-calleesaves-fix.mir @@ -7,7 +7,7 @@ ; CHECK: // %bb.0: // %entry ; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-2 - ; CHECK-NEXT: str p4, [sp, #7, mul vl] // 2-byte Folded Spill + ; CHECK-NEXT: str p4, [sp, #7, mul vl] // 2-byte Spill ; CHECK-NEXT: str z8, [sp, #1, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-1 ; CHECK-NEXT: .cfi_escape 0x0f, 0x0c, 0x8f, 0x00, 0x11, 0x10, 0x22, 0x11, 0x18, 0x92, 0x2e, 0x00, 0x1e, 0x22 // sp + 16 + 24 * VG Index: llvm/test/CodeGen/AArch64/ldst-paired-aliasing.ll =================================================================== --- llvm/test/CodeGen/AArch64/ldst-paired-aliasing.ll +++ llvm/test/CodeGen/AArch64/ldst-paired-aliasing.ll @@ -13,7 +13,7 @@ ; CHECK-LABEL: main: ; CHECK: // %bb.0: // %for.body.lr.ph.i.i.i.i.i.i63 ; CHECK-NEXT: sub sp, sp, #112 // =112 -; CHECK-NEXT: str x30, [sp, #96] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #96] // 8-byte Spill ; CHECK-NEXT: .cfi_def_cfa_offset 112 ; CHECK-NEXT: .cfi_offset w30, -16 ; CHECK-NEXT: bl _Z5setupv @@ -33,7 +33,7 @@ ; CHECK-NEXT: .LBB0_2: // %if.then ; CHECK-NEXT: bl f2 ; CHECK-NEXT: .LBB0_3: // %common.ret -; CHECK-NEXT: ldr x30, [sp, #96] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #96] // 8-byte Reload ; CHECK-NEXT: mov w0, wzr ; CHECK-NEXT: add sp, sp, #112 // =112 ; CHECK-NEXT: ret Index: llvm/test/CodeGen/AArch64/named-vector-shuffle-reverse-neon.ll =================================================================== --- llvm/test/CodeGen/AArch64/named-vector-shuffle-reverse-neon.ll +++ llvm/test/CodeGen/AArch64/named-vector-shuffle-reverse-neon.ll @@ -107,9 +107,9 @@ ; CHECK-FASTISEL-LABEL: reverse_v8i32: ; CHECK-FASTISEL: // %bb.0: ; CHECK-FASTISEL-NEXT: sub sp, sp, #16 // =16 -; CHECK-FASTISEL-NEXT: str q1, [sp] // 16-byte Folded Spill +; CHECK-FASTISEL-NEXT: str q1, [sp] // 16-byte Spill ; CHECK-FASTISEL-NEXT: mov v1.16b, v0.16b -; CHECK-FASTISEL-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-FASTISEL-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-FASTISEL-NEXT: rev64 v0.4s, v0.4s ; CHECK-FASTISEL-NEXT: ext v0.16b, v0.16b, v0.16b, #8 ; CHECK-FASTISEL-NEXT: rev64 v1.4s, v1.4s @@ -138,12 +138,12 @@ ; CHECK-FASTISEL-LABEL: reverse_v16f32: ; CHECK-FASTISEL: // %bb.0: ; CHECK-FASTISEL-NEXT: sub sp, sp, #32 // =32 -; CHECK-FASTISEL-NEXT: str q3, [sp, #16] // 16-byte Folded Spill -; CHECK-FASTISEL-NEXT: str q2, [sp] // 16-byte Folded Spill +; CHECK-FASTISEL-NEXT: str q3, [sp, #16] // 16-byte Spill +; CHECK-FASTISEL-NEXT: str q2, [sp] // 16-byte Spill ; CHECK-FASTISEL-NEXT: mov v2.16b, v1.16b -; CHECK-FASTISEL-NEXT: ldr q1, [sp] // 16-byte Folded Reload +; CHECK-FASTISEL-NEXT: ldr q1, [sp] // 16-byte Reload ; CHECK-FASTISEL-NEXT: mov v3.16b, v0.16b -; CHECK-FASTISEL-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-FASTISEL-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-FASTISEL-NEXT: rev64 v0.4s, v0.4s ; CHECK-FASTISEL-NEXT: ext v0.16b, v0.16b, v0.16b, #8 ; CHECK-FASTISEL-NEXT: rev64 v1.4s, v1.4s Index: llvm/test/CodeGen/AArch64/pow.ll =================================================================== --- llvm/test/CodeGen/AArch64/pow.ll +++ llvm/test/CodeGen/AArch64/pow.ll @@ -69,34 +69,34 @@ ; CHECK-LABEL: pow_v4f32_one_fourth_not_enough_fmf: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #48 // =48 -; CHECK-NEXT: str q0, [sp, #16] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp, #16] // 16-byte Spill ; CHECK-NEXT: mov s0, v0.s[1] ; CHECK-NEXT: fmov s1, #0.25000000 -; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #32] // 8-byte Spill ; CHECK-NEXT: bl powf -; CHECK-NEXT: str d0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str d0, [sp] // 16-byte Spill ; CHECK-NEXT: fmov s1, #0.25000000 -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 killed $q0 ; CHECK-NEXT: bl powf -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v0.s[1], v1.s[0] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: str q0, [sp] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: fmov s1, #0.25000000 ; CHECK-NEXT: mov s0, v0.s[2] ; CHECK-NEXT: bl powf -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v1.s[2], v0.s[0] -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload -; CHECK-NEXT: str q1, [sp] // 16-byte Folded Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload +; CHECK-NEXT: str q1, [sp] // 16-byte Spill ; CHECK-NEXT: fmov s1, #0.25000000 ; CHECK-NEXT: mov s0, v0.s[3] ; CHECK-NEXT: bl powf -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v1.s[3], v0.s[0] ; CHECK-NEXT: mov v0.16b, v1.16b @@ -110,18 +110,18 @@ ; CHECK-LABEL: pow_v2f64_one_fourth_not_enough_fmf: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #48 // =48 -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: mov d0, v0.d[1] ; CHECK-NEXT: fmov d1, #0.25000000 -; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #32] // 8-byte Spill ; CHECK-NEXT: bl pow -; CHECK-NEXT: str q0, [sp, #16] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp, #16] // 16-byte Spill ; CHECK-NEXT: fmov d1, #0.25000000 -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: // kill: def $d0 killed $d0 killed $q0 ; CHECK-NEXT: bl pow -; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Reload ; CHECK-NEXT: // kill: def $d0 killed $d0 def $q0 ; CHECK-NEXT: mov v0.d[1], v1.d[0] ; CHECK-NEXT: add sp, sp, #48 // =48 Index: llvm/test/CodeGen/AArch64/pr48188.ll =================================================================== --- llvm/test/CodeGen/AArch64/pr48188.ll +++ llvm/test/CodeGen/AArch64/pr48188.ll @@ -8,15 +8,15 @@ ; CHECK-NEXT: sub sp, sp, #16 // =16 ; CHECK-NEXT: mov x1, xzr ; CHECK-NEXT: mov x0, x1 -; CHECK-NEXT: str x1, [sp] // 8-byte Folded Spill -; CHECK-NEXT: str x0, [sp, #8] // 8-byte Folded Spill +; CHECK-NEXT: str x1, [sp] // 8-byte Spill +; CHECK-NEXT: str x0, [sp, #8] // 8-byte Spill ; CHECK-NEXT: b .LBB0_1 ; CHECK-NEXT: .LBB0_1: // %loop ; CHECK-NEXT: // =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldr x0, [sp, #8] // 8-byte Folded Reload -; CHECK-NEXT: ldr x1, [sp] // 8-byte Folded Reload -; CHECK-NEXT: str x1, [sp] // 8-byte Folded Spill -; CHECK-NEXT: str x0, [sp, #8] // 8-byte Folded Spill +; CHECK-NEXT: ldr x0, [sp, #8] // 8-byte Reload +; CHECK-NEXT: ldr x1, [sp] // 8-byte Reload +; CHECK-NEXT: str x1, [sp] // 8-byte Spill +; CHECK-NEXT: str x0, [sp, #8] // 8-byte Spill ; CHECK-NEXT: b .LBB0_1 entry: br label %loop Index: llvm/test/CodeGen/AArch64/sve-breakdown-scalable-vectortype.ll =================================================================== --- llvm/test/CodeGen/AArch64/sve-breakdown-scalable-vectortype.ll +++ llvm/test/CodeGen/AArch64/sve-breakdown-scalable-vectortype.ll @@ -18,18 +18,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -102,18 +102,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -186,18 +186,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -270,18 +270,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -354,18 +354,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -438,18 +438,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -522,18 +522,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -610,18 +610,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -697,18 +697,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -784,18 +784,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -871,18 +871,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -958,18 +958,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -1045,18 +1045,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -1132,18 +1132,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -1223,18 +1223,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -1313,18 +1313,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -1403,18 +1403,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -1493,18 +1493,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -1583,18 +1583,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -1673,18 +1673,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -1763,18 +1763,18 @@ ; CHECK-NEXT: // %bb.1: // %L1 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill Index: llvm/test/CodeGen/AArch64/sve-pred-arith.ll =================================================================== --- llvm/test/CodeGen/AArch64/sve-pred-arith.ll +++ llvm/test/CodeGen/AArch64/sve-pred-arith.ll @@ -51,11 +51,11 @@ ; CHECK: // %bb.0: ; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-1 -; CHECK-NEXT: str p8, [sp, #3, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #7, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p8, [sp, #3, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #7, mul vl] // 2-byte Spill ; CHECK-NEXT: .cfi_escape 0x0f, 0x0c, 0x8f, 0x00, 0x11, 0x10, 0x22, 0x11, 0x08, 0x92, 0x2e, 0x00, 0x1e, 0x22 // sp + 16 + 8 * VG ; CHECK-NEXT: .cfi_offset w29, -16 ; CHECK-NEXT: ldr p4, [x3] @@ -131,11 +131,11 @@ ; CHECK: // %bb.0: ; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-1 -; CHECK-NEXT: str p8, [sp, #3, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #7, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p8, [sp, #3, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #7, mul vl] // 2-byte Spill ; CHECK-NEXT: .cfi_escape 0x0f, 0x0c, 0x8f, 0x00, 0x11, 0x10, 0x22, 0x11, 0x08, 0x92, 0x2e, 0x00, 0x1e, 0x22 // sp + 16 + 8 * VG ; CHECK-NEXT: .cfi_offset w29, -16 ; CHECK-NEXT: ldr p4, [x3] Index: llvm/test/CodeGen/AArch64/sve-split-int-pred-reduce.ll =================================================================== --- llvm/test/CodeGen/AArch64/sve-split-int-pred-reduce.ll +++ llvm/test/CodeGen/AArch64/sve-split-int-pred-reduce.ll @@ -21,7 +21,7 @@ ; CHECK: // %bb.0: ; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-1 -; CHECK-NEXT: str p4, [sp, #7, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p4, [sp, #7, mul vl] // 2-byte Spill ; CHECK-NEXT: .cfi_escape 0x0f, 0x0c, 0x8f, 0x00, 0x11, 0x10, 0x22, 0x11, 0x08, 0x92, 0x2e, 0x00, 0x1e, 0x22 // sp + 16 + 8 * VG ; CHECK-NEXT: .cfi_offset w29, -16 ; CHECK-NEXT: ptrue p4.b Index: llvm/test/CodeGen/AArch64/sve-tailcall.ll =================================================================== --- llvm/test/CodeGen/AArch64/sve-tailcall.ll +++ llvm/test/CodeGen/AArch64/sve-tailcall.ll @@ -52,18 +52,18 @@ ; CHECK: // %bb.0: ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -127,18 +127,18 @@ ; CHECK: // %bb.0: ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill Index: llvm/test/CodeGen/AArch64/sve-trunc.ll =================================================================== --- llvm/test/CodeGen/AArch64/sve-trunc.ll +++ llvm/test/CodeGen/AArch64/sve-trunc.ll @@ -111,7 +111,7 @@ ; CHECK: // %bb.0: // %entry ; CHECK-NEXT: str x29, [sp, #-16]! // 8-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-1 -; CHECK-NEXT: str p4, [sp, #7, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p4, [sp, #7, mul vl] // 2-byte Spill ; CHECK-NEXT: .cfi_escape 0x0f, 0x0c, 0x8f, 0x00, 0x11, 0x10, 0x22, 0x11, 0x08, 0x92, 0x2e, 0x00, 0x1e, 0x22 // sp + 16 + 8 * VG ; CHECK-NEXT: .cfi_offset w29, -16 ; CHECK-NEXT: ptrue p0.d Index: llvm/test/CodeGen/AArch64/unwind-preserved.ll =================================================================== --- llvm/test/CodeGen/AArch64/unwind-preserved.ll +++ llvm/test/CodeGen/AArch64/unwind-preserved.ll @@ -10,18 +10,18 @@ ; CHECK-NEXT: // %bb.0: ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; CHECK-NEXT: addvl sp, sp, #-18 -; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; CHECK-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; CHECK-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; CHECK-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; CHECK-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; CHECK-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; CHECK-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; CHECK-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; CHECK-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; CHECK-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; CHECK-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; CHECK-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; CHECK-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; CHECK-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; CHECK-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -132,18 +132,18 @@ ; GISEL-NEXT: // %bb.0: ; GISEL-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill ; GISEL-NEXT: addvl sp, sp, #-18 -; GISEL-NEXT: str p15, [sp, #4, mul vl] // 2-byte Folded Spill -; GISEL-NEXT: str p14, [sp, #5, mul vl] // 2-byte Folded Spill -; GISEL-NEXT: str p13, [sp, #6, mul vl] // 2-byte Folded Spill -; GISEL-NEXT: str p12, [sp, #7, mul vl] // 2-byte Folded Spill -; GISEL-NEXT: str p11, [sp, #8, mul vl] // 2-byte Folded Spill -; GISEL-NEXT: str p10, [sp, #9, mul vl] // 2-byte Folded Spill -; GISEL-NEXT: str p9, [sp, #10, mul vl] // 2-byte Folded Spill -; GISEL-NEXT: str p8, [sp, #11, mul vl] // 2-byte Folded Spill -; GISEL-NEXT: str p7, [sp, #12, mul vl] // 2-byte Folded Spill -; GISEL-NEXT: str p6, [sp, #13, mul vl] // 2-byte Folded Spill -; GISEL-NEXT: str p5, [sp, #14, mul vl] // 2-byte Folded Spill -; GISEL-NEXT: str p4, [sp, #15, mul vl] // 2-byte Folded Spill +; GISEL-NEXT: str p15, [sp, #4, mul vl] // 2-byte Spill +; GISEL-NEXT: str p14, [sp, #5, mul vl] // 2-byte Spill +; GISEL-NEXT: str p13, [sp, #6, mul vl] // 2-byte Spill +; GISEL-NEXT: str p12, [sp, #7, mul vl] // 2-byte Spill +; GISEL-NEXT: str p11, [sp, #8, mul vl] // 2-byte Spill +; GISEL-NEXT: str p10, [sp, #9, mul vl] // 2-byte Spill +; GISEL-NEXT: str p9, [sp, #10, mul vl] // 2-byte Spill +; GISEL-NEXT: str p8, [sp, #11, mul vl] // 2-byte Spill +; GISEL-NEXT: str p7, [sp, #12, mul vl] // 2-byte Spill +; GISEL-NEXT: str p6, [sp, #13, mul vl] // 2-byte Spill +; GISEL-NEXT: str p5, [sp, #14, mul vl] // 2-byte Spill +; GISEL-NEXT: str p4, [sp, #15, mul vl] // 2-byte Spill ; GISEL-NEXT: str z23, [sp, #2, mul vl] // 16-byte Folded Spill ; GISEL-NEXT: str z22, [sp, #3, mul vl] // 16-byte Folded Spill ; GISEL-NEXT: str z21, [sp, #4, mul vl] // 16-byte Folded Spill @@ -293,14 +293,14 @@ ; CHECK-NEXT: .cfi_offset b21, -240 ; CHECK-NEXT: .cfi_offset b22, -256 ; CHECK-NEXT: .cfi_offset b23, -272 -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: .Ltmp3: ; CHECK-NEXT: bl may_throw_neon ; CHECK-NEXT: .Ltmp4: -; CHECK-NEXT: str q0, [sp, #16] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp, #16] // 16-byte Spill ; CHECK-NEXT: b .LBB1_1 ; CHECK-NEXT: .LBB1_1: // %.Lcontinue -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: ldp x29, x30, [sp, #288] // 16-byte Folded Reload ; CHECK-NEXT: ldp q9, q8, [sp, #256] // 32-byte Folded Reload ; CHECK-NEXT: ldp q11, q10, [sp, #224] // 32-byte Folded Reload @@ -314,7 +314,7 @@ ; CHECK-NEXT: ret ; CHECK-NEXT: .LBB1_2: // %.Lunwind ; CHECK-NEXT: .Ltmp5: -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: ldp x29, x30, [sp, #288] // 16-byte Folded Reload ; CHECK-NEXT: ldp q9, q8, [sp, #256] // 32-byte Folded Reload ; CHECK-NEXT: ldp q11, q10, [sp, #224] // 32-byte Folded Reload @@ -360,13 +360,13 @@ ; GISEL-NEXT: .cfi_offset b21, -240 ; GISEL-NEXT: .cfi_offset b22, -256 ; GISEL-NEXT: .cfi_offset b23, -272 -; GISEL-NEXT: str q0, [sp] // 16-byte Folded Spill +; GISEL-NEXT: str q0, [sp] // 16-byte Spill ; GISEL-NEXT: .Ltmp3: ; GISEL-NEXT: bl may_throw_neon -; GISEL-NEXT: str q0, [sp, #16] // 16-byte Folded Spill +; GISEL-NEXT: str q0, [sp, #16] // 16-byte Spill ; GISEL-NEXT: .Ltmp4: ; GISEL-NEXT: // %bb.1: // %.Lcontinue -; GISEL-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; GISEL-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; GISEL-NEXT: ldp x29, x30, [sp, #288] // 16-byte Folded Reload ; GISEL-NEXT: ldp q9, q8, [sp, #256] // 32-byte Folded Reload ; GISEL-NEXT: ldp q11, q10, [sp, #224] // 32-byte Folded Reload @@ -380,7 +380,7 @@ ; GISEL-NEXT: ret ; GISEL-NEXT: .LBB1_2: // %.Lunwind ; GISEL-NEXT: .Ltmp5: -; GISEL-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; GISEL-NEXT: ldr q0, [sp] // 16-byte Reload ; GISEL-NEXT: ldp x29, x30, [sp, #288] // 16-byte Folded Reload ; GISEL-NEXT: ldp q9, q8, [sp, #256] // 32-byte Folded Reload ; GISEL-NEXT: ldp q11, q10, [sp, #224] // 32-byte Folded Reload Index: llvm/test/CodeGen/AArch64/vec-libcalls.ll =================================================================== --- llvm/test/CodeGen/AArch64/vec-libcalls.ll +++ llvm/test/CodeGen/AArch64/vec-libcalls.ll @@ -52,16 +52,16 @@ ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #48 // =48 ; CHECK-NEXT: // kill: def $d0 killed $d0 def $q0 -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp] // 16-byte Spill ; CHECK-NEXT: mov s0, v0.s[1] -; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #32] // 8-byte Spill ; CHECK-NEXT: bl sinf -; CHECK-NEXT: str d0, [sp, #16] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp] // 16-byte Folded Reload +; CHECK-NEXT: str d0, [sp, #16] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 killed $q0 ; CHECK-NEXT: bl sinf -; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp, #16] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v0.s[1], v1.s[0] ; CHECK-NEXT: // kill: def $d0 killed $d0 killed $q0 @@ -75,23 +75,23 @@ ; CHECK-LABEL: sin_v3f32: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #48 // =48 -; CHECK-NEXT: str q0, [sp, #16] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp, #16] // 16-byte Spill ; CHECK-NEXT: mov s0, v0.s[1] -; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #32] // 8-byte Spill ; CHECK-NEXT: bl sinf -; CHECK-NEXT: str d0, [sp] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: str d0, [sp] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 killed $q0 ; CHECK-NEXT: bl sinf -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v0.s[1], v1.s[0] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: str q0, [sp] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: mov s0, v0.s[2] ; CHECK-NEXT: bl sinf -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v1.s[2], v0.s[0] ; CHECK-NEXT: mov v0.16b, v1.16b @@ -105,30 +105,30 @@ ; CHECK-LABEL: sin_v4f32: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #48 // =48 -; CHECK-NEXT: str q0, [sp, #16] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp, #16] // 16-byte Spill ; CHECK-NEXT: mov s0, v0.s[1] -; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #32] // 8-byte Spill ; CHECK-NEXT: bl sinf -; CHECK-NEXT: str d0, [sp] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: str d0, [sp] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 killed $q0 ; CHECK-NEXT: bl sinf -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v0.s[1], v1.s[0] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: str q0, [sp] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: mov s0, v0.s[2] ; CHECK-NEXT: bl sinf -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v1.s[2], v0.s[0] -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload -; CHECK-NEXT: str q1, [sp] // 16-byte Folded Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload +; CHECK-NEXT: str q1, [sp] // 16-byte Spill ; CHECK-NEXT: mov s0, v0.s[3] ; CHECK-NEXT: bl sinf -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v1.s[3], v0.s[0] ; CHECK-NEXT: mov v0.16b, v1.16b @@ -144,7 +144,7 @@ ; CHECK-NEXT: str d12, [sp, #-48]! // 8-byte Folded Spill ; CHECK-NEXT: stp d11, d10, [sp, #8] // 16-byte Folded Spill ; CHECK-NEXT: stp d9, d8, [sp, #24] // 16-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #40] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #40] // 8-byte Spill ; CHECK-NEXT: mov v8.16b, v4.16b ; CHECK-NEXT: mov v9.16b, v3.16b ; CHECK-NEXT: mov v10.16b, v2.16b @@ -165,7 +165,7 @@ ; CHECK-NEXT: mov v1.16b, v11.16b ; CHECK-NEXT: mov v2.16b, v10.16b ; CHECK-NEXT: mov v3.16b, v9.16b -; CHECK-NEXT: ldr x30, [sp, #40] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #40] // 8-byte Reload ; CHECK-NEXT: ldp d9, d8, [sp, #24] // 16-byte Folded Reload ; CHECK-NEXT: ldp d11, d10, [sp, #8] // 16-byte Folded Reload ; CHECK-NEXT: mov v4.16b, v0.16b @@ -182,7 +182,7 @@ ; CHECK-NEXT: stp d13, d12, [sp, #-64]! // 16-byte Folded Spill ; CHECK-NEXT: stp d11, d10, [sp, #16] // 16-byte Folded Spill ; CHECK-NEXT: stp d9, d8, [sp, #32] // 16-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #48] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #48] // 8-byte Spill ; CHECK-NEXT: mov v8.16b, v5.16b ; CHECK-NEXT: mov v9.16b, v4.16b ; CHECK-NEXT: mov v10.16b, v3.16b @@ -207,7 +207,7 @@ ; CHECK-NEXT: mov v2.16b, v11.16b ; CHECK-NEXT: mov v3.16b, v10.16b ; CHECK-NEXT: mov v4.16b, v9.16b -; CHECK-NEXT: ldr x30, [sp, #48] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #48] // 8-byte Reload ; CHECK-NEXT: ldp d9, d8, [sp, #32] // 16-byte Folded Reload ; CHECK-NEXT: ldp d11, d10, [sp, #16] // 16-byte Folded Reload ; CHECK-NEXT: mov v5.16b, v0.16b @@ -224,7 +224,7 @@ ; CHECK: // %bb.0: ; CHECK-NEXT: str d10, [sp, #-32]! // 8-byte Folded Spill ; CHECK-NEXT: stp d9, d8, [sp, #8] // 16-byte Folded Spill -; CHECK-NEXT: str x30, [sp, #24] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #24] // 8-byte Spill ; CHECK-NEXT: mov v8.16b, v2.16b ; CHECK-NEXT: mov v9.16b, v1.16b ; CHECK-NEXT: bl sin @@ -235,7 +235,7 @@ ; CHECK-NEXT: mov v0.16b, v8.16b ; CHECK-NEXT: bl sin ; CHECK-NEXT: mov v1.16b, v9.16b -; CHECK-NEXT: ldr x30, [sp, #24] // 8-byte Folded Reload +; CHECK-NEXT: ldr x30, [sp, #24] // 8-byte Reload ; CHECK-NEXT: ldp d9, d8, [sp, #8] // 16-byte Folded Reload ; CHECK-NEXT: mov v2.16b, v0.16b ; CHECK-NEXT: mov v0.16b, v10.16b @@ -267,23 +267,23 @@ ; CHECK-LABEL: cos_v3f32: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #48 // =48 -; CHECK-NEXT: str q0, [sp, #16] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp, #16] // 16-byte Spill ; CHECK-NEXT: mov s0, v0.s[1] -; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #32] // 8-byte Spill ; CHECK-NEXT: bl cosf -; CHECK-NEXT: str d0, [sp] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: str d0, [sp] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 killed $q0 ; CHECK-NEXT: bl cosf -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v0.s[1], v1.s[0] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: str q0, [sp] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: mov s0, v0.s[2] ; CHECK-NEXT: bl cosf -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v1.s[2], v0.s[0] ; CHECK-NEXT: mov v0.16b, v1.16b @@ -297,23 +297,23 @@ ; CHECK-LABEL: exp_v3f32: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #48 // =48 -; CHECK-NEXT: str q0, [sp, #16] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp, #16] // 16-byte Spill ; CHECK-NEXT: mov s0, v0.s[1] -; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #32] // 8-byte Spill ; CHECK-NEXT: bl expf -; CHECK-NEXT: str d0, [sp] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: str d0, [sp] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 killed $q0 ; CHECK-NEXT: bl expf -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v0.s[1], v1.s[0] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: str q0, [sp] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: mov s0, v0.s[2] ; CHECK-NEXT: bl expf -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v1.s[2], v0.s[0] ; CHECK-NEXT: mov v0.16b, v1.16b @@ -327,23 +327,23 @@ ; CHECK-LABEL: exp2_v3f32: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #48 // =48 -; CHECK-NEXT: str q0, [sp, #16] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp, #16] // 16-byte Spill ; CHECK-NEXT: mov s0, v0.s[1] -; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #32] // 8-byte Spill ; CHECK-NEXT: bl exp2f -; CHECK-NEXT: str d0, [sp] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: str d0, [sp] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 killed $q0 ; CHECK-NEXT: bl exp2f -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v0.s[1], v1.s[0] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: str q0, [sp] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: mov s0, v0.s[2] ; CHECK-NEXT: bl exp2f -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v1.s[2], v0.s[0] ; CHECK-NEXT: mov v0.16b, v1.16b @@ -366,23 +366,23 @@ ; CHECK-LABEL: log_v3f32: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #48 // =48 -; CHECK-NEXT: str q0, [sp, #16] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp, #16] // 16-byte Spill ; CHECK-NEXT: mov s0, v0.s[1] -; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #32] // 8-byte Spill ; CHECK-NEXT: bl logf -; CHECK-NEXT: str d0, [sp] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: str d0, [sp] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 killed $q0 ; CHECK-NEXT: bl logf -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v0.s[1], v1.s[0] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: str q0, [sp] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: mov s0, v0.s[2] ; CHECK-NEXT: bl logf -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v1.s[2], v0.s[0] ; CHECK-NEXT: mov v0.16b, v1.16b @@ -396,23 +396,23 @@ ; CHECK-LABEL: log10_v3f32: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #48 // =48 -; CHECK-NEXT: str q0, [sp, #16] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp, #16] // 16-byte Spill ; CHECK-NEXT: mov s0, v0.s[1] -; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #32] // 8-byte Spill ; CHECK-NEXT: bl log10f -; CHECK-NEXT: str d0, [sp] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: str d0, [sp] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 killed $q0 ; CHECK-NEXT: bl log10f -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v0.s[1], v1.s[0] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: str q0, [sp] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: mov s0, v0.s[2] ; CHECK-NEXT: bl log10f -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v1.s[2], v0.s[0] ; CHECK-NEXT: mov v0.16b, v1.16b @@ -426,23 +426,23 @@ ; CHECK-LABEL: log2_v3f32: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #48 // =48 -; CHECK-NEXT: str q0, [sp, #16] // 16-byte Folded Spill +; CHECK-NEXT: str q0, [sp, #16] // 16-byte Spill ; CHECK-NEXT: mov s0, v0.s[1] -; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #32] // 8-byte Spill ; CHECK-NEXT: bl log2f -; CHECK-NEXT: str d0, [sp] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: str d0, [sp] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 killed $q0 ; CHECK-NEXT: bl log2f -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v0.s[1], v1.s[0] -; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill -; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Folded Reload +; CHECK-NEXT: str q0, [sp] // 16-byte Spill +; CHECK-NEXT: ldr q0, [sp, #16] // 16-byte Reload ; CHECK-NEXT: mov s0, v0.s[2] ; CHECK-NEXT: bl log2f -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #32] // 8-byte Reload ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0 ; CHECK-NEXT: mov v1.s[2], v0.s[0] ; CHECK-NEXT: mov v0.16b, v1.16b Index: llvm/test/CodeGen/AArch64/vecreduce-fadd-legalization-strict.ll =================================================================== --- llvm/test/CodeGen/AArch64/vecreduce-fadd-legalization-strict.ll +++ llvm/test/CodeGen/AArch64/vecreduce-fadd-legalization-strict.ll @@ -142,13 +142,13 @@ ; CHECK-LABEL: test_v2f128: ; CHECK: // %bb.0: ; CHECK-NEXT: sub sp, sp, #32 // =32 -; CHECK-NEXT: str q1, [sp] // 16-byte Folded Spill +; CHECK-NEXT: str q1, [sp] // 16-byte Spill ; CHECK-NEXT: mov v1.16b, v0.16b ; CHECK-NEXT: mov v0.16b, v2.16b -; CHECK-NEXT: str x30, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str x30, [sp, #16] // 8-byte Spill ; CHECK-NEXT: bl __addtf3 -; CHECK-NEXT: ldr q1, [sp] // 16-byte Folded Reload -; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr q1, [sp] // 16-byte Reload +; CHECK-NEXT: ldr x30, [sp, #16] // 8-byte Reload ; CHECK-NEXT: add sp, sp, #32 // =32 ; CHECK-NEXT: b __addtf3 %b = call fp128 @llvm.vector.reduce.fadd.f128.v2f128(fp128 %s, <2 x fp128> %a) Index: llvm/test/CodeGen/AArch64/win64cc-backup-x18.ll =================================================================== --- llvm/test/CodeGen/AArch64/win64cc-backup-x18.ll +++ llvm/test/CodeGen/AArch64/win64cc-backup-x18.ll @@ -12,10 +12,10 @@ ; CHECK-LABEL: func: ; CHECK: // %bb.0: // %entry ; CHECK-NEXT: stp x29, x30, [sp, #-32]! // 16-byte Folded Spill -; CHECK-NEXT: str x18, [sp, #16] // 8-byte Folded Spill +; CHECK-NEXT: str x18, [sp, #16] // 8-byte Spill ; CHECK-NEXT: mov x29, sp ; CHECK-NEXT: bl other -; CHECK-NEXT: ldr x18, [sp, #16] // 8-byte Folded Reload +; CHECK-NEXT: ldr x18, [sp, #16] // 8-byte Reload ; CHECK-NEXT: ldp x29, x30, [sp], #32 // 16-byte Folded Reload ; CHECK-NEXT: ret entry: Index: llvm/test/DebugInfo/MIR/AArch64/recognise-spill-restore.mir =================================================================== --- /dev/null +++ llvm/test/DebugInfo/MIR/AArch64/recognise-spill-restore.mir @@ -0,0 +1,115 @@ +# RUN: llc %s -run-pass=livedebugvalues -march=aarch64 -o - \ +# RUN: -experimental-debug-variable-locations | FileCheck %s +# +# Test that a spill then restore of a variable is tracked by LiveDebugValues on +# AArch64. First that the value being written to the stack is recognised as +# being on the stack, then that the subsequent load is recognised. +# +# CHECK: DBG_VALUE $sp, 0, {{.*}} !DIExpression(DW_OP_plus_uconst, 8), +# CHECK: DBG_VALUE $x0, $noreg +--- | + ; ModuleID = 'test.ll' + source_filename = "test.ll" + target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" + + define i64 @test(i64 %foo) !dbg !7 { + %bar = add i64 %foo, 1, !dbg !12 + tail call void asm sideeffect "", "~{x0},~{x1},~{x2},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{fp},~{lr}"(), !dbg !12, !srcloc !13 + call void @llvm.dbg.value(metadata i64 %bar, metadata !14, metadata !DIExpression()), !dbg !12 + ret i64 %bar, !dbg !12 + } + + ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn + declare void @llvm.dbg.value(metadata, metadata, metadata) #0 + + attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } + + !llvm.dbg.cu = !{!0} + !llvm.module.flags = !{!3, !4, !5} + !llvm.ident = !{!6} + + !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, splitDebugInlining: false, nameTableKind: None) + !1 = !DIFile(filename: "test.c", directory: "/tmp/out.c") + !2 = !{} + !3 = !{i32 7, !"Dwarf Version", i32 4} + !4 = !{i32 2, !"Debug Info Version", i32 3} + !5 = !{i32 1, !"wchar_size", i32 4} + !6 = !{!""} + !7 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 3, type: !8, scopeLine: 3, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !2) + !8 = !DISubroutineType(types: !9) + !9 = !{!10, !11, !11} + !10 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) + !11 = !DIBasicType(name: "long int", size: 64, encoding: DW_ATE_signed) + !12 = !DILocation(line: 0, scope: !7) + !13 = !{i32 1} + !14 = !DILocalVariable(name: "bar", arg: 1, scope: !7, file: !1, line: 3, type: !11) + +... +--- +name: test +alignment: 4 +tracksRegLiveness: true +liveins: + - { reg: '$x0' } +frameInfo: + stackSize: 112 + maxAlignment: 8 + maxCallFrameSize: 0 +stack: + - { id: 0, type: spill-slot, offset: -104, size: 8, alignment: 8 } + - { id: 1, type: spill-slot, offset: -8, size: 8, alignment: 8, callee-saved-register: '$x19' } + - { id: 2, type: spill-slot, offset: -16, size: 8, alignment: 8, callee-saved-register: '$x20' } + - { id: 3, type: spill-slot, offset: -24, size: 8, alignment: 8, callee-saved-register: '$x21' } + - { id: 4, type: spill-slot, offset: -32, size: 8, alignment: 8, callee-saved-register: '$x22' } + - { id: 5, type: spill-slot, offset: -40, size: 8, alignment: 8, callee-saved-register: '$x23' } + - { id: 6, type: spill-slot, offset: -48, size: 8, alignment: 8, callee-saved-register: '$x24' } + - { id: 7, type: spill-slot, offset: -56, size: 8, alignment: 8, callee-saved-register: '$x25' } + - { id: 8, type: spill-slot, offset: -64, size: 8, alignment: 8, callee-saved-register: '$x26' } + - { id: 9, type: spill-slot, offset: -72, size: 8, alignment: 8, callee-saved-register: '$x27' } + - { id: 10, type: spill-slot, offset: -80, size: 8, alignment: 8, callee-saved-register: '$x28' } + - { id: 11, type: spill-slot, offset: -88, size: 8, alignment: 8, callee-saved-register: '$lr' } + - { id: 12, type: spill-slot, offset: -96, size: 8, alignment: 8, callee-saved-register: '$fp' } +machineFunctionInfo: + hasRedZone: false +body: | + bb.0 (%ir-block.0): + liveins: $x0, $lr, $fp, $x27, $x28, $x25, $x26, $x23, $x24, $x21, $x22, $x19, $x20 + + $sp = frame-setup SUBXri $sp, 112, 0 + frame-setup STPXi killed $fp, killed $lr, $sp, 2 :: (store 8 into %stack.12), (store 8 into %stack.11) + frame-setup STPXi killed $x28, killed $x27, $sp, 4 :: (store 8 into %stack.10), (store 8 into %stack.9) + frame-setup STPXi killed $x26, killed $x25, $sp, 6 :: (store 8 into %stack.8), (store 8 into %stack.7) + frame-setup STPXi killed $x24, killed $x23, $sp, 8 :: (store 8 into %stack.6), (store 8 into %stack.5) + frame-setup STPXi killed $x22, killed $x21, $sp, 10 :: (store 8 into %stack.4), (store 8 into %stack.3) + frame-setup STPXi killed $x20, killed $x19, $sp, 12 :: (store 8 into %stack.2), (store 8 into %stack.1) + frame-setup CFI_INSTRUCTION def_cfa_offset 112 + frame-setup CFI_INSTRUCTION offset $w19, -8, debug-location !12 + frame-setup CFI_INSTRUCTION offset $w20, -16, debug-location !12 + frame-setup CFI_INSTRUCTION offset $w21, -24, debug-location !12 + frame-setup CFI_INSTRUCTION offset $w22, -32, debug-location !12 + frame-setup CFI_INSTRUCTION offset $w23, -40, debug-location !12 + frame-setup CFI_INSTRUCTION offset $w24, -48, debug-location !12 + frame-setup CFI_INSTRUCTION offset $w25, -56, debug-location !12 + frame-setup CFI_INSTRUCTION offset $w26, -64, debug-location !12 + frame-setup CFI_INSTRUCTION offset $w27, -72, debug-location !12 + frame-setup CFI_INSTRUCTION offset $w28, -80, debug-location !12 + frame-setup CFI_INSTRUCTION offset $w30, -88, debug-location !12 + frame-setup CFI_INSTRUCTION offset $w29, -96, debug-location !12 + renamable $x8 = ADDXri killed renamable $x0, 1, 0, debug-instr-number 1, debug-location !12 + STRXui killed renamable $x8, $sp, 1 :: (store 8 into %stack.0) + INLINEASM &"", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $x0, 12 /* clobber */, implicit-def dead early-clobber $x1, 12 /* clobber */, implicit-def dead early-clobber $x2, 12 /* clobber */, implicit-def dead early-clobber $x3, 12 /* clobber */, implicit-def dead early-clobber $x4, 12 /* clobber */, implicit-def dead early-clobber $x5, 12 /* clobber */, implicit-def dead early-clobber $x6, 12 /* clobber */, implicit-def dead early-clobber $x7, 12 /* clobber */, implicit-def dead early-clobber $x8, 12 /* clobber */, implicit-def dead early-clobber $x9, 12 /* clobber */, implicit-def dead early-clobber $x10, 12 /* clobber */, implicit-def dead early-clobber $x11, 12 /* clobber */, implicit-def dead early-clobber $x12, 12 /* clobber */, implicit-def dead early-clobber $x13, 12 /* clobber */, implicit-def dead early-clobber $x14, 12 /* clobber */, implicit-def dead early-clobber $x15, 12 /* clobber */, implicit-def dead early-clobber $x16, 12 /* clobber */, implicit-def dead early-clobber $x17, 12 /* clobber */, implicit-def dead early-clobber $x18, 12 /* clobber */, implicit-def dead early-clobber $x19, 12 /* clobber */, implicit-def dead early-clobber $x20, 12 /* clobber */, implicit-def dead early-clobber $x21, 12 /* clobber */, implicit-def dead early-clobber $x22, 12 /* clobber */, implicit-def dead early-clobber $x23, 12 /* clobber */, implicit-def dead early-clobber $x24, 12 /* clobber */, implicit-def dead early-clobber $x25, 12 /* clobber */, implicit-def dead early-clobber $x26, 12 /* clobber */, implicit-def dead early-clobber $x27, 12 /* clobber */, implicit-def dead early-clobber $x28, 12 /* clobber */, implicit-def dead early-clobber $fp, 12 /* clobber */, implicit-def dead early-clobber $lr, !13, debug-location !12 + DBG_INSTR_REF 1, 0, !14, !DIExpression(), debug-location !12 + $x0 = LDRXui $sp, 1 :: (load 8 from %stack.0) + ; This store added to evict the variable value from the stack, forces + ; LiveDebugValues to relocate it to $x0 + STRXui $xzr, $sp, 1 :: (store 8 into %stack.0) + $x20, $x19 = frame-destroy LDPXi $sp, 12, debug-location !12 :: (load 8 from %stack.2), (load 8 from %stack.1) + $x22, $x21 = frame-destroy LDPXi $sp, 10, debug-location !12 :: (load 8 from %stack.4), (load 8 from %stack.3) + $x24, $x23 = frame-destroy LDPXi $sp, 8, debug-location !12 :: (load 8 from %stack.6), (load 8 from %stack.5) + $x26, $x25 = frame-destroy LDPXi $sp, 6, debug-location !12 :: (load 8 from %stack.8), (load 8 from %stack.7) + $x28, $x27 = frame-destroy LDPXi $sp, 4, debug-location !12 :: (load 8 from %stack.10), (load 8 from %stack.9) + $fp, $lr = frame-destroy LDPXi $sp, 2, debug-location !12 :: (load 8 from %stack.12), (load 8 from %stack.11) + $sp = frame-destroy ADDXri $sp, 112, 0, debug-location !12 + RET undef $lr, implicit killed $x0, debug-location !12 + +...