Lines Matching defs:Move
346 bool moveTogether(MoveGroup &Move) const;
353 bool realignGroup(const MoveGroup &Move) const;
931 auto tryAddTo = [&](const AddrInfo &Info, MoveGroup &Move) {
932 assert(!Move.Main.empty() && "Move group should have non-empty Main");
933 if (Move.Main.size() >= SizeLimit)
936 if (Move.IsHvx != isHvx(Info))
939 Instruction *Base = Move.Main.front();
954 Move.Main.push_back(Info.Inst);
955 llvm::append_range(Move.Deps, Deps);
986 auto tryAddTo = [&](const AddrInfo &Info, MoveGroup &Move) {
987 assert(!Move.Main.empty() && "Move group should have non-empty Main");
988 if (Move.Main.size() >= SizeLimit)
995 if (Move.IsHvx != isHvx(Info))
1000 Instruction *Base = Move.Main.front();
1003 if (!HVC.isSafeToMoveBeforeInBB(*Info.Inst, Base->getIterator(), Move.Main))
1005 Move.Main.push_back(Info.Inst);
1043 auto AlignVectors::moveTogether(MoveGroup &Move) const -> bool {
1044 // Move all instructions to be adjacent.
1045 assert(!Move.Main.empty() && "Move group should have non-empty Main");
1046 Instruction *Where = Move.Main.front();
1048 if (Move.IsLoad) {
1049 // Move all the loads (and dependencies) to where the first load is.
1051 Move.Clones = cloneBefore(Where, Move.Deps);
1052 // Move all main instructions to after Where, keeping order.
1053 ArrayRef<Instruction *> Main(Move.Main);
1057 for (auto [Old, New] : Move.Clones)
1062 for (int i = 0, e = Move.Deps.size(); i != e; ++i)
1063 Move.Deps[i] = Move.Clones[Move.Deps[i]];
1065 // Move all the stores to where the last store is.
1068 assert(Move.Deps.empty());
1069 // Move all main instructions to before Where, inverting order.
1070 ArrayRef<Instruction *> Main(Move.Main);
1077 return Move.Main.size() + Move.Deps.size() > 1;
1206 // Move In and its upward dependencies to before To.
1404 auto AlignVectors::realignGroup(const MoveGroup &Move) const -> bool {
1405 LLVM_DEBUG(dbgs() << "Realigning group:\n" << Move << '\n');
1408 if (!Move.IsHvx)
1419 const AddrList &BaseInfos = AddrGroups.at(Move.Base);
1434 std::set<Instruction *> TestSet(Move.Main.begin(), Move.Main.end());
1456 Instruction *InsertAt = Move.Main.front();
1457 if (!Move.IsLoad) {
1479 WithMaxAlign.ValTy, Adjust, Move.Clones);
1494 MinNeeded.value(), Move.Clones);
1498 for (auto [Old, New] : Move.Clones)
1512 int ScLen = Move.IsHvx ? HVC.HST.getVectorLength()
1514 assert(!Move.IsHvx || ScLen == 64 || ScLen == 128);
1515 assert(Move.IsHvx || ScLen == 4 || ScLen == 8);
1524 if (Move.IsLoad)
1529 for (auto *Inst : Move.Main)