aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/lambda.c
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@sourceware.org>2018-09-05 09:37:27 +0000
committerSiddhesh Poyarekar <siddhesh@gcc.gnu.org>2018-09-05 09:37:27 +0000
commita98824ac233280256a6b7516cec56c363d328ce3 (patch)
treee0bc967c3951ffb158ba96325be0dccb7b7a02bf /gcc/cp/lambda.c
parent41fbb3ec63cf38f10f3e8233b6388ee553578aa9 (diff)
downloadgcc-a98824ac233280256a6b7516cec56c363d328ce3.zip
gcc-a98824ac233280256a6b7516cec56c363d328ce3.tar.gz
gcc-a98824ac233280256a6b7516cec56c363d328ce3.tar.bz2
[aarch64] Avoid tag collisions for loads falkor
This is a rewrite of the tag collision avoidance patch that Kugan had written as a machine reorg pass back in February. The falkor hardware prefetching system uses a combination of the source, destination and offset to decide which prefetcher unit to train with the load. This is great when loads in a loop are sequential but sub-optimal if there are unrelated loads in a loop that tag to the same prefetcher unit. This pass attempts to rename the desination register of such colliding loads using routines available in regrename.c so that their tags do not collide. This shows some performance gains with mcf and xalancbmk (~5% each) and will be tweaked further. The pass is placed near the fag end of the pass list so that subsequent passes don't inadvertantly end up undoing the renames. 2018-07-02 Siddhesh Poyarekar <siddhesh@sourceware.org> Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org> * config/aarch64/falkor-tag-collision-avoidance.c: New file. * config.gcc (extra_objs): Build it. * config/aarch64/t-aarch64 (falkor-tag-collision-avoidance.o): Likewise. * config/aarch64/aarch64-passes.def (pass_tag_collision_avoidance): New pass. * config/aarch64/aarch64.c (qdf24xx_tunings): Add AARCH64_EXTRA_TUNE_RENAME_LOAD_REGS to tuning_flags. (aarch64_classify_address): Remove static qualifier. (aarch64_address_info, aarch64_address_type): Move to... * config/aarch64/aarch64-protos.h: ... here. (make_pass_tag_collision_avoidance): New function. * config/aarch64/aarch64-tuning-flags.def (rename_load_regs): New tuning flag. Co-Authored-By: Kugan Vivekanandarajah <kuganv@linaro.org> From-SVN: r264115
Diffstat (limited to 'gcc/cp/lambda.c')
0 files changed, 0 insertions, 0 deletions