Lines Matching defs:VPST

206       // VPT/VPST + 4 predicated instructions.
218 // VPT/VPST and has a maximum of four proceeding instructions. All
266 // Is the VPST, controlling the block entry, predicated upon a VCTP.
279 "Expected VPT block to begin with VPT/VPST");
339 "Expected VPT block to start with a VPST or VPT!");
1217 // the VPT block because we don't find another VPT or VPST to being a new
1601 MachineInstr *VPST = Insts.front();
1603 // A vpt block starting with VPST, is only predicated upon vctp and has no
1607 LLVM_DEBUG(dbgs() << "ARM Loops: Removing VPST: " << *VPST);
1628 for (auto I = ++MachineBasicBlock::iterator(VPST), E = DivergentNext;
1633 // with the VPST This should be the divergent instruction
1638 // Insert a VPST at the divergent only if the next instruction
1639 // would actually use it. A VCMP following a VPST can be
1642 // Create a VPST (with a null mask for now, we'll recompute it
1648 LLVM_DEBUG(dbgs() << "ARM Loops: Created VPST: " << *MIB);
1651 // No RDA checks are necessary here since the VPST would have been
1657 LLVM_DEBUG(dbgs() << "ARM Loops: Removing VPST: " << *VPST);
1658 LoLoop.ToRemove.insert(VPST);
1662 MachineInstr *VPST = Insts.front();
1664 assert(VPST->getOpcode() == ARM::MVE_VPST &&
1665 "Found a VPST in an otherwise empty vpt block");
1666 LoLoop.ToRemove.insert(VPST);
1668 LoLoop.BlockMasksToRecompute.insert(VPST);
1670 // If this block starts with a VPST then attempt to merge it with the
1673 MachineInstr *VPST = Insts.front();
1674 auto Next = ++MachineBasicBlock::iterator(VPST);
1676 "The instruction after a VPST must be predicated");
1678 MachineInstr *VprDef = RDA->getUniqueReachingMIDef(VPST, ARM::VPR);
1682 // The VCMP and VPST can only be merged if the VCMP's operands will have
1683 // the same values at the VPST.
1684 // If any of the instructions between the VCMP and VPST are predicated
1686 // VPST already.
1688 MachineBasicBlock::iterator(VPST), hasVPRUse) &&
1689 RDA->hasSameReachingDef(VCMP, VPST, VCMP->getOperand(1).getReg()) &&
1690 RDA->hasSameReachingDef(VCMP, VPST, VCMP->getOperand(2).getReg())) {
1691 ReplaceVCMPWithVPT(VCMP, VPST);
1692 LLVM_DEBUG(dbgs() << "ARM Loops: Removing VPST: " << *VPST);
1693 LoLoop.ToRemove.insert(VPST);
1787 LLVM_DEBUG(dbgs() << "ARM Loops: Recomputing VPT/VPST Block Mask: " << *I);