public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/meissner/heads/work146-vsize)] Update ChangeLog.*
@ 2023-11-20  1:04 Michael Meissner
  0 siblings, 0 replies; 9+ messages in thread
From: Michael Meissner @ 2023-11-20  1:04 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:db6535bf86f4e00b2434ed5c865776eff136b6bf

commit db6535bf86f4e00b2434ed5c865776eff136b6bf
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Sun Nov 19 20:04:13 2023 -0500

    Update ChangeLog.*

Diff:
---
 gcc/ChangeLog.vsize | 320 ++++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 234 insertions(+), 86 deletions(-)

diff --git a/gcc/ChangeLog.vsize b/gcc/ChangeLog.vsize
index be5ca471e06..b656f77a9be 100644
--- a/gcc/ChangeLog.vsize
+++ b/gcc/ChangeLog.vsize
@@ -1,138 +1,286 @@
-==================== Branch work146-vsize, patch #305 ====================
+==================== Branch work146-vsize, patch #314 ====================
 
-Add more vector pair constants.
+Add vector_size(32) tests.
 
-2023-11-19  Michael Meissner  <meissner@linux.ibm.com>
+The first patch in the vector pair series was previous posted.  This patch
+needs that first patch.  The first patch implemented the basic modes, and it
+allows for initialization of the modes.  In addition, I added some
+optimizations for extracting and setting fields within the vector pair.
 
-gcc/
+The second patch in the vector pair series implemented floating point support.
 
-	* config/rs6000/constraints.md (eV): New constraint.
-	* config/rs6000/predicates.md (easy_vector_constant): Add support for
-	vector pair constants.
-	(easy_vector_pair_constant): New predicate.
-	* config/rs6000/rs6000-protos.h (vector_pair_to_vector_mode): New
-	declaration.
-	(split_vector_ppair_constant): Likewise.
-	* config/rs6000/rs6000.cc (vector_pair_to_vector_mode): Make global.
-	(split_vector_ppair_constant): Make global.  Rename from
-	rs6000_split_vector_pair_constant.
-	(rs6000_expand_vector_pair_init): Rename split_vector_pair_constant
-	call.
-	(rs6000_split_multireg_move): Likewise.
-	* config/rs6000/vector-pair.md (mov<mode>): Add support for other vector
-	pair constants that can be loaded in 2 instructions.
-	* doc/md.texi (eV constraint): Document
+The third patch in the vector pair series implemented integer point support.
 
-gcc/testsuite/
+This fourth patch provide new tests to the test suite.
 
-	* gcc.target/powerpc/vector-size-32-7.c: New test.
+When I test a saxpy type loop (a[i] += (b[i] * c[i])), I generally see a 10%
+improvement over either auto-factorization, or just using the vector types.
 
-==================== Branch work146-vsize, patch #304 ====================
+I have tested these patches on a little endian power10 system.  With
+-vector-size-32 disabled by default, there are no regressions in the
+test suite.
 
-Work on vector pair extracts.
+I have also built and run the tests on both little endian power 9 and big
+endian 9 power systems, and there are no regressions.  Can I check these
+patches into the master branch?
 
-2023-11-19  Michael Meissner  <meissner@linux.ibm.com>
+2023-11-19  Michael Meisner  <meissner@linux.ibm.com>
 
 gcc/
 
-	* config/rs6000/vector-pair.md (vec_extract<mode><vpair_element_l>):
-	Rewrite.
-	(vec_extractv8sf): New insn.
-	* config/rs6000/vsx.md (vsx_extract_v4df): Delete.
-	(vsx_extract_v8sf): Delete.
+	* 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.
+	* gcc.target/powerpc/vector-size-32-7.c: New test.
+
+==================== Branch work146-vsize, patch #313 ====================
+
+Add vector_size(32) integer support.
+
+The first patch in the vector pair series was previous posted.  This patch
+needs that first patch.  The first patch implemented the basic modes, and it
+allows for initialization of the modes.  In addition, I added some
+optimizations for extracting and setting fields within the vector pair.
+
+The second patch in the vector pair series implemented floating point support.
+
+The third patch implements the integer vector pair support.  This adds the basic
+support for doing integer operations on vector pairs.  I have implemented most
+of the arithmetic and logical that will be needed in the future when byte
+shuffling will be added.  I did add various combiner insns to fold the logical
+instructions (i.e. ior of not becomes orc).  Since the PowerPC architecture does
+not have negative for vectors of 8/16-bit elements, I have added alternate code
+that creates a 0 and then does a subtract.
 
-==================== Branch work146-vsize, patch #303 ====================
+The main instructions that are not supported are shift and rotate instructions.
+In addition, if people want to use vector pair support on integer types, it
+might make sense to add support for saturating adds and subtracts, along the
+various specialized instructions (bpermd, etc.).
 
