summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen
diff options
context:
space:
mode:
authorJonas Paulsson <paulsson@linux.vnet.ibm.com>2017-06-23 14:30:46 +0000
committerJonas Paulsson <paulsson@linux.vnet.ibm.com>2017-06-23 14:30:46 +0000
commit82f15a71688c9a04217ae56121bde0e13b85b745 (patch)
tree11c00561faf1e891396397298e23e683c04c2a32 /llvm/test/CodeGen
parent91eed9ac1ac15c0a19cc85c03b210b413d2e798e (diff)
downloadbcm5719-llvm-82f15a71688c9a04217ae56121bde0e13b85b745.tar.gz
bcm5719-llvm-82f15a71688c9a04217ae56121bde0e13b85b745.zip
[SystemZ] Fix trap issue and enable expensive checks.
The isBarrier/isTerminator flags have been removed from the SystemZ trap instructions, so that tests do not fail with EXPENSIVE_CHECKS. This was just an issue at -O0 and did not affect code output on benchmarks. (Like Eli pointed out: "targets are split over whether they consider their "trap" a terminator; x86, AArch64, and NVPTX don't, but ARM, MIPS, PPC, and SystemZ do. We should probably try to be consistent here.". This is still the case, although SystemZ has switched sides). SystemZ now returns true in isMachineVerifierClean() :-) These Generic tests have been modified so that they can be run with or without EXPENSIVE_CHECKS: CodeGen/Generic/llc-start-stop.ll and CodeGen/Generic/print-machineinstrs.ll Review: Ulrich Weigand, Simon Pilgrim, Eli Friedman https://bugs.llvm.org/show_bug.cgi?id=33047 https://reviews.llvm.org/D34143 llvm-svn: 306106
Diffstat (limited to 'llvm/test/CodeGen')
-rw-r--r--llvm/test/CodeGen/Generic/llc-start-stop.ll5
-rw-r--r--llvm/test/CodeGen/Generic/print-machineinstrs.ll27
-rw-r--r--llvm/test/CodeGen/SystemZ/trap-02.ll4
3 files changed, 26 insertions, 10 deletions
diff --git a/llvm/test/CodeGen/Generic/llc-start-stop.ll b/llvm/test/CodeGen/Generic/llc-start-stop.ll
index 49407fbb2d8..becd1cc453c 100644
--- a/llvm/test/CodeGen/Generic/llc-start-stop.ll
+++ b/llvm/test/CodeGen/Generic/llc-start-stop.ll
@@ -1,7 +1,10 @@
-; RUN: llc < %s -debug-pass=Structure -stop-after=loop-reduce -o /dev/null 2>&1 | FileCheck %s -check-prefix=STOP-AFTER
+; Note: -verify-machineinstrs is used in order to make this test compatible with EXPENSIVE_CHECKS.
+; RUN: llc < %s -debug-pass=Structure -stop-after=loop-reduce -verify-machineinstrs -o /dev/null 2>&1 \
+; RUN: | FileCheck %s -check-prefix=STOP-AFTER
; STOP-AFTER: -loop-reduce
; STOP-AFTER: Dominator Tree Construction
; STOP-AFTER: Loop Strength Reduction
+; STOP-AFTER-NEXT: Verify generated machine code
; STOP-AFTER-NEXT: MIR Printing Pass
; RUN: llc < %s -debug-pass=Structure -stop-before=loop-reduce -o /dev/null 2>&1 | FileCheck %s -check-prefix=STOP-BEFORE
diff --git a/llvm/test/CodeGen/Generic/print-machineinstrs.ll b/llvm/test/CodeGen/Generic/print-machineinstrs.ll
index 26bccaae572..b33e0929edc 100644
--- a/llvm/test/CodeGen/Generic/print-machineinstrs.ll
+++ b/llvm/test/CodeGen/Generic/print-machineinstrs.ll
@@ -1,12 +1,25 @@
-; RUN: llc < %s -O3 -debug-pass=Structure -print-machineinstrs=branch-folder -o /dev/null 2>&1 | FileCheck %s
-; RUN: llc < %s -O3 -debug-pass=Structure -print-machineinstrs -o /dev/null 2>&1 | FileCheck %s
-; RUN: llc < %s -O3 -debug-pass=Structure -print-machineinstrs= -o /dev/null 2>&1 | FileCheck %s
+; RUN: llc < %s -O3 -debug-pass=Structure -print-machineinstrs=branch-folder -verify-machineinstrs -o /dev/null 2>&1 \
+; RUN: | FileCheck %s -check-prefix=PRINT-BRANCH-FOLD
+; RUN: llc < %s -O3 -debug-pass=Structure -print-machineinstrs -verify-machineinstrs -o /dev/null 2>&1 \
+; RUN: | FileCheck %s -check-prefix=PRINT
+; RUN: llc < %s -O3 -debug-pass=Structure -print-machineinstrs= -verify-machineinstrs -o /dev/null 2>&1 \
+; RUN: | FileCheck %s -check-prefix=PRINT
+
+; Note: -verify-machineinstrs is used in order to make this test compatible with EXPENSIVE_CHECKS.
define i64 @foo(i64 %a, i64 %b) nounwind {
-; CHECK: -branch-folder -machineinstr-printer
-; CHECK: Control Flow Optimizer
-; CHECK-NEXT: MachineFunction Printer
-; CHECK: Machine code for function foo:
+; PRINT-BRANCH-FOLD: -branch-folder -machineverifier -machineinstr-printer
+; PRINT-BRANCH-FOLD: Control Flow Optimizer
+; PRINT-BRANCH-FOLD-NEXT: Verify generated machine code
+; PRINT-BRANCH-FOLD-NEXT: MachineFunction Printer
+; PRINT-BRANCH-FOLD: Machine code for function foo:
+
+; PRINT: -branch-folder -machineinstr-printer
+; PRINT: Control Flow Optimizer
+; PRINT-NEXT: MachineFunction Printer
+; PRINT-NEXT: Verify generated machine code
+; PRINT: Machine code for function foo:
+
%c = add i64 %a, %b
%d = trunc i64 %c to i32
%e = zext i32 %d to i64
diff --git a/llvm/test/CodeGen/SystemZ/trap-02.ll b/llvm/test/CodeGen/SystemZ/trap-02.ll
index 5fdb87c292d..fed419f373e 100644
--- a/llvm/test/CodeGen/SystemZ/trap-02.ll
+++ b/llvm/test/CodeGen/SystemZ/trap-02.ll
@@ -47,9 +47,9 @@ if.end: ; preds = %entry
define i32 @f3(i32 zeroext %a, i32 *%base, i64 %offset) {
; CHECK-LABEL: f3:
; CHECK: cl %r2, 0(%r{{[0-5]}},%r3)
+; CHECK: lhi %r2, 0
; CHECK-LABEL: .Ltmp0
; CHECK: jh .Ltmp0+2
-; CHECK: lhi %r2, 0
; CHECK: br %r14
entry:
%ptr = getelementptr i32, i32 *%base, i64 %offset
@@ -70,9 +70,9 @@ if.end: ; preds = %entry
define i64 @f4(i64 %a, i64 *%base, i64 %offset) {
; CHECK-LABEL: f4:
; CHECK: clg %r2, 0(%r{{[0-5]}},%r3)
+; CHECK: lghi %r2, 0
; CHECK-LABEL: .Ltmp1
; CHECK: jh .Ltmp1+2
-; CHECK: lghi %r2, 0
; CHECK: br %r14
entry:
%ptr = getelementptr i64, i64 *%base, i64 %offset
OpenPOWER on IntegriCloud