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]

[PATCH GCC][5/7]Extend loop distribution for two-level innermost loop nest


Hi,
For now distribution pass only handles the innermost loop.  This patch extends the pass
to cover two-level innermost loop nest.  It also refactors code in pass_loop_distribution::execute
for better reading.  Note I restrict it to 2-level loop nest on purpose because of high
cost in data dependence computation.  Some compilation time optimizations like reusing
the data reference finding, data dependence computing, would require a rewrite of this
pass like the proposed loop interchange implementation.  But that's another task.

This patch introduces a temporary TODO for loop nest builtin partition which is covered
by next two patches.

With this patch, kernel loop in bwaves now can be distributed, thus exposed for further
interchange.  This patch adds new test for matrix multiplication, as well as adjusts
test strings of existing tests.
Bootstrap and test in patch set on x86_64 and AArch64, is it OK?

Thanks,
bin
2017-10-04  Bin Cheng  <bin.cheng@arm.com>

	* tree-loop-distribution.c: Adjust the general comment.
	(NUM_PARTITION_THRESHOLD): New macro.
	(ssa_name_has_uses_outside_loop_p): Support loop nest distribution.
	(classify_partition): Skip builtin pattern of loop nest's inner loop.
	(merge_dep_scc_partitions): New parameter ignore_alias_p and use it
	in call to build_partition_graph.
	(finalize_partitions): New parameter.  Make loop distribution more
	conservative by fusing more partitions.
	(distribute_loop): Don't do runtime alias check in case of loop nest
	distribution.
	(find_seed_stmts_for_distribution): New function.
	(pass_loop_distribution::execute): Refactor code finding seed stmts
	into above function.  Support loop nest distribution for two-level
	innermost loop nest.  Adjust dump information.

gcc/testsuite/ChangeLog
2017-10-04  Bin Cheng  <bin.cheng@arm.com>

	* gcc.dg/tree-ssa/ldist-7.c: Adjust test string.
	* gcc.dg/tree-ssa/ldist-16.c: Ditto.
	* gcc.dg/tree-ssa/ldist-25.c: Ditto.
	* gcc.dg/tree-ssa/ldist-33.c: Ditto.

Attachment: 0005-loop-nest-distribution-20171002.txt
Description: 0005-loop-nest-distribution-20171002.txt


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