-Add set/extract support on vector pairs with double word elements.
+The fourth patch will provide new tests to the test suite.
 
-2023-11-18  Michael Meissner  <meissner@linux.ibm.com>
+When I test a saxpy type loop (a[i] += (b[i] * c[i])), I generally see a 10%
+improvement over either auto-factorization, or just using the vector types.
+
+I have tested these patches on a little endian power10 system.  With
+-vector-size-32 disabled by default, there are no regressions in the
+test suite.
+
+I have also built and run the tests on both little endian power 9 and big
+endian 9 power systems, and there are no regressions.  Can I check these
+patches into the master branch?
+
+2023-11-19  Michael Meisner  <meissner@linux.ibm.com>
 
 gcc/
 
-	* config/rs6000/rs6000-protos.h (rs6000_expand_vector_pair_set): Delete.
-	* config/rs6000/rs6000.cc (rs6000_expand_vector_pair_set): Likewise.
-	* config/rs6000/vector-pair.md (vec_set<mode>): Replace with a version
-	that only handles setting double word elements.
-	(vec_extract<mode><vpair_element_l>): Likewise.
+	* config/rs6000/vector-pair.md (VPAIR_INT): New mode iterator.
+	(VPAIR_NEG_VNEG): Likewise.
+	(VPAIR_NEG_SUB): Likewise.
+	(VPAIR_INT_BINARY): New code iterator.
+	(neg<mode>2, VPAIR_NEG_VNEG iterator): New insn.
+	(neg<mode>2, VPAIR_NEG_SUB iterator); Likewise.
+	(<vpair_op><mode>2, VPAIR_LOGICAL_UNARY and VPAIR_INT iterators):
+	Likewise.
+	(<vpair_op><mode>3, VPAIR_LOGICAL_BINARY and VPAIR INT iterator):
+	Likewise.
+	(nor<mode>3_1): Likewise.
+	(nor<mode>3_2): Likewise.
+	(andc<mode>3): Likewise.
+	(eqv<mode>3): Likewise.
+	(nand<mode>3_1): Likewise.
+	(nand<mode>3_2): Likewise.
+	(orc<mode>): Likewise.
+
+==================== Branch work146-vsize, patch #312 ====================
+
+Add vector_size(32) floating point.
+
+The first patch in the vector pair series was previous posted.  This patch
+needs that first patch.  The first patch implemented the basic modes, and it
+allows for initialization of the modes.  In addition, I added some
+optimizations for extracting and setting fields within the vector pair.
+
+This is the second patch in the vector pair series.  It adds the basic support
+to do the normal floating point arithmetic operations like add, subtract, etc.
+I have also put in combine insns to enable combining the fma (fused
+multiply-add) instructions with negation to generate the 4 fma operations on
+the PowerPC.
 
-==================== Branch work146-vsize, patch #302 ====================
+The third patch will implement the integer vector pair support.
 
-Add vector pair add/sub/umin/umax/sqrt/div.
+The fourth patch will provide new tests to the test suite.
 
-2023-11-18  Michael Meissner  <meissner@linux.ibm.com>
+When I test a saxpy type loop (a[i] += (b[i] * c[i])), I generally see a 10%
+improvement over either auto-factorization, or just using the vector types.
+
+I have tested these patches on a little endian power10 system.  With
+-vector-size-32 disabled by default, there are no regressions in the
+test suite.
+
+I have also built and run the tests on both little endian power 9 and big
+endian 9 power systems, and there are no regressions.  Can I check these
+patches into the master branch?
+
+2023-11-19  Michael Meisner  <meissner@linux.ibm.com>
 
 gcc/
 
-	* config/rs6000/vector-pair.md (VPAIR_INT_BINARY): Add umin/umax.
-	(vpair_op):  Add umin/umax/sqrt.
-	(most insns): Set the type attribute.
-	(sqrtv8sf2): New insn.
+	* config/rs6000/rs6000-protos.h (split_unary_vector_pair): New
+	declaration.
+	(split_binary_vector_pair): Likewise.
+	(split_fma_vector_pair): Likewise.
+	* config/rs6000/rs6000.cc (split_unary_vector_pair): New function.
+	(split_binary_vector_pair): Likewise.
+	(split_fma_vector_pair): Likewise.
+	* config/rs6000/vector-pair.md (VPAIR_FP): New mode iterator.
+	(VPAIR_FP_UNARY): New code iterator.
+	(VPAIR_FP_BINARY): Likewise.
+	(vpair_op): New code attribute.
+	(<vpair_op><mode>2, VPAIR_FP and VPAIR_FP_UNARY iterators): New insns.
+	(sqrtv8sf2): Likewise.
 	(sqrtv4df2): Likewise.
+	(nabs<mode>2): Likewise.
+	(<vpair_op><mode>3, VPAIR_FP and VP_FP_BINARY iterators): Likewise.
 	(divv8sf3): Likewise.
 	(divv4df3): Likewise.
