diff options
author | David Sherwood <david.sherwood@arm.com> | 2015-01-21 17:53:55 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2015-01-21 17:53:55 +0000 |
commit | b6b782b967c8b3cdd1bcb3f6a8aa5581be86ffd7 (patch) | |
tree | 97d7417e0c108e9ed952b018a415bfc0c3aa9c08 | |
parent | 668046d17599f7596f01cfbb8ebd0f00c4531e5b (diff) | |
download | gcc-b6b782b967c8b3cdd1bcb3f6a8aa5581be86ffd7.zip gcc-b6b782b967c8b3cdd1bcb3f6a8aa5581be86ffd7.tar.gz gcc-b6b782b967c8b3cdd1bcb3f6a8aa5581be86ffd7.tar.bz2 |
aarch64.h (CANNOT_CHANGE_MODE_CLASS): Removed.
gcc/
2015-01-21 David Sherwood <david.sherwood@arm.com>
Tejas Belagod <Tejas.Belagod@arm.com>
* config/aarch64/aarch64.h (CANNOT_CHANGE_MODE_CLASS): Removed.
* config/aarch64/aarch64.c (aarch64_cannot_change_mode_class): Removed.
* config/aarch64/aarch64-protos.h (aarch64_cannot_change_mode_class):
Removed.
Co-Authored-By: Tejas Belagod <tejas.belagod@arm.com>
From-SVN: r219960
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64-protos.h | 3 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 48 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.h | 3 |
4 files changed, 8 insertions, 54 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2921413..a08d231 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,14 @@ 2015-01-21 David Sherwood <david.sherwood@arm.com> Tejas Belagod <Tejas.Belagod@arm.com> + * config/aarch64/aarch64.h (CANNOT_CHANGE_MODE_CLASS): Removed. + * config/aarch64/aarch64.c (aarch64_cannot_change_mode_class): Removed. + * config/aarch64/aarch64-protos.h (aarch64_cannot_change_mode_class): + Removed. + +2015-01-21 David Sherwood <david.sherwood@arm.com> + Tejas Belagod <Tejas.Belagod@arm.com> + * config/aarch64/aarch64-protos.h (aarch64_simd_attr_length_rglist) (aarch64_reverse_mask): New decls. * config/aarch64/iterators.md (UNSPEC_REV_REGLIST): New enum. diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h index 0b3d035..59c5824 100644 --- a/gcc/config/aarch64/aarch64-protos.h +++ b/gcc/config/aarch64/aarch64-protos.h @@ -182,9 +182,6 @@ struct tune_params HOST_WIDE_INT aarch64_initial_elimination_offset (unsigned, unsigned); int aarch64_get_condition_code (rtx); bool aarch64_bitmask_imm (HOST_WIDE_INT val, machine_mode); -bool aarch64_cannot_change_mode_class (machine_mode, - machine_mode, - enum reg_class); enum aarch64_symbol_type aarch64_classify_symbolic_expression (rtx, enum aarch64_symbol_context); bool aarch64_const_vec_all_same_int_p (rtx, HOST_WIDE_INT); diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index e057c59..dd49fcd 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -10175,54 +10175,6 @@ aarch64_vectorize_vec_perm_const_ok (machine_mode vmode, return ret; } -/* Implement target hook CANNOT_CHANGE_MODE_CLASS. */ -bool -aarch64_cannot_change_mode_class (machine_mode from, - machine_mode to, - enum reg_class rclass) -{ - /* Full-reg subregs are allowed on general regs or any class if they are - the same size. */ - if (GET_MODE_SIZE (from) == GET_MODE_SIZE (to) - || !reg_classes_intersect_p (FP_REGS, rclass)) - return false; - - /* Limited combinations of subregs are safe on FPREGs. Particularly, - 1. Vector Mode to Scalar mode where 1 unit of the vector is accessed. - 2. Scalar to Scalar for integer modes or same size float modes. - 3. Vector to Vector modes. - 4. On little-endian only, Vector-Structure to Vector modes. */ - if (GET_MODE_SIZE (from) > GET_MODE_SIZE (to)) - { - if (aarch64_vector_mode_supported_p (from) - && GET_MODE_SIZE (GET_MODE_INNER (from)) == GET_MODE_SIZE (to)) - return false; - - if (GET_MODE_NUNITS (from) == 1 - && GET_MODE_NUNITS (to) == 1 - && (GET_MODE_CLASS (from) == MODE_INT - || from == to)) - return false; - - if (aarch64_vector_mode_supported_p (from) - && aarch64_vector_mode_supported_p (to)) - return false; - - /* Within an vector structure straddling multiple vector registers - we are in a mixed-endian representation. As such, we can't - easily change modes for BYTES_BIG_ENDIAN. Otherwise, we can - switch between vectors and vector structures cheaply. */ - if (!BYTES_BIG_ENDIAN) - if ((aarch64_vector_mode_supported_p (from) - && aarch64_vect_struct_mode_p (to)) - || (aarch64_vector_mode_supported_p (to) - && aarch64_vect_struct_mode_p (from))) - return false; - } - - return true; -} - rtx aarch64_reverse_mask (enum machine_mode mode) { diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h index eed86f7..bf59e40 100644 --- a/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h @@ -879,9 +879,6 @@ do { \ extern void __aarch64_sync_cache_range (void *, void *); \ __aarch64_sync_cache_range (beg, end) -#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \ - aarch64_cannot_change_mode_class (FROM, TO, CLASS) - #define SHIFT_COUNT_TRUNCATED !TARGET_SIMD /* Choose appropriate mode for caller saves, so we do the minimum |