On Wed, 18 Oct 2023, Jiang, Haochen wrote: > On Linux/x86_64, > > 3179ad72f67f31824c444ef30ef171ad7495d274 is the first bad commit > commit 3179ad72f67f31824c444ef30ef171ad7495d274 > Author: Richard Biener rguent...@suse.de<mailto:rguent...@suse.de> > Date: Fri Oct 13 12:32:51 2023 +0200 > > OMP SIMD inbranch call vectorization for AVX512 style masks > > caused > > FAIL: gcc.dg/vect/vect-simd-clone-16b.c scan-tree-dump-times vect "[\\n\\r] > [^\\n]* = foo\\.simdclone" 3 > FAIL: gcc.dg/vect/vect-simd-clone-16.c scan-tree-dump-times vect "[\\n\\r] > [^\\n]* = foo\\.simdclone" 2 > FAIL: gcc.dg/vect/vect-simd-clone-16e.c scan-tree-dump-times vect "[\\n\\r] > [^\\n]* = foo\\.simdclone" 3 > FAIL: gcc.dg/vect/vect-simd-clone-16f.c scan-tree-dump-times vect "[\\n\\r] > [^\\n]* = foo\\.simdclone" 2 > FAIL: gcc.dg/vect/vect-simd-clone-17b.c scan-tree-dump-times vect "[\\n\\r] > [^\\n]* = foo\\.simdclone" 3 > FAIL: gcc.dg/vect/vect-simd-clone-17.c scan-tree-dump-times vect "[\\n\\r] > [^\\n]* = foo\\.simdclone" 2 > FAIL: gcc.dg/vect/vect-simd-clone-17e.c scan-tree-dump-times vect "[\\n\\r] > [^\\n]* = foo\\.simdclone" 3 > FAIL: gcc.dg/vect/vect-simd-clone-17f.c scan-tree-dump-times vect "[\\n\\r] > [^\\n]* = foo\\.simdclone" 2 > FAIL: gcc.dg/vect/vect-simd-clone-18b.c scan-tree-dump-times vect "[\\n\\r] > [^\\n]* = foo\\.simdclone" 3 > FAIL: gcc.dg/vect/vect-simd-clone-18.c scan-tree-dump-times vect "[\\n\\r] > [^\\n]* = foo\\.simdclone" 2 > FAIL: gcc.dg/vect/vect-simd-clone-18e.c scan-tree-dump-times vect "[\\n\\r] > [^\\n]* = foo\\.simdclone" 3 > FAIL: gcc.dg/vect/vect-simd-clone-18f.c scan-tree-dump-times vect "[\\n\\r] > [^\\n]* = foo\\.simdclone" 2 ...
It's interesting that when the target has AVX512 enabled we get AVX512 style masks used also for SSE and AVX vector sizes but the OMP SIMD clones for SSE and AVX vector sizes use SSE/AVX style masks and only the AVX512 size clone uses the AVX512 integer mode mask. That necessarily requires an extra setup instruction for the mask argument. With my change I removed the ability to pass integer masks as traditional vector mask arguments, will restore that - it's the other way around we cannot easily support, the vectorizer using traditional vector masks but the simd clone expecting integer modes. Richard..