r276743 - in /branches/ibm/pcrel-peter/gcc: Cha...

meissner@gcc.gnu.org meissner@gcc.gnu.org
Tue Oct 8 23:53:00 GMT 2019


Author: meissner
Date: Tue Oct  8 23:53:30 2019
New Revision: 276743

URL: https://gcc.gnu.org/viewcvs?rev=276743&root=gcc&view=rev
Log:
Initial vector pair/quad support.

2019-10-08  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/mma.md: New file for vector quad support.
	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
	__VECTOR_PAIR__ and __VECTOR_QUAD__ if the vector pair and vector
	quad support is enabled.
	* config/rs6000/rs6000-call.c (rs6000_init_builtins): Initialize
	the __vector_pair and __vector_quad keywords for C.
	* config/rs6000/rs6000-cpus.def (ISA_FUTURE_MASKS_SERVER): Add
	-mvector-256bit.
	(OTHER_FUTURE_MASKS): Add -mvector-256bit.
	(POWERPC_MASKS): Add -mvector-256bit.
	* config/rs6000/rs6000-modes.def (int vector pair modes): Update
	comments.
	(floating point vector pair modes): Add modes.
	(int vector quad modes): Add modes.
	(OImode): Add 256-bit integer mode.
	(XImode): Add 512-bit integer mode.
	* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok_uncached): Add
	support for vector pair and vector quad modes.
	(rs6000_debug_reg_global): Print information about V4TImode,
	OImode, and XImode if -mdebug=reg.  Print the endian configuration
	macros.  Print the block move and compare configuration
	variables.
	(rs6000_setup_reg_addr_masks): Setup vector pair and vector quad
	modes.
	(rs6000_init_hard_regno_mode_ok): Setup vector pair and vector
	quad modes.  Add reload handlers for vector pair and vector quad
	modes.
	(rs6000_option_override_internal): Bump up block move limit if we
	support loading and storing vector pairs.
	(quad_address_p): Add support for vector pair and vector quad modes.
	(reg_offset_addressing_ok_p): Add support for vector pair and
	vector quad modes.
	(avoiding_indexed_address_p): Add support for vector pairs.
	(rs6000_emit_move): Assert that vector pair and vector constant
	modes don't allow moves of a constant.
	(rs6000_preferred_reload_class): Vector pairs are limited to VSX
	register, and vector quads are limited to FPR registers.
	(rs6000_split_multireg_move): Add support for vector pair and
	vector quad modes.
	(rs6000_opt_masks): Add -mvector-256bit.
	* config/rs6000/rs6000.h (ALTIVEC_OR_VSX_VECTOR_MODE): Add support
	for vector pair and vector quad modes.
	(enum rs6000_builtin_type_index): Add support for vector pair and
	vector quad modes.
	(vector_pair_type_node): New global type for vector pair mode.
	(vector_quad_type_node): New global type for vector quad mode.
	(VECTOR_PAIR_MODE_P): New macro to check if this is a vector
	pair.
	(VECTOR_QUAD_MODE_P): New macro to check if this is a vector
	quad.
	* config/rs6000/rs6000.md: Include mma.md.
	(RELOAD iterator): Add V2TImode and V4TImode.
	* config/rs6000/rs6000.opt (-mvector-256bit): New switch.
	* config/rs6000/vsx.md (OImode): Dummy OImode move.
	(movv2ti): New generator for V2TImode.
	(movv2ti_vector_pair): New move insn for -mvector-256bit.
	(movv2ti_no_vector_pair): New move insn for -mno-vector-256bit.


Modified:
    branches/ibm/pcrel-peter/gcc/ChangeLog.meissner
    branches/ibm/pcrel-peter/gcc/config/rs6000/mma.md
    branches/ibm/pcrel-peter/gcc/config/rs6000/rs6000-c.c
    branches/ibm/pcrel-peter/gcc/config/rs6000/rs6000-call.c
    branches/ibm/pcrel-peter/gcc/config/rs6000/rs6000-cpus.def
    branches/ibm/pcrel-peter/gcc/config/rs6000/rs6000-modes.def
    branches/ibm/pcrel-peter/gcc/config/rs6000/rs6000.c
    branches/ibm/pcrel-peter/gcc/config/rs6000/rs6000.h
    branches/ibm/pcrel-peter/gcc/config/rs6000/rs6000.md
    branches/ibm/pcrel-peter/gcc/config/rs6000/rs6000.opt
    branches/ibm/pcrel-peter/gcc/config/rs6000/vsx.md



More information about the Gcc-cvs mailing list