mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-29 16:04:33 +00:00
Don't clear or sign extend bool->int. This fires a few dozen times on the test suite
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17147 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a30dd79be8
commit
0797d4905a
@ -3048,6 +3048,23 @@ void PPC32ISel::emitCastOperation(MachineBasicBlock *MBB,
|
||||
unsigned DestClass = getClassB(DestTy);
|
||||
unsigned SrcReg = getReg(Src, MBB, IP);
|
||||
|
||||
// Implement casts from bool to integer types as a move operation
|
||||
if (SrcTy == Type::BoolTy) {
|
||||
switch (DestClass) {
|
||||
case cByte:
|
||||
case cShort:
|
||||
case cInt:
|
||||
BuildMI(*MBB, IP, PPC::OR, 2, DestReg).addReg(SrcReg).addReg(SrcReg);
|
||||
return;
|
||||
case cLong:
|
||||
BuildMI(*MBB, IP, PPC::LI, 1, DestReg).addImm(0);
|
||||
BuildMI(*MBB, IP, PPC::OR, 2, DestReg+1).addReg(SrcReg).addReg(SrcReg);
|
||||
return;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Implement casts to bool by using compare on the operand followed by set if
|
||||
// not zero on the result.
|
||||
if (DestTy == Type::BoolTy) {
|
||||
|
Loading…
Reference in New Issue
Block a user