+	(fma<mode>4): Likewise.
+	(fms<mode>4): Likewise.
+	(nfma<mode>4): Likewise.
+	(nfms<mode>4): Likewise.
+	(fma_fpcontract_<mode>4): Likewise.
+	(fms_fpcontract_<mode>4): Likewise.
+	(nfma_fpcontract_<mode>): Likewise.
+	(nfms_fpcontract_<mode>): Likewise.
 
-gcc/testsuite/
+==================== Branch work146-vsize, patch #311 ====================
+
+Add basic support for vector_size(32).
+
+We have had several users ask us to implement ways of using the Power10 load
+vector pair and store vector pair instructions to give their code a speed up
+due to reduced memory bandwidth.
+
+I had originally posted the following patches:
+
+    *	https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636077.html
+    *	https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636078.html
+    *	https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636083.html
+    *	https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636080.html
+    *	https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636081.html
+
+to add a set of built-in functions that use the PowePC __vector_pair type and
+that provide a set of functions to do basic operations on vector pair.
+
+After I posted these patches, it was decided that it would be better to have a
+new type that is used rather than a bunch of new built-in functions.  Within
+the GCC context, the best way to add this support is to extend the vector modes
+so that V4DFmode, V8SFmode, V4DImode, V8SImode, V16HImode, and V32QImode are
+used.
+
+While in theory you could add a whole new type that isn't a larger size vector,
+my experience with IEEE 128-bit floating point is that GCC really doesn't like
+2 modes that are the same size but have different implementations (such as we
+see with IEEE 128-bit floating point and IBM double-double 128-bit floating
+point).  So I did not consider adding a new mode for using with vector pairs.
+
+My original intention was to just implement V4DFmode and V8SFmode, since the
+primary users asking for vector pair support are people implementing the high
+end math libraries like Eigen and Blas.
+
+However in implementing this code, I discovered that we will need integer
+vector pair support as well as floating point vector pair.  The integer modes
+and types are needed to properly implement byte shuffling and vector
+comparisons which need integer vector pairs.
+
+With the current patches, vector pair support is not enabled by default.  The
+main reason is I have not implemented the support for byte shuffling which
+various tests depend on.
+
+I would also like to implement overloads for the vector built-in functions like
+vec_add, vec_sum, etc. that if you give it a vector pair, it would handle it
+just like if you give a vector type.
+
+In addition, once the various bugs are addressed, I would then implement the
+support so that automatic vectorization would consider using vector pairs
+instead of vectors.
+
+This is the first patch in the series.  It implements the basic modes, and
+it allows for initialization of the modes.  I've added some optimizations for
+extracting and setting fields within the vector pair.
 
-	* gcc.target/powerpc/vector-size-32-1.c: Add divide.  Adjust counts.
-	* gcc.target/powerpc/vector-size-32-1.c: Likewise.
+The second patch will implement the floating point vector pair support.
 
-==================== Branch work146-vsize, patch #301 ====================
+The third patch will implement the integer vector pair support.
 
-Add vector_size(32) support.
+The fourth patch will provide new tests to the test suite.
 
-2023-11-18  Michael Meissner  <meissner@linux.ibm.com>
+When I test a saxpy type loop (a[i] += (b[i] * c[i])), I generally see a 10%
+improvement over either auto-factorization, or just using the vector types.
+
+I have tested these patches on a little endian power10 system.  With
+-vector-size-32 disabled by default, there are no regressions in the
+test suite.
+
+I have also built and run the tests on both little endian power9 and big
+endian power9 systems, and there are no regressions.  Can I check these
+patches into the master branch?
+
+2023-11-19  Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
-	* config/rs6000/predicates.md (const_0_to_31_operand): New predicate.
-	(mma_assemble_input_operand): Allow any 16-byte vector type, not just
-	V16QImode.
-	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
-	__VECTOR_SIZE_32__ if -mvector-size-32 used.
-	* config/rs6000/rs6000-protos.h (rs6000_expand_vector_pair_init): New
+	* config/rs6000/constraint.md (eV): New constraint.
+	* config/rs6000/predicates.md (cons_0_to_31_operand): New predicate.
+	(easy_vector_constant): Add support for vector pair constants.
+	(easy_vector_pair_constant): New predicate.
+	(mam_assemble_input_operand): Allow other 16-byte vector modes than
+	Immodest.
+	* config/rs6000/rs6000-c.cc (rs6000_cpu_cpp_builtins): Define
+	__VECTOR_SIZE_32__ if -mvector-size-32.
+	* config/rs6000/rs6000-protos.h (vector_pair_to_vector_mode): New
 	declaration.
