Lines Matching refs:Ops

82 static void PrintOps(Instruction *I, const SmallVectorImpl<ValueEntry> &Ops) {  in PrintOps()  argument
85 << *Ops[0].Op->getType() << '\t'; in PrintOps()
86 for (unsigned i = 0, e = Ops.size(); i != e; ++i) { in PrintOps()
88 Ops[i].Op->printAsOperand(dbgs(), false, M); in PrintOps()
89 dbgs() << ", #" << Ops[i].Rank << "] "; in PrintOps()
468 SmallVectorImpl<RepeatedValue> &Ops, in LinearizeExprTree() argument
646 Ops.push_back(std::make_pair(V, Weight)); in LinearizeExprTree()
652 if (Ops.empty()) { in LinearizeExprTree()
655 Ops.emplace_back(Identity, APInt(Bitwidth, 1)); in LinearizeExprTree()
664 SmallVectorImpl<ValueEntry> &Ops, in RewriteExprTree() argument
666 assert(Ops.size() > 1 && "Single values should be used directly!"); in RewriteExprTree()
694 for (unsigned i = 0, e = Ops.size(); i != e; ++i) in RewriteExprTree()
695 NotRewritable.insert(Ops[i].Op); in RewriteExprTree()
707 if (i+2 == Ops.size()) { in RewriteExprTree()
708 Value *NewLHS = Ops[i].Op; in RewriteExprTree()
709 Value *NewRHS = Ops[i+1].Op; in RewriteExprTree()
755 Value *NewRHS = Ops[i].Op; in RewriteExprTree()
1145 static unsigned FindInOperandList(const SmallVectorImpl<ValueEntry> &Ops, in FindInOperandList() argument
1147 unsigned XRank = Ops[i].Rank; in FindInOperandList()
1148 unsigned e = Ops.size(); in FindInOperandList()
1149 for (unsigned j = i+1; j != e && Ops[j].Rank == XRank; ++j) { in FindInOperandList()
1150 if (Ops[j].Op == X) in FindInOperandList()
1152 if (Instruction *I1 = dyn_cast<Instruction>(Ops[j].Op)) in FindInOperandList()
1158 for (unsigned j = i-1; j != ~0U && Ops[j].Rank == XRank; --j) { in FindInOperandList()
1159 if (Ops[j].Op == X) in FindInOperandList()
1161 if (Instruction *I1 = dyn_cast<Instruction>(Ops[j].Op)) in FindInOperandList()
1172 SmallVectorImpl<WeakTrackingVH> &Ops) { in EmitAddTreeOfValues() argument
1173 if (Ops.size() == 1) return Ops.back(); in EmitAddTreeOfValues()
1175 Value *V1 = Ops.pop_back_val(); in EmitAddTreeOfValues()
1176 Value *V2 = EmitAddTreeOfValues(I, Ops); in EmitAddTreeOfValues()
1275 SmallVectorImpl<ValueEntry> &Ops) { in OptimizeAndOrXor() argument
1278 for (unsigned i = 0, e = Ops.size(); i != e; ++i) { in OptimizeAndOrXor()
1280 assert(i < Ops.size()); in OptimizeAndOrXor()
1282 if (match(Ops[i].Op, m_Not(m_Value(X)))) { // Cannot occur for ^. in OptimizeAndOrXor()
1283 unsigned FoundX = FindInOperandList(Ops, i, X); in OptimizeAndOrXor()
1295 assert(i < Ops.size()); in OptimizeAndOrXor()
1296 if (i+1 != Ops.size() && Ops[i+1].Op == Ops[i].Op) { in OptimizeAndOrXor()
1299 Ops.erase(Ops.begin()+i); in OptimizeAndOrXor()
1308 return Constant::getNullValue(Ops[0].Op->getType()); in OptimizeAndOrXor()
1311 Ops.erase(Ops.begin()+i, Ops.begin()+i+2); in OptimizeAndOrXor()
1455 SmallVectorImpl<ValueEntry> &Ops) { in OptimizeXor() argument
1456 if (Value *V = OptimizeAndOrXor(Instruction::Xor, Ops)) in OptimizeXor()
1459 if (Ops.size() == 1) in OptimizeXor()
1464 Type *Ty = Ops[0].Op->getType(); in OptimizeXor()
1468 for (unsigned i = 0, e = Ops.size(); i != e; ++i) { in OptimizeXor()
1469 Value *V = Ops[i].Op; in OptimizeXor()
1548 Ops.clear(); in OptimizeXor()
1553 Ops.push_back(VE); in OptimizeXor()
1558 Ops.push_back(VE); in OptimizeXor()
1560 unsigned Sz = Ops.size(); in OptimizeXor()
1562 return Ops.back().Op; in OptimizeXor()
1576 SmallVectorImpl<ValueEntry> &Ops) { in OptimizeAdd() argument
1582 for (unsigned i = 0, e = Ops.size(); i != e; ++i) { in OptimizeAdd()
1583 Value *TheOp = Ops[i].Op; in OptimizeAdd()
1587 if (i+1 != Ops.size() && Ops[i+1].Op == TheOp) { in OptimizeAdd()
1591 Ops.erase(Ops.begin()+i); in OptimizeAdd()
1593 } while (i != Ops.size() && Ops[i].Op == TheOp); in OptimizeAdd()
1611 if (Ops.empty()) in OptimizeAdd()
1617 Ops.insert(Ops.begin(), ValueEntry(getRank(Mul), Mul)); in OptimizeAdd()
1620 e = Ops.size(); in OptimizeAdd()
1630 unsigned FoundX = FindInOperandList(Ops, i, X); in OptimizeAdd()
1635 if (Ops.size() == 2 && in OptimizeAdd()
1640 if (Ops.size() == 2 && match(TheOp, m_Not(m_Value()))) in OptimizeAdd()
1643 Ops.erase(Ops.begin()+i); in OptimizeAdd()
1648 Ops.erase(Ops.begin()+FoundX); in OptimizeAdd()
1656 Ops.insert(Ops.end(), ValueEntry(getRank(V), V)); in OptimizeAdd()
1672 for (unsigned i = 0, e = Ops.size(); i != e; ++i) { in OptimizeAdd()
1674 isReassociableOp(Ops[i].Op, Instruction::Mul, Instruction::FMul); in OptimizeAdd()
1742 for (unsigned i = 0; i != Ops.size(); ++i) { in OptimizeAdd()
1745 isReassociableOp(Ops[i].Op, Instruction::Mul, Instruction::FMul); in OptimizeAdd()
1749 if (Value *V = RemoveFactorFromExpression(Ops[i].Op, MaxOccVal)) { in OptimizeAdd()
1752 for (unsigned j = Ops.size(); j != i;) { in OptimizeAdd()
1754 if (Ops[j].Op == Ops[i].Op) { in OptimizeAdd()
1756 Ops.erase(Ops.begin()+j); in OptimizeAdd()
1786 if (Ops.empty()) in OptimizeAdd()
1792 Ops.insert(Ops.begin(), ValueEntry(getRank(V2), V2)); in OptimizeAdd()
1809 static bool collectMultiplyFactors(SmallVectorImpl<ValueEntry> &Ops, in collectMultiplyFactors() argument
1814 for (unsigned Idx = 1, Size = Ops.size(); Idx < Size; ++Idx) { in collectMultiplyFactors()
1815 Value *Op = Ops[Idx-1].Op; in collectMultiplyFactors()
1819 for (; Idx < Size && Ops[Idx].Op == Op; ++Idx) in collectMultiplyFactors()
1835 for (unsigned Idx = 1; Idx < Ops.size(); ++Idx) { in collectMultiplyFactors()
1836 Value *Op = Ops[Idx-1].Op; in collectMultiplyFactors()
1840 for (; Idx < Ops.size() && Ops[Idx].Op == Op; ++Idx) in collectMultiplyFactors()
1849 Ops.erase(Ops.begin()+Idx, Ops.begin()+Idx+Count); in collectMultiplyFactors()
1864 SmallVectorImpl<Value*> &Ops) { in buildMultiplyTree() argument
1865 if (Ops.size() == 1) in buildMultiplyTree()
1866 return Ops.back(); in buildMultiplyTree()
1868 Value *LHS = Ops.pop_back_val(); in buildMultiplyTree()
1871 LHS = Builder.CreateMul(LHS, Ops.pop_back_val()); in buildMultiplyTree()
1873 LHS = Builder.CreateFMul(LHS, Ops.pop_back_val()); in buildMultiplyTree()
1874 } while (!Ops.empty()); in buildMultiplyTree()
1944 SmallVectorImpl<ValueEntry> &Ops) { in OptimizeMul() argument
1947 if (Ops.size() < 4) in OptimizeMul()
1954 if (!collectMultiplyFactors(Ops, Factors)) in OptimizeMul()
1965 if (Ops.empty()) in OptimizeMul()
1969 Ops.insert(llvm::lower_bound(Ops, NewEntry), NewEntry); in OptimizeMul()
1974 SmallVectorImpl<ValueEntry> &Ops) { in OptimizeExpression() argument
1980 while (!Ops.empty()) { in OptimizeExpression()
1981 if (auto *C = dyn_cast<Constant>(Ops.back().Op)) { in OptimizeExpression()
1983 Ops.pop_back(); in OptimizeExpression()
1988 Ops.pop_back(); in OptimizeExpression()
1996 if (Ops.empty()) in OptimizeExpression()
2005 Ops.push_back(ValueEntry(0, Cst)); in OptimizeExpression()
2008 if (Ops.size() == 1) return Ops[0].Op; in OptimizeExpression()
2012 unsigned NumOps = Ops.size(); in OptimizeExpression()
2017 if (Value *Result = OptimizeAndOrXor(Opcode, Ops)) in OptimizeExpression()
2022 if (Value *Result = OptimizeXor(I, Ops)) in OptimizeExpression()
2028 if (Value *Result = OptimizeAdd(I, Ops)) in OptimizeExpression()
2034 if (Value *Result = OptimizeMul(I, Ops)) in OptimizeExpression()
2039 if (Ops.size() != NumOps) in OptimizeExpression()
2040 return OptimizeExpression(I, Ops); in OptimizeExpression()
2049 SmallVector<Value *, 4> Ops(I->operands()); in RecursivelyEraseDeadInsts() local
2055 for (auto *Op : Ops) in RecursivelyEraseDeadInsts()
2066 SmallVector<Value *, 8> Ops(I->operands()); in EraseInst() local
2074 for (unsigned i = 0, e = Ops.size(); i != e; ++i) in EraseInst()
2075 if (Instruction *Op = dyn_cast<Instruction>(Ops[i])) { in EraseInst()
2371 SmallVector<ValueEntry, 8> Ops; in ReassociateExpression() local
2372 Ops.reserve(Tree.size()); in ReassociateExpression()
2374 Ops.append(E.second.getZExtValue(), ValueEntry(getRank(E.first), E.first)); in ReassociateExpression()
2376 LLVM_DEBUG(dbgs() << "RAIn:\t"; PrintOps(I, Ops); dbgs() << '\n'); in ReassociateExpression()
2384 llvm::stable_sort(Ops); in ReassociateExpression()
2388 if (Value *V = OptimizeExpression(I, Ops)) { in ReassociateExpression()
2411 isa<ConstantInt>(Ops.back().Op) && in ReassociateExpression()
2412 cast<ConstantInt>(Ops.back().Op)->isMinusOne()) { in ReassociateExpression()
2413 ValueEntry Tmp = Ops.pop_back_val(); in ReassociateExpression()
2414 Ops.insert(Ops.begin(), Tmp); in ReassociateExpression()
2418 isa<ConstantFP>(Ops.back().Op) && in ReassociateExpression()
2419 cast<ConstantFP>(Ops.back().Op)->isExactlyValue(-1.0)) { in ReassociateExpression()
2420 ValueEntry Tmp = Ops.pop_back_val(); in ReassociateExpression()
2421 Ops.insert(Ops.begin(), Tmp); in ReassociateExpression()
2425 LLVM_DEBUG(dbgs() << "RAOut:\t"; PrintOps(I, Ops); dbgs() << '\n'); in ReassociateExpression()
2427 if (Ops.size() == 1) { in ReassociateExpression()
2428 if (Ops[0].Op == I) in ReassociateExpression()
2434 I->replaceAllUsesWith(Ops[0].Op); in ReassociateExpression()
2435 if (Instruction *OI = dyn_cast<Instruction>(Ops[0].Op)) in ReassociateExpression()
2441 if (Ops.size() > 2 && Ops.size() <= GlobalReassociateLimit) { in ReassociateExpression()
2462 int StartIdx = Ops.size() - 1; in ReassociateExpression()
2468 const Value *Val = Ops[i].Op; in ReassociateExpression()
2510 for (unsigned i = Ops.size() - 1; i > LimitIdx; --i) { in ReassociateExpression()
2514 Value *Op0 = Ops[i].Op; in ReassociateExpression()
2515 Value *Op1 = Ops[j].Op; in ReassociateExpression()
2529 unsigned MaxRank = std::max(Ops[i].Rank, Ops[j].Rank); in ReassociateExpression()
2551 auto Op0 = Ops[BestPair.first]; in ReassociateExpression()
2552 auto Op1 = Ops[BestPair.second]; in ReassociateExpression()
2553 Ops.erase(&Ops[BestPair.second]); in ReassociateExpression()
2554 Ops.erase(&Ops[BestPair.first]); in ReassociateExpression()
2555 Ops.push_back(Op0); in ReassociateExpression()
2556 Ops.push_back(Op1); in ReassociateExpression()
2559 LLVM_DEBUG(dbgs() << "RAOut after CSE reorder:\t"; PrintOps(I, Ops); in ReassociateExpression()
2563 RewriteExprTree(I, Ops, HasNUW); in ReassociateExpression()
2582 SmallVector<Value *, 8> Ops; in BuildPairMap() local
2583 while (!Worklist.empty() && Ops.size() <= GlobalReassociateLimit) { in BuildPairMap()
2587 Ops.push_back(Op); in BuildPairMap()
2597 if (Ops.size() > GlobalReassociateLimit) in BuildPairMap()
2603 for (unsigned i = 0; i < Ops.size() - 1; ++i) { in BuildPairMap()
2604 for (unsigned j = i + 1; j < Ops.size(); ++j) { in BuildPairMap()
2606 Value *Op0 = Ops[i]; in BuildPairMap()
2607 Value *Op1 = Ops[j]; in BuildPairMap()