mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[PowerPC] Fix assert from machine verify pass that missing undef register flag
Fix assert about using an undefined physical register in machine instruction verify pass. The reason is that register flag undef is missing when doing transformation from If Conversion Pass. ``` Bad machine code: Using an undefined physical register - function: func_65 - basic block: %bb.0 entry (0x10024740738) - instruction: BCLR killed $cr5lt, implicit $lr8, implicit $rm, implicit undef $x3 - operand 0: killed $cr5lt LLVM ERROR: Found 1 machine code errors. ``` There are also other existing testcases with same issue. So I add -verify-machineinstrs option to open verifying. Differential Revision: https://reviews.llvm.org/D55408 llvm-svn: 348566
This commit is contained in:
parent
dd16b36e31
commit
699d18eb82
@ -1429,17 +1429,15 @@ bool PPCInstrInfo::PredicateInstruction(MachineInstr &MI,
|
||||
: (isPPC64 ? PPC::BDZLR8 : PPC::BDZLR)));
|
||||
} else if (Pred[0].getImm() == PPC::PRED_BIT_SET) {
|
||||
MI.setDesc(get(PPC::BCLR));
|
||||
MachineInstrBuilder(*MI.getParent()->getParent(), MI)
|
||||
.addReg(Pred[1].getReg());
|
||||
MachineInstrBuilder(*MI.getParent()->getParent(), MI).add(Pred[1]);
|
||||
} else if (Pred[0].getImm() == PPC::PRED_BIT_UNSET) {
|
||||
MI.setDesc(get(PPC::BCLRn));
|
||||
MachineInstrBuilder(*MI.getParent()->getParent(), MI)
|
||||
.addReg(Pred[1].getReg());
|
||||
MachineInstrBuilder(*MI.getParent()->getParent(), MI).add(Pred[1]);
|
||||
} else {
|
||||
MI.setDesc(get(PPC::BCCLR));
|
||||
MachineInstrBuilder(*MI.getParent()->getParent(), MI)
|
||||
.addImm(Pred[0].getImm())
|
||||
.addReg(Pred[1].getReg());
|
||||
.add(Pred[1]);
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -1454,7 +1452,7 @@ bool PPCInstrInfo::PredicateInstruction(MachineInstr &MI,
|
||||
|
||||
MI.setDesc(get(PPC::BC));
|
||||
MachineInstrBuilder(*MI.getParent()->getParent(), MI)
|
||||
.addReg(Pred[1].getReg())
|
||||
.add(Pred[1])
|
||||
.addMBB(MBB);
|
||||
} else if (Pred[0].getImm() == PPC::PRED_BIT_UNSET) {
|
||||
MachineBasicBlock *MBB = MI.getOperand(0).getMBB();
|
||||
@ -1462,7 +1460,7 @@ bool PPCInstrInfo::PredicateInstruction(MachineInstr &MI,
|
||||
|
||||
MI.setDesc(get(PPC::BCn));
|
||||
MachineInstrBuilder(*MI.getParent()->getParent(), MI)
|
||||
.addReg(Pred[1].getReg())
|
||||
.add(Pred[1])
|
||||
.addMBB(MBB);
|
||||
} else {
|
||||
MachineBasicBlock *MBB = MI.getOperand(0).getMBB();
|
||||
@ -1471,13 +1469,13 @@ bool PPCInstrInfo::PredicateInstruction(MachineInstr &MI,
|
||||
MI.setDesc(get(PPC::BCC));
|
||||
MachineInstrBuilder(*MI.getParent()->getParent(), MI)
|
||||
.addImm(Pred[0].getImm())
|
||||
.addReg(Pred[1].getReg())
|
||||
.add(Pred[1])
|
||||
.addMBB(MBB);
|
||||
}
|
||||
|
||||
return true;
|
||||
} else if (OpC == PPC::BCTR || OpC == PPC::BCTR8 ||
|
||||
OpC == PPC::BCTRL || OpC == PPC::BCTRL8) {
|
||||
} else if (OpC == PPC::BCTR || OpC == PPC::BCTR8 || OpC == PPC::BCTRL ||
|
||||
OpC == PPC::BCTRL8) {
|
||||
if (Pred[1].getReg() == PPC::CTR8 || Pred[1].getReg() == PPC::CTR)
|
||||
llvm_unreachable("Cannot predicate bctr[l] on the ctr register");
|
||||
|
||||
@ -1487,14 +1485,12 @@ bool PPCInstrInfo::PredicateInstruction(MachineInstr &MI,
|
||||
if (Pred[0].getImm() == PPC::PRED_BIT_SET) {
|
||||
MI.setDesc(get(isPPC64 ? (setLR ? PPC::BCCTRL8 : PPC::BCCTR8)
|
||||
: (setLR ? PPC::BCCTRL : PPC::BCCTR)));
|
||||
MachineInstrBuilder(*MI.getParent()->getParent(), MI)
|
||||
.addReg(Pred[1].getReg());
|
||||
MachineInstrBuilder(*MI.getParent()->getParent(), MI).add(Pred[1]);
|
||||
return true;
|
||||
} else if (Pred[0].getImm() == PPC::PRED_BIT_UNSET) {
|
||||
MI.setDesc(get(isPPC64 ? (setLR ? PPC::BCCTRL8n : PPC::BCCTR8n)
|
||||
: (setLR ? PPC::BCCTRLn : PPC::BCCTRn)));
|
||||
MachineInstrBuilder(*MI.getParent()->getParent(), MI)
|
||||
.addReg(Pred[1].getReg());
|
||||
MachineInstrBuilder(*MI.getParent()->getParent(), MI).add(Pred[1]);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -1502,7 +1498,7 @@ bool PPCInstrInfo::PredicateInstruction(MachineInstr &MI,
|
||||
: (setLR ? PPC::BCCCTRL : PPC::BCCCTR)));
|
||||
MachineInstrBuilder(*MI.getParent()->getParent(), MI)
|
||||
.addImm(Pred[0].getImm())
|
||||
.addReg(Pred[1].getReg());
|
||||
.add(Pred[1]);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: llc -O2 < %s | FileCheck %s
|
||||
; RUN: llc -O2 -verify-machineinstrs < %s | FileCheck %s
|
||||
; ModuleID = 'bugpoint-reduced-simplified.bc'
|
||||
target datalayout = "e-m:e-i64:64-n32:64"
|
||||
target triple = "powerpc64le-grtev4-linux-gnu"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: llc < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7
|
||||
; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7
|
||||
|
||||
target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
|
||||
target triple = "powerpc64-unknown-linux-gnu"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: llc < %s -mcpu=a2 | FileCheck %s
|
||||
; RUN: llc -verify-machineinstrs < %s -mcpu=a2 | FileCheck %s
|
||||
target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
|
||||
target triple = "powerpc64-unknown-linux-gnu"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: llc -mcpu=ppc32 < %s | FileCheck %s
|
||||
; RUN: llc -mcpu=ppc32 -verify-machineinstrs < %s | FileCheck %s
|
||||
target datalayout = "E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32"
|
||||
target triple = "powerpc-unknown-linux-gnu"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: llc < %s | FileCheck %s
|
||||
; RUN: llc -verify-machineinstrs < %s | FileCheck %s
|
||||
target datalayout = "E-m:e-i64:64-n32:64"
|
||||
target triple = "powerpc64-unknown-linux-gnu"
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
; RUN: llc < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 -mattr=-crbits | FileCheck %s
|
||||
; RUN: llc < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 | FileCheck %s -check-prefix=CHECK-CRB
|
||||
; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 -mattr=-crbits | FileCheck %s
|
||||
; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 | FileCheck %s -check-prefix=CHECK-CRB
|
||||
target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
|
||||
target triple = "powerpc64-unknown-linux-gnu"
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
; ModuleID = 'bugpoint-reduced-instructions.bc'
|
||||
; RUN: llc -O2 -o - %s | FileCheck %s
|
||||
; RUN: llc -O2 -o - %s -verify-machineinstrs | FileCheck %s
|
||||
source_filename = "bugpoint-output-9ad75f8.bc"
|
||||
target datalayout = "e-m:e-i64:64-n32:64"
|
||||
target triple = "powerpc64le-unknown-linux-gnu"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: llc < %s | FileCheck %s
|
||||
; RUN: llc -verify-machineinstrs < %s | FileCheck %s
|
||||
target datalayout = "E-m:e-i64:64-n32:64"
|
||||
target triple = "powerpc64-unknown-linux-gnu"
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
; RUN: llc < %s -mcpu=a2 | FileCheck %s
|
||||
; RUN: llc < %s -mcpu=a2 -disable-lsr | FileCheck -check-prefix=NOLSR %s
|
||||
; RUN: llc < %s -mcpu=a2 -verify-machineinstrs | FileCheck %s
|
||||
; RUN: llc < %s -mcpu=a2 -disable-lsr -verify-machineinstrs | FileCheck -check-prefix=NOLSR %s
|
||||
target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
|
||||
target triple = "powerpc64-unknown-linux-gnu"
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 %s -o - | FileCheck %s --check-prefix=CHECK --check-prefix=ENABLE
|
||||
; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu %s -o - -enable-shrink-wrap=false | FileCheck %s --check-prefix=CHECK --check-prefix=DISABLE
|
||||
; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 %s -o - -verify-machineinstrs | FileCheck %s --check-prefix=CHECK --check-prefix=ENABLE
|
||||
; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu %s -o - -enable-shrink-wrap=false -verify-machineinstrs | FileCheck %s --check-prefix=CHECK --check-prefix=DISABLE
|
||||
;
|
||||
; Note: Lots of tests use inline asm instead of regular calls.
|
||||
; This allows to have a better control on what the allocation will do.
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: llc < %s | FileCheck %s
|
||||
; RUN: llc -verify-machineinstrs < %s | FileCheck %s
|
||||
target datalayout = "E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32"
|
||||
target triple = "powerpc-montavista-linux-gnuspe"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: llc < %s
|
||||
; RUN: llc -verify-machineinstrs < %s
|
||||
|
||||
; This test formerly failed due to no handling for a ppc_fp128 undef.
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
; RUN: llc -mcpu=pwr8 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
|
||||
; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck \
|
||||
; RUN: llc -mcpu=pwr8 -mtriple=powerpc64le-unknown-linux-gnu < %s -verify-machineinstrs | FileCheck %s
|
||||
; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-linux-gnu < %s -verify-machineinstrs | FileCheck \
|
||||
; RUN: %s --check-prefix=CHECK-P9
|
||||
|
||||
; Verify peephole simplification of splats and swaps. Bugpoint-reduced
|
||||
|
@ -1,5 +1,5 @@
|
||||
; RUN: llc -mcpu=pwr8 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
|
||||
; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck \
|
||||
; RUN: llc -mcpu=pwr8 -mtriple=powerpc64le-unknown-linux-gnu < %s -verify-machineinstrs | FileCheck %s
|
||||
; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-linux-gnu < %s -verify-machineinstrs | FileCheck \
|
||||
; RUN: --check-prefix=CHECK-P9 %s
|
||||
|
||||
; Verify correct generation of an lxsspx rather than an invalid optimization
|
||||
|
@ -1,8 +1,8 @@
|
||||
; RUN: llc -mcpu=pwr9 -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s
|
||||
; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
|
||||
; RUN: llc -mcpu=pwr8 -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s \
|
||||
; RUN: llc -mcpu=pwr9 -mtriple=powerpc64-unknown-linux-gnu < %s -verify-machineinstrs | FileCheck %s
|
||||
; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-linux-gnu < %s -verify-machineinstrs | FileCheck %s
|
||||
; RUN: llc -mcpu=pwr8 -mtriple=powerpc64-unknown-linux-gnu < %s -verify-machineinstrs | FileCheck %s \
|
||||
; RUN: --check-prefix=CHECK-ITIN
|
||||
; RUN: llc -mcpu=pwr8 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s \
|
||||
; RUN: llc -mcpu=pwr8 -mtriple=powerpc64le-unknown-linux-gnu < %s -verify-machineinstrs | FileCheck %s \
|
||||
; RUN: --check-prefix=CHECK-ITIN
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64"
|
||||
target triple = "powerpc64-unknown-linux-gnu"
|
||||
; RUN: llc < %s | FileCheck %s
|
||||
; RUN: llc -verify-machineinstrs < %s | FileCheck %s
|
||||
|
||||
@multvec_i = external unnamed_addr global [100 x i32], align 4
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: llc -mcpu=pwr7 < %s | FileCheck %s
|
||||
; RUN: llc -mcpu=pwr7 < %s -verify-machineinstrs | FileCheck %s
|
||||
target datalayout = "E-m:e-i64:64-n32:64"
|
||||
target triple = "powerpc64-unknown-linux-gnu"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: llc < %s | FileCheck %s
|
||||
; RUN: llc < %s -verify-machineinstrs | FileCheck %s
|
||||
target datalayout = "e-m:e-i64:64-n32:64"
|
||||
target triple = "powerpc64le-unknown-linux-gnu"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: llc -o - -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
|
||||
; RUN: llc -verify-machineinstrs -o - -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
|
||||
|
||||
define void @ILLBeBack() #0 {
|
||||
; CHECK-LABEL @ILLBeBack
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: llc < %s | FileCheck %s
|
||||
; RUN: llc < %s -verify-machineinstrs | FileCheck %s
|
||||
target datalayout = "e-m:e-i64:64-n32:64"
|
||||
target triple = "powerpc64le-unknown-linux-gnu"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user