]> git.ipfire.org Git - thirdparty/gcc.git/commit
Enable flate-combine.
authorliuhongt <hongtao.liu@intel.com>
Wed, 26 Jun 2024 05:52:24 +0000 (13:52 +0800)
committerliuhongt <hongtao.liu@intel.com>
Mon, 1 Jul 2024 01:09:59 +0000 (09:09 +0800)
commite62ea4fb8ffcab06ddd02f26db91b29b7270743f
tree974cc9322edd39a38bb5886c55a1ea892f28dc6e
parent8e1fa107a63b2e160b6bf69de4fe163dd3cebd80
Enable flate-combine.

Move pass_stv2 and pass_rpad after pre_reload pass_late_combine, also
define target_insn_cost to prevent post_reload pass_late_combine to
revert the optimziation did in pass_rpad.

Adjust testcases since pass_late_combine generates better code but
break scan assembly.

.i.e
Under 32-bit target, gcc used to generate broadcast from stack and
then do the real operation.
After flate_combine, they're combined into embeded broadcast
operations.

gcc/ChangeLog:

* config/i386/i386-features.cc (ix86_rpad_gate): New function.
* config/i386/i386-options.cc (ix86_override_options_after_change):
Don't disable flate_combine.
* config/i386/i386-passes.def: Move pass_stv2 and pass_rpad
after pre_reload pas_late_combine.
* config/i386/i386-protos.h (ix86_rpad_gate): New declare.
* config/i386/i386.cc (ix86_insn_cost): New function.
(TARGET_INSN_COST): Define.

gcc/testsuite/ChangeLog:

* gcc.target/i386/avx512f-broadcast-pr87767-1.c: Adjus
testcase.
* gcc.target/i386/avx512f-broadcast-pr87767-5.c: Ditto.
* gcc.target/i386/avx512f-fmadd-sf-zmm-7.c: Ditto.
* gcc.target/i386/avx512f-fmsub-sf-zmm-7.c: Ditto.
* gcc.target/i386/avx512f-fnmadd-sf-zmm-7.c: Ditto.
* gcc.target/i386/avx512f-fnmsub-sf-zmm-7.c: Ditto.
* gcc.target/i386/avx512vl-broadcast-pr87767-1.c: Ditto.
* gcc.target/i386/avx512vl-broadcast-pr87767-5.c: Ditto.
* gcc.target/i386/pr91333.c: Ditto.
* gcc.target/i386/vect-strided-4.c: Ditto.
15 files changed:
gcc/config/i386/i386-features.cc
gcc/config/i386/i386-options.cc
gcc/config/i386/i386-passes.def
gcc/config/i386/i386-protos.h
gcc/config/i386/i386.cc
gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-1.c
gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-5.c
gcc/testsuite/gcc.target/i386/avx512f-fmadd-sf-zmm-7.c
gcc/testsuite/gcc.target/i386/avx512f-fmsub-sf-zmm-7.c
gcc/testsuite/gcc.target/i386/avx512f-fnmadd-sf-zmm-7.c
gcc/testsuite/gcc.target/i386/avx512f-fnmsub-sf-zmm-7.c
gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-1.c
gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-5.c
gcc/testsuite/gcc.target/i386/pr91333.c
gcc/testsuite/gcc.target/i386/vect-strided-4.c