mirror of git://gcc.gnu.org/git/gcc.git
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
This commit is contained in:
parent
c3dd8dd768
commit
db0253a428
|
@ -1,3 +1,10 @@
|
||||||
|
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)
|
||||||
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)
|
||||||
#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"
|
||||||
|
|
Loading…
Reference in New Issue