]> gcc.gnu.org Git - gcc.git/commit
Add support for -mvector-size-32.
authorMichael Meissner <meissner@linux.ibm.com>
Thu, 9 Nov 2023 20:47:07 +0000 (15:47 -0500)
committerMichael Meissner <meissner@linux.ibm.com>
Thu, 9 Nov 2023 20:47:07 +0000 (15:47 -0500)
commit227b2d4a40992fe8f88a40a45e7a355fb8f6be30
tree778c7a0f76ad677144b279c41a9acead12c4aba4
parent4066dc88b2d82c288c28f7e573c9ca7e7881fc31
Add support for -mvector-size-32.

2023-11-09  Michael Meissner  <meissner@linux.ibm.com>

gcc/

* config/rs6000/predicates.md (const_0_to_31_operand): New predicate.
* config/rs6000/rs6000-c.cc (rs6000_cpu_cpp_builtins): Define
__VECTOR_SIZE_32__ if -mvector-size-32 was used.
* config/rs6000/rs6000-cpus.def (OTHER_POWER10_MASKS): Add
-mvector-size-32.
(POWERPC_MASKS): Likewise.
* config/rs6000/rs6000-protos.h (vector_pair_to_vector_mode): New
declaration.
(rs6000_adjust_for_vector_pair): Likewise.
(split_unary_vector_pair): Likewise.
(split_binary_vector_pair): Likewise.
(split_fma_vector_pair): Likewise.
* config/rs6000/rs6000.cc (rs6000_hard_regno_mode_ok_uncached): Add
support for 32-byte vector types created with -mvector-size-32.
(rs6000_modes_tieable_p): Make all 32-byte vectors tie with other
32-byte vectors.
(rs6000_debug_reg_global): If -mdebug=reg, print whether
-mvector-size-32 was enabled.
(rs6000_init_hard_regno_mode_ok): Add support for 32-byte vectors.
(rs6000_option_override_internal): Add checking for -mvector-size-32.
(rs6000_opt_masks): Add -mvector-size-32.
(rs6000_expand_vector_extract): Add support for 32-byte vectors.
(reg_offset_addressing_ok_p): Likewise.
(rs6000_emit_move): Likewise.
(rs6000_preferred_reload_class): Likewise.
(vector_pair_to_vector_mode): New vector pair helper function.
(rs6000_adjust_for_vector_pair): Likewise.
(rs6000_split_vpair_constan): Likewise.
(split_unary_vector_pair): Likewise.
(split_binary_vector_pair): Likewise.
(split_fma_vector_pair): Likewise.
(rs6000_split_multireg_move): Add support for 32-byte vectors.
* config/rs6000/rs6000.h (VECTOR_PAIR_MODE): New macro.
* config/rs6000/rs6000.md (wd attribute): Add 32-byte vector modes.
(RELOAD): Likewise.
(toplevel): Include vector-pair.md.
* config/rs6000/rs6000.opt (-mvector-size-32): New option.
* config/rs6000/t-rs6000 (MD_INCLUDES): Add vector-pair.md.
* config/rs6000/vector-pair.md: New file.
* config/rs6000/vector.md (VEC_base): Add 32-byte vector modes.
* config/rs6000/vsx.md (VSX_EXTRACT_PREDICATE): Likewise.
(VSX_EX): Likewise.
(VPAIR_V4DI_V4DF): New mode iterator.
(VPAIR_VECTOR): New mode attribute.
(vpair_vector): Likewise.
(vsx_extract_<mode>, VPAIR_V4DF_V4DI iterator): New extract insn for
vector pair support.
(vsx_extract_v8sf): Likewise.
(vsx_extract_<mode>, VPAIR_SMALL_INT iterator): Likewise.

gcc/testsuite/

* gcc.target/powerpc/vector-size-32-1.c: New test.
* gcc.target/powerpc/vector-size-32-2.c: New test.
* gcc.target/powerpc/vector-size-32-3.c: New test.
* gcc.target/powerpc/vector-size-32-4.c: New test.
* gcc.target/powerpc/vector-size-32-5.c: New test.
* gcc.target/powerpc/vector-size-32-6.c: New test.
17 files changed:
gcc/config/rs6000/predicates.md
gcc/config/rs6000/rs6000-c.cc
gcc/config/rs6000/rs6000-cpus.def
gcc/config/rs6000/rs6000-protos.h
gcc/config/rs6000/rs6000.cc
gcc/config/rs6000/rs6000.h
gcc/config/rs6000/rs6000.md
gcc/config/rs6000/rs6000.opt
gcc/config/rs6000/vector-pair.md [new file with mode: 0644]
gcc/config/rs6000/vector.md
gcc/config/rs6000/vsx.md
gcc/testsuite/gcc.target/powerpc/vector-size-32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vector-size-32-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vector-size-32-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vector-size-32-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vector-size-32-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vector-size-32-6.c [new file with mode: 0644]
This page took 0.066212 seconds and 5 git commands to generate.