diff options
-rw-r--r-- | llvm/lib/Target/SystemZ/SystemZInstrInfo.td | 9 | ||||
-rw-r--r-- | llvm/lib/Target/SystemZ/SystemZTargetMachine.h | 2 | ||||
-rw-r--r-- | llvm/test/CodeGen/Generic/llc-start-stop.ll | 5 | ||||
-rw-r--r-- | llvm/test/CodeGen/Generic/print-machineinstrs.ll | 27 | ||||
-rw-r--r-- | llvm/test/CodeGen/SystemZ/trap-02.ll | 4 |
5 files changed, 29 insertions, 18 deletions
diff --git a/llvm/lib/Target/SystemZ/SystemZInstrInfo.td b/llvm/lib/Target/SystemZ/SystemZInstrInfo.td index fa5ecdd8524..fdfa3f891df 100644 --- a/llvm/lib/Target/SystemZ/SystemZInstrInfo.td +++ b/llvm/lib/Target/SystemZ/SystemZInstrInfo.td @@ -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>; diff --git a/llvm/lib/Target/SystemZ/SystemZTargetMachine.h b/llvm/lib/Target/SystemZ/SystemZTargetMachine.h index eb2f17a2091..a10ca64fa63 100644 --- a/llvm/lib/Target/SystemZ/SystemZTargetMachine.h +++ b/llvm/lib/Target/SystemZ/SystemZTargetMachine.h @@ -51,8 +51,6 @@ public: } bool targetSchedulesPostRAScheduling() const override { return true; }; - - bool isMachineVerifierClean() const override { return false; } }; } // end namespace llvm 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 |