-	(rs6000_expand_vector_pair_set): Likewise.
-	(split_unary_vector_pair): Likewise.
-	(split_binary_vector_pair): Likewisee.
-	(split_fma_vector_pair): Likewise.
-	* config/rs6000/rs6000.cc (rs6000_hard_regno_mode_ok_uncached): Add
-	support for -mvector-size-32.
-	(rs6000_hard_regno_mode_ok): Likewise.
-	(rs6000_setup_reg_addr_masks): Likewise.
-	(rs6000_init_hard_regno_mode_ok): Likewise.
-	(rs6000_option_override_internal): Likewise.
+	(split_vector_pair_constant): Likewise.
+	(rs6000_expand_vector_pair_init): Likewise.
+	* config/rs6000/rs6000.cc (rs6000_hard_regno_mode_ok_uncached): Use
+	VECTOR_PAIR_MODE instead of comparing mode to OOmode.
+	(rs6000_modes_tieable_p): Allow various vector pair modes to pair with
+	each other.  Allow 16-byte vectors to pair with vector pair modes.
+	(rs6000_setup_reg_addr_masks): Use VECTOR_PAIR_MODE instead of comparing
+	mode to OOmode.
+	(rs6000_init_hard_regno_mode_ok): Setup vector pair mode basic type
+	information and reload handlers.
+	(rs6000_option_override_internal): Warn if -mvector-pair-32 is used
+	without -mcpu=power10 or -mmma.
 	(vector_pair_to_vector_mode): New function.
-	(+rs6000_split_vpair_constant): Likewise.
+	(split_vector_pair_constant): Likewise.
 	(rs6000_expand_vector_pair_init): Likewise.
-	(rs6000_expand_vector_pair_set): Likewise.
-	(reg_offset_addressing_ok_p): Add support for -mvector-size-32.
+	(reg_offset_addressing_ok_p): Add support for vector pair modes.
 	(rs6000_emit_move): Likewise.
 	(rs6000_preferred_reload_class): Likewise.
 	(altivec_expand_vec_perm_le): Likewise.
-	(rs6000_opt_vars): Add -mvector-size-32.
-	(split_unary_vector_pair): New function.
-	(split_binary_vector_pair): Likewise.
-	(split_fma_vector_pai): Likewise.
-	(rs6000_split_multireg_move): Add -mvector-size-32 support.
+	(rs6000_opt_vars): Add -mvector-size-32 switch.
+	(rs6000_split_multireg_move): Add support for vector pair modes.
 	* config/rs6000/rs6000.h (VECTOR_PAIR_MODE): New macro.
 	* config/rs6000/rs6000.md (wd mode attribute): Add vector pair modes.
 	(RELOAD mode iterator): Likewise.
 	(toplevel): Include vector-pair.md.
 	* config/rs6000/rs6000.opt (-mvector-size-32): New option.
 	* config/rs6000/vector-pair.md: New file.
-	* config/rs6000/vsx.md (vsx_extract_v4df): New insn.
-	(vsx_extract_v8sf): Likewise.
-	* doc/invoke.texi (RS/6000 and PowerPC Options): Document
-	-mvector-size-32.
+	* doc/md.texi (PowerPC constraints): Document the eV constraint.
 
-gcc/testsuite/
+==================== Branch work146-vsize, patch #305 was reverted ====================
 
-	* gcc.target/powerpc/vector-size-32-1.c: New test.
-	* gcc.target/powerpc/vector-size-32-2.c: Likewise.
-	* gcc.target/powerpc/vector-size-32-3.c: Likewise.
-	* gcc.target/powerpc/vector-size-32-4.c: Likewise.
-	* gcc.target/powerpc/vector-size-32-5.c: Likewise.
-	* gcc.target/powerpc/vector-size-32-6.c: Likewise.
+==================== Branch work146-vsize, patch #304 was reverted ====================
+
+==================== Branch work146-vsize, patch #303 was reverted ====================
+
+==================== Branch work146-vsize, patch #302 was reverted ====================
+
+==================== Branch work146-vsize, patch #301 was reverted ====================
 
 ==================== Branch work146-vsize, patch #300 was reverted ====================

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [gcc(refs/users/meissner/heads/work146-vsize)] Update ChangeLog.*
@ 2023-11-21 20:34 Michael Meissner
  0 siblings, 0 replies; 9+ messages in thread
From: Michael Meissner @ 2023-11-21 20:34 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:d6f0fbfea7d2459dbcf8953d93d7650edfd8b0fb

commit d6f0fbfea7d2459dbcf8953d93d7650edfd8b0fb
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Tue Nov 21 15:34:36 2023 -0500

    Update ChangeLog.*

Diff:
---
 gcc/ChangeLog.vsize | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gcc/ChangeLog.vsize b/gcc/ChangeLog.vsize
