Don't fold __builtin_ia32_blendvpd w/o sse4.2.
authorliuhongt <hongtao.liu@intel.com>
Wed, 16 Mar 2022 07:59:57 +0000 (15:59 +0800)
committerliuhongt <hongtao.liu@intel.com>
Wed, 16 Mar 2022 08:50:29 +0000 (16:50 +0800)
commit570d5bff9af537265a3e0935140786e5fdf51de1
tree6811fa91662d574ac6a92d0449d6145c7bec76bd
parent088a51a0abb5497cac32055bf373fa6039b924f8
Don't fold __builtin_ia32_blendvpd w/o sse4.2.

__builtin_ia32_blendvpd is defined under sse4.1 and gimple folded
to ((v2di) c) < 0 ? b : a where vec_cmpv2di is under sse4.2 w/o which
it's veclowered to scalar operations and not combined back in rtl.

gcc/ChangeLog:

PR target/104946
* config/i386/i386-builtin.def (BDESC): Add
CODE_FOR_sse4_1_blendvpd for IX86_BUILTIN_BLENDVPD.
* config/i386/i386.cc (ix86_gimple_fold_builtin): Don't fold
__builtin_ia32_blendvpd w/o sse4.2

gcc/testsuite/ChangeLog:

* gcc.target/i386/sse4_1-blendvpd-1.c: New test.
gcc/config/i386/i386-builtin.def
gcc/config/i386/i386.cc
gcc/testsuite/gcc.target/i386/sse4_1-blendvpd-1.c [new file with mode: 0644]