aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2025-07-14 14:09:28 +0200
committerRichard Biener <rguenth@gcc.gnu.org>2025-07-14 15:38:13 +0200
commit66346b6d800fc4baae876e0fe4e932401bcc85fa (patch)
tree020c794d43635bd01730ce5a1a5479a7551de46d /gcc/testsuite
parentf7f0539ae9c7fbd33c29c6e73b6970d85b7394b7 (diff)
downloadgcc-66346b6d800fc4baae876e0fe4e932401bcc85fa.zip
gcc-66346b6d800fc4baae876e0fe4e932401bcc85fa.tar.gz
gcc-66346b6d800fc4baae876e0fe4e932401bcc85fa.tar.bz2
tree-optimization/121059 - record loop mask when required
For loop masking we need to mask a mask AND operation with the loop mask. The following makes sure we have a corresponding mask available. There's no good way to distinguish loop masking from len masking here, so assume we have recorded a mask for the operands mask producers. PR tree-optimization/121059 * tree-vect-stmts.cc (vectorizable_operation): Record a loop mask for mask AND operations. * gcc.dg/vect/pr121059.c: New testcase.
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr121059.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/vect/pr121059.c b/gcc/testsuite/gcc.dg/vect/pr121059.c
new file mode 100644
index 0000000..2bbfcea
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr121059.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-O3 --param vect-partial-vector-usage=1" } */
+/* { dg-additional-options "-march=x86-64-v4" { target avx512f } } */
+
+typedef struct {
+ long left, right, top, bottom;
+} MngBox;
+typedef struct {
+ MngBox object_clip[6];
+ char exists[256], frozen[];
+} MngReadInfo;
+MngReadInfo mng_info;
+
+long ReadMNGImage_i;
+
+void ReadMNGImage(int ReadMNGImage_i)
+{
+ for (; ReadMNGImage_i < 256; ReadMNGImage_i++)
+ if (mng_info.exists[ReadMNGImage_i] && mng_info.frozen[ReadMNGImage_i])
+ mng_info.object_clip[ReadMNGImage_i].left =
+ mng_info.object_clip[ReadMNGImage_i].right =
+ mng_info.object_clip[ReadMNGImage_i].top =
+ mng_info.object_clip[ReadMNGImage_i].bottom = 0;
+}