| OLD | NEW |
| 1 //===- subzero/src/IceTargetLoweringX86BaseImpl.h - x86 lowering -*- C++ -*-==// | 1 //===- subzero/src/IceTargetLoweringX86BaseImpl.h - x86 lowering -*- C++ -*-==// |
| 2 // | 2 // |
| 3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
| 4 // | 4 // |
| 5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
| 6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
| 7 // | 7 // |
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
| 9 /// | 9 /// |
| 10 /// \file | 10 /// \file |
| (...skipping 1956 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1967 void TargetX86Base<TraitsType>::lowerBr(const InstBr *Br) { | 1967 void TargetX86Base<TraitsType>::lowerBr(const InstBr *Br) { |
| 1968 if (Br->isUnconditional()) { | 1968 if (Br->isUnconditional()) { |
| 1969 _br(Br->getTargetUnconditional()); | 1969 _br(Br->getTargetUnconditional()); |
| 1970 return; | 1970 return; |
| 1971 } | 1971 } |
| 1972 Operand *Cond = Br->getCondition(); | 1972 Operand *Cond = Br->getCondition(); |
| 1973 | 1973 |
| 1974 // Handle folding opportunities. | 1974 // Handle folding opportunities. |
| 1975 if (const Inst *Producer = FoldingInfo.getProducerFor(Cond)) { | 1975 if (const Inst *Producer = FoldingInfo.getProducerFor(Cond)) { |
| 1976 assert(Producer->isDeleted()); | 1976 assert(Producer->isDeleted()); |
| 1977 switch (BoolFolding::getProducerKind(Producer)) { | 1977 switch (BoolFolding<Traits>::getProducerKind(Producer)) { |
| 1978 default: | 1978 default: |
| 1979 break; | 1979 break; |
| 1980 case BoolFolding::PK_Icmp32: | 1980 case BoolFolding<Traits>::PK_Icmp32: |
| 1981 case BoolFolding::PK_Icmp64: { | 1981 case BoolFolding<Traits>::PK_Icmp64: { |
| 1982 lowerIcmpAndConsumer(llvm::dyn_cast<InstIcmp>(Producer), Br); | 1982 lowerIcmpAndConsumer(llvm::dyn_cast<InstIcmp>(Producer), Br); |
| 1983 return; | 1983 return; |
| 1984 } | 1984 } |
| 1985 case BoolFolding::PK_Fcmp: { | 1985 case BoolFolding<Traits>::PK_Fcmp: { |
| 1986 lowerFcmpAndConsumer(llvm::dyn_cast<InstFcmp>(Producer), Br); | 1986 lowerFcmpAndConsumer(llvm::dyn_cast<InstFcmp>(Producer), Br); |
| 1987 return; | 1987 return; |
| 1988 } | 1988 } |
| 1989 case BoolFolding::PK_Arith: { | 1989 case BoolFolding<Traits>::PK_Arith: { |
| 1990 lowerArithAndConsumer(llvm::dyn_cast<InstArithmetic>(Producer), Br); | 1990 lowerArithAndConsumer(llvm::dyn_cast<InstArithmetic>(Producer), Br); |
| 1991 return; | 1991 return; |
| 1992 } | 1992 } |
| 1993 } | 1993 } |
| 1994 } | 1994 } |
| 1995 Operand *Src0 = legalize(Cond, Legal_Reg | Legal_Mem); | 1995 Operand *Src0 = legalize(Cond, Legal_Reg | Legal_Mem); |
| 1996 Constant *Zero = Ctx->getConstantZero(IceType_i32); | 1996 Constant *Zero = Ctx->getConstantZero(IceType_i32); |
| 1997 _cmp(Src0, Zero); | 1997 _cmp(Src0, Zero); |
| 1998 _br(Traits::Cond::Br_ne, Br->getTargetTrue(), Br->getTargetFalse()); | 1998 _br(Traits::Cond::Br_ne, Br->getTargetTrue(), Br->getTargetFalse()); |
| 1999 } | 1999 } |
| (...skipping 2803 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4803 | 4803 |
| 4804 if (isVectorType(Dest->getType())) { | 4804 if (isVectorType(Dest->getType())) { |
| 4805 lowerSelectVector(Select); | 4805 lowerSelectVector(Select); |
| 4806 return; | 4806 return; |
| 4807 } | 4807 } |
| 4808 | 4808 |
| 4809 Operand *Condition = Select->getCondition(); | 4809 Operand *Condition = Select->getCondition(); |
| 4810 // Handle folding opportunities. | 4810 // Handle folding opportunities. |
| 4811 if (const Inst *Producer = FoldingInfo.getProducerFor(Condition)) { | 4811 if (const Inst *Producer = FoldingInfo.getProducerFor(Condition)) { |
| 4812 assert(Producer->isDeleted()); | 4812 assert(Producer->isDeleted()); |
| 4813 switch (BoolFolding::getProducerKind(Producer)) { | 4813 switch (BoolFolding<Traits>::getProducerKind(Producer)) { |
| 4814 default: | 4814 default: |
| 4815 break; | 4815 break; |
| 4816 case BoolFolding::PK_Icmp32: | 4816 case BoolFolding<Traits>::PK_Icmp32: |
| 4817 case BoolFolding::PK_Icmp64: { | 4817 case BoolFolding<Traits>::PK_Icmp64: { |
| 4818 lowerIcmpAndConsumer(llvm::dyn_cast<InstIcmp>(Producer), Select); | 4818 lowerIcmpAndConsumer(llvm::dyn_cast<InstIcmp>(Producer), Select); |
| 4819 return; | 4819 return; |
| 4820 } | 4820 } |
| 4821 case BoolFolding::PK_Fcmp: { | 4821 case BoolFolding<Traits>::PK_Fcmp: { |
| 4822 lowerFcmpAndConsumer(llvm::dyn_cast<InstFcmp>(Producer), Select); | 4822 lowerFcmpAndConsumer(llvm::dyn_cast<InstFcmp>(Producer), Select); |
| 4823 return; | 4823 return; |
| 4824 } | 4824 } |
| 4825 } | 4825 } |
| 4826 } | 4826 } |
| 4827 | 4827 |
| 4828 Operand *CmpResult = legalize(Condition, Legal_Reg | Legal_Mem); | 4828 Operand *CmpResult = legalize(Condition, Legal_Reg | Legal_Mem); |
| 4829 Operand *Zero = Ctx->getConstantZero(IceType_i32); | 4829 Operand *Zero = Ctx->getConstantZero(IceType_i32); |
| 4830 _cmp(CmpResult, Zero); | 4830 _cmp(CmpResult, Zero); |
| 4831 Operand *SrcT = Select->getTrueOperand(); | 4831 Operand *SrcT = Select->getTrueOperand(); |
| (...skipping 1723 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6555 } | 6555 } |
| 6556 // the offset is not eligible for blinding or pooling, return the original | 6556 // the offset is not eligible for blinding or pooling, return the original |
| 6557 // mem operand | 6557 // mem operand |
| 6558 return MemOperand; | 6558 return MemOperand; |
| 6559 } | 6559 } |
| 6560 | 6560 |
| 6561 } // end of namespace X86NAMESPACE | 6561 } // end of namespace X86NAMESPACE |
| 6562 } // end of namespace Ice | 6562 } // end of namespace Ice |
| 6563 | 6563 |
| 6564 #endif // SUBZERO_SRC_ICETARGETLOWERINGX86BASEIMPL_H | 6564 #endif // SUBZERO_SRC_ICETARGETLOWERINGX86BASEIMPL_H |
| OLD | NEW |