diff options
author | Richard Henderson <rth@redhat.com> | 2011-11-14 14:59:02 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2011-11-14 14:59:02 -0800 |
commit | 2747a04662929c37d3bcc96c36adc861a4611710 (patch) | |
tree | 61b67f6c9c5cdb2532017d38c67327e51d93fe99 /gcc/config/rs6000/rs6000-protos.h | |
parent | 674a3581477f9d0c8f802e242eed89aa53b95032 (diff) | |
download | gcc-2747a04662929c37d3bcc96c36adc861a4611710.tar.gz |
rs6000: Rewrite sync patterns for atomic; expand early.
The conversion of the __sync post-reload splitters was half
complete. Since there are nearly no restrictions on what may
appear between LL and SC, expand all the patterns immediatly.
This allows significantly easier code generation for subword
atomic operations.
From-SVN: r181370
Diffstat (limited to 'gcc/config/rs6000/rs6000-protos.h')
-rw-r--r-- | gcc/config/rs6000/rs6000-protos.h | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/gcc/config/rs6000/rs6000-protos.h b/gcc/config/rs6000/rs6000-protos.h index 23d2d2aa389..af4c95488de 100644 --- a/gcc/config/rs6000/rs6000-protos.h +++ b/gcc/config/rs6000/rs6000-protos.h @@ -103,13 +103,9 @@ extern rtx rs6000_emit_set_const (rtx, enum machine_mode, rtx, int); extern int rs6000_emit_cmove (rtx, rtx, rtx, rtx); extern int rs6000_emit_vector_cond_expr (rtx, rtx, rtx, rtx, rtx, rtx); extern void rs6000_emit_minmax (rtx, enum rtx_code, rtx, rtx); -extern void rs6000_emit_sync (enum rtx_code, enum machine_mode, - rtx, rtx, rtx, rtx, bool); -extern void rs6000_split_atomic_op (enum rtx_code, rtx, rtx, rtx, rtx, rtx); -extern void rs6000_split_compare_and_swap (rtx, rtx, rtx, rtx, rtx); -extern void rs6000_expand_compare_and_swapqhi (rtx, rtx, rtx, rtx); -extern void rs6000_split_compare_and_swapqhi (rtx, rtx, rtx, rtx, rtx, rtx); -extern void rs6000_split_lock_test_and_set (rtx, rtx, rtx, rtx); +extern void rs6000_expand_atomic_compare_and_swap (rtx op[]); +extern void rs6000_expand_atomic_exchange (rtx op[]); +extern void rs6000_expand_atomic_op (enum rtx_code, rtx, rtx, rtx, rtx, rtx); extern void rs6000_emit_swdiv (rtx, rtx, rtx, bool); extern void rs6000_emit_swrsqrt (rtx, rtx); extern void output_toc (FILE *, rtx, int, enum machine_mode); |