aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2025-09-01 13:29:23 +0200
committerRichard Biener <rguenth@gcc.gnu.org>2025-09-01 15:18:17 +0200
commit20cd438f2f49ed4816cba9ecc558ee3377b342ba (patch)
tree74dafa6e21efd0492ef9c3e54a2dfdd50406c354 /gcc/testsuite
parent7dff87e0f535406451467991477b79ffa8e45009 (diff)
downloadgcc-20cd438f2f49ed4816cba9ecc558ee3377b342ba.zip
gcc-20cd438f2f49ed4816cba9ecc558ee3377b342ba.tar.gz
gcc-20cd438f2f49ed4816cba9ecc558ee3377b342ba.tar.bz2
tree-optimization/121744 - handle CST << var in shift pattern recog
We currently do not handle promotion/demotion of 'var' when the left operand of a variable shift is constant. There's no good reason why, so the following fixes this omission. PR tree-optimization/121744 * tree-vect-patterns.cc (vect_recog_vector_vector_shift_pattern): Allow constant left operand. * gcc.dg/vect/pr121744-1.c: New testcase.
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr121744-1.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/vect/pr121744-1.c b/gcc/testsuite/gcc.dg/vect/pr121744-1.c
new file mode 100644
index 0000000..81f4996
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr121744-1.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-mavx2" { target avx2 } } */
+
+unsigned long a[1024];
+unsigned int b[1024];
+
+void foo()
+{
+ for (int i = 0; i < 1024; ++i)
+ a[i] = 1ul << b[i];
+}
+
+/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { target vect_var_shift } } } */