diff options
author | Richard Biener <rguenther@suse.de> | 2025-07-14 14:09:28 +0200 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2025-07-14 15:38:13 +0200 |
commit | 66346b6d800fc4baae876e0fe4e932401bcc85fa (patch) | |
tree | 020c794d43635bd01730ce5a1a5479a7551de46d /gcc/testsuite | |
parent | f7f0539ae9c7fbd33c29c6e73b6970d85b7394b7 (diff) | |
download | gcc-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.c | 24 |
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; +} |