On 10/25/2017 09:57 AM, Richard Sandiford wrote: > We already allow the target to change the size and alignment of a mode. > This patch does the same thing for the number of units, which is needed > to give command-line control of the SVE vector length. > > Tested on aarch64-linux-gnu, x86_64-linux-gnu and powerpc64le-linux-gnu, > on top of the poly_int series. I think I can approve this under the > gen* maintainership, so if there are no comments in the menatime, > I'll apply it if the prerequisites are approved. > > Thanks, > Richard > > > 2017-10-25 Richard Sandiford <richard.sandif...@linaro.org> > Alan Hayward <alan.hayw...@arm.com> > David Sherwood <david.sherw...@arm.com> > > gcc/ > * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION. > (mode_nunits): Likewise CONST_MODE_NUNITS. > * machmode.def (ADJUST_NUNITS): Document. > * genmodes.c (mode_data::need_nunits_adj): New field. > (blank_mode): Update accordingly. > (adj_nunits): New variable. > (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ > parameter. > (emit_mode_size_inline): Set need_bytesize_adj for all modes > listed in adj_nunits. > (emit_mode_nunits_inline): Set need_nunits_adj for all modes > listed in adj_nunits. Don't emit case statements for such modes. > (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS > and CONST_MODE_PRECISION. Make CONST_MODE_SIZE expand to > nothing if adj_nunits is nonnull. > (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl. > (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit) > (emit_mode_fbit): Update use of print_maybe_const_decl. > (emit_move_size): Likewise. Treat the array as non-const > if adj_nunits. > (emit_mode_adjustments): Handle adj_nunits. Were all the prereqs here approved? Or does this depend on the poly_int stuff?
jeff