]> git.ipfire.org Git - thirdparty/gcc.git/commit
x86: Fix Logical Shift Issue in expand_vec_perm_psrlw_psllw_por [PR115146]
authorLevy Hsu <admin@levyhsu.com>
Tue, 21 May 2024 03:17:21 +0000 (12:47 +0930)
committerLevy Hsu <admin@levyhsu.com>
Mon, 27 May 2024 02:40:57 +0000 (10:40 +0800)
commit0022064649d0ec40e97df24279c48842e278fedc
tree22e368805b2ebeec45642be6ec593429a73ecb76
parent5d99cf74c9f748c93ea218eca9bd2f08edfb2a88
x86: Fix Logical Shift Issue in expand_vec_perm_psrlw_psllw_por [PR115146]

Replaced arithmetic shifts with logical shifts in expand_vec_perm_psrlw_psllw_por to avoid sign bit extension issues. Also corrected gen_vlshrv8hi3 to gen_lshrv8hi3 and gen_vashlv8hi3 to gen_ashlv8hi3.

Co-authored-by: H.J. Lu <hjl.tools@gmail.com>
gcc/ChangeLog:

PR target/115146
* config/i386/i386-expand.cc (expand_vec_perm_psrlw_psllw_por): Replace arithmatic shift
gen_ashrv4hi3 with logic shift gen_lshrv4hi3.
Replace gen_vlshrv8hi3 with gen_lshrv8hi3 and gen_vashlv8hi3 with gen_ashlv8hi3.

gcc/testsuite/ChangeLog:

PR target/115146
* g++.target/i386/pr107563-a.C: Append '-mno-sse3' to compile option
to avoid test failure on hosts with SSE3 support.
* g++.target/i386/pr107563-b.C: Append '-mno-sse3' to compile option
to avoid test failure on hosts with SSE3 support.
* gcc.target/i386/pr115146.c: New test.
gcc/config/i386/i386-expand.cc
gcc/testsuite/g++.target/i386/pr107563-a.C
gcc/testsuite/g++.target/i386/pr107563-b.C
gcc/testsuite/gcc.target/i386/pr115146.c [new file with mode: 0755]