From d81cb6135e67bf77d234b1b9510fb755f14eb444 Mon Sep 17 00:00:00 2001 From: Matthew Wahab Date: Tue, 10 Nov 2015 15:59:37 +0000 Subject: [AArch64] Move iterators from atomics.md to iterators.md * config/aarch64/atomics.md (unspecv): Move to iterators.md. (ATOMIC_LDOP): Likewise. (atomic_ldop): Likewise. * config/aarch64/iterators.md (unspecv): Moved from atomics.md. (ATOMIC_LDOP): Likewise. (atomic_ldop): Likewise. From-SVN: r230114 --- gcc/ChangeLog | 9 +++++++++ gcc/config/aarch64/atomics.md | 28 ---------------------------- gcc/config/aarch64/iterators.md | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 28 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 103b872..75dc765 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2015-11-10 Matthew Wahab + + * config/aarch64/atomics.md (unspecv): Move to iterators.md. + (ATOMIC_LDOP): Likewise. + (atomic_ldop): Likewise. + * config/aarch64/iterators.md (unspecv): Moved from atomics.md. + (ATOMIC_LDOP): Likewise. + (atomic_ldop): Likewise. + 2015-11-10 Martin Liska * alloc-pool.h (allocate_raw): New function. diff --git a/gcc/config/aarch64/atomics.md b/gcc/config/aarch64/atomics.md index e7ac5f6..3c034fb 100644 --- a/gcc/config/aarch64/atomics.md +++ b/gcc/config/aarch64/atomics.md @@ -18,34 +18,6 @@ ;; along with GCC; see the file COPYING3. If not see ;; . -(define_c_enum "unspecv" - [ - UNSPECV_LX ; Represent a load-exclusive. - UNSPECV_SX ; Represent a store-exclusive. - UNSPECV_LDA ; Represent an atomic load or load-acquire. - UNSPECV_STL ; Represent an atomic store or store-release. - UNSPECV_ATOMIC_CMPSW ; Represent an atomic compare swap. - UNSPECV_ATOMIC_EXCHG ; Represent an atomic exchange. - UNSPECV_ATOMIC_CAS ; Represent an atomic CAS. - UNSPECV_ATOMIC_SWP ; Represent an atomic SWP. - UNSPECV_ATOMIC_OP ; Represent an atomic operation. - UNSPECV_ATOMIC_LDOP ; Represent an atomic load-operation - UNSPECV_ATOMIC_LDOP_OR ; Represent an atomic load-or - UNSPECV_ATOMIC_LDOP_BIC ; Represent an atomic load-bic - UNSPECV_ATOMIC_LDOP_XOR ; Represent an atomic load-xor - UNSPECV_ATOMIC_LDOP_PLUS ; Represent an atomic load-add -]) - -;; Iterators for load-operate instructions. - -(define_int_iterator ATOMIC_LDOP - [UNSPECV_ATOMIC_LDOP_OR UNSPECV_ATOMIC_LDOP_BIC - UNSPECV_ATOMIC_LDOP_XOR UNSPECV_ATOMIC_LDOP_PLUS]) - -(define_int_attr atomic_ldop - [(UNSPECV_ATOMIC_LDOP_OR "set") (UNSPECV_ATOMIC_LDOP_BIC "clr") - (UNSPECV_ATOMIC_LDOP_XOR "eor") (UNSPECV_ATOMIC_LDOP_PLUS "add")]) - ;; Instruction patterns. (define_expand "atomic_compare_and_swap" diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index c4a1c98..c2eb7de 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -306,6 +306,29 @@ UNSPEC_VEC_SHR ; Used in aarch64-simd.md. ]) +;; ------------------------------------------------------------------ +;; Unspec enumerations for Atomics. They are here so that they can be +;; used in the int_iterators for atomic operations. +;; ------------------------------------------------------------------ + +(define_c_enum "unspecv" + [ + UNSPECV_LX ; Represent a load-exclusive. + UNSPECV_SX ; Represent a store-exclusive. + UNSPECV_LDA ; Represent an atomic load or load-acquire. + UNSPECV_STL ; Represent an atomic store or store-release. + UNSPECV_ATOMIC_CMPSW ; Represent an atomic compare swap. + UNSPECV_ATOMIC_EXCHG ; Represent an atomic exchange. + UNSPECV_ATOMIC_CAS ; Represent an atomic CAS. + UNSPECV_ATOMIC_SWP ; Represent an atomic SWP. + UNSPECV_ATOMIC_OP ; Represent an atomic operation. + UNSPECV_ATOMIC_LDOP ; Represent an atomic load-operation + UNSPECV_ATOMIC_LDOP_OR ; Represent an atomic load-or + UNSPECV_ATOMIC_LDOP_BIC ; Represent an atomic load-bic + UNSPECV_ATOMIC_LDOP_XOR ; Represent an atomic load-xor + UNSPECV_ATOMIC_LDOP_PLUS ; Represent an atomic load-add +]) + ;; ------------------------------------------------------------------- ;; Mode attributes ;; ------------------------------------------------------------------- @@ -965,6 +988,16 @@ (define_int_iterator CRYPTO_SHA256 [UNSPEC_SHA256H UNSPEC_SHA256H2]) +;; Iterators for atomic operations. + +(define_int_iterator ATOMIC_LDOP + [UNSPECV_ATOMIC_LDOP_OR UNSPECV_ATOMIC_LDOP_BIC + UNSPECV_ATOMIC_LDOP_XOR UNSPECV_ATOMIC_LDOP_PLUS]) + +(define_int_attr atomic_ldop + [(UNSPECV_ATOMIC_LDOP_OR "set") (UNSPECV_ATOMIC_LDOP_BIC "clr") + (UNSPECV_ATOMIC_LDOP_XOR "eor") (UNSPECV_ATOMIC_LDOP_PLUS "add")]) + ;; ------------------------------------------------------------------- ;; Int Iterators Attributes. ;; ------------------------------------------------------------------- -- cgit v1.1