Lines Matching defs:BCECmpBlock
201 class BCECmpBlock {
205 BCECmpBlock(BCECmp Cmp, BasicBlock *BB, InstructionSet BlockInsts)
243 bool BCECmpBlock::canSinkBCECmpInst(const Instruction *Inst,
265 void BCECmpBlock::split(BasicBlock *NewParent, AliasAnalysis &AA) const {
281 bool BCECmpBlock::canSplit(AliasAnalysis &AA) const {
291 bool BCECmpBlock::doesOtherWork() const {
335 std::optional<BCECmpBlock> visitCmpBlock(Value *const Val,
378 BCECmpBlock::InstructionSet BlockInsts(
384 return BCECmpBlock(std::move(*Result), Block, BlockInsts);
387 static inline void enqueueBlock(std::vector<BCECmpBlock> &Comparisons,
388 BCECmpBlock &&Comparison) {
403 using ContiguousBlocks = std::vector<BCECmpBlock>;
424 static bool areContiguous(const BCECmpBlock &First, const BCECmpBlock &Second) {
433 for (const BCECmpBlock &Block : Blocks)
441 mergeBlocks(std::vector<BCECmpBlock> &&Blocks) {
446 [](const BCECmpBlock &LhsBlock, const BCECmpBlock &RhsBlock) {
452 for (BCECmpBlock &Block : Blocks) {
478 std::vector<BCECmpBlock> Comparisons;
482 std::optional<BCECmpBlock> Comparison = visitCmpBlock(
485 LLVM_DEBUG(dbgs() << "chain with invalid BCECmpBlock, no merge.\n");
564 explicit MergedBlockName(ArrayRef<BCECmpBlock> Comparisons)
569 StringRef makeName(ArrayRef<BCECmpBlock> Comparisons) {
575 [](int i, const BCECmpBlock &Cmp) {
603 static BasicBlock *mergeComparisons(ArrayRef<BCECmpBlock> Comparisons,
610 const BCECmpBlock &FirstCmp = Comparisons[0];
617 // Add the GEPs from the first BCECmpBlock.
636 Comparisons, [](const BCECmpBlock &B) { return B.RequireSplit; });
654 [](int Size, const BCECmpBlock &C) { return Size + C.SizeBits(); });
729 for (const BCECmpBlock &Block : Blocks) {