#ifndef GCC_AARCH64_PROTOS_H
#define GCC_AARCH64_PROTOS_H
- /* This generator struct and enum is used to wrap a function pointer
- to a function that generates an RTX fragment but takes either 3 or
- 4 operands.
-
- The omn flavour, wraps a function that generates a synchronization
- instruction from 3 operands: old value, memory and new value.
-
- The omrn flavour, wraps a function that generates a synchronization
- instruction from 4 operands: old value, memory, required value and
- new value. */
-
-enum aarch64_sync_generator_tag
-{
- aarch64_sync_generator_omn,
- aarch64_sync_generator_omrn
-};
-
- /* Wrapper to pass around a polymorphic pointer to a sync instruction
- generator and. */
-struct aarch64_sync_generator
-{
- enum aarch64_sync_generator_tag op;
- union
- {
- rtx (*omn) (rtx, rtx, rtx);
- rtx (*omrn) (rtx, rtx, rtx, rtx);
- } u;
-};
-
/*
SYMBOL_CONTEXT_ADR
The symbol is used in a load-address operation.
enum aarch64_symbol_type *);
bool aarch64_uimm12_shift (HOST_WIDE_INT);
const char *aarch64_output_casesi (rtx *);
-const char *aarch64_output_sync_insn (rtx, rtx *);
-const char *aarch64_output_sync_lock_release (rtx, rtx);
enum aarch64_symbol_type aarch64_classify_symbol (rtx,
enum aarch64_symbol_context);
enum aarch64_symbol_type aarch64_classify_tls_symbol (rtx);
rtx aarch64_tls_get_addr (void);
unsigned aarch64_dbx_register_number (unsigned);
unsigned aarch64_trampoline_size (void);
-unsigned aarch64_sync_loop_insns (rtx, rtx *);
void aarch64_asm_output_labelref (FILE *, const char *);
void aarch64_elf_asm_named_section (const char *, unsigned, tree);
void aarch64_expand_epilogue (bool);
void aarch64_expand_mov_immediate (rtx, rtx);
void aarch64_expand_prologue (void);
-void aarch64_expand_sync (enum machine_mode, struct aarch64_sync_generator *,
- rtx, rtx, rtx, rtx);
void aarch64_function_profiler (FILE *, int);
void aarch64_init_cumulative_args (CUMULATIVE_ARGS *, const_tree, rtx,
const_tree, unsigned);
rtx aarch64_gen_compare_reg (RTX_CODE, rtx, rtx);
rtx aarch64_load_tp (rtx);
+void aarch64_expand_compare_and_swap (rtx op[]);
+void aarch64_split_compare_and_swap (rtx op[]);
+void aarch64_split_atomic_op (enum rtx_code, rtx, rtx, rtx, rtx, rtx, rtx);
+
#endif /* RTX_CODE */
#endif /* GCC_AARCH64_PROTOS_H */