[AArch64] Disable AArch64StorePairSuppress under optsize

AArch64StorePairSuppress will prevent the creation of LDP's based on
scheduling info. This shouldn't apply when optimizing for size though,
where the size decrease should be considered more important.

Differential Revision: https://reviews.llvm.org/D110809
This commit is contained in:
David Green 2021-10-04 18:28:15 +01:00
parent 6fcb857746
commit 30dc53db36
2 changed files with 7 additions and 13 deletions

View File

@ -119,7 +119,7 @@ bool AArch64StorePairSuppress::isNarrowFPStore(const MachineInstr &MI) {
} }
bool AArch64StorePairSuppress::runOnMachineFunction(MachineFunction &MF) { bool AArch64StorePairSuppress::runOnMachineFunction(MachineFunction &MF) {
if (skipFunction(MF.getFunction())) if (skipFunction(MF.getFunction()) || MF.getFunction().hasOptSize())
return false; return false;
const TargetSubtargetInfo &ST = MF.getSubtarget(); const TargetSubtargetInfo &ST = MF.getSubtarget();

View File

@ -38,12 +38,9 @@ define void @test_minsize() minsize {
; CHECK-NEXT: bl return_in_block ; CHECK-NEXT: bl return_in_block
; CHECK-NEXT: adrp x8, in_block_store ; CHECK-NEXT: adrp x8, in_block_store
; CHECK-NEXT: add x8, x8, :lo12:in_block_store ; CHECK-NEXT: add x8, x8, :lo12:in_block_store
; CHECK-NEXT: str d0, [x8] ; CHECK-NEXT: stp d0, d1, [x8]
; CHECK-NEXT: str d1, [x8, #8] ; CHECK-NEXT: stp d2, d3, [x8, #16]
; CHECK-NEXT: str d2, [x8, #16] ; CHECK-NEXT: stp d4, d5, [x8, #32]
; CHECK-NEXT: str d3, [x8, #24]
; CHECK-NEXT: str d4, [x8, #32]
; CHECK-NEXT: str d5, [x8, #40]
; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
; CHECK-NEXT: ret ; CHECK-NEXT: ret
%1 = call %T_IN_BLOCK @return_in_block() %1 = call %T_IN_BLOCK @return_in_block()
@ -60,12 +57,9 @@ define void @test_optsize() optsize {
; CHECK-NEXT: bl return_in_block ; CHECK-NEXT: bl return_in_block
; CHECK-NEXT: adrp x8, in_block_store ; CHECK-NEXT: adrp x8, in_block_store
; CHECK-NEXT: add x8, x8, :lo12:in_block_store ; CHECK-NEXT: add x8, x8, :lo12:in_block_store
; CHECK-NEXT: str d0, [x8] ; CHECK-NEXT: stp d0, d1, [x8]
; CHECK-NEXT: str d1, [x8, #8] ; CHECK-NEXT: stp d2, d3, [x8, #16]
; CHECK-NEXT: str d2, [x8, #16] ; CHECK-NEXT: stp d4, d5, [x8, #32]
; CHECK-NEXT: str d3, [x8, #24]
; CHECK-NEXT: str d4, [x8, #32]
; CHECK-NEXT: str d5, [x8, #40]
; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload ; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
; CHECK-NEXT: ret ; CHECK-NEXT: ret
%1 = call %T_IN_BLOCK @return_in_block() %1 = call %T_IN_BLOCK @return_in_block()