index b08a6735a03..4205fdf47d2 100644
--- a/gcc/ChangeLog.vsize
+++ b/gcc/ChangeLog.vsize
@@ -1,3 +1,17 @@
+==================== Branch work146-vsize, patch #316 ====================
+
+Add -mvector-size-32-vectorize.
+
+2023-11-21  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000.cc (rs6000_option_override_internal): Add
+	-mvector-size-32-vectorize.
+	(rs6000_preferred_simd_mode): Likewise.
+	(rs6000_opt_vars): Likewise.
+	* config/rs6000/rs6000.opt (-mvector-size-32-vectorize): Likewise.
+
 ==================== Branch work146-vsize, patch #315 ====================
 
 Document -mvector-size-32.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [gcc(refs/users/meissner/heads/work146-vsize)] Update ChangeLog.*
@ 2023-11-21 20:08 Michael Meissner
  0 siblings, 0 replies; 9+ messages in thread
From: Michael Meissner @ 2023-11-21 20:08 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:b4f4c8c12c4b97fb8326a18230390f2b4a7f26d1

commit b4f4c8c12c4b97fb8326a18230390f2b4a7f26d1
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Tue Nov 21 15:08:34 2023 -0500

    Update ChangeLog.*

Diff:
---
 gcc/ChangeLog.vsize | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/gcc/ChangeLog.vsize b/gcc/ChangeLog.vsize
index b656f77a9be..b08a6735a03 100644
--- a/gcc/ChangeLog.vsize
+++ b/gcc/ChangeLog.vsize
@@ -1,3 +1,13 @@
+==================== Branch work146-vsize, patch #315 ====================
+
+Document -mvector-size-32.
+
+2023-11-19  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000.opt (-mvector-size-32): Document.
+
 ==================== Branch work146-vsize, patch #314 ====================
 
 Add vector_size(32) tests.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [gcc(refs/users/meissner/heads/work146-vsize)] Update ChangeLog.*
@ 2023-11-19 17:23 Michael Meissner
  0 siblings, 0 replies; 9+ messages in thread
From: Michael Meissner @ 2023-11-19 17:23 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:7fe1a9c29629546bca7858f183195c68a5e60abe

commit 7fe1a9c29629546bca7858f183195c68a5e60abe
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Sun Nov 19 12:23:34 2023 -0500

    Update ChangeLog.*

Diff:
---
 gcc/ChangeLog.vsize | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gcc/ChangeLog.vsize b/gcc/ChangeLog.vsize
index 0419152b4e0..be5ca471e06 100644
--- a/gcc/ChangeLog.vsize
+++ b/gcc/ChangeLog.vsize
@@ -1,3 +1,32 @@
+==================== Branch work146-vsize, patch #305 ====================
+
+Add more vector pair constants.
+
+2023-11-19  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/constraints.md (eV): New constraint.
+	* config/rs6000/predicates.md (easy_vector_constant): Add support for
+	vector pair constants.
+	(easy_vector_pair_constant): New predicate.
+	* config/rs6000/rs6000-protos.h (vector_pair_to_vector_mode): New
+	declaration.
+	(split_vector_ppair_constant): Likewise.
+	* config/rs6000/rs6000.cc (vector_pair_to_vector_mode): Make global.
+	(split_vector_ppair_constant): Make global.  Rename from
+	rs6000_split_vector_pair_constant.
+	(rs6000_expand_vector_pair_init): Rename split_vector_pair_constant
+	call.
+	(rs6000_split_multireg_move): Likewise.
+	* config/rs6000/vector-pair.md (mov<mode>): Add support for other vector
+	pair constants that can be loaded in 2 instructions.
+	* doc/md.texi (eV constraint): Document
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/vector-size-32-7.c: New test.
+
 ==================== Branch work146-vsize, patch #304 ====================
 
 Work on vector pair extracts.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [gcc(refs/users/meissner/heads/work146-vsize)] Update ChangeLog.*
@ 2023-11-19  5:45 Michael Meissner
  0 siblings, 0 replies; 9+ messages in thread
From: Michael Meissner @ 2023-11-19  5:45 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:d20f9928ec40cc46a7648de85b2461b1be4a1372

commit d20f9928ec40cc46a7648de85b2461b1be4a1372
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Sun Nov 19 00:45:24 2023 -0500

    Update ChangeLog.*

Diff:
---
 gcc/ChangeLog.vsize | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gcc/ChangeLog.vsize b/gcc/ChangeLog.vsize
index 82ba973808c..0419152b4e0 100644
--- a/gcc/ChangeLog.vsize
+++ b/gcc/ChangeLog.vsize
@@ -1,3 +1,17 @@
+==================== Branch work146-vsize, patch #304 ====================
+
+Work on vector pair extracts.
+
+2023-11-19  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/vector-pair.md (vec_extract<mode><vpair_element_l>):
+	Rewrite.
+	(vec_extractv8sf): New insn.
+	* config/rs6000/vsx.md (vsx_extract_v4df): Delete.
+	(vsx_extract_v8sf): Delete.
+
 ==================== Branch work146-vsize, patch #303 ====================
 
 Add set/extract support on vector pairs with double word elements.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [gcc(refs/users/meissner/heads/work146-vsize)] Update ChangeLog.*
