diff options
| author | Nate Begeman <natebegeman@mac.com> | 2004-09-29 03:45:33 +0000 |
|---|---|---|
| committer | Nate Begeman <natebegeman@mac.com> | 2004-09-29 03:45:33 +0000 |
| commit | 7b6df6def2b67d7d4f303cfde987d65ff9a24edb (patch) | |
| tree | 0462a6fb51e53fd52c9730a4670f37f8e3b52224 | |
| parent | 4023d4e1914f466148ad246dd304d434505430dc (diff) | |
| download | bcm5719-llvm-7b6df6def2b67d7d4f303cfde987d65ff9a24edb.tar.gz bcm5719-llvm-7b6df6def2b67d7d4f303cfde987d65ff9a24edb.zip | |
improve Type::BoolTy codegen by eliminating unnecessary clears and sign extends
llvm-svn: 16578
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp b/llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp index afb96f732d3..9f1229a53b2 100644 --- a/llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp +++ b/llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp @@ -993,6 +993,11 @@ unsigned PPC32ISel::ExtendOrClear(MachineBasicBlock *MBB, unsigned Reg = getReg(Op0, MBB, IP); unsigned Class = getClassB(CompTy); + // Since we know that boolean values will be either zero or one, we don't + // have to extend or clear them. + if (CompTy == Type::BoolTy) + return Reg; + // Before we do a comparison or SetCC, we have to make sure that we truncate // the source registers appropriately. if (Class == cByte) { @@ -1374,7 +1379,9 @@ void PPC32ISel::promote32(unsigned targetReg, const ValueRecord &VR) { switch (getClassB(Ty)) { case cByte: // Extend value into target register (8->32) - if (isUnsigned) + if (Ty == Type::BoolTy) + BuildMI(BB, PPC::OR, 2, targetReg).addReg(Reg).addReg(Reg); + else if (isUnsigned) BuildMI(BB, PPC::RLWINM, 4, targetReg).addReg(Reg).addZImm(0) .addZImm(24).addZImm(31); else |

