[llvm] a3f6233 - [AArch64] Add test case where machine outliner breaks up a bundle.

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 12 08:16:20 PST 2021


Author: Florian Hahn
Date: 2021-02-12T16:16:03Z
New Revision: a3f6233fa4b403e3f51c97c0bc0ecbcb93901aad

URL: https://github.com/llvm/llvm-project/commit/a3f6233fa4b403e3f51c97c0bc0ecbcb93901aad
DIFF: https://github.com/llvm/llvm-project/commit/a3f6233fa4b403e3f51c97c0bc0ecbcb93901aad.diff

LOG: [AArch64] Add test case where machine outliner breaks up a bundle.

This is a backend test for PR49082.

Added: 
    llvm/test/CodeGen/AArch64/rvmarker-pseudo-expansion-and-outlining.mir

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/AArch64/rvmarker-pseudo-expansion-and-outlining.mir b/llvm/test/CodeGen/AArch64/rvmarker-pseudo-expansion-and-outlining.mir
new file mode 100644
index 000000000000..4c274721ae41
--- /dev/null
+++ b/llvm/test/CodeGen/AArch64/rvmarker-pseudo-expansion-and-outlining.mir
@@ -0,0 +1,75 @@
+# RUN: llc -enable-machine-outliner -start-before=aarch64-expand-pseudo -mtriple=arm64-apple-ios -o - %s | FileCheck %s
+#
+# FIXME: The calls to _cb1 & _cb2 should be followed by the marker instruction
+#        'mov x29, x29'. The marker should not get outlined.
+#
+# CHECK-LABEL: _fn1:
+# CHECK:       bb.0:
+# CHECK:        bl _cb1
+# CHECK-NEXT:   bl _OUTLINED_FUNCTION_0
+#
+# CHECK-LABEL: _fn2:
+# CHECK:       bb.0:
+# CHECK:        bl _cb2
+# CHECK-NEXT:   bl _OUTLINED_FUNCTION_0
+#
+# CHECK-LABEL: _OUTLINED_FUNCTION_0:
+# CHECK:       bb.0:
+# CHECK-NEXT:    mov x29, x29
+# CHECK-NEXT:    orr w12, wzr, #0x3
+# CHECK-NEXT:    orr w12, wzr, #0x3
+# CHECK-NEXT:    orr w12, wzr, #0x3
+# CHECK-NEXT:    ret
+
+--- |
+  target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
+  target triple = "arm64-apple-ios"
+
+  define void @fn1() {
+    ret void
+  }
+
+  define void @fn2() {
+    ret void
+  }
+
+  declare void @cb1()
+
+  declare void @cb2()
+...
+---
+name:            fn1
+tracksRegLiveness: true
+machineFunctionInfo:
+  hasRedZone:      false
+body:             |
+  bb.0:
+    liveins: $lr
+
+    BLR_RVMARKER @cb1, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $x0
+    $w12 = ORRWri $wzr, 1
+    $w12 = ORRWri $wzr, 1
+    $w12 = ORRWri $wzr, 1
+    $w12 = ORRWri $wzr, 1
+    $lr = ORRXri $xzr, 1
+
+    RET undef $lr
+...
+---
+name:            fn2
+tracksRegLiveness: true
+machineFunctionInfo:
+  hasRedZone:      false
+body:             |
+  bb.0:
+    liveins: $lr, $x19, $x20, $lr
+
+    BLR_RVMARKER @cb2, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $x0
+    $w12 = ORRWri $wzr, 1
+    $w12 = ORRWri $wzr, 1
+    $w12 = ORRWri $wzr, 1
+    $w12 = ORRWri $wzr, 1
+    $lr = ORRXri $xzr, 1
+
+    RET undef $lr
+...


        


More information about the llvm-commits mailing list