summaryrefslogtreecommitdiffstats
path: root/llvm/test/MC/X86
diff options
context:
space:
mode:
authorPetr Hosek <phosek@chromium.org>2015-04-12 23:42:25 +0000
committerPetr Hosek <phosek@chromium.org>2015-04-12 23:42:25 +0000
commit9e0c890f3ee7908a61375678c5910a35dce85d85 (patch)
tree0fa5f8b333b06a330326ad29cc5fcf1dc1d17c07 /llvm/test/MC/X86
parentf8206cf6d49744020cec8ed1cb2ea520be5d430f (diff)
downloadbcm5719-llvm-9e0c890f3ee7908a61375678c5910a35dce85d85.tar.gz
bcm5719-llvm-9e0c890f3ee7908a61375678c5910a35dce85d85.zip
[MC] Write padding into fragments when -mc-relax-all flag is used
Summary: When instruction bundling is enabled and the -mc-relax-all flag is set, we can write bundle padding directly into fragments and avoid creating large number of fragments significantly reducing LLVM MC memory usage. Test Plan: Regression test attached Reviewers: eliben Subscribers: jfb, mseaborn Differential Revision: http://reviews.llvm.org/D8072 llvm-svn: 234714
Diffstat (limited to 'llvm/test/MC/X86')
-rw-r--r--llvm/test/MC/X86/AlignedBundling/bundle-group-too-large-error.s1
-rw-r--r--llvm/test/MC/X86/AlignedBundling/different-sections.s2
-rw-r--r--llvm/test/MC/X86/AlignedBundling/labeloffset.s2
-rw-r--r--llvm/test/MC/X86/AlignedBundling/long-nop-pad.s2
-rw-r--r--llvm/test/MC/X86/AlignedBundling/nesting.s2
-rw-r--r--llvm/test/MC/X86/AlignedBundling/pad-align-to-bundle-end.s2
-rw-r--r--llvm/test/MC/X86/AlignedBundling/pad-bundle-groups.s2
-rw-r--r--llvm/test/MC/X86/AlignedBundling/relax-at-bundle-end.s2
-rw-r--r--llvm/test/MC/X86/AlignedBundling/relax-in-bundle-group.s2
-rw-r--r--llvm/test/MC/X86/AlignedBundling/single-inst-bundling.s13
10 files changed, 26 insertions, 4 deletions
diff --git a/llvm/test/MC/X86/AlignedBundling/bundle-group-too-large-error.s b/llvm/test/MC/X86/AlignedBundling/bundle-group-too-large-error.s
index a9a78a79569..5ce788098f3 100644
--- a/llvm/test/MC/X86/AlignedBundling/bundle-group-too-large-error.s
+++ b/llvm/test/MC/X86/AlignedBundling/bundle-group-too-large-error.s
@@ -1,4 +1,5 @@
# RUN: not llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - 2>&1 | FileCheck %s
+# RUN: not llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mc-relax-all %s -o - 2>&1 | FileCheck %s
# CHECK: ERROR: Fragment can't be larger than a bundle size
diff --git a/llvm/test/MC/X86/AlignedBundling/different-sections.s b/llvm/test/MC/X86/AlignedBundling/different-sections.s
index 3e9fcf376d2..e1215321004 100644
--- a/llvm/test/MC/X86/AlignedBundling/different-sections.s
+++ b/llvm/test/MC/X86/AlignedBundling/different-sections.s
@@ -1,5 +1,7 @@
# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
# RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck %s
+# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mc-relax-all %s -o - \
+# RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck %s
# Test two different executable sections with bundling.
diff --git a/llvm/test/MC/X86/AlignedBundling/labeloffset.s b/llvm/test/MC/X86/AlignedBundling/labeloffset.s
index 65a008651f1..5b2efe07965 100644
--- a/llvm/test/MC/X86/AlignedBundling/labeloffset.s
+++ b/llvm/test/MC/X86/AlignedBundling/labeloffset.s
@@ -2,6 +2,8 @@
# RUN: llvm-objdump -disassemble -no-show-raw-insn -r - | FileCheck %s
# RUN: llvm-mc -triple=i686-nacl -filetype=obj %s -o - | \
# RUN: llvm-objdump -disassemble -no-show-raw-insn -r - | FileCheck %s
+# RUN: llvm-mc -triple=i686-nacl -filetype=obj -mc-relax-all %s -o - | \
+# RUN: llvm-objdump -disassemble -no-show-raw-insn -r - | FileCheck %s
.bundle_align_mode 5
.text
diff --git a/llvm/test/MC/X86/AlignedBundling/long-nop-pad.s b/llvm/test/MC/X86/AlignedBundling/long-nop-pad.s
index 9b1ec1184b0..36e4f4b553f 100644
--- a/llvm/test/MC/X86/AlignedBundling/long-nop-pad.s
+++ b/llvm/test/MC/X86/AlignedBundling/long-nop-pad.s
@@ -1,5 +1,7 @@
# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
# RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck %s
+# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mc-relax-all %s -o - \
+# RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck %s
# Test that long nops are generated for padding where possible.
diff --git a/llvm/test/MC/X86/AlignedBundling/nesting.s b/llvm/test/MC/X86/AlignedBundling/nesting.s
index 8996170a1d1..74b8fe9ff49 100644
--- a/llvm/test/MC/X86/AlignedBundling/nesting.s
+++ b/llvm/test/MC/X86/AlignedBundling/nesting.s
@@ -1,5 +1,7 @@
# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
# RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck %s
+# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mc-relax-all %s -o - \
+# RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck %s
# Will be bundle-aligning to 16 byte boundaries
.bundle_align_mode 4
diff --git a/llvm/test/MC/X86/AlignedBundling/pad-align-to-bundle-end.s b/llvm/test/MC/X86/AlignedBundling/pad-align-to-bundle-end.s
index 6ca4046f0c7..158cde8cd45 100644
--- a/llvm/test/MC/X86/AlignedBundling/pad-align-to-bundle-end.s
+++ b/llvm/test/MC/X86/AlignedBundling/pad-align-to-bundle-end.s
@@ -1,5 +1,7 @@
# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
# RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck %s
+# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mc-relax-all %s -o - \
+# RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck %s
# Test some variations of padding to the end of a bundle.
diff --git a/llvm/test/MC/X86/AlignedBundling/pad-bundle-groups.s b/llvm/test/MC/X86/AlignedBundling/pad-bundle-groups.s
index b65ee7a5cc7..7a9e30c053e 100644
--- a/llvm/test/MC/X86/AlignedBundling/pad-bundle-groups.s
+++ b/llvm/test/MC/X86/AlignedBundling/pad-bundle-groups.s
@@ -1,5 +1,7 @@
# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
# RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck %s
+# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mc-relax-all %s -o - \
+# RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck %s
# Test some variations of padding for bundle-locked groups.
diff --git a/llvm/test/MC/X86/AlignedBundling/relax-at-bundle-end.s b/llvm/test/MC/X86/AlignedBundling/relax-at-bundle-end.s
index ab4affbbeac..f59ecb08a3d 100644
--- a/llvm/test/MC/X86/AlignedBundling/relax-at-bundle-end.s
+++ b/llvm/test/MC/X86/AlignedBundling/relax-at-bundle-end.s
@@ -1,5 +1,7 @@
# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
# RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck %s
+# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mc-relax-all %s -o - \
+# RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck %s
# Test that an instruction near a bundle end gets properly padded
# after it is relaxed.
diff --git a/llvm/test/MC/X86/AlignedBundling/relax-in-bundle-group.s b/llvm/test/MC/X86/AlignedBundling/relax-in-bundle-group.s
index 0a99bb5ce56..d07619063f0 100644
--- a/llvm/test/MC/X86/AlignedBundling/relax-in-bundle-group.s
+++ b/llvm/test/MC/X86/AlignedBundling/relax-in-bundle-group.s
@@ -1,5 +1,7 @@
# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
# RUN: | llvm-objdump -disassemble - | FileCheck %s
+# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mc-relax-all %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.
diff --git a/llvm/test/MC/X86/AlignedBundling/single-inst-bundling.s b/llvm/test/MC/X86/AlignedBundling/single-inst-bundling.s
index c0275f4d1ec..a7df2c96a8e 100644
--- a/llvm/test/MC/X86/AlignedBundling/single-inst-bundling.s
+++ b/llvm/test/MC/X86/AlignedBundling/single-inst-bundling.s
@@ -1,5 +1,7 @@
# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \
-# RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck %s
+# RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck -check-prefix=CHECK -check-prefix=CHECK-OPT %s
+# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mc-relax-all %s -o - \
+# RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck -check-prefix=CHECK -check-prefix=CHECK-RELAX %s
# Test simple NOP insertion for single instructions.
@@ -24,14 +26,17 @@ foo:
movl %ebx, %edi
callq bar
cmpl %r14d, %ebp
+# CHECK-RELAX: nopl
jle .L_ELSE
# Due to the padding that's inserted before the addl, the jump target
# becomes farther by one byte.
-# CHECK: jle 5
+# CHECK-OPT: jle 5
+# CHECK-RELAX: jle 7
addl %ebp, %eax
-# CHECK: nop
-# CHECK-NEXT: 20: addl
+# CHECK-OPT: nop
+# CHECK-OPT-NEXT:20: addl
+# CHECK-RELAX: 26: addl
jmp .L_RET
.L_ELSE:
OpenPOWER on IntegriCloud