Home | History | Annotate | Download | only in Hexagon

Lines Matching full:stores

9 // Replace sequences of "narrow" stores to adjacent memory locations with
10 // a fewer "wide" stores that have the same effect.
18 // The purpose of this pass is to reduce the number of outstanding stores,
19 // or as one could say, "reduce store queue pressure". Also, wide stores
20 // mean fewer stores, and since there are only two memory instructions allowed
24 #define DEBUG_TYPE "hexagon-widen-stores"
86 bool instrAliased(InstrGroup &Stores, const MachineMemOperand &MMO);
87 bool instrAliased(InstrGroup &Stores, const MachineInstr *MI);
141 INITIALIZE_PASS_BEGIN(HexagonStoreWidening, "hexagon-widen-stores",
144 INITIALIZE_PASS_END(HexagonStoreWidening, "hexagon-widen-stores",
148 // Filtering function: any stores whose opcodes are not "approved" of by
151 // For now, only handle stores of immediate values.
152 // Also, reject stores to stack slots.
167 // stores in the store group Stores.
168 bool HexagonStoreWidening::instrAliased(InstrGroup &Stores,
175 for (auto SI : Stores) {
190 // any store in the group Stores.
191 bool HexagonStoreWidening::instrAliased(InstrGroup &Stores,
194 if (instrAliased(Stores, *I))
200 // Inspect a machine basic block, and generate store groups out of stores
203 // A store group is a group of stores that use the same base register,
221 // i.e. a sequence of independent stores that can be widened.
237 // Create a single store group. The stores need to be independent between
293 // Currently only handling immediate stores.
302 /// Given a sequence of adjacent stores, and a maximum size of a single wide
303 /// store, pick a group of stores that can be replaced by a single store
337 // Offsets in stores of size 2^n bytes need to have the n lowest bits be 0.
348 // of sizes of stores 0...Pow2Num-1 will be a power of 2.
352 // Be greedy: keep accumulating stores as long as they are to adjacent
359 // Stores are sorted, so if S1 and S2 are not adjacent, there won't be
381 // The stores don't add up to anything that can be widened. Clean up.
394 /// Given an "old group" OG of stores, create a "new group" NG of instructions
400 // - only expect stores of immediate values in OG,
494 // the first store in the OG, but in the order in which the stores occur
518 // old stores, and so we are able to recover it back to the proper insertion
571 // with the widened stores, if possible. Processing of each basic block