diff options
author | Richard Sandiford <richard.sandiford@linaro.org> | 2018-01-03 21:43:28 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2018-01-03 21:43:28 +0000 |
commit | c6561a1af68d6439cedde6dc79d19eda9981a4be (patch) | |
tree | e7c537aa897178d8d89fe0a7d45e08bfb47cce28 /gcc/machmode.h | |
parent | 6ce12f6a1647ec2831f3c5908ecf9c23ae191d02 (diff) | |
download | gcc-c6561a1af68d6439cedde6dc79d19eda9981a4be.zip gcc-c6561a1af68d6439cedde6dc79d19eda9981a4be.tar.gz gcc-c6561a1af68d6439cedde6dc79d19eda9981a4be.tar.bz2 |
Add support for adjusting the number of units in a mode
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.
2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@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.
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r256204
Diffstat (limited to 'gcc/machmode.h')
-rw-r--r-- | gcc/machmode.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/machmode.h b/gcc/machmode.h index 5eaa868..b938eea 100644 --- a/gcc/machmode.h +++ b/gcc/machmode.h @@ -23,9 +23,9 @@ along with GCC; see the file COPYING3. If not see typedef opt_mode<machine_mode> opt_machine_mode; extern CONST_MODE_SIZE poly_uint16_pod mode_size[NUM_MACHINE_MODES]; -extern const poly_uint16_pod mode_precision[NUM_MACHINE_MODES]; +extern CONST_MODE_PRECISION poly_uint16_pod mode_precision[NUM_MACHINE_MODES]; extern const unsigned char mode_inner[NUM_MACHINE_MODES]; -extern const poly_uint16_pod mode_nunits[NUM_MACHINE_MODES]; +extern CONST_MODE_NUNITS poly_uint16_pod mode_nunits[NUM_MACHINE_MODES]; extern CONST_MODE_UNIT_SIZE unsigned char mode_unit_size[NUM_MACHINE_MODES]; extern const unsigned short mode_unit_precision[NUM_MACHINE_MODES]; extern const unsigned char mode_wider[NUM_MACHINE_MODES]; |