Hi, This patch fixes vset_lane intrinsic variants for D-register sized variables. A typo meant that the wrong lane would be set in many circumstances.
Tested manually only. OK to apply? Thanks, Julian ChangeLog gcc/ * config/arm/neon.md (vec_set<mode>_internal): Fix misplaced parenthesis in D-register case.
Index: gcc/config/arm/neon.md =================================================================== --- gcc/config/arm/neon.md (revision 173299) +++ gcc/config/arm/neon.md (working copy) @@ -426,7 +426,7 @@ (match_operand:SI 2 "immediate_operand" "i")))] "TARGET_NEON" { - int elt = ffs ((int) INTVAL (operands[2]) - 1); + int elt = ffs ((int) INTVAL (operands[2])) - 1; if (BYTES_BIG_ENDIAN) elt = GET_MODE_NUNITS (<MODE>mode) - 1 - elt; operands[2] = GEN_INT (elt);