This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [GCC RFC]A new and simple pass merging paired load store instructions


On 05/19/14 00:38, Bin.Cheng wrote:
1) Should we do it in a separated pass, or just along with scheduler?
ISTM that when we're able to combine insns that can impact the schedule we'd like to generate, possibly in significant ways. That argues for a separate pass that runs before the scheduler.

So I'd probably look at splitting out the code which builds the dependency information, running that first, then the pass to merge these memory ops (incrementally updating the dependency info), then the scheduler.



2) When should we run the new pass, before or after RA?  There are
both advantages and disadvantages and very depends on the target for
which we are compiling.
I have no simple answer to this.  Maybe we can run the pass twice or
follow Oleg's suggestion.  I think it's a new strategy for GCC to let
backend decide when to run a pass.
If we only run the dependency stuff once and share the data between the new pass and the sceduler, then I think running the new pass twice just before scheduling would be fine.


3) Do we need a new target hook interface?
I answered this in other messages and I still think it's target dependent.
Still pondering that one :-)


4) The optimization should be able to handle cases with more than 2
consecutive load/store instructions.
The current implementation can't handle such cases and need further extension.
Yea, probably. I think if we build the infrastructure right extension for > 2 load/stores shouldn't be terribly bad to implement.

Jeff


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]