@ 2023-11-18 22:57 Michael Meissner
  0 siblings, 0 replies; 9+ messages in thread
From: Michael Meissner @ 2023-11-18 22:57 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:65055f4ddac0f518f05eb1a49ad214046c1d122b

commit 65055f4ddac0f518f05eb1a49ad214046c1d122b
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Sat Nov 18 17:57:24 2023 -0500

    Update ChangeLog.*

Diff:
---
 gcc/ChangeLog.vsize | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gcc/ChangeLog.vsize b/gcc/ChangeLog.vsize
index 5bbf75377df..82ba973808c 100644
--- a/gcc/ChangeLog.vsize
+++ b/gcc/ChangeLog.vsize
@@ -1,3 +1,17 @@
+==================== Branch work146-vsize, patch #303 ====================
+
+Add set/extract support on vector pairs with double word elements.
+
+2023-11-18  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000-protos.h (rs6000_expand_vector_pair_set): Delete.
+	* config/rs6000/rs6000.cc (rs6000_expand_vector_pair_set): Likewise.
+	* config/rs6000/vector-pair.md (vec_set<mode>): Replace with a version
+	that only handles setting double word elements.
+	(vec_extract<mode><vpair_element_l>): Likewise.
+
 ==================== Branch work146-vsize, patch #302 ====================
 
 Add vector pair add/sub/umin/umax/sqrt/div.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [gcc(refs/users/meissner/heads/work146-vsize)] Update ChangeLog.*
@ 2023-11-18 17:54 Michael Meissner
  0 siblings, 0 replies; 9+ messages in thread
From: Michael Meissner @ 2023-11-18 17:54 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:7d25a391d26e5eac0d18135841630455ba10c21b

commit 7d25a391d26e5eac0d18135841630455ba10c21b
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Sat Nov 18 12:54:55 2023 -0500

    Update ChangeLog.*

Diff:
---
 gcc/ChangeLog.vsize | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog.vsize b/gcc/ChangeLog.vsize
index e9e01e9a223..5bbf75377df 100644
--- a/gcc/ChangeLog.vsize
+++ b/gcc/ChangeLog.vsize
@@ -1,4 +1,25 @@
-==================== Branch work146-vsize, patch #300 ====================
+==================== Branch work146-vsize, patch #302 ====================
+
+Add vector pair add/sub/umin/umax/sqrt/div.
+
+2023-11-18  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/vector-pair.md (VPAIR_INT_BINARY): Add umin/umax.
+	(vpair_op):  Add umin/umax/sqrt.
+	(most insns): Set the type attribute.
+	(sqrtv8sf2): New insn.
+	(sqrtv4df2): Likewise.
+	(divv8sf3): Likewise.
+	(divv4df3): Likewise.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/vector-size-32-1.c: Add divide.  Adjust counts.
+	* gcc.target/powerpc/vector-size-32-1.c: Likewise.
+
+==================== Branch work146-vsize, patch #301 ====================
 
 Add vector_size(32) support.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [gcc(refs/users/meissner/heads/work146-vsize)] Update ChangeLog.*
@ 2023-11-18  8:03 Michael Meissner
  0 siblings, 0 replies; 9+ messages in thread
From: Michael Meissner @ 2023-11-18  8:03 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:2866e98910dbeedff2bd08fcfca74a957d132b62

commit 2866e98910dbeedff2bd08fcfca74a957d132b62
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Sat Nov 18 03:03:24 2023 -0500

    Update ChangeLog.*

Diff:
---
 gcc/ChangeLog.vsize | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/gcc/ChangeLog.vsize b/gcc/ChangeLog.vsize
index f4ee1e9d90a..e9e01e9a223 100644
--- a/gcc/ChangeLog.vsize
+++ b/gcc/ChangeLog.vsize
@@ -2,7 +2,7 @@
 
 Add vector_size(32) support.
 
-2023-11-17  Michael Meissner  <meissner@linux.ibm.com>
+2023-11-18  Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
@@ -23,15 +23,15 @@ gcc/
 	(rs6000_setup_reg_addr_masks): Likewise.
 	(rs6000_init_hard_regno_mode_ok): Likewise.
 	(rs6000_option_override_internal): Likewise.
-	(rs6000_builtin_vectorization_cost): Likewise.
 	(vector_pair_to_vector_mode): New function.
-	(+rs6000_split_vpair_constan): Likewise.
-	(rs6000_expand_vector_pair_ini): Likewise.
+	(+rs6000_split_vpair_constant): Likewise.
+	(rs6000_expand_vector_pair_init): Likewise.
 	(rs6000_expand_vector_pair_set): Likewise.
