Lines Matching refs:Aux

527   RelaxAux Aux;  in initRelaxAux()  local
528 Aux.Config.IsRV32 = G.getTargetTriple().isRISCV32(); in initRelaxAux()
530 Aux.Config.HasRVC = llvm::is_contained(Features, "+c") || in initRelaxAux()
537 auto BlockEmplaceResult = Aux.Blocks.try_emplace(B); in initRelaxAux()
546 Aux.Blocks.erase(BlockEmplaceResult.first); in initRelaxAux()
570 for (auto &BlockAuxIter : Aux.Blocks) { in initRelaxAux()
576 return Aux; in initRelaxAux()
593 static void relaxCall(const Block &B, BlockRelaxAux &Aux, in relaxCall() argument
605 Aux.Writes.push_back(0xa001); // c.j in relaxCall()
609 Aux.Writes.push_back(0x2001); // c.jal in relaxCall()
613 Aux.Writes.push_back(0x6f | RD << 7); // jal in relaxCall()
622 static bool relaxBlock(LinkGraph &G, Block &Block, BlockRelaxAux &Aux, in relaxBlock() argument
626 ArrayRef<SymbolAnchor> SA = ArrayRef(Aux.Anchors); in relaxBlock()
629 Aux.EdgeKinds.assign(Aux.EdgeKinds.size(), Edge::Invalid); in relaxBlock()
630 Aux.Writes.clear(); in relaxBlock()
632 for (auto [I, E] : llvm::enumerate(Aux.RelaxEdges)) { in relaxBlock()
634 auto &Cur = Aux.RelocDeltas[I]; in relaxBlock()
638 relaxAlign(Loc, *E, Remove, Aux.EdgeKinds[I]); in relaxBlock()
641 relaxCall(Block, Aux, Config, Loc, *E, Remove, Aux.EdgeKinds[I]); in relaxBlock()
674 static bool relaxOnce(LinkGraph &G, RelaxAux &Aux) { in relaxOnce() argument
677 for (auto &[B, BlockAux] : Aux.Blocks) in relaxOnce()
678 Changed |= relaxBlock(G, *B, BlockAux, Aux.Config); in relaxOnce()
683 static void finalizeBlockRelax(LinkGraph &G, Block &Block, BlockRelaxAux &Aux) { in finalizeBlockRelax() argument
686 auto NextWrite = Aux.Writes.begin(); in finalizeBlockRelax()
692 for (auto [I, E] : llvm::enumerate(Aux.RelaxEdges)) { in finalizeBlockRelax()
693 uint32_t Remove = Aux.RelocDeltas[I] - Delta; in finalizeBlockRelax()
694 Delta = Aux.RelocDeltas[I]; in finalizeBlockRelax()
695 if (Remove == 0 && Aux.EdgeKinds[I] == Edge::Invalid) in finalizeBlockRelax()
704 switch (Aux.EdgeKinds[I]) { in finalizeBlockRelax()
746 if (I < Aux.RelaxEdges.size() && Aux.RelaxEdges[I] == &E) { in finalizeBlockRelax()
747 if (Aux.EdgeKinds[I] != Edge::Invalid) in finalizeBlockRelax()
748 E.setKind(Aux.EdgeKinds[I]); in finalizeBlockRelax()
750 Delta = Aux.RelocDeltas[I]; in finalizeBlockRelax()
766 static void finalizeRelax(LinkGraph &G, RelaxAux &Aux) { in finalizeRelax() argument
767 for (auto &[B, BlockAux] : Aux.Blocks) in finalizeRelax()
772 auto Aux = initRelaxAux(G); in relax() local
773 while (relaxOnce(G, Aux)) { in relax()
775 finalizeRelax(G, Aux); in relax()