From 441b4d0fa20992086704ebf013a4f8c3a41c96b0 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Mon, 13 Nov 2017 08:21:16 +0000 Subject: [PATCH] [AArch64] More aarch64_endian_lane_rtx r254466 failed to update some uses of ENDIAN_LANE_N that were added after the patch was initially written, which meant that we were treating the mode number as an element count. 2017-11-13 Richard Sandiford gcc/ * config/aarch64/aarch64-simd.md (aarch64_store_lane0): Upddate call to ENDIAN_LANE_N. (aarch64_dot_lane): Use aarch64_endian_lane_rtx. (aarch64_dot_laneq): Likewise. (*aarch64_simd_vec_copy_lane): Update calls to ENDIAN_LANE_N and use aarch64_endian_lane_rtx. (*aarch64_simd_vec_copy_lane_): Likewise. From-SVN: r254670 --- gcc/ChangeLog | 10 ++++++++++ gcc/config/aarch64/aarch64-simd.md | 18 ++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d888379..dce8e02 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2017-11-13 Richard Sandiford + + * config/aarch64/aarch64-simd.md (aarch64_store_lane0): + Upddate call to ENDIAN_LANE_N. + (aarch64_dot_lane): Use aarch64_endian_lane_rtx. + (aarch64_dot_laneq): Likewise. + (*aarch64_simd_vec_copy_lane): Update calls to ENDIAN_LANE_N + and use aarch64_endian_lane_rtx. + (*aarch64_simd_vec_copy_lane_): Likewise. + 2017-11-12 Tom de Vries * config/riscv/riscv.h (ASM_OUTPUT_LABELREF): Wrap in do {} while (0). diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index 9a6da35..2ee0953 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -173,7 +173,7 @@ (vec_select: (match_operand:VALL_F16 1 "register_operand" "w") (parallel [(match_operand 2 "const_int_operand" "n")])))] "TARGET_SIMD - && ENDIAN_LANE_N (mode, INTVAL (operands[2])) == 0" + && ENDIAN_LANE_N (, INTVAL (operands[2])) == 0" "str\\t%1, %0" [(set_attr "type" "neon_store1_1reg")] ) @@ -450,8 +450,7 @@ DOTPROD)))] "TARGET_DOTPROD" { - operands[4] - = GEN_INT (ENDIAN_LANE_N (V8QImode, INTVAL (operands[4]))); + operands[4] = aarch64_endian_lane_rtx (V8QImode, INTVAL (operands[4])); return "dot\\t%0., %2., %3.4b[%4]"; } [(set_attr "type" "neon_dot")] @@ -466,8 +465,7 @@ DOTPROD)))] "TARGET_DOTPROD" { - operands[4] - = GEN_INT (ENDIAN_LANE_N (V16QImode, INTVAL (operands[4]))); + operands[4] = aarch64_endian_lane_rtx (V16QImode, INTVAL (operands[4])); return "dot\\t%0., %2., %3.4b[%4]"; } [(set_attr "type" "neon_dot")] @@ -734,9 +732,9 @@ (match_operand:SI 2 "immediate_operand" "i")))] "TARGET_SIMD" { - int elt = ENDIAN_LANE_N (mode, exact_log2 (INTVAL (operands[2]))); + int elt = ENDIAN_LANE_N (, exact_log2 (INTVAL (operands[2]))); operands[2] = GEN_INT (HOST_WIDE_INT_1 << elt); - operands[4] = GEN_INT (ENDIAN_LANE_N (mode, INTVAL (operands[4]))); + operands[4] = aarch64_endian_lane_rtx (mode, INTVAL (operands[4])); return "ins\t%0.[%p2], %3.[%4]"; } @@ -755,10 +753,10 @@ (match_operand:SI 2 "immediate_operand" "i")))] "TARGET_SIMD" { - int elt = ENDIAN_LANE_N (mode, exact_log2 (INTVAL (operands[2]))); + int elt = ENDIAN_LANE_N (, exact_log2 (INTVAL (operands[2]))); operands[2] = GEN_INT (HOST_WIDE_INT_1 << elt); - operands[4] = GEN_INT (ENDIAN_LANE_N (mode, - INTVAL (operands[4]))); + operands[4] = aarch64_endian_lane_rtx (mode, + INTVAL (operands[4])); return "ins\t%0.[%p2], %3.[%4]"; } -- 2.7.4