-	(reg_offset_addressing_ok_p): Likewise.
+	(reg_offset_addressing_ok_p): Add support for -mvector-size-32.
 	(rs6000_emit_move): Likewise.
+	(rs6000_preferred_reload_class): Likewise.
 	(altivec_expand_vec_perm_le): Likewise.
-	(rs6000_opt_var): Add -mvector-size-32.
+	(rs6000_opt_vars): Add -mvector-size-32.
 	(split_unary_vector_pair): New function.
 	(split_binary_vector_pair): Likewise.
 	(split_fma_vector_pai): Likewise.
@@ -56,6 +56,8 @@ gcc/testsuite/
 	* gcc.target/powerpc/vector-size-32-5.c: Likewise.
 	* gcc.target/powerpc/vector-size-32-6.c: Likewise.
 
+==================== Branch work146-vsize, patch #300 was reverted ====================
+
 ==================== Branch work146-vsize, patch #1 (main branch) ====================
 
 Power10: Add options to disable load and store vector pair.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [gcc(refs/users/meissner/heads/work146-vsize)] Update ChangeLog.*
@ 2023-11-17 23:34 Michael Meissner
  0 siblings, 0 replies; 9+ messages in thread
From: Michael Meissner @ 2023-11-17 23:34 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:6550ec172a6f38c0694d9b0a66829425d6e41563

commit 6550ec172a6f38c0694d9b0a66829425d6e41563
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Fri Nov 17 18:34:41 2023 -0500

    Update ChangeLog.*

Diff:
---
 gcc/ChangeLog.vsize | 153 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 153 insertions(+)

