Lines Matching defs:AlignVectors

11 // AlignVectors: replace unaligned vector loads and stores with aligned ones.
183 class AlignVectors {
199 AlignVectors(const HexagonVectorCombine &HVC_) : HVC(HVC_) {}
367 raw_ostream &operator<<(raw_ostream &OS, const AlignVectors::AddrInfo &AI) {
378 raw_ostream &operator<<(raw_ostream &OS, const AlignVectors::MoveGroup &MG) {
398 const AlignVectors::ByteSpan::Block &B) {
411 raw_ostream &operator<<(raw_ostream &OS, const AlignVectors::ByteSpan &BS) {
413 for (const AlignVectors::ByteSpan::Block &B : BS)
543 // --- Begin AlignVectors
575 auto AlignVectors::ByteSpan::extent() const -> int {
587 auto AlignVectors::ByteSpan::section(int Start, int Length) const -> ByteSpan {
601 auto AlignVectors::ByteSpan::shift(int Offset) -> ByteSpan & {
607 auto AlignVectors::ByteSpan::values() const -> SmallVector<Value *, 8> {
614 auto AlignVectors::getAlignFromValue(const Value *V) const -> Align {
620 auto AlignVectors::getAddrInfo(Instruction &In) const
643 auto AlignVectors::isHvx(const AddrInfo &AI) const -> bool {
647 auto AlignVectors::getPayload(Value *Val) const -> Value * {
658 auto AlignVectors::getMask(Value *Val) const -> Value * {
674 auto AlignVectors::getPassThrough(Value *Val) const -> Value * {
682 auto AlignVectors::createAdjustedPointer(IRBuilderBase &Builder, Value *Ptr,
692 auto AlignVectors::createAlignedPointer(IRBuilderBase &Builder, Value *Ptr,
711 auto AlignVectors::createLoad(IRBuilderBase &Builder, Type *ValTy, Value *Ptr,
741 auto AlignVectors::createSimpleLoad(IRBuilderBase &Builder, Type *ValTy,
751 auto AlignVectors::createPredicatedLoad(IRBuilderBase &Builder, Type *ValTy,
773 auto AlignVectors::createStore(IRBuilderBase &Builder, Value *Val, Value *Ptr,
814 auto AlignVectors::createSimpleStore(IRBuilderBase &Builder, Value *Val,
823 auto AlignVectors::createPredicatedStore(IRBuilderBase &Builder, Value *Val,
844 auto AlignVectors::getUpwardDeps(Instruction *In, Instruction *Base) const
868 auto AlignVectors::createAddressGroups() -> bool {
922 auto AlignVectors::createLoadGroups(const AddrList &Group) const -> MoveList {
977 auto AlignVectors::createStoreGroups(const AddrList &Group) const -> MoveList {
1042 auto AlignVectors::moveTogether(MoveGroup &Move) const -> bool {
1080 auto AlignVectors::cloneBefore(BasicBlock::iterator To, T &&Insts) const
1097 auto AlignVectors::realignLoadGroup(IRBuilderBase &Builder,
1306 auto AlignVectors::realignStoreGroup(IRBuilderBase &Builder,
1404 auto AlignVectors::realignGroup(const MoveGroup &Move) const -> bool {
1535 auto AlignVectors::makeTestIfUnaligned(IRBuilderBase &Builder, Value *AlignVal,
1544 auto AlignVectors::isSectorTy(Type *Ty) const -> bool {
1553 auto AlignVectors::run() -> bool {
1554 LLVM_DEBUG(dbgs() << "Running HVC::AlignVectors on " << HVC.F.getName()
1613 // --- End AlignVectors
2163 Changed |= AlignVectors(*this).run();