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 |