On 16/10/15 04:55, Vladimir Makarov wrote:
On 10/15/2015 11:27 AM, Kyrill Tkachov wrote:
On 15/10/15 11:16, Bernd Schmidt wrote:
On 10/15/2015 11:40 AM, Kyrill Tkachov wrote:
The code that analyzes the offsets of the loads/stores doesn't try to
handle load/store-multiple insns.
These appear rather frequently in memory streaming workloads on aarch64
in the form of load-pair/store-pair instructions
i.e. ldp/stp. In RTL, they are created by the sched_fusion pass + a
subsequent peephole and during sched2 they appear
as PARALLEL rtxes of multiple SETs to/from memory.
* sched-int.h (struct autopref_multipass_data_): Remove offset
field. Add min_offset, max_offset, multi_mem_insn_p fields.
* haifa-sched.c (analyze_set_insn_for_autopref): New function.
(autopref_multipass_init): Use it. Handle PARALLEL sets.
(autopref_rank_data): New function.
(autopref_rank_for_schedule): Use it.
(autopref_multipass_dfa_lookahead_guard_1): Likewise.
Looks pretty reasonable to me. Ok to commit with a few changes next Wednesday
unless you hear from Vlad in the meantime (I just want to give him time to look
at it).
Thanks, I'll wait as you suggested (and cc'ing Vlad).
In the meantime, here's the updated patch with the suggested changes for the
record.
Ok for me.
Thanks, I'll commit it on Monday then.
Cheers,
Kyrill