Index: src/IceInstX8632.cpp |
diff --git a/src/IceInstX8632.cpp b/src/IceInstX8632.cpp |
index f5e4550794234e5c1285b76142c543c8629155c4..deed2bc6e69c17314e8561c5014e7550d76322ac 100644 |
--- a/src/IceInstX8632.cpp |
+++ b/src/IceInstX8632.cpp |
@@ -350,7 +350,7 @@ void emitIASBytes(const Cfg *Func, const x86::AssemblerX86 *Asm, |
Ostream &Str = Ctx->getStrEmit(); |
intptr_t EndPosition = Asm->GetPosition(); |
AssemblerFixup *LastFixup = Asm->GetLatestFixup(StartPosition); |
- if (LastFixup == NULL) { |
+ if (!LastFixup) { |
// The fixup doesn't apply to this current block. |
for (intptr_t i = StartPosition; i < EndPosition; ++i) { |
Str << "\t.byte 0x"; |
@@ -382,7 +382,7 @@ void emitIASBytes(const Cfg *Func, const x86::AssemblerX86 *Asm, |
assert(LastFixupLoc <= EndPosition); |
LastFixup = Asm->GetLatestFixup(LastFixupLoc); |
// Assume multi-fixups are adjacent in the instruction encoding. |
- assert(LastFixup == NULL || LastFixup->position() == LastFixupLoc); |
+ assert(!LastFixup || LastFixup->position() == LastFixupLoc); |
} |
for (intptr_t i = LastFixupLoc; i < EndPosition; ++i) { |
Str << "\t.byte 0x"; |
@@ -535,7 +535,8 @@ void InstX8632Call::emit(const Cfg *Func) const { |
Ostream &Str = Func->getContext()->getStrEmit(); |
assert(getSrcSize() == 1); |
Str << "\tcall\t"; |
- if (auto CallTarget = llvm::dyn_cast<ConstantRelocatable>(getCallTarget())) { |
+ if (const auto CallTarget = |
+ llvm::dyn_cast<ConstantRelocatable>(getCallTarget())) { |
// TODO(stichnot): All constant targets should suppress the '$', |
// not just relocatables. |
CallTarget->emitWithoutDollar(Func->getContext()); |
@@ -615,7 +616,7 @@ void emitTwoAddress(const char *Opcode, const Inst *Inst, const Cfg *Func, |
assert(Dest == Inst->getSrc(0)); |
Operand *Src1 = Inst->getSrc(1); |
Str << "\t" << Opcode << InstX8632::getWidthString(Dest->getType()) << "\t"; |
- Variable *ShiftReg = llvm::dyn_cast<Variable>(Src1); |
+ const auto ShiftReg = llvm::dyn_cast<Variable>(Src1); |
if (ShiftHack && ShiftReg && ShiftReg->getRegNum() == RegX8632::Reg_ecx) |
Str << "%cl"; |
else |
@@ -764,11 +765,11 @@ void emitIASGPRShiftDouble(const Cfg *Func, const Variable *Dest, |
// Dest can be reg or mem, but we only use the reg variant. |
assert(Dest->hasReg()); |
RegX8632::GPRRegister DestReg = RegX8632::getEncodedGPR(Dest->getRegNum()); |
- // Src1 must be reg. |
- const auto Src1 = llvm::cast<Variable>(Src1Op); |
- assert(Src1->hasReg()); |
- RegX8632::GPRRegister SrcReg = RegX8632::getEncodedGPR(Src1->getRegNum()); |
- Type Ty = Src1->getType(); |
+ // SrcVar1 must be reg. |
+ const auto SrcVar1 = llvm::cast<Variable>(Src1Op); |
+ assert(SrcVar1->hasReg()); |
+ RegX8632::GPRRegister SrcReg = RegX8632::getEncodedGPR(SrcVar1->getRegNum()); |
+ Type Ty = SrcVar1->getType(); |
// Src2 can be the implicit CL register or an immediate. |
if (const auto Imm = llvm::dyn_cast<ConstantInteger32>(Src2Op)) { |
(Asm->*(Emitter.GPRGPRImm))(Ty, DestReg, SrcReg, |
@@ -921,7 +922,7 @@ void emitIASMovlikeXMM(const Cfg *Func, const Variable *Dest, |
x86::Address StackAddr(static_cast<TargetX8632 *>(Func->getTarget()) |
->stackVarToAsmOperand(Dest)); |
// Src must be a register in this case. |
- const Variable *SrcVar = llvm::cast<Variable>(Src); |
+ const auto SrcVar = llvm::cast<Variable>(Src); |
assert(SrcVar->hasReg()); |
(Asm->*(Emitter.AddrXmm))(StackAddr, |
RegX8632::getEncodedXmm(SrcVar->getRegNum())); |
@@ -930,17 +931,17 @@ void emitIASMovlikeXMM(const Cfg *Func, const Variable *Dest, |
} |
bool checkForRedundantAssign(const Variable *Dest, const Operand *Source) { |
- const Variable *Src = llvm::dyn_cast<const Variable>(Source); |
- if (Src == NULL) |
+ const auto SrcVar = llvm::dyn_cast<const Variable>(Source); |
+ if (!SrcVar) |
return false; |
- if (Dest->hasReg() && Dest->getRegNum() == Src->getRegNum()) { |
+ if (Dest->hasReg() && Dest->getRegNum() == SrcVar->getRegNum()) { |
// TODO: On x86-64, instructions like "mov eax, eax" are used to |
// clear the upper 32 bits of rax. We need to recognize and |
// preserve these. |
return true; |
} |
- if (!Dest->hasReg() && !Src->hasReg() && |
- Dest->getStackOffset() == Src->getStackOffset()) |
+ if (!Dest->hasReg() && !SrcVar->hasReg() && |
+ Dest->getStackOffset() == SrcVar->getStackOffset()) |
return true; |
return false; |
} |
@@ -1010,7 +1011,7 @@ template <> const char *InstX8632Pshufd::Opcode = "pshufd"; |
// Inplace GPR ops |
template <> |
const x86::AssemblerX86::GPREmitterOneOp InstX8632Bswap::Emitter = { |
- &x86::AssemblerX86::bswap, NULL /* only a reg form exists */}; |
+ &x86::AssemblerX86::bswap, nullptr /* only a reg form exists */}; |
template <> |
const x86::AssemblerX86::GPREmitterOneOp InstX8632Neg::Emitter = { |
&x86::AssemblerX86::neg, &x86::AssemblerX86::neg}; |
@@ -1018,19 +1019,20 @@ const x86::AssemblerX86::GPREmitterOneOp InstX8632Neg::Emitter = { |
// Unary GPR ops |
template <> |
const x86::AssemblerX86::GPREmitterRegOp InstX8632Bsf::Emitter = { |
- &x86::AssemblerX86::bsf, &x86::AssemblerX86::bsf, NULL}; |
+ &x86::AssemblerX86::bsf, &x86::AssemblerX86::bsf, nullptr}; |
template <> |
const x86::AssemblerX86::GPREmitterRegOp InstX8632Bsr::Emitter = { |
- &x86::AssemblerX86::bsr, &x86::AssemblerX86::bsr, NULL}; |
+ &x86::AssemblerX86::bsr, &x86::AssemblerX86::bsr, nullptr}; |
template <> |
const x86::AssemblerX86::GPREmitterRegOp InstX8632Lea::Emitter = { |
- /* reg/reg and reg/imm are illegal */ NULL, &x86::AssemblerX86::lea, NULL}; |
+ /* reg/reg and reg/imm are illegal */ nullptr, &x86::AssemblerX86::lea, |
+ nullptr}; |
template <> |
const x86::AssemblerX86::GPREmitterRegOp InstX8632Movsx::Emitter = { |
- &x86::AssemblerX86::movsx, &x86::AssemblerX86::movsx, NULL}; |
+ &x86::AssemblerX86::movsx, &x86::AssemblerX86::movsx, nullptr}; |
template <> |
const x86::AssemblerX86::GPREmitterRegOp InstX8632Movzx::Emitter = { |
- &x86::AssemblerX86::movzx, &x86::AssemblerX86::movzx, NULL}; |
+ &x86::AssemblerX86::movzx, &x86::AssemblerX86::movzx, nullptr}; |
// Unary XMM ops |
template <> |
@@ -1347,9 +1349,9 @@ template <> void InstX8632Imul::emit(const Cfg *Func) const { |
Variable *Dest = getDest(); |
if (isByteSizedArithType(Dest->getType())) { |
// The 8-bit version of imul only allows the form "imul r/m8". |
- Variable *Src0 = llvm::dyn_cast<Variable>(getSrc(0)); |
- (void)Src0; |
- assert(Src0 && Src0->getRegNum() == RegX8632::Reg_eax); |
+ const auto Src0Var = llvm::dyn_cast<Variable>(getSrc(0)); |
+ (void)Src0Var; |
+ assert(Src0Var && Src0Var->getRegNum() == RegX8632::Reg_eax); |
Str << "\timulb\t"; |
getSrc(1)->emit(Func); |
} else if (llvm::isa<Constant>(getSrc(1))) { |
@@ -1371,9 +1373,9 @@ template <> void InstX8632Imul::emitIAS(const Cfg *Func) const { |
const Operand *Src = getSrc(1); |
if (isByteSizedArithType(Ty)) { |
// The 8-bit version of imul only allows the form "imul r/m8". |
- Variable *Src0 = llvm::dyn_cast<Variable>(getSrc(0)); |
- (void)Src0; |
- assert(Src0 && Src0->getRegNum() == RegX8632::Reg_eax); |
+ const auto Src0Var = llvm::dyn_cast<Variable>(getSrc(0)); |
+ (void)Src0Var; |
+ assert(Src0Var && Src0Var->getRegNum() == RegX8632::Reg_eax); |
const x86::AssemblerX86::GPREmitterOneOp Emitter = { |
&x86::AssemblerX86::imul, &x86::AssemblerX86::imul}; |
emitIASOpTyGPR(Func, Ty, getSrc(1), Emitter); |
@@ -1459,7 +1461,7 @@ void InstX8632Mul::emit(const Cfg *Func) const { |
Ostream &Str = Func->getContext()->getStrEmit(); |
assert(getSrcSize() == 2); |
assert(llvm::isa<Variable>(getSrc(0))); |
- assert(llvm::dyn_cast<Variable>(getSrc(0))->getRegNum() == RegX8632::Reg_eax); |
+ assert(llvm::cast<Variable>(getSrc(0))->getRegNum() == RegX8632::Reg_eax); |
assert(getDest()->getRegNum() == RegX8632::Reg_eax); // TODO: allow edx? |
Str << "\tmul" << getWidthString(getDest()->getType()) << "\t"; |
getSrc(1)->emit(Func); |
@@ -1468,7 +1470,7 @@ void InstX8632Mul::emit(const Cfg *Func) const { |
void InstX8632Mul::emitIAS(const Cfg *Func) const { |
assert(getSrcSize() == 2); |
assert(llvm::isa<Variable>(getSrc(0))); |
- assert(llvm::dyn_cast<Variable>(getSrc(0))->getRegNum() == RegX8632::Reg_eax); |
+ assert(llvm::cast<Variable>(getSrc(0))->getRegNum() == RegX8632::Reg_eax); |
assert(getDest()->getRegNum() == RegX8632::Reg_eax); // TODO: allow edx? |
const Operand *Src = getSrc(1); |
Type Ty = Src->getType(); |
@@ -1490,7 +1492,7 @@ void InstX8632Shld::emit(const Cfg *Func) const { |
assert(getSrcSize() == 3); |
assert(Dest == getSrc(0)); |
Str << "\tshld" << getWidthString(Dest->getType()) << "\t"; |
- if (Variable *ShiftReg = llvm::dyn_cast<Variable>(getSrc(2))) { |
+ if (const auto ShiftReg = llvm::dyn_cast<Variable>(getSrc(2))) { |
(void)ShiftReg; |
assert(ShiftReg->getRegNum() == RegX8632::Reg_ecx); |
Str << "%cl"; |
@@ -1527,7 +1529,7 @@ void InstX8632Shrd::emit(const Cfg *Func) const { |
assert(getSrcSize() == 3); |
assert(Dest == getSrc(0)); |
Str << "\tshrd" << getWidthString(Dest->getType()) << "\t"; |
- if (Variable *ShiftReg = llvm::dyn_cast<Variable>(getSrc(2))) { |
+ if (const auto ShiftReg = llvm::dyn_cast<Variable>(getSrc(2))) { |
(void)ShiftReg; |
assert(ShiftReg->getRegNum() == RegX8632::Reg_ecx); |
Str << "%cl"; |
@@ -1576,13 +1578,13 @@ void InstX8632Cmov::emitIAS(const Cfg *Func) const { |
assert(getDest()->hasReg()); |
assert(getSrcSize() == 2); |
// Only need the reg/reg form now. |
- const Variable *Src = llvm::cast<Variable>(getSrc(1)); |
- assert(Src->hasReg()); |
- assert(Src->getType() == IceType_i32); |
+ const auto SrcVar = llvm::cast<Variable>(getSrc(1)); |
+ assert(SrcVar->hasReg()); |
+ assert(SrcVar->getType() == IceType_i32); |
x86::AssemblerX86 *Asm = Func->getAssembler<x86::AssemblerX86>(); |
intptr_t StartPosition = Asm->GetPosition(); |
Asm->cmov(Condition, RegX8632::getEncodedGPR(getDest()->getRegNum()), |
- RegX8632::getEncodedGPR(Src->getRegNum())); |
+ RegX8632::getEncodedGPR(SrcVar->getRegNum())); |
emitIASBytes(Func, Asm, StartPosition); |
} |
@@ -1615,7 +1617,7 @@ void InstX8632Cmpps::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>(getSrc(1))); |
- const Variable *SrcVar = llvm::cast<Variable>(getSrc(1)); |
+ const auto SrcVar = llvm::cast<Variable>(getSrc(1)); |
if (SrcVar->hasReg()) { |
Asm->cmpps(RegX8632::getEncodedXmm(getDest()->getRegNum()), |
RegX8632::getEncodedXmm(SrcVar->getRegNum()), Condition); |
@@ -1654,10 +1656,10 @@ void InstX8632Cmpxchg::emitIAS(const Cfg *Func) const { |
x86::AssemblerX86 *Asm = Func->getAssembler<x86::AssemblerX86>(); |
intptr_t StartPosition = Asm->GetPosition(); |
Type Ty = getSrc(0)->getType(); |
- const OperandX8632Mem *Mem = llvm::cast<OperandX8632Mem>(getSrc(0)); |
+ const auto Mem = llvm::cast<OperandX8632Mem>(getSrc(0)); |
assert(Mem->getSegmentRegister() == OperandX8632Mem::DefaultSegment); |
const x86::Address Addr = Mem->toAsmAddress(Asm); |
- const Variable *VarReg = llvm::cast<Variable>(getSrc(2)); |
+ const auto VarReg = llvm::cast<Variable>(getSrc(2)); |
assert(VarReg->hasReg()); |
const RegX8632::GPRRegister Reg = |
RegX8632::getEncodedGPR(VarReg->getRegNum()); |
@@ -1692,7 +1694,7 @@ void InstX8632Cmpxchg8b::emitIAS(const Cfg *Func) const { |
assert(getSrcSize() == 5); |
x86::AssemblerX86 *Asm = Func->getAssembler<x86::AssemblerX86>(); |
intptr_t StartPosition = Asm->GetPosition(); |
- const OperandX8632Mem *Mem = llvm::cast<OperandX8632Mem>(getSrc(0)); |
+ const auto Mem = llvm::cast<OperandX8632Mem>(getSrc(0)); |
assert(Mem->getSegmentRegister() == OperandX8632Mem::DefaultSegment); |
const x86::Address Addr = Mem->toAsmAddress(Asm); |
if (Locked) { |
@@ -1844,12 +1846,12 @@ void InstX8632Ucomiss::emitIAS(const Cfg *Func) const { |
// Currently src0 is always a variable by convention, to avoid having |
// two memory operands. |
assert(llvm::isa<Variable>(getSrc(0))); |
- const Variable *Src0 = llvm::cast<Variable>(getSrc(0)); |
- Type Ty = Src0->getType(); |
+ const auto Src0Var = llvm::cast<Variable>(getSrc(0)); |
+ Type Ty = Src0Var->getType(); |
const static x86::AssemblerX86::XmmEmitterRegOp Emitter = { |
&x86::AssemblerX86::ucomiss, &x86::AssemblerX86::ucomiss |
}; |
- emitIASRegOpTyXMM(Func, Ty, Src0, getSrc(1), Emitter); |
+ emitIASRegOpTyXMM(Func, Ty, Src0Var, getSrc(1), Emitter); |
} |
void InstX8632Ucomiss::dump(const Cfg *Func) const { |
@@ -1892,8 +1894,7 @@ void InstX8632Test::emitIAS(const Cfg *Func) const { |
Type Ty = Src0->getType(); |
// The Reg/Addr form of test is not encodeable. |
static const x86::AssemblerX86::GPREmitterRegOp RegEmitter = { |
- &x86::AssemblerX86::test, NULL, &x86::AssemblerX86::test |
- }; |
+ &x86::AssemblerX86::test, nullptr, &x86::AssemblerX86::test}; |
static const x86::AssemblerX86::GPREmitterAddrOp AddrEmitter = { |
&x86::AssemblerX86::test, &x86::AssemblerX86::test |
}; |
@@ -1949,7 +1950,7 @@ void InstX8632Store::emitIAS(const Cfg *Func) const { |
Type DestTy = Dest->getType(); |
if (isScalarFloatingType(DestTy)) { |
// Src must be a register, since Dest is a Mem operand of some kind. |
- const Variable *SrcVar = llvm::cast<Variable>(Src); |
+ const auto SrcVar = llvm::cast<Variable>(Src); |
assert(SrcVar->hasReg()); |
RegX8632::XmmRegister SrcReg = RegX8632::getEncodedXmm(SrcVar->getRegNum()); |
x86::AssemblerX86 *Asm = Func->getAssembler<x86::AssemblerX86>(); |
@@ -1995,12 +1996,12 @@ void InstX8632StoreP::emitIAS(const Cfg *Func) const { |
x86::AssemblerX86 *Asm = Func->getAssembler<x86::AssemblerX86>(); |
intptr_t StartPosition = Asm->GetPosition(); |
assert(getSrcSize() == 2); |
- const Variable *Src = llvm::cast<Variable>(getSrc(0)); |
- const OperandX8632Mem *DestMem = llvm::cast<OperandX8632Mem>(getSrc(1)); |
+ const auto SrcVar = llvm::cast<Variable>(getSrc(0)); |
+ const auto DestMem = llvm::cast<OperandX8632Mem>(getSrc(1)); |
assert(DestMem->getSegmentRegister() == OperandX8632Mem::DefaultSegment); |
- assert(Src->hasReg()); |
+ assert(SrcVar->hasReg()); |
Asm->movups(DestMem->toAsmAddress(Asm), |
- RegX8632::getEncodedXmm(Src->getRegNum())); |
+ RegX8632::getEncodedXmm(SrcVar->getRegNum())); |
emitIASBytes(Func, Asm, StartPosition); |
} |
@@ -2027,12 +2028,12 @@ void InstX8632StoreQ::emitIAS(const Cfg *Func) const { |
x86::AssemblerX86 *Asm = Func->getAssembler<x86::AssemblerX86>(); |
intptr_t StartPosition = Asm->GetPosition(); |
assert(getSrcSize() == 2); |
- const Variable *Src = llvm::cast<Variable>(getSrc(0)); |
- const OperandX8632Mem *DestMem = llvm::cast<OperandX8632Mem>(getSrc(1)); |
+ const auto SrcVar = llvm::cast<Variable>(getSrc(0)); |
+ const auto DestMem = llvm::cast<OperandX8632Mem>(getSrc(1)); |
assert(DestMem->getSegmentRegister() == OperandX8632Mem::DefaultSegment); |
- assert(Src->hasReg()); |
+ assert(SrcVar->hasReg()); |
Asm->movq(DestMem->toAsmAddress(Asm), |
- RegX8632::getEncodedXmm(Src->getRegNum())); |
+ RegX8632::getEncodedXmm(SrcVar->getRegNum())); |
emitIASBytes(Func, Asm, StartPosition); |
} |
@@ -2050,11 +2051,11 @@ template <> void InstX8632Lea::emit(const Cfg *Func) const { |
assert(getDest()->hasReg()); |
Str << "\tleal\t"; |
Operand *Src0 = getSrc(0); |
- if (Variable *VSrc0 = llvm::dyn_cast<Variable>(Src0)) { |
- Type Ty = VSrc0->getType(); |
+ if (const auto Src0Var = llvm::dyn_cast<Variable>(Src0)) { |
+ Type Ty = Src0Var->getType(); |
// lea on x86-32 doesn't accept mem128 operands, so cast VSrc0 to an |
// acceptable type. |
- VSrc0->asType(isVectorType(Ty) ? IceType_i32 : Ty).emit(Func); |
+ Src0Var->asType(isVectorType(Ty) ? IceType_i32 : Ty).emit(Func); |
} else { |
Src0->emit(Func); |
} |
@@ -2141,7 +2142,7 @@ template <> void InstX8632Mov::emitIAS(const Cfg *Func) const { |
->stackVarToAsmOperand(Dest)); |
if (isScalarFloatingType(SrcTy)) { |
// Src must be a register. |
- const Variable *SrcVar = llvm::cast<Variable>(Src); |
+ const auto SrcVar = llvm::cast<Variable>(Src); |
assert(SrcVar->hasReg()); |
x86::AssemblerX86 *Asm = Func->getAssembler<x86::AssemblerX86>(); |
intptr_t StartPosition = Asm->GetPosition(); |
@@ -2164,25 +2165,25 @@ template <> void InstX8632Movd::emitIAS(const Cfg *Func) const { |
intptr_t StartPosition = Asm->GetPosition(); |
assert(getSrcSize() == 1); |
const Variable *Dest = getDest(); |
- const Variable *Src = llvm::cast<Variable>(getSrc(0)); |
+ const auto SrcVar = llvm::cast<Variable>(getSrc(0)); |
// For insert/extract element (one of Src/Dest is an Xmm vector and |
// the other is an int type). |
- if (Src->getType() == IceType_i32) { |
+ if (SrcVar->getType() == IceType_i32) { |
assert(isVectorType(Dest->getType())); |
assert(Dest->hasReg()); |
RegX8632::XmmRegister DestReg = RegX8632::getEncodedXmm(Dest->getRegNum()); |
- if (Src->hasReg()) { |
- Asm->movd(DestReg, RegX8632::getEncodedGPR(Src->getRegNum())); |
+ if (SrcVar->hasReg()) { |
+ Asm->movd(DestReg, RegX8632::getEncodedGPR(SrcVar->getRegNum())); |
} else { |
x86::Address StackAddr(static_cast<TargetX8632 *>(Func->getTarget()) |
- ->stackVarToAsmOperand(Src)); |
+ ->stackVarToAsmOperand(SrcVar)); |
Asm->movd(DestReg, StackAddr); |
} |
} else { |
- assert(isVectorType(Src->getType())); |
- assert(Src->hasReg()); |
+ assert(isVectorType(SrcVar->getType())); |
+ assert(SrcVar->hasReg()); |
assert(Dest->getType() == IceType_i32); |
- RegX8632::XmmRegister SrcReg = RegX8632::getEncodedXmm(Src->getRegNum()); |
+ RegX8632::XmmRegister SrcReg = RegX8632::getEncodedXmm(SrcVar->getRegNum()); |
if (Dest->hasReg()) { |
Asm->movd(RegX8632::getEncodedGPR(Dest->getRegNum()), SrcReg); |
} else { |
@@ -2248,12 +2249,12 @@ template <> void InstX8632MovssRegs::emitIAS(const Cfg *Func) const { |
assert(getSrcSize() == 2); |
const Variable *Dest = getDest(); |
assert(Dest == getSrc(0)); |
- const Variable *Src = llvm::cast<Variable>(getSrc(1)); |
- assert(Dest->hasReg() && Src->hasReg()); |
+ const auto SrcVar = llvm::cast<Variable>(getSrc(1)); |
+ assert(Dest->hasReg() && SrcVar->hasReg()); |
x86::AssemblerX86 *Asm = Func->getAssembler<x86::AssemblerX86>(); |
intptr_t StartPosition = Asm->GetPosition(); |
Asm->movss(IceType_f32, RegX8632::getEncodedXmm(Dest->getRegNum()), |
- RegX8632::getEncodedXmm(Src->getRegNum())); |
+ RegX8632::getEncodedXmm(SrcVar->getRegNum())); |
emitIASBytes(Func, Asm, StartPosition); |
} |
@@ -2304,7 +2305,7 @@ void InstX8632Fld::emit(const Cfg *Func) const { |
assert(getSrcSize() == 1); |
Type Ty = getSrc(0)->getType(); |
SizeT Width = typeWidthInBytes(Ty); |
- Variable *Var = llvm::dyn_cast<Variable>(getSrc(0)); |
+ const auto Var = llvm::dyn_cast<Variable>(getSrc(0)); |
if (Var && Var->hasReg()) { |
// This is a physical xmm register, so we need to spill it to a |
// temporary stack slot. |
@@ -2363,11 +2364,11 @@ void InstX8632Fld::dump(const Cfg *Func) const { |
void InstX8632Fstp::emit(const Cfg *Func) const { |
Ostream &Str = Func->getContext()->getStrEmit(); |
assert(getSrcSize() == 0); |
- // TODO(jvoung,stichnot): Utilize this by setting Dest to NULL to |
+ // TODO(jvoung,stichnot): Utilize this by setting Dest to nullptr to |
// "partially" delete the fstp if the Dest is unused. |
// Even if Dest is unused, the fstp should be kept for the SideEffects |
// of popping the stack. |
- if (getDest() == NULL) { |
+ if (!getDest()) { |
Str << "\tfstp\tst(0)"; |
return; |
} |
@@ -2397,11 +2398,11 @@ void InstX8632Fstp::emitIAS(const Cfg *Func) const { |
intptr_t StartPosition = Asm->GetPosition(); |
assert(getSrcSize() == 0); |
const Variable *Dest = getDest(); |
- // TODO(jvoung,stichnot): Utilize this by setting Dest to NULL to |
+ // TODO(jvoung,stichnot): Utilize this by setting Dest to nullptr to |
// "partially" delete the fstp if the Dest is unused. |
// Even if Dest is unused, the fstp should be kept for the SideEffects |
// of popping the stack. |
- if (Dest == NULL) { |
+ if (!Dest) { |
Asm->fstp(RegX8632::getEncodedSTReg(0)); |
emitIASBytes(Func, Asm, StartPosition); |
return; |
@@ -2485,7 +2486,7 @@ template <> void InstX8632Pextr::emitIAS(const Cfg *Func) const { |
assert(llvm::cast<Variable>(getSrc(0))->hasReg()); |
static const x86::AssemblerX86::ThreeOpImmEmitter< |
RegX8632::GPRRegister, RegX8632::XmmRegister> Emitter = { |
- &x86::AssemblerX86::pextr, NULL}; |
+ &x86::AssemblerX86::pextr, nullptr}; |
emitIASThreeOpImmOps<RegX8632::GPRRegister, RegX8632::XmmRegister, |
RegX8632::getEncodedGPR, RegX8632::getEncodedXmm>( |
Func, DispatchTy, Dest, getSrc(0), getSrc(1), Emitter); |
@@ -2504,12 +2505,12 @@ template <> void InstX8632Pinsr::emit(const Cfg *Func) const { |
getSrc(2)->emit(Func); |
Str << ", "; |
Operand *Src1 = getSrc(1); |
- if (Variable *VSrc1 = llvm::dyn_cast<Variable>(Src1)) { |
+ if (const auto Src1Var = llvm::dyn_cast<Variable>(Src1)) { |
// If src1 is a register, it should always be r32. |
- if (VSrc1->hasReg()) { |
- VSrc1->asType(IceType_i32).emit(Func); |
+ if (Src1Var->hasReg()) { |
+ Src1Var->asType(IceType_i32).emit(Func); |
} else { |
- VSrc1->emit(Func); |
+ Src1Var->emit(Func); |
} |
} else { |
Src1->emit(Func); |
@@ -2613,7 +2614,7 @@ void InstX8632Push::emit(const Cfg *Func) const { |
Ostream &Str = Func->getContext()->getStrEmit(); |
assert(getSrcSize() == 1); |
// Push is currently only used for saving GPRs. |
- Variable *Var = llvm::cast<Variable>(getSrc(0)); |
+ const auto Var = llvm::cast<Variable>(getSrc(0)); |
assert(Var->hasReg()); |
Str << "\tpush\t"; |
Var->emit(Func); |
@@ -2622,7 +2623,7 @@ void InstX8632Push::emit(const Cfg *Func) const { |
void InstX8632Push::emitIAS(const Cfg *Func) const { |
assert(getSrcSize() == 1); |
// Push is currently only used for saving GPRs. |
- Variable *Var = llvm::cast<Variable>(getSrc(0)); |
+ const auto Var = llvm::cast<Variable>(getSrc(0)); |
assert(Var->hasReg()); |
x86::AssemblerX86 *Asm = Func->getAssembler<x86::AssemblerX86>(); |
intptr_t StartPosition = Asm->GetPosition(); |
@@ -2693,10 +2694,10 @@ void InstX8632Xadd::emitIAS(const Cfg *Func) const { |
x86::AssemblerX86 *Asm = Func->getAssembler<x86::AssemblerX86>(); |
intptr_t StartPosition = Asm->GetPosition(); |
Type Ty = getSrc(0)->getType(); |
- const OperandX8632Mem *Mem = llvm::cast<OperandX8632Mem>(getSrc(0)); |
+ const auto Mem = llvm::cast<OperandX8632Mem>(getSrc(0)); |
assert(Mem->getSegmentRegister() == OperandX8632Mem::DefaultSegment); |
const x86::Address Addr = Mem->toAsmAddress(Asm); |
- const Variable *VarReg = llvm::cast<Variable>(getSrc(1)); |
+ const auto VarReg = llvm::cast<Variable>(getSrc(1)); |
assert(VarReg->hasReg()); |
const RegX8632::GPRRegister Reg = |
RegX8632::getEncodedGPR(VarReg->getRegNum()); |
@@ -2730,10 +2731,10 @@ void InstX8632Xchg::emitIAS(const Cfg *Func) const { |
x86::AssemblerX86 *Asm = Func->getAssembler<x86::AssemblerX86>(); |
intptr_t StartPosition = Asm->GetPosition(); |
Type Ty = getSrc(0)->getType(); |
- const OperandX8632Mem *Mem = llvm::cast<OperandX8632Mem>(getSrc(0)); |
+ const auto Mem = llvm::cast<OperandX8632Mem>(getSrc(0)); |
assert(Mem->getSegmentRegister() == OperandX8632Mem::DefaultSegment); |
const x86::Address Addr = Mem->toAsmAddress(Asm); |
- const Variable *VarReg = llvm::cast<Variable>(getSrc(1)); |
+ const auto VarReg = llvm::cast<Variable>(getSrc(1)); |
assert(VarReg->hasReg()); |
const RegX8632::GPRRegister Reg = |
RegX8632::getEncodedGPR(VarReg->getRegNum()); |
@@ -2756,14 +2757,14 @@ void OperandX8632Mem::emit(const Cfg *Func) const { |
} |
// Emit as Offset(Base,Index,1<<Shift). |
// Offset is emitted without the leading '$'. |
- // Omit the (Base,Index,1<<Shift) part if Base==NULL. |
- if (Offset == NULL) { |
+ // Omit the (Base,Index,1<<Shift) part if Base==nullptr. |
+ if (!Offset) { |
// No offset, emit nothing. |
- } else if (auto CI = llvm::dyn_cast<ConstantInteger32>(Offset)) { |
+ } else if (const auto CI = llvm::dyn_cast<ConstantInteger32>(Offset)) { |
if (CI->getValue()) |
// Emit a non-zero offset without a leading '$'. |
Str << CI->getValue(); |
- } else if (auto CR = llvm::dyn_cast<ConstantRelocatable>(Offset)) { |
+ } else if (const auto CR = llvm::dyn_cast<ConstantRelocatable>(Offset)) { |
CR->emitWithoutDollar(Func->getContext()); |
} else { |
llvm_unreachable("Invalid offset type for x86 mem operand"); |
@@ -2810,10 +2811,9 @@ void OperandX8632Mem::dump(const Cfg *Func, Ostream &Str) const { |
// Pretty-print the Offset. |
bool OffsetIsZero = false; |
bool OffsetIsNegative = false; |
- if (Offset == NULL) { |
+ if (!Offset) { |
OffsetIsZero = true; |
- } else if (ConstantInteger32 *CI = |
- llvm::dyn_cast<ConstantInteger32>(Offset)) { |
+ } else if (const auto CI = llvm::dyn_cast<ConstantInteger32>(Offset)) { |
OffsetIsZero = (CI->getValue() == 0); |
OffsetIsNegative = (static_cast<int32_t>(CI->getValue()) < 0); |
} else { |
@@ -2841,13 +2841,12 @@ void OperandX8632Mem::emitSegmentOverride(x86::AssemblerX86 *Asm) const { |
x86::Address OperandX8632Mem::toAsmAddress(Assembler *Asm) const { |
int32_t Disp = 0; |
- AssemblerFixup *Fixup = NULL; |
+ AssemblerFixup *Fixup = nullptr; |
// Determine the offset (is it relocatable?) |
if (getOffset()) { |
- if (ConstantInteger32 *CI = |
- llvm::dyn_cast<ConstantInteger32>(getOffset())) { |
+ if (const auto CI = llvm::dyn_cast<ConstantInteger32>(getOffset())) { |
Disp = static_cast<int32_t>(CI->getValue()); |
- } else if (ConstantRelocatable *CR = |
+ } else if (const auto CR = |
llvm::dyn_cast<ConstantRelocatable>(getOffset())) { |
Fixup = x86::DisplacementRelocation::create(Asm, FK_Abs_4, CR); |
} else { |