diff options
author | Richard Sandiford <richard.sandiford@linaro.org> | 2018-01-03 07:14:43 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2018-01-03 07:14:43 +0000 |
commit | 87133c45a06aa9c04cb6bc13b3b0733ec43efcec (patch) | |
tree | e981b33300b133082b80265cf8e61e5559203fa6 /gcc/targhooks.c | |
parent | 9d2f08ab97bea3c299cce96a0760904501e002dd (diff) | |
download | gcc-87133c45a06aa9c04cb6bc13b3b0733ec43efcec.zip gcc-87133c45a06aa9c04cb6bc13b3b0733ec43efcec.tar.gz gcc-87133c45a06aa9c04cb6bc13b3b0733ec43efcec.tar.bz2 |
poly_int: get_mask_mode
This patch makes TARGET_GET_MASK_MODE take polynomial nunits and
vector_size arguments. The gcc_assert in default_get_mask_mode
is now handled by the exact_div call in vector_element_size.
2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* target.def (get_mask_mode): Take the number of units and length
as poly_uint64s rather than unsigned ints.
* targhooks.h (default_get_mask_mode): Update accordingly.
* targhooks.c (default_get_mask_mode): Likewise.
* config/i386/i386.c (ix86_get_mask_mode): Likewise.
* doc/tm.texi: Regenerate.
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r256130
Diffstat (limited to 'gcc/targhooks.c')
-rw-r--r-- | gcc/targhooks.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/targhooks.c b/gcc/targhooks.c index 653567c..f47956a 100644 --- a/gcc/targhooks.c +++ b/gcc/targhooks.c @@ -1290,17 +1290,17 @@ default_autovectorize_vector_sizes (void) return 0; } -/* By defaults a vector of integers is used as a mask. */ +/* By default a vector of integers is used as a mask. */ opt_machine_mode -default_get_mask_mode (unsigned nunits, unsigned vector_size) +default_get_mask_mode (poly_uint64 nunits, poly_uint64 vector_size) { - unsigned elem_size = vector_size / nunits; + unsigned int elem_size = vector_element_size (vector_size, nunits); scalar_int_mode elem_mode = smallest_int_mode_for_size (elem_size * BITS_PER_UNIT); machine_mode vector_mode; - gcc_assert (elem_size * nunits == vector_size); + gcc_assert (known_eq (elem_size * nunits, vector_size)); if (mode_for_vector (elem_mode, nunits).exists (&vector_mode) && VECTOR_MODE_P (vector_mode) |