diff options
author | Jessica Paquette <jpaquette@apple.com> | 2018-03-27 22:23:48 +0000 |
---|---|---|
committer | Jessica Paquette <jpaquette@apple.com> | 2018-03-27 22:23:48 +0000 |
commit | 2519ee70810c561ce40e5e4e57a9c083d30faf67 (patch) | |
tree | 9b3715aeb7604695322e458d0f5a1251ad511df0 /llvm/test | |
parent | e4208bfa5b2d78541eeb08459caa11e850af201a (diff) | |
download | bcm5719-llvm-2519ee70810c561ce40e5e4e57a9c083d30faf67.tar.gz bcm5719-llvm-2519ee70810c561ce40e5e4e57a9c083d30faf67.zip |
[MachineOutliner] AArch64: Don't outline ADRPs with un-outlinable operands
If an ADRP appears with, say, a CPI operand, we shouldn't outline it.
This moves the check for unsafe operands so that it occurs before the special-case
for ADRPs. Also add a test for outlining ADRPs.
llvm-svn: 328674
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/CodeGen/AArch64/machine-outliner-bad-adrp.mir | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/AArch64/machine-outliner-bad-adrp.mir b/llvm/test/CodeGen/AArch64/machine-outliner-bad-adrp.mir new file mode 100644 index 00000000000..4f783af0935 --- /dev/null +++ b/llvm/test/CodeGen/AArch64/machine-outliner-bad-adrp.mir @@ -0,0 +1,41 @@ + +# RUN: llc -mtriple=aarch64--- -verify-machineinstrs -simplify-mir -run-pass=machine-outliner %s -o - | FileCheck %s +--- | + + define void @foo() #0 { + ret void + } + + attributes #0 = { noredzone } +... +--- +name: foo +constants: + - id: 0 + value: 'float 1.990000e+02' + alignment: 4 + isTargetSpecific: false +body: | + bb.0: + liveins: $w1, $w10, $x14, $x15, $x16, $x10, $lr + ; CHECK-NOT: BL + + $w10 = MOVZWi 4, 0, implicit-def $x10 + + renamable $x14 = ADRP target-flags(aarch64-page) %const.0 + renamable $x15 = ADRP target-flags(aarch64-page) %const.0 + renamable $x16 = ADRP target-flags(aarch64-page) %const.0 + + $w10 = MOVZWi 5, 0, implicit-def $x10 + + renamable $x14 = ADRP target-flags(aarch64-page) %const.0 + renamable $x15 = ADRP target-flags(aarch64-page) %const.0 + renamable $x16 = ADRP target-flags(aarch64-page) %const.0 + + $w10 = MOVZWi 6, 0, implicit-def $x10 + + renamable $x14 = ADRP target-flags(aarch64-page) %const.0 + renamable $x15 = ADRP target-flags(aarch64-page) %const.0 + renamable $x16 = ADRP target-flags(aarch64-page) %const.0 + + RET undef $lr |