From 2519ee70810c561ce40e5e4e57a9c083d30faf67 Mon Sep 17 00:00:00 2001 From: Jessica Paquette Date: Tue, 27 Mar 2018 22:23:48 +0000 Subject: [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 --- .../CodeGen/AArch64/machine-outliner-bad-adrp.mir | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 llvm/test/CodeGen/AArch64/machine-outliner-bad-adrp.mir (limited to 'llvm/test') 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 -- cgit v1.2.3