From: Misha Brukman Date: Fri, 23 Jul 2004 01:11:19 +0000 (+0000) Subject: * Change class of BoolTy back to cInt X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=4c14f3384486deea8d8d5c4ce7a1b452a5a1a9a0;p=oota-llvm.git * Change class of BoolTy back to cInt * Fix indentation back to 2 spaces git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15121 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/PowerPC/PPC32ISelSimple.cpp b/lib/Target/PowerPC/PPC32ISelSimple.cpp index 0c88a1b4fb9..89e0f102030 100644 --- a/lib/Target/PowerPC/PPC32ISelSimple.cpp +++ b/lib/Target/PowerPC/PPC32ISelSimple.cpp @@ -65,7 +65,7 @@ static inline TypeClass getClass(const Type *Ty) { // getClassB - Just like getClass, but treat boolean values as ints. static inline TypeClass getClassB(const Type *Ty) { - if (Ty == Type::BoolTy) return cByte; + if (Ty == Type::BoolTy) return cInt; return getClass(Ty); } @@ -2628,24 +2628,24 @@ void ISel::emitCastOperation(MachineBasicBlock *MBB, F->getFrameInfo()->CreateStackObject(SrcTy, TM.getTargetData()); if (DestTy->isSigned()) { - unsigned LoadOp = (DestClass == cShort) ? PPC32::LHA : PPC32::LWZ; - unsigned TempReg = makeAnotherReg(Type::DoubleTy); - - // Convert to integer in the FP reg and store it to a stack slot - BuildMI(*BB, IP, PPC32::FCTIWZ, 1, TempReg).addReg(SrcReg); - addFrameReference(BuildMI(*BB, IP, PPC32::STFD, 3) - .addReg(TempReg), ValueFrameIdx); - - // There is no load signed byte opcode, so we must emit a sign extend - if (DestClass == cByte) { - unsigned TempReg2 = makeAnotherReg(DestTy); - addFrameReference(BuildMI(*BB, IP, LoadOp, 2, TempReg2), - ValueFrameIdx, 4); - BuildMI(*MBB, IP, PPC32::EXTSB, DestReg).addReg(TempReg2); - } else { - addFrameReference(BuildMI(*BB, IP, LoadOp, 2, DestReg), - ValueFrameIdx, 4); - } + unsigned LoadOp = (DestClass == cShort) ? PPC32::LHA : PPC32::LWZ; + unsigned TempReg = makeAnotherReg(Type::DoubleTy); + + // Convert to integer in the FP reg and store it to a stack slot + BuildMI(*BB, IP, PPC32::FCTIWZ, 1, TempReg).addReg(SrcReg); + addFrameReference(BuildMI(*BB, IP, PPC32::STFD, 3) + .addReg(TempReg), ValueFrameIdx); + + // There is no load signed byte opcode, so we must emit a sign extend + if (DestClass == cByte) { + unsigned TempReg2 = makeAnotherReg(DestTy); + addFrameReference(BuildMI(*BB, IP, LoadOp, 2, TempReg2), + ValueFrameIdx, 4); + BuildMI(*MBB, IP, PPC32::EXTSB, DestReg).addReg(TempReg2); + } else { + addFrameReference(BuildMI(*BB, IP, LoadOp, 2, DestReg), + ValueFrameIdx, 4); + } } else { std::cerr << "ERROR: Cast fp-to-unsigned not implemented!\n"; abort(); diff --git a/lib/Target/PowerPC/PowerPCISelSimple.cpp b/lib/Target/PowerPC/PowerPCISelSimple.cpp index 0c88a1b4fb9..89e0f102030 100644 --- a/lib/Target/PowerPC/PowerPCISelSimple.cpp +++ b/lib/Target/PowerPC/PowerPCISelSimple.cpp @@ -65,7 +65,7 @@ static inline TypeClass getClass(const Type *Ty) { // getClassB - Just like getClass, but treat boolean values as ints. static inline TypeClass getClassB(const Type *Ty) { - if (Ty == Type::BoolTy) return cByte; + if (Ty == Type::BoolTy) return cInt; return getClass(Ty); } @@ -2628,24 +2628,24 @@ void ISel::emitCastOperation(MachineBasicBlock *MBB, F->getFrameInfo()->CreateStackObject(SrcTy, TM.getTargetData()); if (DestTy->isSigned()) { - unsigned LoadOp = (DestClass == cShort) ? PPC32::LHA : PPC32::LWZ; - unsigned TempReg = makeAnotherReg(Type::DoubleTy); - - // Convert to integer in the FP reg and store it to a stack slot - BuildMI(*BB, IP, PPC32::FCTIWZ, 1, TempReg).addReg(SrcReg); - addFrameReference(BuildMI(*BB, IP, PPC32::STFD, 3) - .addReg(TempReg), ValueFrameIdx); - - // There is no load signed byte opcode, so we must emit a sign extend - if (DestClass == cByte) { - unsigned TempReg2 = makeAnotherReg(DestTy); - addFrameReference(BuildMI(*BB, IP, LoadOp, 2, TempReg2), - ValueFrameIdx, 4); - BuildMI(*MBB, IP, PPC32::EXTSB, DestReg).addReg(TempReg2); - } else { - addFrameReference(BuildMI(*BB, IP, LoadOp, 2, DestReg), - ValueFrameIdx, 4); - } + unsigned LoadOp = (DestClass == cShort) ? PPC32::LHA : PPC32::LWZ; + unsigned TempReg = makeAnotherReg(Type::DoubleTy); + + // Convert to integer in the FP reg and store it to a stack slot + BuildMI(*BB, IP, PPC32::FCTIWZ, 1, TempReg).addReg(SrcReg); + addFrameReference(BuildMI(*BB, IP, PPC32::STFD, 3) + .addReg(TempReg), ValueFrameIdx); + + // There is no load signed byte opcode, so we must emit a sign extend + if (DestClass == cByte) { + unsigned TempReg2 = makeAnotherReg(DestTy); + addFrameReference(BuildMI(*BB, IP, LoadOp, 2, TempReg2), + ValueFrameIdx, 4); + BuildMI(*MBB, IP, PPC32::EXTSB, DestReg).addReg(TempReg2); + } else { + addFrameReference(BuildMI(*BB, IP, LoadOp, 2, DestReg), + ValueFrameIdx, 4); + } } else { std::cerr << "ERROR: Cast fp-to-unsigned not implemented!\n"; abort();