Lines Matching full:swap
70 // Unique ID (position in the swap vector).
103 // Swap entries are allocated in a vector for better performance.
107 // their swap entries. The key is the address of the MI.
111 // Swap entries are represented by their VSEId fields.
126 // Add an entry to the swap vector and swap map.
130 // source register. VecIdx indicates the swap vector entry to
141 // Record which swap instructions can be safely removed.
148 // Insert a swap instruction from SrcReg to DstReg at the given
156 // Dump a description of the entries in the swap vector.
217 // swap vector and allocate the equivalence class mapping before
238 // Create an entry in the swap vector for each instruction that mentions
271 // of the swap vector. in gatherVectorInstructions()
289 // This is a swap if it is of the form XXPERMDI t, s, s, 2. in gatherVectorInstructions()
315 // will not swap the value in the physical register. Whether in gatherVectorInstructions()
346 // Permuting loads are marked as both load and swap, and are in gatherVectorInstructions()
356 // a vector register is safe, provided that we introduce a swap in gatherVectorInstructions()
371 // Permuting stores are marked as both store and swap, and are in gatherVectorInstructions()
385 // a SUBREG_TO_REG, which is handled by introducing a swap. in gatherVectorInstructions()
394 // as well, provided we introduce a swap. It is generally the in gatherVectorInstructions()
530 LLVM_DEBUG(dbgs() << "Swap vector when first built\n\n"); in gatherVectorInstructions()
537 // Add an entry to the swap vector and swap map, and make a
556 // flag the swap entry indicated by VecIdx (the original
590 LLVM_DEBUG(dbgs() << "\n*** Forming webs for swap removal ***\n\n"); in formWebs()
622 "Inconsistency: def of vector reg not found in swap map!"); in formWebs()
636 // Walk the swap vector entries looking for conditions that prevent their
642 LLVM_DEBUG(dbgs() << "\n*** Rejecting webs for swap removal ***\n\n"); in recordUnoptimizableWebs()
662 "swap[pable]\n", in recordUnoptimizableWebs()
670 // than a swap instruction. in recordUnoptimizableWebs()
688 "Web %d rejected for load not feeding swap\n", Repr)); in recordUnoptimizableWebs()
696 // It is possible that the load feeds a swap and that swap feeds a in recordUnoptimizableWebs()
709 "Web %d rejected for load/swap feeding a store\n", Repr)); in recordUnoptimizableWebs()
721 // other than a swap instruction. in recordUnoptimizableWebs()
735 "Web %d rejected for store not fed by swap\n", Repr)); in recordUnoptimizableWebs()
753 "Web %d rejected for swap not feeding only stores\n", Repr)); in recordUnoptimizableWebs()
765 LLVM_DEBUG(dbgs() << "Swap vector after web analysis:\n\n"); in recordUnoptimizableWebs()
769 // Walk the swap vector entries looking for swaps fed by permuting loads
771 // has not been marked rejected, mark each such swap for removal.
773 // such that multiple loads feed the same swap, etc.)
791 LLVM_DEBUG(dbgs() << "Marking swap fed by load for removal: "); in markSwapsForRemoval()
806 LLVM_DEBUG(dbgs() << "Marking swap feeding store for removal: "); in markSwapsForRemoval()
822 // FIXME: When inserting a swap, we should check whether SrcReg is
823 // defined by another swap: SrcReg = XXPERMDI Reg, Reg, 2; If so,
835 // The identified swap entry requires special handling to allow its
903 // We also need to swap kill flag associated with the register. in handleSpecialSwappables()
916 // wrong lane. Insert a swap following the copy to fix this. in handleSpecialSwappables()
936 // prior to the swap, and from VSRC to VRRC following the swap. in handleSpecialSwappables()
964 // Walk the swap vector and replace each entry marked for removal with
993 // For debug purposes, dump the contents of the swap vector.
1011 dbgs() << "swap "; in dumpSwapVector()
1068 "PowerPC VSX Swap Removal", false, false)
1070 "PowerPC VSX Swap Removal", false, false)