diff options
author | Eli Bendersky <eliben@google.com> | 2012-12-20 19:07:30 +0000 |
---|---|---|
committer | Eli Bendersky <eliben@google.com> | 2012-12-20 19:07:30 +0000 |
commit | 16996c4940ad4248dc2a874d060b30e94e55b672 (patch) | |
tree | ebad7a2df61d26d9fbbba91bb3353beaab52df57 /test/MC/X86/AlignedBundling/relax-in-bundle-group.s | |
parent | 4766ef41b31e4f97bce1179c3b0398303bf65356 (diff) | |
download | external_llvm-16996c4940ad4248dc2a874d060b30e94e55b672.zip external_llvm-16996c4940ad4248dc2a874d060b30e94e55b672.tar.gz external_llvm-16996c4940ad4248dc2a874d060b30e94e55b672.tar.bz2 |
Tests for the aligned bundling support added in r170718
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170719 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC/X86/AlignedBundling/relax-in-bundle-group.s')
-rw-r--r-- | test/MC/X86/AlignedBundling/relax-in-bundle-group.s | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/test/MC/X86/AlignedBundling/relax-in-bundle-group.s b/test/MC/X86/AlignedBundling/relax-in-bundle-group.s new file mode 100644 index 0000000..0a99bb5 --- /dev/null +++ b/test/MC/X86/AlignedBundling/relax-in-bundle-group.s @@ -0,0 +1,42 @@ +# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ +# RUN: | llvm-objdump -disassemble - | FileCheck %s + +# Test that instructions inside bundle-locked groups are relaxed even if their +# fixup is short enough not to warrant relaxation on its own. + + .text +foo: + .bundle_align_mode 4 + pushq %rbp + + movl %edi, %ebx + callq bar + movl %eax, %r14d + imull $17, %ebx, %ebp + movl %ebx, %edi + callq bar + cmpl %r14d, %ebp + .bundle_lock + + jle .L_ELSE +# This group would've started at 0x18 and is too long, so a chunky NOP padding +# is inserted to push it to 0x20. +# CHECK: 18: {{[a-f0-9 ]+}} nopl + +# The long encoding for JLE should be used here even though its target is close +# CHECK-NEXT: 20: 0f 8e + + addl %ebp, %eax + + jmp .L_RET +# Same for the JMP +# CHECK: 28: e9 + + .bundle_unlock + +.L_ELSE: + imull %ebx, %eax +.L_RET: + + popq %rbx + |