diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2015-10-19 09:23:07 +0000 |
---|---|---|
committer | Kyrylo Tkachov <ktkachov@gcc.gnu.org> | 2015-10-19 09:23:07 +0000 |
commit | 613743a2cb9e09a864e0b913cbb7721d96c2079d (patch) | |
tree | 28d9759757f90c9e8bdef847447a24705e156f03 /gcc/sched-int.h | |
parent | eb5ea58e9edce24e6142e6f6f5d9ab0d1dfc4c84 (diff) |
[haifa-sched] model load/store multiples properly in autoprefetcher scheduling
* 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.
From-SVN: r228962
Diffstat (limited to 'gcc/sched-int.h')
-rw-r--r-- | gcc/sched-int.h | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/gcc/sched-int.h b/gcc/sched-int.h index 800262c4a4a..86f582105f8 100644 --- a/gcc/sched-int.h +++ b/gcc/sched-int.h @@ -807,8 +807,17 @@ struct autopref_multipass_data_ { /* Base part of memory address. */ rtx base; - /* Memory offset. */ - int offset; + + /* Memory offsets from the base. For single simple sets + only min_offset is valid. For multi-set insns min_offset + and max_offset record the minimum and maximum offsets from the same + base among the sets inside the PARALLEL. */ + int min_offset; + int max_offset; + + /* True if this is a load/store-multiple instruction. */ + bool multi_mem_insn_p; + /* Entry status. */ enum autopref_multipass_data_status status; }; |