[llvm] 0c29d3f - [Tests] Precommit tests showing default branch padding on skylake
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 10 11:54:20 PST 2020
Author: Philip Reames
Date: 2020-01-10T11:54:14-08:00
New Revision: 0c29d3ff2233696f663ae34a8aeda23c750ac68f
URL: https://github.com/llvm/llvm-project/commit/0c29d3ff2233696f663ae34a8aeda23c750ac68f
DIFF: https://github.com/llvm/llvm-project/commit/0c29d3ff2233696f663ae34a8aeda23c750ac68f.diff
LOG: [Tests] Precommit tests showing default branch padding on skylake
A follow up patch will change the default for the compiler, but not the assembler, just making sure we have testing for each in place.
Added:
llvm/test/CodeGen/X86/align-branch-boundary-default.ll
llvm/test/CodeGen/X86/align-branch-boundary-default.s
Modified:
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/X86/align-branch-boundary-default.ll b/llvm/test/CodeGen/X86/align-branch-boundary-default.ll
new file mode 100644
index 000000000000..d611f39b2f4d
--- /dev/null
+++ b/llvm/test/CodeGen/X86/align-branch-boundary-default.ll
@@ -0,0 +1,37 @@
+; RUN: llc -verify-machineinstrs -O3 -mcpu=skylake -filetype=obj < %s | llvm-objdump -d --no-show-raw-insn - | FileCheck %s
+
+; TODO: At the moment, autopadding for SKX102 is not the default, but
+; eventually we'd like ti to be for the integrated assembler (only).
+
+target datalayout = "e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-pc-linux-gnu"
+
+define void @test(i1 %c) {
+; CHECK: 0: pushq
+; CHECK-NEXT: 1: movl
+; CHECK-NEXT: 3: callq
+; CHECK-NEXT: 8: callq
+; CHECK-NEXT: d: callq
+; CHECK-NEXT: 12: callq
+; CHECK-NEXT: 17: callq
+; TODO: want a nop here
+; CHECK-NEXT: 1c: testb
+; CHECK-NEXT: 1f: je
+entry:
+ call void @foo()
+ call void @foo()
+ call void @foo()
+ call void @foo()
+ call void @foo()
+ br i1 %c, label %taken, label %untaken
+
+taken:
+ call void @foo()
+ ret void
+untaken:
+ call void @bar()
+ ret void
+}
+
+declare void @foo()
+declare void @bar()
diff --git a/llvm/test/CodeGen/X86/align-branch-boundary-default.s b/llvm/test/CodeGen/X86/align-branch-boundary-default.s
new file mode 100644
index 000000000000..b44f5b60c1e1
--- /dev/null
+++ b/llvm/test/CodeGen/X86/align-branch-boundary-default.s
@@ -0,0 +1,38 @@
+# RUN: llvm-mc -mcpu=skylake -filetype=obj < %s | llvm-objdump -d --no-show-raw-insn - | FileCheck %s
+
+# The textual assembler *can't* default to autopadding as there's no syntax
+# to selectively disable it just yet.
+# CHECK: 0: pushq
+# CHECK-NEXT: 1: movl
+# CHECK-NEXT: 3: callq
+# CHECK-NEXT: 8: callq
+# CHECK-NEXT: d: callq
+# CHECK-NEXT: 12: callq
+# CHECK-NEXT: 17: callq
+# No NOP
+# CHECK-NEXT: 1c: testb
+# CHECK-NEXT: 1f: je
+
+ .text
+ .globl test
+ .p2align 4, 0x90
+ .type test, at function
+test: # @test
+# %bb.0: # %entry
+ pushq %rbx
+ movl %edi, %ebx
+ callq foo
+ callq foo
+ callq foo
+ callq foo
+ callq foo
+ testb $1, %bl
+ je .LBB0_2
+# %bb.1: # %taken
+ callq foo
+ popq %rbx
+ retq
+.LBB0_2: # %untaken
+ callq bar
+ popq %rbx
+ retq
More information about the llvm-commits
mailing list