| Index: src/IceInstX8632.cpp
|
| diff --git a/src/IceInstX8632.cpp b/src/IceInstX8632.cpp
|
| index 0ea67b973b14c2b9402568b918a5e9a81be0c6b2..0a2d034f9ac941b6aa424e99590fc5e2b3d84043 100644
|
| --- a/src/IceInstX8632.cpp
|
| +++ b/src/IceInstX8632.cpp
|
| @@ -514,13 +514,8 @@ void emitIASRegOpTyGPR(const Cfg *Func, Type Ty, const Variable *Var,
|
| RegX8632::getEncodedByteRegOrGPR(Ty, Var->getRegNum());
|
| if (const Variable *SrcVar = llvm::dyn_cast<Variable>(Src)) {
|
| if (SrcVar->hasReg()) {
|
| - RegX8632::GPRRegister SrcReg;
|
| - if (Ty == IceType_i8 || Ty == IceType_i1) {
|
| - SrcReg = static_cast<RegX8632::GPRRegister>(
|
| - RegX8632::getEncodedByteReg(SrcVar->getRegNum()));
|
| - } else {
|
| - SrcReg = RegX8632::getEncodedGPR(SrcVar->getRegNum());
|
| - }
|
| + RegX8632::GPRRegister SrcReg =
|
| + RegX8632::getEncodedByteRegOrGPR(Ty, SrcVar->getRegNum());
|
| (Asm->*(Emitter.GPRGPR))(Ty, VarReg, SrcReg);
|
| } else {
|
| x86::Address SrcStackAddr = static_cast<TargetX8632 *>(Func->getTarget())
|
| @@ -747,7 +742,7 @@ template <> void InstX8632Sqrtss::emit(const Cfg *Func) const {
|
| Ostream &Str = Func->getContext()->getStrEmit();
|
| assert(getSrcSize() == 1);
|
| Type Ty = getSrc(0)->getType();
|
| - assert(Ty == IceType_f32 || Ty == IceType_f64);
|
| + assert(isScalarFloatingType(Ty));
|
| Str << "\tsqrt" << TypeX8632Attributes[Ty].SdSsString << "\t";
|
| getDest()->emit(Func);
|
| Str << ", ";
|
| @@ -888,7 +883,7 @@ template <> void InstX8632Pblendvb::emit(const Cfg *Func) const {
|
| template <> void InstX8632Imul::emit(const Cfg *Func) const {
|
| Ostream &Str = Func->getContext()->getStrEmit();
|
| assert(getSrcSize() == 2);
|
| - if (getDest()->getType() == IceType_i8) {
|
| + if (isByteSizedArithType(getDest()->getType())) {
|
| // The 8-bit version of imul only allows the form "imul r/m8".
|
| Variable *Src0 = llvm::dyn_cast<Variable>(getSrc(0));
|
| (void)Src0;
|
| @@ -1743,8 +1738,7 @@ void InstX8632Push::emit(const Cfg *Func) const {
|
| assert(getSrcSize() == 1);
|
| Type Ty = getSrc(0)->getType();
|
| Variable *Var = llvm::dyn_cast<Variable>(getSrc(0));
|
| - if ((isVectorType(Ty) || Ty == IceType_f32 || Ty == IceType_f64) && Var &&
|
| - Var->hasReg()) {
|
| + if ((isVectorType(Ty) || isScalarFloatingType(Ty)) && Var && Var->hasReg()) {
|
| // The xmm registers can't be directly pushed, so we fake it by
|
| // decrementing esp and then storing to [esp].
|
| Str << "\tsub\tesp, " << typeWidthInBytes(Ty) << "\n";
|
|
|