diff --git a/gcc/ChangeLog.vsize b/gcc/ChangeLog.vsize
index 9c7f867ef85..f4ee1e9d90a 100644
--- a/gcc/ChangeLog.vsize
+++ b/gcc/ChangeLog.vsize
@@ -1,5 +1,158 @@
+==================== Branch work146-vsize, patch #300 ====================
+
+Add vector_size(32) support.
+
+2023-11-17  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/predicates.md (const_0_to_31_operand): New predicate.
+	(mma_assemble_input_operand): Allow any 16-byte vector type, not just
+	V16QImode.
+	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
+	__VECTOR_SIZE_32__ if -mvector-size-32 used.
+	* config/rs6000/rs6000-protos.h (rs6000_expand_vector_pair_init): New
+	declaration.
+	(rs6000_expand_vector_pair_set): Likewise.
+	(split_unary_vector_pair): Likewise.
+	(split_binary_vector_pair): Likewisee.
+	(split_fma_vector_pair): Likewise.
+	* config/rs6000/rs6000.cc (rs6000_hard_regno_mode_ok_uncached): Add
+	support for -mvector-size-32.
+	(rs6000_hard_regno_mode_ok): Likewise.
+	(rs6000_setup_reg_addr_masks): Likewise.
+	(rs6000_init_hard_regno_mode_ok): Likewise.
+	(rs6000_option_override_internal): Likewise.
+	(rs6000_builtin_vectorization_cost): Likewise.
+	(vector_pair_to_vector_mode): New function.
+	(+rs6000_split_vpair_constan): Likewise.
+	(rs6000_expand_vector_pair_ini): Likewise.
+	(rs6000_expand_vector_pair_set): Likewise.
+	(reg_offset_addressing_ok_p): Likewise.
+	(rs6000_emit_move): Likewise.
+	(altivec_expand_vec_perm_le): Likewise.
+	(rs6000_opt_var): Add -mvector-size-32.
+	(split_unary_vector_pair): New function.
+	(split_binary_vector_pair): Likewise.
+	(split_fma_vector_pai): Likewise.
+	(rs6000_split_multireg_move): Add -mvector-size-32 support.
+	* config/rs6000/rs6000.h (VECTOR_PAIR_MODE): New macro.
+	* config/rs6000/rs6000.md (wd mode attribute): Add vector pair modes.
+	(RELOAD mode iterator): Likewise.
+	(toplevel): Include vector-pair.md.
+	* config/rs6000/rs6000.opt (-mvector-size-32): New option.
+	* config/rs6000/vector-pair.md: New file.
+	* config/rs6000/vsx.md (vsx_extract_v4df): New insn.
+	(vsx_extract_v8sf): Likewise.
+	* doc/invoke.texi (RS/6000 and PowerPC Options): Document
+	-mvector-size-32.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/vector-size-32-1.c: New test.
+	* gcc.target/powerpc/vector-size-32-2.c: Likewise.
+	* gcc.target/powerpc/vector-size-32-3.c: Likewise.
+	* gcc.target/powerpc/vector-size-32-4.c: Likewise.
+	* gcc.target/powerpc/vector-size-32-5.c: Likewise.
+	* gcc.target/powerpc/vector-size-32-6.c: Likewise.
+
+==================== Branch work146-vsize, patch #1 (main branch) ====================
+
+Power10: Add options to disable load and store vector pair.
+
+This is version 2 of the patch to add -mno-load-vector-pair and
+-mno-store-vector-pair undocumented tuning switches.
+
+The differences between the first version of the patch and this version is that
+I added explicit RTL abi attributes for when the compiler can generate the load
+vector pair and store vector pair instructions.  By having this attribute, the
+movoo insn has separate alternatives for when we generate the instruction and
+when we want to split the instruction into 2 separate vector loads or stores.
+
+In the first version of the patch, I had previously provided built-in functions
+that would always generate load vector pair and store vector pair instructions
+even if these instructions are normally disabled.  I found these built-ins
+weren't specified like the other vector pair built-ins, and I didn't include
+documentation for the built-in functions.  If we want such built-in functions,
+we can add them as a separate patch later.
+
+In addition, since both versions of the patch adds #pragma target and attribute
+support to change the results for individual functions, we can select on a
+function by function basis what the defaults for load/store vector pair is.
+
+The original text for the patch is:
+
+In working on some future patches that involve utilizing vector pair
+instructions, I wanted to be able to tune my program to enable or disable using
+the vector pair load or store operations while still keeping the other
+operations on the vector pair.
+
+This patch adds two undocumented tuning options.  The -mno-load-vector-pair
+option would tell GCC to generate two load vector instructions instead of a
+single load vector pair.  The -mno-store-vector-pair option would tell GCC to
+generate two store vector instructions instead of a single store vector pair.
+
+If either -mno-load-vector-pair is used, GCC will not generate the indexed
+stxvpx instruction.  Similarly if -mno-store-vector-pair is used, GCC will not
+generate the indexed lxvpx instruction.  The reason for this is to enable
+splitting the {,p}lxvp or {,p}stxvp instructions after reload without needing a
+scratch GPR register.
+
+The default for -mcpu=power10 is that both load vector pair and store vector
+pair are enabled.
+
+I added code so that the user code can modify these settings using either a
+'#pragma GCC target' directive or used __attribute__((__target__(...))) in the
+function declaration.
+
+I added tests for the switches, #pragma, and attribute options.
+
+I have built this on both little endian power10 systems and big endian power9
+systems doing the normal bootstrap and test.  There were no regressions in any
+of the tests, and the new tests passed.  Can I check this patch into the master
+branch?
+
+2023-11-17  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/mma.md (movoo): Add support for -mno-load-vector-pair and
+	-mno-store-vector-pair.
+	* config/rs6000/rs6000-cpus.def (OTHER_POWER10_MASKS): Add support for
+	-mload-vector-pair and -mstore-vector-pair.
+	(POWERPC_MASKS): Likewise.
+	* config/rs6000/rs6000.cc (rs6000_setup_reg_addr_masks): Only allow
+	indexed mode for OOmode if we are generating both load vector pair and
+	store vector pair instructions.
+	(rs6000_option_override_internal): Add support for -mno-load-vector-pair
+	and -mno-store-vector-pair.
+	(rs6000_opt_masks): Likewise.
+	* config/rs6000/rs6000.md (isa attribute): Add lxvp and stxvp
+	attributes.
+	(enabled attribute): Likewise.
+	* config/rs6000/rs6000.opt (-mload-vector-pair): New option.
+	(-mstore-vector-pair): Likewise.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/vector-pair-attribute.c: New test.
+	* gcc.target/powerpc/vector-pair-pragma.c: New test.
+	* gcc.target/powerpc/vector-pair-switch1.c: New test.
+	* gcc.target/powerpc/vector-pair-switch2.c: New test.
+	* gcc.target/powerpc/vector-pair-switch3.c: New test.
+	* gcc.target/powerpc/vector-pair-switch4.c: New test.
+
 ==================== Branch work146-vsize, baseline ====================
 
+Add ChangeLog.vsize and update REVISION.
+
+2023-11-17  Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* ChangeLog.vsize: New file for branch.
+	* REVISION: Update.
+
 2023-11-17   Michael Meissner  <meissner@linux.ibm.com>
 
 	Clone branch

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2023-11-21 20:34 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-20  1:04 [gcc(refs/users/meissner/heads/work146-vsize)] Update ChangeLog.* Michael Meissner
  -- strict thread matches above, loose matches on Subject: below --
2023-11-21 20:34 Michael Meissner
2023-11-21 20:08 Michael Meissner
2023-11-19 17:23 Michael Meissner
2023-11-19  5:45 Michael Meissner
2023-11-18 22:57 Michael Meissner
2023-11-18 17:54 Michael Meissner
2023-11-18  8:03 Michael Meissner
2023-11-17 23:34 Michael Meissner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).