On Mon, May 24, 2021 at 11:03 PM Hongtao Liu via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > Hi: > This patch is about to do transformation like below. > Bootstrapped and regtested on x86_64-linux-gnu{-m32,}. > Ok for trunk? > > from > notl %edi > vpbroadcastd %edi, %xmm0 > vpand %xmm1, %xmm0, %xmm0 > to > vpbroadcastd %edi, %xmm0 > vpandn %xmm1, %xmm0, %xmm0 > > gcc/ChangeLog: > > PR target/100711 > * config/i386/sse.md (*andnot<mode>3): New combine splitter > after it. > > gcc/testsuite/ChangeLog: > > PR target/100711 > * gcc.target/i386/avx2-pr100711.c: New test. > * gcc.target/i386/avx512bw-pr100711.c: New test. >
Does it make sense to make this more generic and have combine/simplify rtx instead try: (vec_dup (not)) to (not (vec_dup)) Thanks, Andrew Pinski