Commit db0253a4 by Tejas Belagod Committed by Tejas Belagod

aarch64.c (aarch64_simd_vector_alignment, [...]): New.


2012-12-04  Tejas Belagod  <tejas.belagod@arm.com>

        * config/aarch64/aarch64.c (aarch64_simd_vector_alignment,
        aarch64_simd_vector_alignment_reachable): New. 
        (TARGET_VECTOR_ALIGNMENT, TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE):
        Define.

From-SVN: r194126
parent c3dd8dd7
2012-12-04 Tejas Belagod <tejas.belagod@arm.com>
* config/aarch64/aarch64.c (aarch64_simd_vector_alignment,
aarch64_simd_vector_alignment_reachable): New.
(TARGET_VECTOR_ALIGNMENT, TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE):
Define.
2012-12-04 Richard Biener <rguenther@suse.de> 2012-12-04 Richard Biener <rguenther@suse.de>
PR tree-optimization/55124 PR tree-optimization/55124
...@@ -6316,6 +6316,31 @@ aarch64_simd_attr_length_move (rtx insn) ...@@ -6316,6 +6316,31 @@ aarch64_simd_attr_length_move (rtx insn)
return 4; return 4;
} }
/* Implement target hook TARGET_VECTOR_ALIGNMENT. The AAPCS64 sets the maximum
alignment of a vector to 128 bits. */
static HOST_WIDE_INT
aarch64_simd_vector_alignment (const_tree type)
{
HOST_WIDE_INT align = tree_low_cst (TYPE_SIZE (type), 0);
return MIN (align, 128);
}
/* Implement target hook TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE. */
static bool
aarch64_simd_vector_alignment_reachable (const_tree type, bool is_packed)
{
if (is_packed)
return false;
/* We guarantee alignment for vectors up to 128-bits. */
if (tree_int_cst_compare (TYPE_SIZE (type),
bitsize_int (BIGGEST_ALIGNMENT)) > 0)
return false;
/* Vectors whose size is <= BIGGEST_ALIGNMENT are naturally aligned. */
return true;
}
static unsigned HOST_WIDE_INT static unsigned HOST_WIDE_INT
aarch64_shift_truncation_mask (enum machine_mode mode) aarch64_shift_truncation_mask (enum machine_mode mode)
{ {
...@@ -6864,6 +6889,13 @@ aarch64_c_mode_for_suffix (char suffix) ...@@ -6864,6 +6889,13 @@ aarch64_c_mode_for_suffix (char suffix)
#undef TARGET_MAX_ANCHOR_OFFSET #undef TARGET_MAX_ANCHOR_OFFSET
#define TARGET_MAX_ANCHOR_OFFSET 4095 #define TARGET_MAX_ANCHOR_OFFSET 4095
#undef TARGET_VECTOR_ALIGNMENT
#define TARGET_VECTOR_ALIGNMENT aarch64_simd_vector_alignment
#undef TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE
#define TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE \
aarch64_simd_vector_alignment_reachable
struct gcc_target targetm = TARGET_INITIALIZER; struct gcc_target targetm = TARGET_INITIALIZER;
#include "gt-aarch64.h" #include "gt-aarch64.h"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment