Chromium Code Reviews| Index: src/IceTargetLoweringX8632.cpp |
| diff --git a/src/IceTargetLoweringX8632.cpp b/src/IceTargetLoweringX8632.cpp |
| index 399d05826e0a869b5b1d99d55357557676d841d1..6178d45d6e6a7a59a3dbde0e6fea7d7e92e1b1de 100644 |
| --- a/src/IceTargetLoweringX8632.cpp |
| +++ b/src/IceTargetLoweringX8632.cpp |
| @@ -2710,8 +2710,6 @@ void TargetX8632::lowerIcmp(const InstIcmp *Inst) { |
| } |
| // a=icmp cond, b, c ==> cmp b,c; a=1; br cond,L1; FakeUse(a); a=0; L1: |
| - Constant *Zero = Ctx->getConstantZero(IceType_i32); |
| - Constant *One = Ctx->getConstantInt32(1); |
| if (Src0->getType() == IceType_i64) { |
| InstIcmp::ICond Condition = Inst->getCondition(); |
| size_t Index = static_cast<size_t>(Condition); |
| @@ -2720,28 +2718,21 @@ void TargetX8632::lowerIcmp(const InstIcmp *Inst) { |
| Operand *Src0HiRM = legalize(hiOperand(Src0), Legal_Reg | Legal_Mem); |
| Operand *Src1LoRI = legalize(loOperand(Src1), Legal_Reg | Legal_Imm); |
| Operand *Src1HiRI = legalize(hiOperand(Src1), Legal_Reg | Legal_Imm); |
| - if (Condition == InstIcmp::Eq || Condition == InstIcmp::Ne) { |
| - InstX8632Label *Label = InstX8632Label::create(Func, this); |
|
Jim Stichnoth
2015/05/06 22:24:21
This block of code is entirely removed.
|
| - _mov(Dest, (Condition == InstIcmp::Eq ? Zero : One)); |
| - _cmp(Src0LoRM, Src1LoRI); |
| - _br(CondX86::Br_ne, Label); |
| - _cmp(Src0HiRM, Src1HiRI); |
| - _br(CondX86::Br_ne, Label); |
| - _mov_nonkillable(Dest, (Condition == InstIcmp::Eq ? One : Zero)); |
| - Context.insert(Label); |
| - } else { |
| - InstX8632Label *LabelFalse = InstX8632Label::create(Func, this); |
| - InstX8632Label *LabelTrue = InstX8632Label::create(Func, this); |
| - _mov(Dest, One); |
| - _cmp(Src0HiRM, Src1HiRI); |
| + Constant *Zero = Ctx->getConstantZero(IceType_i32); |
| + Constant *One = Ctx->getConstantInt32(1); |
| + InstX8632Label *LabelFalse = InstX8632Label::create(Func, this); |
| + InstX8632Label *LabelTrue = InstX8632Label::create(Func, this); |
| + _mov(Dest, One); |
| + _cmp(Src0HiRM, Src1HiRI); |
| + if (TableIcmp64[Index].C1 != CondX86::Br_None) |
| _br(TableIcmp64[Index].C1, LabelTrue); |
|
Jim Stichnoth
2015/05/06 22:24:21
These two branch instructions are now created only
|
| + if (TableIcmp64[Index].C2 != CondX86::Br_None) |
| _br(TableIcmp64[Index].C2, LabelFalse); |
| - _cmp(Src0LoRM, Src1LoRI); |
| - _br(TableIcmp64[Index].C3, LabelTrue); |
| - Context.insert(LabelFalse); |
| - _mov_nonkillable(Dest, Zero); |
| - Context.insert(LabelTrue); |
| - } |
| + _cmp(Src0LoRM, Src1LoRI); |
| + _br(TableIcmp64[Index].C3, LabelTrue); |
| + Context.insert(LabelFalse); |
| + _mov_nonkillable(Dest, Zero); |
| + Context.insert(LabelTrue); |
| return; |
| } |