[llvm] r306106 - [SystemZ] Fix trap issue and enable expensive checks.

Krzysztof Parzyszek via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 23 10:49:34 PDT 2017


Hi Jonas,
This broke Hexagon bots:

http://lab.llvm.org:8011/builders/llvm-hexagon-elf/builds/7304

-Krzysztof


On 6/23/2017 9:30 AM, Jonas Paulsson via llvm-commits wrote:
> Author: jonpa
> Date: Fri Jun 23 09:30:46 2017
> New Revision: 306106
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=306106&view=rev
> Log:
> [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
> 
> Modified:
>      llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.td
>      llvm/trunk/lib/Target/SystemZ/SystemZTargetMachine.h
>      llvm/trunk/test/CodeGen/Generic/llc-start-stop.ll
>      llvm/trunk/test/CodeGen/Generic/print-machineinstrs.ll
>      llvm/trunk/test/CodeGen/SystemZ/trap-02.ll
> 
> Modified: llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.td?rev=306106&r1=306105&r2=306106&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.td (original)
> +++ llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.td Fri Jun 23 09:30:46 2017
> @@ -189,18 +189,15 @@ let isBranch = 1, isTerminator = 1 in {
>   //===----------------------------------------------------------------------===//
>   
>   // Unconditional trap.
> -// FIXME: This trap instruction should be marked as isTerminator, but there is
> -// currently a general bug that allows non-terminators to be placed between
> -// terminators. Temporarily leave this unmarked until the bug is fixed.
> -let isBarrier = 1, hasCtrlDep = 1 in
> +let hasCtrlDep = 1 in
>     def Trap : Alias<4, (outs), (ins), [(trap)]>;
>   
>   // Conditional trap.
> -let isTerminator = 1, hasCtrlDep = 1, Uses = [CC] in
> +let hasCtrlDep = 1, Uses = [CC] in
>     def CondTrap : Alias<4, (outs), (ins cond4:$valid, cond4:$R1), []>;
>   
>   // Fused compare-and-trap instructions.
> -let isTerminator = 1, hasCtrlDep = 1 in {
> +let hasCtrlDep = 1 in {
>     // These patterns work the same way as for compare-and-branch.
>     defm CRT   : CmpBranchRRFcPair<"crt",   0xB972, GR32>;
>     defm CGRT  : CmpBranchRRFcPair<"cgrt",  0xB960, GR64>;
> 
> Modified: llvm/trunk/lib/Target/SystemZ/SystemZTargetMachine.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/SystemZ/SystemZTargetMachine.h?rev=306106&r1=306105&r2=306106&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/SystemZ/SystemZTargetMachine.h (original)
> +++ llvm/trunk/lib/Target/SystemZ/SystemZTargetMachine.h Fri Jun 23 09:30:46 2017
> @@ -51,8 +51,6 @@ public:
>     }
>   
>     bool targetSchedulesPostRAScheduling() const override { return true; };
> -
> -  bool isMachineVerifierClean() const override { return false; }
>   };
>   
>   } // end namespace llvm
> 
> Modified: llvm/trunk/test/CodeGen/Generic/llc-start-stop.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/llc-start-stop.ll?rev=306106&r1=306105&r2=306106&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/Generic/llc-start-stop.ll (original)
> +++ llvm/trunk/test/CodeGen/Generic/llc-start-stop.ll Fri Jun 23 09:30:46 2017
> @@ -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
> 
> Modified: llvm/trunk/test/CodeGen/Generic/print-machineinstrs.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/print-machineinstrs.ll?rev=306106&r1=306105&r2=306106&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/Generic/print-machineinstrs.ll (original)
> +++ llvm/trunk/test/CodeGen/Generic/print-machineinstrs.ll Fri Jun 23 09:30:46 2017
> @@ -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
> 
> Modified: llvm/trunk/test/CodeGen/SystemZ/trap-02.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/SystemZ/trap-02.ll?rev=306106&r1=306105&r2=306106&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/SystemZ/trap-02.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/trap-02.ll Fri Jun 23 09:30:46 2017
> @@ -47,9 +47,9 @@ if.end:
>   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:
>   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
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> 

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, 
hosted by The Linux Foundation


More information about the llvm-commits mailing list