On 10/20/14 22:06, Maxim Kuvyrkov wrote:
Hi,
Ramana, this change requires benchmarking, which I can't easily do
at
the moment. I would appreciate any benchmarking results that you can
share. In particular, the value of PARAM_SCHED_AUTOPREF_QUEUE_DEPTH
needs to be tuned/confirmed for Cortex-A15.
What were the results of that benchmarking? IIRC I tabled reviewing this work waiting for those results (and I probably should have let you know that. Sorry, my bad there).



0007-Model-cache-auto-prefetcher-in-scheduler.patch


 From 629c2cc593b49b8596b00e3e3d62444493aa3514 Mon Sep 17 00:00:00 2001
From: Maxim Kuvyrkov<maxim.kuvyr...@linaro.org>
Date: Mon, 20 Oct 2014 23:13:23 +0100
Subject: [PATCH 7/8] Model cache auto-prefetcher in scheduler

        * config/arm/arm.c (sched-int.h): Include header.
        (arm_first_cycle_multipass_dfa_lookahead_guard,)
        (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD): Define hook.
        Enable auto-prefetcher model for Cortex-A15.
        (arm_option_override): Set autoprefetcher parameter.
        * config/arm/t-arm (arm.o): Update.
        * haifa-sched.c (update_insn_after_change): Update.
        (rank_for_schedule): Use auto-prefetcher model, if requested.
        (autopref_multipass_init): New static function.
        (autopref_rank_for_schedule): New rank_for_schedule heuristic.
        (autopref_multipass_dfa_lookahead_guard_started_dump_p): New static
        variable for debug dumps.
        (autopref_multipass_dfa_lookahead_guard_1): New static helper function.
        (autopref_multipass_dfa_lookahead_guard): New global function that
        implements TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD hook.
        (init_h_i_d): Update.
        * params.def (PARAM_SCHED_AUTOPREF_QUEUE_DEPTH): New tuning knob.
        * sched-int.h (autopref_multipass_data_): Structure for auto-prefetcher
        data.
        (autopref_multipass_data_def, autopref_multipass_data_t): New typedefs.
        (struct _haifa_insn_data:autopref_multipass_data): New field.
        (INSN_AUTOPREF_MULTIPASS_DATA): New access macro.
        (autopref_multipass_dfa_lookahead_guard): Declare.
Can this be built on top of Bin's work for insn fusion? There's a lot of commonality in the structure of the insns you care about. He's already got a nice little priority function that I think you could utilize to to ensure the insns with smaller offsets fire first.


My biggest concern would be sched2 coming along and undoing that work since you're not going to fuse those into move-multiple types of instructions.

Jeff

Reply via email to