aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorliuhongt <hongtao.liu@intel.com>2024-09-06 15:03:16 +0800
committerliuhongt <hongtao.liu@intel.com>2024-09-10 12:50:13 +0800
commitc726a6643125a59e2ba6f992924a2d0098104578 (patch)
tree51fd5b5fc21942fd476c0704fa230a6bbf31d3a1
parent852cff82689cba4848865944a88f0d07285edde0 (diff)
downloadgcc-c726a6643125a59e2ba6f992924a2d0098104578.zip
gcc-c726a6643125a59e2ba6f992924a2d0098104578.tar.gz
gcc-c726a6643125a59e2ba6f992924a2d0098104578.tar.bz2
Don't force_reg operands[3] when it's not const0_rtx.
It fix the regression by a51f2fc0d80869ab079a93cc3858f24a1fd28237 is the first bad commit commit a51f2fc0d80869ab079a93cc3858f24a1fd28237 Author: liuhongt <hongtao.liu@intel.com> Date: Wed Sep 4 15:39:17 2024 +0800 Handle const0_operand for *avx2_pcmp<mode>3_1. caused FAIL: gcc.target/i386/pr59539-1.c scan-assembler-times vmovdqu|vmovups 1 To reproduce: $ cd {build_dir}/gcc && make check RUNTESTFLAGS="i386.exp=gcc.target/i386/pr59539-1.c --target_board='unix{-m32\ -march=cascadelake}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="i386.exp=gcc.target/i386/pr59539-1.c --target_board='unix{-m64\ -march=cascadelake}'" gcc/ChangeLog: * config/i386/sse.md (*avx2_pcmp<mode>3_1): Don't force_reg operands[3] when it's not const0_rtx.
-rw-r--r--gcc/config/i386/sse.md3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 1946d35..1ae6118 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -17929,7 +17929,8 @@
if (INTVAL (operands[5]) == 1)
std::swap (operands[3], operands[4]);
- operands[3] = force_reg (<MODE>mode, operands[3]);
+ if (operands[3] == CONST0_RTX (<MODE>mode))
+ operands[3] = force_reg (<MODE>mode, operands[3]);
if (operands[4] == CONST0_RTX (<MODE>mode))
operands[4] = force_reg (<MODE>mode, operands[4]);