> -----Original Message----- > From: Richard Sandiford <richard.sandif...@arm.com> > Sent: 29 April 2019 09:42 > To: Alejandro Martinez Vicente <alejandro.martinezvice...@arm.com> > Cc: GCC Patches <gcc-patches@gcc.gnu.org>; nd <n...@arm.com>; Richard > Biener <richard.guent...@gmail.com> > Subject: Re: [Aarch64][SVE] Dot product support > > Alejandro Martinez Vicente <alejandro.martinezvice...@arm.com> writes: > > @@ -5885,6 +5885,56 @@ is_nonwrapping_integer_induction > (stmt_vec_info stmt_vinfo, struct loop *loop) > > <= TYPE_PRECISION (lhs_type)); > > } > > > > +/* Check if masking can be supported by inserting a condional expression. > > conditional > > > + CODE is the code for the operation. COND_FN is the conditional internal > > + function, if it exists. VECTYPE_IN is the type of the vector > > +input. */ static bool use_mask_by_cond_expr_p (enum tree_code code, > > +internal_fn cond_fn, > > + tree vectype_in) > > +{ > > + if (cond_fn != IFN_LAST > > + && direct_internal_fn_supported_p (cond_fn, vectype_in, > > + OPTIMIZE_FOR_SPEED)) > > + return false; > > + > > + switch (code) > > + { > > + case DOT_PROD_EXPR: > > + return true; > > + > > + default: > > + return false; > > + } > > +} > > + > > +/* Insert a condional expression to enable masked vectorization. > > +CODE is the > > Same here. > > > + code for the operation. VOP is the array of operands. MASK is the loop > > + mask. GSI is a statement iterator used to place the new conditional > > + expression. */ > > +static void > > +build_vect_cond_expr (enum tree_code code, tree vop[3], tree mask, > > + gimple_stmt_iterator *gsi) > > +{ > > + switch (code) > > + { > > + case DOT_PROD_EXPR: > > + { > > + tree vectype = TREE_TYPE (vop[1]); > > + tree zero = build_zero_cst (vectype); > > + zero = build_vector_from_val (vectype, zero); > > This last line isn't right -- should just delete it. > > tree zero = build_zero_cst (vectype); > > builds a zero vector in one go. > > OK with those changes, thanks. (This version didn't include the testcase, but > I assume that's because it didn't change from last time.) > Done. I forgot to add the testcase in v2.
Alejandro > Richard
dot_v3.patch
Description: dot_v3.patch