Chromium Code Reviews| Index: src/IceInstX86BaseImpl.h |
| diff --git a/src/IceInstX86BaseImpl.h b/src/IceInstX86BaseImpl.h |
| index 80a1f6bcc4c36e883c674b338481302b8689f4c7..12fd459c460b19aeed0c74e4aa1f3385069b2b9b 100644 |
| --- a/src/IceInstX86BaseImpl.h |
| +++ b/src/IceInstX86BaseImpl.h |
| @@ -570,7 +570,7 @@ void InstX86Call<Machine>::emit(const Cfg *Func) const { |
| assert(this->getSrcSize() == 1); |
| Str << "\tcall\t"; |
| Operand *CallTarget = getCallTarget(); |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| if (const auto *CI = llvm::dyn_cast<ConstantInteger32>(CallTarget)) { |
| // Emit without a leading '$'. |
| Str << CI->getValue(); |
| @@ -589,15 +589,12 @@ void InstX86Call<Machine>::emitIAS(const Cfg *Func) const { |
| typename InstX86Base<Machine>::Traits::Assembler *Asm = |
| Func->getAssembler<typename InstX86Base<Machine>::Traits::Assembler>(); |
| Operand *CallTarget = getCallTarget(); |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| if (const auto *Var = llvm::dyn_cast<Variable>(CallTarget)) { |
| if (Var->hasReg()) { |
| Asm->call(InstX86Base<Machine>::Traits::getEncodedGPR(Var->getRegNum())); |
| } else { |
| - Asm->call( |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(Var)); |
| + Asm->call(Target->stackVarToAsmOperand(Var)); |
| } |
| } else if (const auto *Mem = llvm::dyn_cast< |
| typename InstX86Base<Machine>::Traits::X86OperandMem>( |
| @@ -654,7 +651,7 @@ template <class Machine> |
| void emitIASOpTyGPR(const Cfg *Func, Type Ty, const Operand *Op, |
| const typename InstX86Base< |
| Machine>::Traits::Assembler::GPREmitterOneOp &Emitter) { |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = InstX86Base<Machine>::getTarget(Func); |
|
John
2015/11/12 00:54:03
You have some versions saying this->, and some say
|
| typename InstX86Base<Machine>::Traits::Assembler *Asm = |
| Func->getAssembler<typename InstX86Base<Machine>::Traits::Assembler>(); |
| if (const auto *Var = llvm::dyn_cast<Variable>(Op)) { |
| @@ -665,9 +662,7 @@ void emitIASOpTyGPR(const Cfg *Func, Type Ty, const Operand *Op, |
| (Asm->*(Emitter.Reg))(Ty, VarReg); |
| } else { |
| typename InstX86Base<Machine>::Traits::Address StackAddr( |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(Var)); |
| + Target->stackVarToAsmOperand(Var)); |
| (Asm->*(Emitter.Addr))(Ty, StackAddr); |
| } |
| } else if (const auto *Mem = llvm::dyn_cast< |
| @@ -684,7 +679,7 @@ void emitIASRegOpTyGPR( |
| const Cfg *Func, Type Ty, const Variable *Var, const Operand *Src, |
| const typename InstX86Base<Machine>::Traits::Assembler::GPREmitterRegOp |
| &Emitter) { |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = InstX86Base<Machine>::getTarget(Func); |
| typename InstX86Base<Machine>::Traits::Assembler *Asm = |
| Func->getAssembler<typename InstX86Base<Machine>::Traits::Assembler>(); |
| assert(Var->hasReg()); |
| @@ -703,9 +698,7 @@ void emitIASRegOpTyGPR( |
| (Asm->*(Emitter.GPRGPR))(Ty, VarReg, SrcReg); |
| } else { |
| typename InstX86Base<Machine>::Traits::Address SrcStackAddr = |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(SrcVar); |
| + Target->stackVarToAsmOperand(SrcVar); |
| (Asm->*(Emitter.GPRAddr))(Ty, VarReg, SrcStackAddr); |
| } |
| } else if (const auto *Mem = llvm::dyn_cast< |
| @@ -757,13 +750,11 @@ void emitIASAsAddrOpTyGPR( |
| const Cfg *Func, Type Ty, const Operand *Op0, const Operand *Op1, |
| const typename InstX86Base<Machine>::Traits::Assembler::GPREmitterAddrOp |
| &Emitter) { |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = InstX86Base<Machine>::getTarget(Func); |
| if (const auto *Op0Var = llvm::dyn_cast<Variable>(Op0)) { |
| assert(!Op0Var->hasReg()); |
| typename InstX86Base<Machine>::Traits::Address StackAddr( |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(Op0Var)); |
| + Target->stackVarToAsmOperand(Op0Var)); |
| emitIASAddrOpTyGPR<Machine>(Func, Ty, StackAddr, Op1, Emitter); |
| } else if (const auto *Op0Mem = llvm::dyn_cast< |
| typename InstX86Base<Machine>::Traits::X86OperandMem>(Op0)) { |
| @@ -841,7 +832,7 @@ void emitIASXmmShift( |
| const Cfg *Func, Type Ty, const Variable *Var, const Operand *Src, |
| const typename InstX86Base<Machine>::Traits::Assembler::XmmEmitterShiftOp |
| &Emitter) { |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = InstX86Base<Machine>::getTarget(Func); |
| typename InstX86Base<Machine>::Traits::Assembler *Asm = |
| Func->getAssembler<typename InstX86Base<Machine>::Traits::Assembler>(); |
| assert(Var->hasReg()); |
| @@ -854,9 +845,7 @@ void emitIASXmmShift( |
| (Asm->*(Emitter.XmmXmm))(Ty, VarReg, SrcReg); |
| } else { |
| typename InstX86Base<Machine>::Traits::Address SrcStackAddr = |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(SrcVar); |
| + Target->stackVarToAsmOperand(SrcVar); |
| (Asm->*(Emitter.XmmAddr))(Ty, VarReg, SrcStackAddr); |
| } |
| } else if (const auto *Mem = llvm::dyn_cast< |
| @@ -876,7 +865,7 @@ void emitIASRegOpTyXMM( |
| const Cfg *Func, Type Ty, const Variable *Var, const Operand *Src, |
| const typename InstX86Base<Machine>::Traits::Assembler::XmmEmitterRegOp |
| &Emitter) { |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = InstX86Base<Machine>::getTarget(Func); |
| typename InstX86Base<Machine>::Traits::Assembler *Asm = |
| Func->getAssembler<typename InstX86Base<Machine>::Traits::Assembler>(); |
| assert(Var->hasReg()); |
| @@ -889,9 +878,7 @@ void emitIASRegOpTyXMM( |
| (Asm->*(Emitter.XmmXmm))(Ty, VarReg, SrcReg); |
| } else { |
| typename InstX86Base<Machine>::Traits::Address SrcStackAddr = |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(SrcVar); |
| + Target->stackVarToAsmOperand(SrcVar); |
| (Asm->*(Emitter.XmmAddr))(Ty, VarReg, SrcStackAddr); |
| } |
| } else if (const auto *Mem = llvm::dyn_cast< |
| @@ -914,7 +901,7 @@ void emitIASCastRegOp(const Cfg *Func, Type DestTy, const Variable *Dest, |
| Type SrcTy, const Operand *Src, |
| const typename InstX86Base<Machine>::Traits::Assembler:: |
| template CastEmitterRegOp<DReg_t, SReg_t> &Emitter) { |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = InstX86Base<Machine>::getTarget(Func); |
| typename InstX86Base<Machine>::Traits::Assembler *Asm = |
| Func->getAssembler<typename InstX86Base<Machine>::Traits::Assembler>(); |
| assert(Dest->hasReg()); |
| @@ -925,9 +912,7 @@ void emitIASCastRegOp(const Cfg *Func, Type DestTy, const Variable *Dest, |
| (Asm->*(Emitter.RegReg))(DestTy, DestReg, SrcTy, SrcReg); |
| } else { |
| typename InstX86Base<Machine>::Traits::Address SrcStackAddr = |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(SrcVar); |
| + Target->stackVarToAsmOperand(SrcVar); |
| (Asm->*(Emitter.RegAddr))(DestTy, DestReg, SrcTy, SrcStackAddr); |
| } |
| } else if (const auto *Mem = llvm::dyn_cast< |
| @@ -947,7 +932,7 @@ void emitIASThreeOpImmOps( |
| const Operand *Src1, |
| const typename InstX86Base<Machine>::Traits::Assembler:: |
| template ThreeOpImmEmitter<DReg_t, SReg_t> Emitter) { |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = InstX86Base<Machine>::getTarget(Func); |
| typename InstX86Base<Machine>::Traits::Assembler *Asm = |
| Func->getAssembler<typename InstX86Base<Machine>::Traits::Assembler>(); |
| // This only handles Dest being a register, and Src1 being an immediate. |
| @@ -960,9 +945,7 @@ void emitIASThreeOpImmOps( |
| (Asm->*(Emitter.RegRegImm))(DispatchTy, DestReg, SrcReg, Imm); |
| } else { |
| typename InstX86Base<Machine>::Traits::Address SrcStackAddr = |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(SrcVar); |
| + Target->stackVarToAsmOperand(SrcVar); |
| (Asm->*(Emitter.RegAddrImm))(DispatchTy, DestReg, SrcStackAddr, Imm); |
| } |
| } else if (const auto *Mem = llvm::dyn_cast< |
| @@ -980,7 +963,7 @@ void emitIASMovlikeXMM( |
| const Cfg *Func, const Variable *Dest, const Operand *Src, |
| const typename InstX86Base<Machine>::Traits::Assembler::XmmEmitterMovOps |
| Emitter) { |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = InstX86Base<Machine>::getTarget(Func); |
| typename InstX86Base<Machine>::Traits::Assembler *Asm = |
| Func->getAssembler<typename InstX86Base<Machine>::Traits::Assembler>(); |
| if (Dest->hasReg()) { |
| @@ -993,9 +976,7 @@ void emitIASMovlikeXMM( |
| InstX86Base<Machine>::Traits::getEncodedXmm(SrcVar->getRegNum())); |
| } else { |
| typename InstX86Base<Machine>::Traits::Address StackAddr( |
| - static_cast< |
| - typename InstX86Base<Machine>::Traits::TargetLowering *>(Target) |
| - ->stackVarToAsmOperand(SrcVar)); |
| + Target->stackVarToAsmOperand(SrcVar)); |
| (Asm->*(Emitter.XmmAddr))(DestReg, StackAddr); |
| } |
| } else if (const auto *SrcMem = llvm::dyn_cast< |
| @@ -1008,9 +989,7 @@ void emitIASMovlikeXMM( |
| } |
| } else { |
| typename InstX86Base<Machine>::Traits::Address StackAddr( |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(Dest)); |
| + Target->stackVarToAsmOperand(Dest)); |
| // Src must be a register in this case. |
| const auto *SrcVar = llvm::cast<Variable>(Src); |
| assert(SrcVar->hasReg()); |
| @@ -1066,12 +1045,10 @@ void InstX86Pmull<Machine>::emit(const Cfg *Func) const { |
| char buf[30]; |
| bool TypesAreValid = this->getDest()->getType() == IceType_v4i32 || |
| this->getDest()->getType() == IceType_v8i16; |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| bool InstructionSetIsValid = |
| this->getDest()->getType() == IceType_v8i16 || |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1; |
| + Target->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1; |
| (void)TypesAreValid; |
| (void)InstructionSetIsValid; |
| assert(TypesAreValid); |
| @@ -1087,12 +1064,10 @@ template <class Machine> |
| void InstX86Pmull<Machine>::emitIAS(const Cfg *Func) const { |
| Type Ty = this->getDest()->getType(); |
| bool TypesAreValid = Ty == IceType_v4i32 || Ty == IceType_v8i16; |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| bool InstructionSetIsValid = |
| Ty == IceType_v8i16 || |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1; |
| + Target->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1; |
| (void)TypesAreValid; |
| (void)InstructionSetIsValid; |
| assert(TypesAreValid); |
| @@ -1236,19 +1211,15 @@ template <class Machine> |
| void InstX86Blendvps<Machine>::emit(const Cfg *Func) const { |
| if (!BuildDefs::dump()) |
| return; |
| - TargetLowering *Target = Func->getTarget(); |
| - assert(static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); |
| + auto *Target = this->getTarget(Func); |
| + assert(Target->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); |
| emitVariableBlendInst<Machine>(this->Opcode, this, Func); |
| } |
| template <class Machine> |
| void InstX86Blendvps<Machine>::emitIAS(const Cfg *Func) const { |
| - TargetLowering *Target = Func->getTarget(); |
| - assert(static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); |
| + auto *Target = this->getTarget(Func); |
| + assert(Target->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); |
| static const typename InstX86Base<Machine>::Traits::Assembler::XmmEmitterRegOp |
| Emitter = {&InstX86Base<Machine>::Traits::Assembler::blendvps, |
| &InstX86Base<Machine>::Traits::Assembler::blendvps}; |
| @@ -1259,19 +1230,15 @@ template <class Machine> |
| void InstX86Pblendvb<Machine>::emit(const Cfg *Func) const { |
| if (!BuildDefs::dump()) |
| return; |
| - TargetLowering *Target = Func->getTarget(); |
| - assert(static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); |
| + auto *Target = this->getTarget(Func); |
| + assert(Target->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); |
| emitVariableBlendInst<Machine>(this->Opcode, this, Func); |
| } |
| template <class Machine> |
| void InstX86Pblendvb<Machine>::emitIAS(const Cfg *Func) const { |
| - TargetLowering *Target = Func->getTarget(); |
| - assert(static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); |
| + auto *Target = this->getTarget(Func); |
| + assert(Target->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); |
| static const typename InstX86Base<Machine>::Traits::Assembler::XmmEmitterRegOp |
| Emitter = {&InstX86Base<Machine>::Traits::Assembler::pblendvb, |
| &InstX86Base<Machine>::Traits::Assembler::pblendvb}; |
| @@ -1375,10 +1342,8 @@ void InstX86ImulImm<Machine>::emitIAS(const Cfg *Func) const { |
| template <class Machine> |
| void InstX86Insertps<Machine>::emitIAS(const Cfg *Func) const { |
| assert(this->getSrcSize() == 3); |
| - TargetLowering *Target = Func->getTarget(); |
| - assert(static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); |
| + auto *Target = this->getTarget(Func); |
| + assert(Target->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); |
| const Variable *Dest = this->getDest(); |
| assert(Dest == this->getSrc(0)); |
| Type Ty = Dest->getType(); |
| @@ -1624,7 +1589,7 @@ void InstX86Cmov<Machine>::emitIAS(const Cfg *Func) const { |
| (InstX86Base<Machine>::Traits::Is64Bit)); |
| typename InstX86Base<Machine>::Traits::Assembler *Asm = |
| Func->getAssembler<typename InstX86Base<Machine>::Traits::Assembler>(); |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| if (const auto *SrcVar = llvm::dyn_cast<Variable>(Src)) { |
| if (SrcVar->hasReg()) { |
| Asm->cmov( |
| @@ -1635,9 +1600,7 @@ void InstX86Cmov<Machine>::emitIAS(const Cfg *Func) const { |
| Asm->cmov( |
| SrcTy, Condition, InstX86Base<Machine>::Traits::getEncodedGPR( |
| this->getDest()->getRegNum()), |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(SrcVar)); |
| + Target->stackVarToAsmOperand(SrcVar)); |
| } |
| } else if (const auto *Mem = llvm::dyn_cast< |
| typename InstX86Base<Machine>::Traits::X86OperandMem>(Src)) { |
| @@ -1691,7 +1654,7 @@ void InstX86Cmpps<Machine>::emitIAS(const Cfg *Func) const { |
| // Assuming there isn't any load folding for cmpps, and vector constants are |
| // not allowed in PNaCl. |
| assert(llvm::isa<Variable>(this->getSrc(1))); |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| const auto *SrcVar = llvm::cast<Variable>(this->getSrc(1)); |
| if (SrcVar->hasReg()) { |
| Asm->cmpps(InstX86Base<Machine>::Traits::getEncodedXmm( |
| @@ -1700,9 +1663,7 @@ void InstX86Cmpps<Machine>::emitIAS(const Cfg *Func) const { |
| Condition); |
| } else { |
| typename InstX86Base<Machine>::Traits::Address SrcStackAddr = |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(SrcVar); |
| + Target->stackVarToAsmOperand(SrcVar); |
| Asm->cmpps(InstX86Base<Machine>::Traits::getEncodedXmm( |
| this->getDest()->getRegNum()), |
| SrcStackAddr, Condition); |
| @@ -1745,7 +1706,7 @@ void InstX86Cmpxchg<Machine>::emitIAS(const Cfg *Func) const { |
| typename InstX86Base<Machine>::Traits::Assembler *Asm = |
| Func->getAssembler<typename InstX86Base<Machine>::Traits::Assembler>(); |
| Type Ty = this->getSrc(0)->getType(); |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| const auto Mem = |
| llvm::cast<typename InstX86Base<Machine>::Traits::X86OperandMem>( |
| this->getSrc(0)); |
| @@ -1795,7 +1756,7 @@ void InstX86Cmpxchg8b<Machine>::emitIAS(const Cfg *Func) const { |
| this->getSrc(0)); |
| assert(Mem->getSegmentRegister() == |
| InstX86Base<Machine>::Traits::X86OperandMem::DefaultSegment); |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| const typename InstX86Base<Machine>::Traits::Address Addr = |
| Mem->toAsmAddress(Asm, Target); |
| Asm->cmpxchg8b(Addr, this->Locked); |
| @@ -2137,13 +2098,11 @@ void InstX86Store<Machine>::emitIAS(const Cfg *Func) const { |
| InstX86Base<Machine>::Traits::getEncodedXmm(SrcVar->getRegNum()); |
| typename InstX86Base<Machine>::Traits::Assembler *Asm = |
| Func->getAssembler<typename InstX86Base<Machine>::Traits::Assembler>(); |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| if (const auto *DestVar = llvm::dyn_cast<Variable>(Dest)) { |
| assert(!DestVar->hasReg()); |
| typename InstX86Base<Machine>::Traits::Address StackAddr( |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(DestVar)); |
| + Target->stackVarToAsmOperand(DestVar)); |
| Asm->movss(DestTy, StackAddr, SrcReg); |
| } else { |
| const auto DestMem = |
| @@ -2200,7 +2159,7 @@ void InstX86StoreP<Machine>::emitIAS(const Cfg *Func) const { |
| assert(DestMem->getSegmentRegister() == |
| InstX86Base<Machine>::Traits::X86OperandMem::DefaultSegment); |
| assert(SrcVar->hasReg()); |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| Asm->movups(DestMem->toAsmAddress(Asm, Target), |
| InstX86Base<Machine>::Traits::getEncodedXmm(SrcVar->getRegNum())); |
| } |
| @@ -2243,7 +2202,7 @@ void InstX86StoreQ<Machine>::emitIAS(const Cfg *Func) const { |
| assert(DestMem->getSegmentRegister() == |
| InstX86Base<Machine>::Traits::X86OperandMem::DefaultSegment); |
| assert(SrcVar->hasReg()); |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| Asm->movq(DestMem->toAsmAddress(Asm, Target), |
| InstX86Base<Machine>::Traits::getEncodedXmm(SrcVar->getRegNum())); |
| } |
| @@ -2307,7 +2266,7 @@ template <class Machine> void InstX86Mov<Machine>::emit(const Cfg *Func) const { |
| // TODO: This assert disallows usages such as copying a floating |
| // point value between a vector and a scalar (which movss is used for). Clean |
| // this up. |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| assert(Target->typeWidthInBytesOnStack(DestTy) == |
| Target->typeWidthInBytesOnStack(SrcTy)); |
| const Operand *NewSrc = Src; |
| @@ -2353,7 +2312,7 @@ void InstX86Mov<Machine>::emitIAS(const Cfg *Func) const { |
| // TODO: This assert disallows usages such as copying a floating |
| // point value between a vector and a scalar (which movss is used for). Clean |
| // this up. |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| assert(Target->typeWidthInBytesOnStack(this->getDest()->getType()) == |
| Target->typeWidthInBytesOnStack(Src->getType())); |
| if (Dest->hasReg()) { |
| @@ -2388,9 +2347,7 @@ void InstX86Mov<Machine>::emitIAS(const Cfg *Func) const { |
| // Dest must be Stack and Src *could* be a register. Use Src's type to |
| // decide on the emitters. |
| typename InstX86Base<Machine>::Traits::Address StackAddr( |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(Dest)); |
| + Target->stackVarToAsmOperand(Dest)); |
| if (isScalarFloatingType(SrcTy)) { |
| // Src must be a register. |
| const auto *SrcVar = llvm::cast<Variable>(Src); |
| @@ -2418,7 +2375,7 @@ void InstX86Movd<Machine>::emitIAS(const Cfg *Func) const { |
| assert(this->getSrcSize() == 1); |
| const Variable *Dest = this->getDest(); |
| const auto *SrcVar = llvm::cast<Variable>(this->getSrc(0)); |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| // For insert/extract element (one of Src/Dest is an Xmm vector and the other |
| // is an int type). |
| if (SrcVar->getType() == IceType_i32 || |
| @@ -2437,9 +2394,7 @@ void InstX86Movd<Machine>::emitIAS(const Cfg *Func) const { |
| InstX86Base<Machine>::Traits::getEncodedGPR(SrcVar->getRegNum())); |
| } else { |
| typename InstX86Base<Machine>::Traits::Address StackAddr( |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(SrcVar)); |
| + Target->stackVarToAsmOperand(SrcVar)); |
| Asm->movd(SrcVar->getType(), DestReg, StackAddr); |
| } |
| } else { |
| @@ -2459,9 +2414,7 @@ void InstX86Movd<Machine>::emitIAS(const Cfg *Func) const { |
| SrcReg); |
| } else { |
| typename InstX86Base<Machine>::Traits::Address StackAddr( |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(Dest)); |
| + Target->stackVarToAsmOperand(Dest)); |
| Asm->movd(Dest->getType(), StackAddr, SrcReg); |
| } |
| } |
| @@ -2623,7 +2576,7 @@ void InstX86Fld<Machine>::emitIAS(const Cfg *Func) const { |
| Func->getAssembler<typename InstX86Base<Machine>::Traits::Assembler>(); |
| assert(this->getSrcSize() == 1); |
| const Operand *Src = this->getSrc(0); |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| Type Ty = Src->getType(); |
| if (const auto *Var = llvm::dyn_cast<Variable>(Src)) { |
| if (Var->hasReg()) { |
| @@ -2645,9 +2598,7 @@ void InstX86Fld<Machine>::emitIAS(const Cfg *Func) const { |
| Width); |
| } else { |
| typename InstX86Base<Machine>::Traits::Address StackAddr( |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(Var)); |
| + Target->stackVarToAsmOperand(Var)); |
| Asm->fld(Ty, StackAddr); |
| } |
| } else if (const auto *Mem = llvm::dyn_cast< |
| @@ -2717,13 +2668,11 @@ void InstX86Fstp<Machine>::emitIAS(const Cfg *Func) const { |
| Asm->fstp(InstX86Base<Machine>::Traits::RegisterSet::getEncodedSTReg(0)); |
| return; |
| } |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| Type Ty = Dest->getType(); |
| if (!Dest->hasReg()) { |
| typename InstX86Base<Machine>::Traits::Address StackAddr( |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(Dest)); |
| + Target->stackVarToAsmOperand(Dest)); |
| Asm->fstp(Ty, StackAddr); |
| } else { |
| // Dest is a physical (xmm) register, so st(0) needs to go through memory. |
| @@ -2785,12 +2734,10 @@ void InstX86Pextr<Machine>::emit(const Cfg *Func) const { |
| Ostream &Str = Func->getContext()->getStrEmit(); |
| assert(this->getSrcSize() == 2); |
| // pextrb and pextrd are SSE4.1 instructions. |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| assert(this->getSrc(0)->getType() == IceType_v8i16 || |
| this->getSrc(0)->getType() == IceType_v8i1 || |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); |
| + Target->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); |
| Str << "\t" << this->Opcode |
| << InstX86Base<Machine>::Traits::TypeAttributes[this->getSrc(0) |
| ->getType()] |
| @@ -2814,11 +2761,9 @@ void InstX86Pextr<Machine>::emitIAS(const Cfg *Func) const { |
| const Variable *Dest = this->getDest(); |
| Type DispatchTy = InstX86Base<Machine>::Traits::getInVectorElementType( |
| this->getSrc(0)->getType()); |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| assert(DispatchTy == IceType_i16 || |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); |
| + Target->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); |
| // pextrw must take a register dest. There is an SSE4.1 version that takes a |
| // memory dest, but we aren't using it. For uniformity, just restrict them |
| // all to have a register dest for now. |
| @@ -2845,12 +2790,10 @@ void InstX86Pinsr<Machine>::emit(const Cfg *Func) const { |
| Ostream &Str = Func->getContext()->getStrEmit(); |
| assert(this->getSrcSize() == 3); |
| // pinsrb and pinsrd are SSE4.1 instructions. |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| assert(this->getDest()->getType() == IceType_v8i16 || |
| this->getDest()->getType() == IceType_v8i1 || |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); |
| + Target->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); |
| Str << "\t" << this->Opcode |
| << InstX86Base< |
| Machine>::Traits::TypeAttributes[this->getDest()->getType()] |
| @@ -2882,11 +2825,9 @@ void InstX86Pinsr<Machine>::emitIAS(const Cfg *Func) const { |
| // pinsrb and pinsrd are SSE4.1 instructions. |
| const Operand *Src0 = this->getSrc(1); |
| Type DispatchTy = Src0->getType(); |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| assert(DispatchTy == IceType_i16 || |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); |
| + Target->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); |
| // If src1 is a register, it should always be r32 (this should fall out from |
| // the encodings for ByteRegs overlapping the encodings for r32), but we have |
| // to make sure the register allocator didn't choose an 8-bit high register |
| @@ -2973,11 +2914,8 @@ void InstX86Pop<Machine>::emitIAS(const Cfg *Func) const { |
| Asm->popl(InstX86Base<Machine>::Traits::getEncodedGPR( |
| this->getDest()->getRegNum())); |
| } else { |
| - TargetLowering *Target = Func->getTarget(); |
| - Asm->popl( |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(this->getDest())); |
| + auto *Target = this->getTarget(Func); |
| + Asm->popl(Target->stackVarToAsmOperand(this->getDest())); |
| } |
| } |
| @@ -2995,7 +2933,7 @@ void InstX86AdjustStack<Machine>::emit(const Cfg *Func) const { |
| return; |
| Ostream &Str = Func->getContext()->getStrEmit(); |
| Str << "\tsubl\t$" << Amount << ", %esp"; |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| Target->updateStackAdjustment(Amount); |
| } |
| @@ -3006,7 +2944,7 @@ void InstX86AdjustStack<Machine>::emitIAS(const Cfg *Func) const { |
| Asm->sub(IceType_i32, |
| InstX86Base<Machine>::Traits::RegisterSet::Encoded_Reg_esp, |
| Immediate(Amount)); |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| Target->updateStackAdjustment(Amount); |
| } |
| @@ -3137,16 +3075,12 @@ void InstX86Setcc<Machine>::emitIAS(const Cfg *Func) const { |
| assert(this->getSrcSize() == 0); |
| typename InstX86Base<Machine>::Traits::Assembler *Asm = |
| Func->getAssembler<typename InstX86Base<Machine>::Traits::Assembler>(); |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| if (this->getDest()->hasReg()) |
| Asm->setcc(Condition, InstX86Base<Machine>::Traits::getEncodedByteReg( |
| this->getDest()->getRegNum())); |
| else |
| - Asm->setcc( |
| - Condition, |
| - static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( |
| - Target) |
| - ->stackVarToAsmOperand(this->getDest())); |
| + Asm->setcc(Condition, Target->stackVarToAsmOperand(this->getDest())); |
| return; |
| } |
| @@ -3186,7 +3120,7 @@ void InstX86Xadd<Machine>::emitIAS(const Cfg *Func) const { |
| this->getSrc(0)); |
| assert(Mem->getSegmentRegister() == |
| InstX86Base<Machine>::Traits::X86OperandMem::DefaultSegment); |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| const typename InstX86Base<Machine>::Traits::Address Addr = |
| Mem->toAsmAddress(Asm, Target); |
| const auto *VarReg = llvm::cast<Variable>(this->getSrc(1)); |
| @@ -3244,7 +3178,7 @@ void InstX86Xchg<Machine>::emitIAS(const Cfg *Func) const { |
| this->getSrc(0)); |
| assert(Mem->getSegmentRegister() == |
| InstX86Base<Machine>::Traits::X86OperandMem::DefaultSegment); |
| - TargetLowering *Target = Func->getTarget(); |
| + auto *Target = this->getTarget(Func); |
| const typename InstX86Base<Machine>::Traits::Address Addr = |
| Mem->toAsmAddress(Asm, Target); |
| Asm->xchg(Ty, Addr, Reg1); |