Hi Carl,
On Tue, Oct 31, 2017 at 08:46:09AM -0700, Carl Love wrote:
> gcc/ChangeLog:
See Jakub's comments (thanks!)
> --- a/gcc/config/rs6000/rs6000.c
> +++ b/gcc/config/rs6000/rs6000.c
> @@ -14286,6 +14286,34 @@ swap_selector_for_mode (machine_mode mode)
> return force_reg (V16QImode, gen_rtx_CONST_VECTOR (V16QImode, gen_rtvec_v
> (16, perm)));
> }
>
> +/* Return bytes in type */
Dot space space.
> +int
> +bytes_in_mode (machine_mode mode)
> +{
But what do you need this for? This is GET_MODE_SIZE (GET_MODE_INNER (mode))
(or similar).
> +;; Return first position of match between vectors
> +(define_expand "first_match_index_<mode>"
> + [(match_operand:SI 0 "register_operand")
> + (unspec: SI [(match_operand:VSX_EXTRACT_I 1 "register_operand")
No space in :SI please.
> + (match_operand:VSX_EXTRACT_I 2 "register_operand")]
This should indent to the same level as the previous match_operand.
> + UNSPEC_VSX_FIRST_MATCH_INDEX)]
(define_expand "first_match_index_<mode>"
[(match_operand:SI 0 "register_operand")
(unspec:SI [(match_operand:VSX_EXTRACT_I 1 "register_operand")
(match_operand:VSX_EXTRACT_I 2 "register_operand")]
UNSPEC_VSX_FIRST_MATCH_INDEX)]
> + emit_insn (gen_vcmpnez<VSX_EXTRACT_WIDTH> (cmp_result, operands[1],
> + operands[2]));
Indent with tabs for each each spaces; the "o" should align with the "c".
> + sh = bytes_in_mode(<MODE>mode)/2;
Spaces around binary operators please, and before the opening paren of
parameter lists.
> + /* Vector with zeros in elements that correspond to zeros in operands. */
> + emit_insn (gen_xor<mode>3 (zero, zero, zero));
I think we have a helper for this? One that avoids xor if it can.
Segher