aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/arc/arc.h
diff options
context:
space:
mode:
authorClaudiu Zissulescu <claziss@synopsys.com>2015-12-10 14:32:21 +0100
committerClaudiu Zissulescu <claziss@gcc.gnu.org>2015-12-10 14:32:21 +0100
commitb8a64b7f5d699776983eab2c07125523e96bc6ea (patch)
treea9808e70899f6acf23ab79a385b0f2232a3e4e98 /gcc/config/arc/arc.h
parent41eefe133f91ffeead07774a8f68040135e5fe1c (diff)
downloadgcc-b8a64b7f5d699776983eab2c07125523e96bc6ea.zip
gcc-b8a64b7f5d699776983eab2c07125523e96bc6ea.tar.gz
gcc-b8a64b7f5d699776983eab2c07125523e96bc6ea.tar.bz2
[ARC] Add support for atomic memory built-in.
gcc/ 2015-12-10 Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc-protos.h (arc_expand_atomic_op): Prototype. (arc_split_compare_and_swap): Likewise. (arc_expand_compare_and_swap): Likewise. * config/arc/arc.c (arc_init): Check usage atomic option. (arc_pre_atomic_barrier): New function. (arc_post_atomic_barrier): Likewise. (emit_unlikely_jump): Likewise. (arc_expand_compare_and_swap_qh): Likewise. (arc_expand_compare_and_swap): Likewise. (arc_split_compare_and_swap): Likewise. (arc_expand_atomic_op): Likewise. * config/arc/arc.h (TARGET_CPU_CPP_BUILTINS): New C macro. (ASM_SPEC): Enable mlock option when matomic is used. * config/arc/arc.md (UNSPEC_ARC_MEMBAR): Define. (VUNSPEC_ARC_CAS): Likewise. (VUNSPEC_ARC_LL): Likewise. (VUNSPEC_ARC_SC): Likewise. (VUNSPEC_ARC_EX): Likewise. * config/arc/arc.opt (matomic): New option. * config/arc/constraints.md (ATO): New constraint. * config/arc/predicates.md (mem_noofs_operand): New predicate. * doc/invoke.texi: Document -matomic. * config/arc/atomic.md: New file. gcc/testsuite 2015-12-10 Claudiu Zissulescu <claziss@synopsys.com> * lib/target-supports.exp (check_effective_target_arc_atomic): New function. (check_effective_target_sync_int_long): Add checks for ARC atomic feature. (check_effective_target_sync_char_short): Likewise. From-SVN: r231509
Diffstat (limited to 'gcc/config/arc/arc.h')
-rw-r--r--gcc/config/arc/arc.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/config/arc/arc.h b/gcc/config/arc/arc.h
index d312f9f..c895725 100644
--- a/gcc/config/arc/arc.h
+++ b/gcc/config/arc/arc.h
@@ -88,6 +88,10 @@ along with GCC; see the file COPYING3. If not see
{ \
builtin_define ("__HS__"); \
} \
+ if (TARGET_ATOMIC) \
+ { \
+ builtin_define ("__ARC_ATOMIC__"); \
+ } \
if (TARGET_NORM) \
{ \
builtin_define ("__ARC_NORM__");\
@@ -153,7 +157,7 @@ along with GCC; see the file COPYING3. If not see
%{mcpu=ARC700|!mcpu=*:%{mrtsc}} \
%{mcpu=ARCHS:-mHS} \
%{mcpu=ARCEM:-mEM} \
-"
+%{matomic:-mlock}"
#if DEFAULT_LIBC == LIBC_UCLIBC
/* Note that the default is to link against dynamic libraries, if they are