[Bug target/78037] Incorrect code generated at optimization level -O2 for tzcnt and binary and
uros at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Oct 26 15:16:00 GMT 2016
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 <jakub@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 <ubizjak@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 <jakub@redhat.com>
PR target/78057
* gcc.target/i386/pr78057.c: New test.
Backport from mainline
2016-10-20 Uros Bizjak <ubizjak@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
More information about the Gcc-bugs
mailing list