diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-05-03 11:37:25 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-05-03 11:37:25 +0000 |
commit | 9c1a31e4c71d3c3990a9254438b9044adeb3dd27 (patch) | |
tree | 858576e93abb78b087773e895b143546903f49f2 /gcc/optabs.def | |
parent | bd0201b6c09dfd48d75005551be4c16ee252ba4c (diff) | |
download | gcc-9c1a31e4c71d3c3990a9254438b9044adeb3dd27.tar.gz |
PR target/49244
* tree-ssa-ccp.c: Include stor-layout.h and optabs-query.h.
(optimize_atomic_bit_test_and): New function.
(pass_fold_builtins::execute): Use it.
* optabs.def (atomic_bit_test_and_set_optab,
atomic_bit_test_and_complement_optab,
atomic_bit_test_and_reset_optab): New optabs.
* internal-fn.def (ATOMIC_BIT_TEST_AND_SET,
ATOMIC_BIT_TEST_AND_COMPLEMENT, ATOMIC_BIT_TEST_AND_RESET): New ifns.
* builtins.h (expand_ifn_atomic_bit_test_and): New prototype.
* builtins.c (expand_ifn_atomic_bit_test_and): New function.
* internal-fn.c (expand_ATOMIC_BIT_TEST_AND_SET,
expand_ATOMIC_BIT_TEST_AND_COMPLEMENT,
expand_ATOMIC_BIT_TEST_AND_RESET): New functions.
* doc/md.texi (atomic_bit_test_and_set@var{mode},
atomic_bit_test_and_complement@var{mode},
atomic_bit_test_and_reset@var{mode}): Document.
* config/i386/sync.md (atomic_bit_test_and_set<mode>,
atomic_bit_test_and_complement<mode>,
atomic_bit_test_and_reset<mode>): New expanders.
(atomic_bit_test_and_set<mode>_1,
atomic_bit_test_and_complement<mode>_1,
atomic_bit_test_and_reset<mode>_1): New insns.
* gcc.target/i386/pr49244-1.c: New test.
* gcc.target/i386/pr49244-2.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235813 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/optabs.def')
-rw-r--r-- | gcc/optabs.def | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/optabs.def b/gcc/optabs.def index c938b42ea4e..8875e30d416 100644 --- a/gcc/optabs.def +++ b/gcc/optabs.def @@ -337,6 +337,9 @@ OPTAB_D (atomic_add_fetch_optab, "atomic_add_fetch$I$a") OPTAB_D (atomic_add_optab, "atomic_add$I$a") OPTAB_D (atomic_and_fetch_optab, "atomic_and_fetch$I$a") OPTAB_D (atomic_and_optab, "atomic_and$I$a") +OPTAB_D (atomic_bit_test_and_set_optab, "atomic_bit_test_and_set$I$a") +OPTAB_D (atomic_bit_test_and_complement_optab, "atomic_bit_test_and_complement$I$a") +OPTAB_D (atomic_bit_test_and_reset_optab, "atomic_bit_test_and_reset$I$a") OPTAB_D (atomic_compare_and_swap_optab, "atomic_compare_and_swap$I$a") OPTAB_D (atomic_exchange_optab, "atomic_exchange$I$a") OPTAB_D (atomic_fetch_add_optab, "atomic_fetch_add$I$a") |