]> git.ipfire.org Git - thirdparty/gcc.git/commit
Refine splitters related to "combine vpcmpuw + zero_extend to vpcmpuw"
authorliuhongt <hongtao.liu@intel.com>
Wed, 16 Oct 2024 05:43:48 +0000 (13:43 +0800)
committerliuhongt <hongtao.liu@intel.com>
Mon, 21 Oct 2024 02:31:20 +0000 (10:31 +0800)
commit91800a70a2af1349eefc5f3380be2b254b1db395
tree17e2a46cbf21db0458bb378ba7f908b0ae84ead5
parent69c50a35885df4e4a5077390e8f2ee2e994513a5
Refine splitters related to "combine vpcmpuw + zero_extend to vpcmpuw"

r12-6103-g1a7ce8570997eb combines vpcmpuw + zero_extend to vpcmpuw
with the pre_reload splitter, but the splitter transforms the
zero_extend into a subreg which make reload think the upper part is
garbage, it's not correct.

The patch adjusts the zero_extend define_insn_and_split to
define_insn to keep zero_extend.

gcc/ChangeLog:

PR target/117159
* config/i386/sse.md
(*<avx512>_cmp<V48H_AVX512VL:mode>3_zero_extend<SWI248x:mode>):
Change from define_insn_and_split to define_insn.
(*<avx512>_cmp<VI12_AVX512VL:mode>3_zero_extend<SWI248x:mode>):
Ditto.
(*<avx512>_ucmp<VI12_AVX512VL:mode>3_zero_extend<SWI248x:mode>):
Ditto.
(*<avx512>_ucmp<VI48_AVX512VL:mode>3_zero_extend<SWI248x:mode>):
Ditto.
(*<avx512>_cmp<V48H_AVX512VL:mode>3_zero_extend<SWI248x:mode>_2):
Split to the zero_extend pattern.
(*<avx512>_cmp<VI12_AVX512VL:mode>3_zero_extend<SWI248x:mode>_2):
Ditto.
(*<avx512>_ucmp<VI12_AVX512VL:mode>3_zero_extend<SWI248x:mode>_2):
Ditto.
(*<avx512>_ucmp<VI48_AVX512VL:mode>3_zero_extend<SWI248x:mode>_2):
Ditto.

gcc/testsuite/ChangeLog:

* gcc.target/i386/pr117159.c: New test.
* gcc.target/i386/avx512bw-pr103750-1.c: Remove xfail.
* gcc.target/i386/avx512bw-pr103750-2.c: Remove xfail.

(cherry picked from commit 5259d3927c1c8e3a15b4b844adef59b48c241233)
gcc/config/i386/sse.md
gcc/testsuite/gcc.target/i386/avx512bw-pr103750-1.c
gcc/testsuite/gcc.target/i386/avx512bw-pr103750-2.c
gcc/testsuite/gcc.target/i386/pr117159.c [new file with mode: 0644]