aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/AArch64/branch-relax-alignment.ll
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2017-01-02 19:17:04 +0000
committerDimitry Andric <dim@FreeBSD.org>2017-01-02 19:17:04 +0000
commitb915e9e0fc85ba6f398b3fab0db6a81a8913af94 (patch)
tree98b8f811c7aff2547cab8642daf372d6c59502fb /test/CodeGen/AArch64/branch-relax-alignment.ll
parent6421cca32f69ac849537a3cff78c352195e99f1b (diff)
Notes
Diffstat (limited to 'test/CodeGen/AArch64/branch-relax-alignment.ll')
-rw-r--r--test/CodeGen/AArch64/branch-relax-alignment.ll29
1 files changed, 29 insertions, 0 deletions
diff --git a/test/CodeGen/AArch64/branch-relax-alignment.ll b/test/CodeGen/AArch64/branch-relax-alignment.ll
new file mode 100644
index 000000000000..7135dff7f573
--- /dev/null
+++ b/test/CodeGen/AArch64/branch-relax-alignment.ll
@@ -0,0 +1,29 @@
+; RUN: llc -mtriple=aarch64-apple-darwin -aarch64-bcc-offset-bits=4 -align-all-nofallthru-blocks=4 < %s | FileCheck %s
+
+; Long branch is assumed because the block has a higher alignment
+; requirement than the function.
+
+; CHECK-LABEL: invert_bcc_block_align_higher_func:
+; CHECK: b.eq [[JUMP_BB1:LBB[0-9]+_[0-9]+]]
+; CHECK-NEXT: b [[JUMP_BB2:LBB[0-9]+_[0-9]+]]
+
+; CHECK: [[JUMP_BB1]]:
+; CHECK: ret
+; CHECK: .p2align 4
+
+; CHECK: [[JUMP_BB2]]:
+; CHECK: ret
+define i32 @invert_bcc_block_align_higher_func(i32 %x, i32 %y) align 4 #0 {
+ %1 = icmp eq i32 %x, %y
+ br i1 %1, label %bb1, label %bb2
+
+bb2:
+ store volatile i32 9, i32* undef
+ ret i32 1
+
+bb1:
+ store volatile i32 42, i32* undef
+ ret i32 0
+}
+
+attributes #0 = { nounwind }