• Home
  • Raw
  • Download

Lines Matching refs:Instr

446 void TargetARM32::genTargetHelperCallFor(Inst *Instr) {  in genTargetHelperCallFor()  argument
450 switch (Instr->getKind()) { in genTargetHelperCallFor()
454 Variable *Dest = Instr->getDest(); in genTargetHelperCallFor()
457 llvm::cast<InstArithmetic>(Instr)->getOp(); in genTargetHelperCallFor()
468 scalarizeArithmetic(Op, Dest, Instr->getSrc(0), Instr->getSrc(1)); in genTargetHelperCallFor()
469 Instr->setDeleted(); in genTargetHelperCallFor()
502 Call->addArg(Instr->getSrc(0)); in genTargetHelperCallFor()
503 Call->addArg(Instr->getSrc(1)); in genTargetHelperCallFor()
504 Instr->setDeleted(); in genTargetHelperCallFor()
540 Operand *Src0 = Instr->getSrc(0); in genTargetHelperCallFor()
541 Operand *Src1 = Instr->getSrc(1); in genTargetHelperCallFor()
577 Instr->setDeleted(); in genTargetHelperCallFor()
591 Call->addArg(Instr->getSrc(0)); in genTargetHelperCallFor()
592 Call->addArg(Instr->getSrc(1)); in genTargetHelperCallFor()
593 Instr->setDeleted(); in genTargetHelperCallFor()
600 Variable *Dest = Instr->getDest(); in genTargetHelperCallFor()
601 Operand *Src0 = Instr->getSrc(0); in genTargetHelperCallFor()
604 auto *CastInstr = llvm::cast<InstCast>(Instr); in genTargetHelperCallFor()
626 Instr->setDeleted(); in genTargetHelperCallFor()
645 Instr->setDeleted(); in genTargetHelperCallFor()
692 Instr->setDeleted(); in genTargetHelperCallFor()
724 Variable *Dest = Instr->getDest(); in genTargetHelperCallFor()
725 auto *Intrinsic = llvm::cast<InstIntrinsic>(Instr); in genTargetHelperCallFor()
740 Instr->setDeleted(); in genTargetHelperCallFor()
755 Instr->setDeleted(); in genTargetHelperCallFor()
770 Instr->setDeleted(); in genTargetHelperCallFor()
783 Instr->setDeleted(); in genTargetHelperCallFor()
806 Instr->setDeleted(); in genTargetHelperCallFor()
821 Instr->setDeleted(); in genTargetHelperCallFor()
831 Instr->setDeleted(); in genTargetHelperCallFor()
1826 const Inst *Instr) { in resetTempBaseIfClobberedBy() argument
1829 Variable *Dest = Instr->getDest(); in resetTempBaseIfClobberedBy()
1830 if (llvm::isa<InstARM32Call>(Instr)) { in resetTempBaseIfClobberedBy()
2204 void TargetARM32::lowerAlloca(const InstAlloca *Instr) { in lowerAlloca() argument
2214 const uint32_t AlignmentParam = std::max(1u, Instr->getAlignInBytes()); in lowerAlloca()
2224 const bool AllocaWithKnownOffset = Instr->getKnownFrameOffset(); in lowerAlloca()
2236 Variable *Dest = Instr->getDest(); in lowerAlloca()
2237 Operand *TotalSize = Instr->getSizeInBytes(); in lowerAlloca()
2343 TargetARM32::lowerInt1Arithmetic(const InstArithmetic *Instr) { in lowerInt1Arithmetic() argument
2344 Variable *Dest = Instr->getDest(); in lowerInt1Arithmetic()
2351 assert(Instr->getSrcSize() == 2); in lowerInt1Arithmetic()
2353 SafeBoolChain Src0Safe = lowerInt1(Src0, Instr->getSrc(0)); in lowerInt1Arithmetic()
2355 Operand *Src1 = Instr->getSrc(1); in lowerInt1Arithmetic()
2367 switch (Instr->getOp()) { in lowerInt1Arithmetic()
2550 void TargetARM32::preambleDivRem(const InstCall *Instr) { in preambleDivRem() argument
2551 Operand *Src1 = Instr->getArg(1); in preambleDivRem()
3072 void TargetARM32::lowerArithmetic(const InstArithmetic *Instr) { in lowerArithmetic() argument
3073 Variable *Dest = Instr->getDest(); in lowerArithmetic()
3082 lowerInt1Arithmetic(Instr); in lowerArithmetic()
3086 Operand *Src0 = legalizeUndef(Instr->getSrc(0)); in lowerArithmetic()
3087 Operand *Src1 = legalizeUndef(Instr->getSrc(1)); in lowerArithmetic()
3089 lowerInt64Arithmetic(Instr->getOp(), Instr->getDest(), Src0, Src1); in lowerArithmetic()
3094 switch (Instr->getOp()) { in lowerArithmetic()
3096 UnimplementedLoweringError(this, Instr); in lowerArithmetic()
3122 switch (Instr->getOp()) { in lowerArithmetic()
3206 switch (Instr->getOp()) { in lowerArithmetic()
3518 void TargetARM32::lowerAssign(const InstAssign *Instr) { in lowerAssign() argument
3519 Variable *Dest = Instr->getDest(); in lowerAssign()
3526 Operand *Src0 = Instr->getSrc(0); in lowerAssign()
3658 void TargetARM32::lowerBr(const InstBr *Instr) { in lowerBr() argument
3659 if (Instr->isUnconditional()) { in lowerBr()
3660 _br(Instr->getTargetUnconditional()); in lowerBr()
3664 CfgNode *TargetTrue = Instr->getTargetTrue(); in lowerBr()
3665 CfgNode *TargetFalse = Instr->getTargetFalse(); in lowerBr()
3667 Instr->getCondition(), LowerInt1BranchTarget(TargetTrue), in lowerBr()
3690 void TargetARM32::lowerCall(const InstCall *Instr) { in lowerCall() argument
3691 Operand *CallTarget = Instr->getCallTarget(); in lowerCall()
3692 if (Instr->isTargetHelperCall()) { in lowerCall()
3695 (this->*TargetHelperPreamble->second)(Instr); in lowerCall()
3712 for (SizeT i = 0, NumArgs = Instr->getNumArgs(); i < NumArgs; ++i) { in lowerCall()
3713 Operand *Arg = legalizeUndef(Instr->getArg(i)); in lowerCall()
3775 Variable *Dest = Instr->getDest(); in lowerCall()
3850 if (Instr->hasSideEffects() && ReturnReg) { in lowerCall()
3875 if (Instr->isTargetHelperCall()) { in lowerCall()
3878 (this->*TargetHelpersPostamble->second)(Instr); in lowerCall()
3891 void TargetARM32::lowerCast(const InstCast *Instr) { in lowerCast() argument
3892 InstCast::OpKind CastKind = Instr->getCastKind(); in lowerCast()
3893 Variable *Dest = Instr->getDest(); in lowerCast()
3895 Operand *Src0 = legalizeUndef(Instr->getSrc(0)); in lowerCast()
4144 Operand *Src0 = Instr->getSrc(0); in lowerCast()
4155 UnimplementedLoweringError(this, Instr); in lowerCast()
4233 void TargetARM32::lowerExtractElement(const InstExtractElement *Instr) { in lowerExtractElement() argument
4234 Variable *Dest = Instr->getDest(); in lowerExtractElement()
4237 Variable *Src0 = legalizeToReg(Instr->getSrc(0)); in lowerExtractElement()
4238 Operand *Src1 = Instr->getSrc(1); in lowerExtractElement()
4307 TargetARM32::CondWhenTrue TargetARM32::lowerFcmpCond(const InstFcmp *Instr) { in lowerFcmpCond() argument
4308 InstFcmp::FCond Condition = Instr->getCondition(); in lowerFcmpCond()
4316 Variable *Src0R = legalizeToReg(Instr->getSrc(0)); in lowerFcmpCond()
4317 Operand *Src1 = Instr->getSrc(1); in lowerFcmpCond()
4330 void TargetARM32::lowerFcmp(const InstFcmp *Instr) { in lowerFcmp() argument
4331 Variable *Dest = Instr->getDest(); in lowerFcmp()
4335 if (Instr->getCondition() == InstFcmp::False) { in lowerFcmp()
4343 if (Instr->getCondition() == InstFcmp::True) { in lowerFcmp()
4354 auto *Src0 = legalizeToReg(Instr->getSrc(0)); in lowerFcmp()
4355 auto *Src1 = legalizeToReg(Instr->getSrc(1)); in lowerFcmp()
4357 switch (Instr->getCondition()) { in lowerFcmp()
4414 CondWhenTrue Cond = lowerFcmpCond(Instr); in lowerFcmp()
4647 TargetARM32::CondWhenTrue TargetARM32::lowerIcmpCond(const InstIcmp *Instr) { in lowerIcmpCond() argument
4648 return lowerIcmpCond(Instr->getCondition(), Instr->getSrc(0), in lowerIcmpCond()
4649 Instr->getSrc(1)); in lowerIcmpCond()
4701 void TargetARM32::lowerIcmp(const InstIcmp *Instr) { in lowerIcmp() argument
4702 Variable *Dest = Instr->getDest(); in lowerIcmp()
4707 auto *Src0 = legalizeToReg(Instr->getSrc(0)); in lowerIcmp()
4708 auto *Src1 = legalizeToReg(Instr->getSrc(1)); in lowerIcmp()
4749 switch (Instr->getCondition()) { in lowerIcmp()
4784 CondWhenTrue Cond = lowerIcmpCond(Instr); in lowerIcmp()
4793 void TargetARM32::lowerInsertElement(const InstInsertElement *Instr) { in lowerInsertElement() argument
4794 Variable *Dest = Instr->getDest(); in lowerInsertElement()
4797 Variable *Src0 = legalizeToReg(Instr->getSrc(0)); in lowerInsertElement()
4798 Variable *Src1 = legalizeToReg(Instr->getSrc(1)); in lowerInsertElement()
4799 Operand *Src2 = Instr->getSrc(2); in lowerInsertElement()
4989 void TargetARM32::postambleCtpop64(const InstCall *Instr) { in postambleCtpop64() argument
4990 Operand *Arg0 = Instr->getArg(0); in postambleCtpop64()
4998 auto *DestHi = llvm::cast<Variable>(hiOperand(Instr->getDest())); in postambleCtpop64()
5006 void TargetARM32::lowerIntrinsic(const InstIntrinsic *Instr) { in lowerIntrinsic() argument
5007 Variable *Dest = Instr->getDest(); in lowerIntrinsic()
5009 Intrinsics::IntrinsicID ID = Instr->getIntrinsicID(); in lowerIntrinsic()
5017 Operand *ByteSize = Instr->getArg(0); in lowerIntrinsic()
5043 ID, getConstantMemoryOrder(Instr->getArg(1)))) { in lowerIntrinsic()
5053 _ldrex(T, formMemoryOperand(Instr->getArg(0), IceType_i64)); in lowerIntrinsic()
5056 _ldr(T, formMemoryOperand(Instr->getArg(0), DestTy)); in lowerIntrinsic()
5069 ID, getConstantMemoryOrder(Instr->getArg(2)))) { in lowerIntrinsic()
5074 auto *Value = Instr->getArg(0); in lowerIntrinsic()
5081 IceType_i64, Instr->getArg(1), [this, ValueR](Variable *Tmp) { in lowerIntrinsic()
5094 auto *ValueR = legalizeToReg(Instr->getArg(0)); in lowerIntrinsic()
5097 auto *Addr = legalizeToReg(Instr->getArg(1)); in lowerIntrinsic()
5119 ID, getConstantMemoryOrder(Instr->getArg(3)), in lowerIntrinsic()
5120 getConstantMemoryOrder(Instr->getArg(4)))) { in lowerIntrinsic()
5130 lowerAssign(InstAssign::create(Func, New, Instr->getArg(2))); in lowerIntrinsic()
5134 lowerAssign(InstAssign::create(Func, Expected, Instr->getArg(1))); in lowerIntrinsic()
5138 DestTy, Instr->getArg(0), in lowerIntrinsic()
5163 auto *New = legalizeToReg(Instr->getArg(2)); in lowerIntrinsic()
5164 auto *Expected = legalizeToReg(Instr->getArg(1)); in lowerIntrinsic()
5169 DestTy, Instr->getArg(0), in lowerIntrinsic()
5185 ID, getConstantMemoryOrder(Instr->getArg(3)))) { in lowerIntrinsic()
5192 llvm::cast<ConstantInteger32>(Instr->getArg(0))->getValue()), in lowerIntrinsic()
5193 Instr->getArg(1), Instr->getArg(2)); in lowerIntrinsic()
5197 Operand *Val = Instr->getArg(0); in lowerIntrinsic()
5230 Operand *Val = Instr->getArg(0); in lowerIntrinsic()
5245 Operand *Val = Instr->getArg(0); in lowerIntrinsic()
5269 _vabs(T, legalizeToReg(Instr->getArg(0))); in lowerIntrinsic()
5301 Variable *Src = legalizeToReg(Instr->getArg(0)); in lowerIntrinsic()
5313 Variable *Val = legalizeToReg(Instr->getArg(0)); in lowerIntrinsic()
5323 Variable *Src0 = legalizeToReg(Instr->getArg(0)); in lowerIntrinsic()
5324 Variable *Src1 = legalizeToReg(Instr->getArg(1)); in lowerIntrinsic()
5331 assert(llvm::isa<ConstantInteger32>(Instr->getArg(1)) && in lowerIntrinsic()
5333 Variable *Dest = Instr->getDest(); in lowerIntrinsic()
5335 auto *SubVectorSize = llvm::cast<ConstantInteger32>(Instr->getArg(1)); in lowerIntrinsic()
5336 Operand *Addr = Instr->getArg(0); in lowerIntrinsic()
5361 assert(llvm::isa<ConstantInteger32>(Instr->getArg(2)) && in lowerIntrinsic()
5363 auto *SubVectorSize = llvm::cast<ConstantInteger32>(Instr->getArg(2)); in lowerIntrinsic()
5364 Variable *Value = legalizeToReg(Instr->getArg(0)); in lowerIntrinsic()
5365 Operand *Addr = Instr->getArg(1); in lowerIntrinsic()
5385 Variable *Src0 = legalizeToReg(Instr->getArg(0)); in lowerIntrinsic()
5386 Variable *Src1 = legalizeToReg(Instr->getArg(1)); in lowerIntrinsic()
5395 Variable *Src0 = legalizeToReg(Instr->getArg(0)); in lowerIntrinsic()
5396 Variable *Src1 = legalizeToReg(Instr->getArg(1)); in lowerIntrinsic()
5403 UnimplementedLoweringError(this, Instr); in lowerIntrinsic()
5407 UnimplementedLoweringError(this, Instr); in lowerIntrinsic()
5411 UnimplementedLoweringError(this, Instr); in lowerIntrinsic()
5417 Variable *Src0 = legalizeToReg(Instr->getArg(0)); in lowerIntrinsic()
5418 Variable *Src1 = legalizeToReg(Instr->getArg(1)); in lowerIntrinsic()
5428 Variable *Src0 = legalizeToReg(Instr->getArg(0)); in lowerIntrinsic()
5429 Variable *Src1 = legalizeToReg(Instr->getArg(1)); in lowerIntrinsic()
5548 bool isAddOrSub(const Inst *Instr, InstArithmetic::OpKind *Kind) { in isAddOrSub() argument
5549 if (const auto *Arith = llvm::dyn_cast<InstArithmetic>(Instr)) { in isAddOrSub()
5907 Inst *Instr = iteratorToInst(Context.getCur()); in doAddressOptLoad() local
5908 assert(llvm::isa<InstLoad>(Instr)); in doAddressOptLoad()
5909 Variable *Dest = Instr->getDest(); in doAddressOptLoad()
5910 Operand *Addr = Instr->getSrc(0); in doAddressOptLoad()
5912 formAddressingMode(Dest->getType(), Func, Instr, Addr)) { in doAddressOptLoad()
5913 Instr->setDeleted(); in doAddressOptLoad()
5922 void TargetARM32::lowerRet(const InstRet *Instr) { in lowerRet() argument
5924 if (Instr->hasRetValue()) { in lowerRet()
5925 Operand *Src0 = Instr->getRetValue(); in lowerRet()
5962 void TargetARM32::lowerShuffleVector(const InstShuffleVector *Instr) { in lowerShuffleVector() argument
5963 auto *Dest = Instr->getDest(); in lowerShuffleVector()
5967 auto *Src0 = Instr->getSrc(0); in lowerShuffleVector()
5968 auto *Src1 = Instr->getSrc(1); in lowerShuffleVector()
5973 for (SizeT I = 1; Replicate && I < Instr->getNumIndexes(); ++I) { in lowerShuffleVector()
5974 if (Instr->getIndexValue(I) != Instr->getIndexValue(0)) { in lowerShuffleVector()
5981 _vdup(T, Src0Var, Instr->getIndexValue(0)); in lowerShuffleVector()
5990 assert(ExpectedNumElements == Instr->getNumIndexes()); in lowerShuffleVector()
5993 if (Instr->indexesAre(0, 0, 1, 1, 2, 2, 3, 3)) { in lowerShuffleVector()
6000 if (Instr->indexesAre(0, 8, 1, 9, 2, 10, 3, 11)) { in lowerShuffleVector()
6008 if (Instr->indexesAre(0, 2, 4, 6, 0, 2, 4, 6)) { in lowerShuffleVector()
6018 assert(ExpectedNumElements == Instr->getNumIndexes()); in lowerShuffleVector()
6021 if (Instr->indexesAre(0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7)) { in lowerShuffleVector()
6028 if (Instr->indexesAre(0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, in lowerShuffleVector()
6041 assert(ExpectedNumElements == Instr->getNumIndexes()); in lowerShuffleVector()
6044 if (Instr->indexesAre(0, 0, 1, 1)) { in lowerShuffleVector()
6051 if (Instr->indexesAre(0, 4, 1, 5)) { in lowerShuffleVector()
6059 if (Instr->indexesAre(0, 1, 4, 5)) { in lowerShuffleVector()
6067 if (Instr->indexesAre(2, 3, 2, 3)) { in lowerShuffleVector()
6074 if (Instr->indexesAre(2, 3, 6, 7)) { in lowerShuffleVector()
6089 for (SizeT I = 0; I < Instr->getNumIndexes(); ++I) { in lowerShuffleVector()
6090 auto *Index = Instr->getIndex(I); in lowerShuffleVector()
6109 void TargetARM32::lowerSelect(const InstSelect *Instr) { in lowerSelect() argument
6110 Variable *Dest = Instr->getDest(); in lowerSelect()
6112 Operand *SrcT = Instr->getTrueOperand(); in lowerSelect()
6113 Operand *SrcF = Instr->getFalseOperand(); in lowerSelect()
6114 Operand *Condition = Instr->getCondition(); in lowerSelect()
6151 void TargetARM32::lowerStore(const InstStore *Instr) { in lowerStore() argument
6152 Operand *Value = Instr->getData(); in lowerStore()
6153 Operand *Addr = Instr->getStoreAddress(); in lowerStore()
6170 Inst *Instr = iteratorToInst(Context.getCur()); in doAddressOptStore() local
6171 assert(llvm::isa<InstStore>(Instr)); in doAddressOptStore()
6172 Operand *Src = Instr->getSrc(0); in doAddressOptStore()
6173 Operand *Addr = Instr->getSrc(1); in doAddressOptStore()
6175 formAddressingMode(Src->getType(), Func, Instr, Addr)) { in doAddressOptStore()
6176 Instr->setDeleted(); in doAddressOptStore()
6181 void TargetARM32::lowerSwitch(const InstSwitch *Instr) { in lowerSwitch() argument
6184 Operand *Src0 = Instr->getComparison(); in lowerSwitch()
6185 SizeT NumCases = Instr->getNumCases(); in lowerSwitch()
6191 Operand *ValueLo = Ctx->getConstantInt32(Instr->getValue(I)); in lowerSwitch()
6192 Operand *ValueHi = Ctx->getConstantInt32(Instr->getValue(I) >> 32); in lowerSwitch()
6197 _br(Instr->getLabel(I), CondARM32::EQ); in lowerSwitch()
6199 _br(Instr->getLabelDefault()); in lowerSwitch()
6217 Operand *Value = Ctx->getConstantInt32(Instr->getValue(I) << ShiftAmt); in lowerSwitch()
6220 _br(Instr->getLabel(I), CondARM32::EQ); in lowerSwitch()
6222 _br(Instr->getLabelDefault()); in lowerSwitch()
6225 void TargetARM32::lowerBreakpoint(const InstBreakpoint *Instr) { in lowerBreakpoint() argument
6226 UnimplementedLoweringError(this, Instr); in lowerBreakpoint()
6856 bool shouldTrackProducer(const Inst &Instr) { in shouldTrackProducer() argument
6857 switch (Instr.getKind()) { in shouldTrackProducer()
6864 switch (llvm::cast<InstCast>(&Instr)->getCastKind()) { in shouldTrackProducer()
6872 switch (llvm::cast<InstArithmetic>(&Instr)->getOp()) { in shouldTrackProducer()
6883 bool isValidConsumer(const Inst &Instr) { in isValidConsumer() argument
6884 switch (Instr.getKind()) { in isValidConsumer()
6890 return !isVectorType(Instr.getDest()->getType()); in isValidConsumer()
6892 switch (llvm::cast<InstCast>(&Instr)->getCastKind()) { in isValidConsumer()
6896 return !isVectorType(Instr.getDest()->getType()); in isValidConsumer()
6898 return !isVectorType(Instr.getDest()->getType()); in isValidConsumer()
6902 switch (llvm::cast<InstArithmetic>(&Instr)->getOp()) { in isValidConsumer()
6906 return !isVectorType(Instr.getDest()->getType()); in isValidConsumer()
6908 return !isVectorType(Instr.getDest()->getType()); in isValidConsumer()
6916 bool shouldTrackProducer(const Inst &Instr) { in shouldTrackProducer() argument
6917 switch (Instr.getKind()) { in shouldTrackProducer()
6921 switch (llvm::cast<InstArithmetic>(&Instr)->getOp()) { in shouldTrackProducer()
6931 bool isValidConsumer(const Inst &Instr) { in isValidConsumer() argument
6932 switch (Instr.getKind()) { in isValidConsumer()
6936 switch (llvm::cast<InstArithmetic>(&Instr)->getOp()) { in isValidConsumer()
6949 bool shouldTrackProducer(const Inst &Instr) { in shouldTrackProducer() argument
6950 switch (Instr.getKind()) { in shouldTrackProducer()
6954 switch (llvm::cast<InstArithmetic>(&Instr)->getOp()) { in shouldTrackProducer()
6964 bool isValidConsumer(const Inst &Instr) { in isValidConsumer() argument
6965 switch (Instr.getKind()) { in isValidConsumer()
6969 switch (llvm::cast<InstArithmetic>(&Instr)->getOp()) { in isValidConsumer()
6983 for (Inst &Instr : Node->getInsts()) { in recordProducers()
6985 Variable *Dest = Instr.getDest(); in recordProducers()
6986 if (!Instr.isDeleted() // only consider non-deleted instructions; and in recordProducers()
6989 && BoolFolding::shouldTrackProducer(Instr)) { // white-listed instr. in recordProducers()
6991 ComputationEntry(&Instr, IceType_i1)); in recordProducers()
6993 if (!Instr.isDeleted() // only consider non-deleted instructions; and in recordProducers()
6996 && FpFolding::shouldTrackProducer(Instr)) { // white-listed instr. in recordProducers()
6998 ComputationEntry(&Instr, Dest->getType())); in recordProducers()
7000 if (!Instr.isDeleted() // only consider non-deleted instructions; and in recordProducers()
7003 && IntFolding::shouldTrackProducer(Instr)) { // white-listed instr. in recordProducers()
7005 ComputationEntry(&Instr, IceType_i32)); in recordProducers()
7008 FOREACH_VAR_IN_INST(Var, Instr) { in recordProducers()
7021 if (!BoolFolding::isValidConsumer(Instr)) { in recordProducers()
7027 if (IndexOfVarInInst(Var) != 1 || !IntFolding::isValidConsumer(Instr)) { in recordProducers()
7034 if (IndexOfVarInInst(Var) != 1 || !FpFolding::isValidConsumer(Instr)) { in recordProducers()
7041 if (Instr.isLastUse(Var)) { in recordProducers()
7059 Iter->second.Instr->setDead(); in recordProducers()