[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