https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78037
--- Comment #20 from uros at gcc dot gnu.org --- Author: uros Date: Wed Oct 26 15:13:39 2016 New Revision: 241556 URL: https://gcc.gnu.org/viewcvs?rev=241556&root=gcc&view=rev Log: Backport from mainline 2016-10-21 Jakub Jelinek <ja...@redhat.com> PR target/78057 * config/i386/i386.c: Include fold-const-call.h, tree-vrp.h and tree-ssanames.h. (ix86_fold_builtin): Fold IX86_BUILTIN_[LT]ZCNT{16,32,64} with INTEGER_CST argument. (ix86_gimple_fold_builtin): New function. (TARGET_GIMPLE_FOLD_BUILTIN): Define. Backport from mainline 2016-10-20 Uros Bizjak <ubiz...@gmail.com> PR target/78037 * config/i386/bmiintrin.h (__tzcnt_u16): Call __builtin_ia32_tzcnt_u16. (__tzcnt_u32, _tzcnt_u32): Call __builtin_ia32_tzcnt_u32. (__tzcnt_u64, _tzcnt_u64): Call __builtin_ia32_tzcnt_u64. * config/i386/lzcntintrin.h (__lzcnt_u16): Call __builtin_ia32_lzcnt_u16. (__lzcnt_u32, _lzcnt_u32): Call __builtin_ia32_lzcnt_u32. (__lzcnt_u64, _lzcnt_u64): Call __builtin_ia32_lzcnt_u64. * config/i386/i386.md (UNSPEC_LZCNT, UNSPEC_TZCNT): New unspecs. (ctz<mode>2, *ctz<mode>2): Use SWI48 mode iterator. (bmi_tzcnt_<mode>): New expander. (*bmi_tzcnt_<mode>_falsedep_1): New define_insn_and_split pattern. (*bmi_tzcnt_<mode>_falsedep, *bmi_tzcnt_<mode>): New insn patterns. (clz<mode>2_lzcnt, *clz<mode>2_lzcnt): Use SWI48 mode iterator. (lzcnt_<mode>): New expander. (*lzcnt_<mode>_falsedep_1): New define_insn_and_split pattern. (*lzcnt_<mode>_falsedep, *lzcnt_<mode>): New insn patterns. * config/i386/i386-builtin-types.def (UINT_FTYPE_UINT): New. (UINT64_FTYPE_UINT64): New. * config/i386/i386-builtin.def (__builtin_clzs): Remove description. (__builtin_ia32_lzcnt_u16): New description. (__builtin_ia32_lzcnt_u32): Ditto. (__builtin_ia32_lzcnt_u64): Ditto. (__builtin_ctzs): Remove description. (__builtin_ia32_tzcnt_u16): New description. (__builtin_ia32_tzcnt_u32): Ditto. (__builtin_ia32_tzcnt_u64): Ditto. * config/i386/i386.c (ix86_expand_args_builtin): Handle UINT_FTYPE_UINT and UINT64_FTYPE_UINT64. testsuite/ChangeLog: * gcc.target/i386/bmi-6.c: XFAIL. Backport from mainline 2016-10-21 Jakub Jelinek <ja...@redhat.com> PR target/78057 * gcc.target/i386/pr78057.c: New test. Backport from mainline 2016-10-20 Uros Bizjak <ubiz...@gmail.com> PR target/78037 * gcc.target/i386/pr78037.c: New test. Added: branches/gcc-6-branch/gcc/testsuite/gcc.target/i386/pr78037.c branches/gcc-6-branch/gcc/testsuite/gcc.target/i386/pr78057.c Modified: branches/gcc-6-branch/gcc/ChangeLog branches/gcc-6-branch/gcc/config/i386/bmiintrin.h branches/gcc-6-branch/gcc/config/i386/i386-builtin-types.def branches/gcc-6-branch/gcc/config/i386/i386.c branches/gcc-6-branch/gcc/config/i386/i386.md branches/gcc-6-branch/gcc/config/i386/lzcntintrin.h branches/gcc-6-branch/gcc/testsuite/ChangeLog branches/gcc-6-branch/gcc/testsuite/gcc.target/i386/bmi-6.c