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

https://gcc.gnu.org/g:524d0f5f4b5127baad8269a2e8ddd1a44f5a2745

commit 524d0f5f4b5127baad8269a2e8ddd1a44f5a2745
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Wed Apr 26 19:55:27 2023 -0400

    Update ChangeLog.meissner

Diff:
---
 gcc/ChangeLog.meissner | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 70035b036c6..953c2e99983 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -7,10 +7,10 @@ floating point by loading the value directly to the vector register, and then
 doing the conversion instead of loading the value to a GPR and then doing a
 direct move:
 
-	* vector int
-	* vector unsigned int
-	* vector unsigned short
-	* vector unsigned char
+	vector int
+	vector unsigned int
+	vector unsigned short
+	vector unsigned char
 
 2023-04-26   Michael Meissner  <meissner@linux.ibm.com>

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

* [gcc(refs/users/meissner/heads/work119)] Update ChangeLog.meissner
@ 2023-05-01 17:24 Michael Meissner
  0 siblings, 0 replies; 16+ messages in thread
From: Michael Meissner @ 2023-05-01 17:24 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:6702108df42f9135e32cdffdaae8055122b0bafc

commit 6702108df42f9135e32cdffdaae8055122b0bafc
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Mon May 1 13:24:12 2023 -0400

    Update ChangeLog.meissner

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

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 85bfbce8419..7a3f8e4b578 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,3 +1,33 @@
+==================== Branch work119, patch #130 ====================
+
+Split vec_extract from memory before reload for V16QI/V8HI/V4SI with constant elements.
+
+This patch goes through the support function rs6000_adjust_vec_address and the
+functions it calls to allow them to be called before register allocation.  The
+places that take a scratch register will allocate a new pseudo register if they
+are passed a SCRATCH register.
+
+It then changes the vec_extract support for V16QI/V8HI/V4SI with constant
+element numbers to be split before register allocation.
+
+2023-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000.cc (get_vector_offset): Allow function to be
+	called before register allocation.
+	(adjust_vec_address_pcrel): Likewise.
+	(rs6000_adjust_vec_address): Likewise.
+	* config/rs6000/vsx.md (vsx_extract_<mode>_load): Split before register
+	allocation.
+	(vsx_extract_v4si_load_to_<su>di): Likewise.
+	(vsx_extract_<VSX_EXTRACT_I2:mode>_load_to_u<GPR:mode>): Likewise.
+	(*vsx_extract_v8hi_load_to_s<mode>): Likewise.
+	(vsx_extract_<mode>_var_load): Likewise.
+	(vsx_extract_v4si_var_load_to_<su>di): Likewise.
+	(vsx_extract_<VSX_EXTRACT_I2:mode>_var_load_to_u<GPR:mode>): Likewise.
+	(vsx_extract_v8hi_var_load_to_s<mode>): Likewise.
+
 ==================== Branch work119, patch #127 ====================
 
 Optimize variable element vec_extract to be converted to floating point

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

* [gcc(refs/users/meissner/heads/work119)] Update ChangeLog.meissner
@ 2023-04-29  4:10 Michael Meissner
  0 siblings, 0 replies; 16+ messages in thread
From: Michael Meissner @ 2023-04-29  4:10 UTC (permalink / raw)
  To: gcc-cvs

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

commit bebe586a5c497d085252e347bdaf659d484533ba
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Sat Apr 29 00:10:54 2023 -0400

    Update ChangeLog.meissner

Diff:
---
 gcc/ChangeLog.meissner | 115 +++++++++++++++++++------------------------------
 1 file changed, 44 insertions(+), 71 deletions(-)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index fbcd62cbbd3..85bfbce8419 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,11 +1,11 @@
-==================== Branch work119, patch #107 ====================
+==================== Branch work119, patch #127 ====================
 
 Optimize variable element vec_extract to be converted to floating point
 
-This patch allows vec_extract with a variable element of the following types to
-be converted to floating point by loading the value directly to the vector
-register, and then doing the conversion instead of loading the value to a GPR
-and then doing a direct move:
+This patch optimizes vec_extract with a variable element number of the following
+types to be converted to floating point by loading the value directly to the
+vector register, and then doing the conversion instead of loading the value to a
+GPR and then doing a direct move:
 
 vector int
 vector unsigned int
@@ -17,26 +17,23 @@ vector unsigned char
 gcc/
 
 	* config/rs6000/vsx.md (vsx_extract_v4si_var_load_to_<uns><mode>): New
-	insn.
+	* insn.
 	* vsx_extract_<VSX_EXTRACT_I2:mode>_var_load_to_uns<SFDF:mode>: New
 	insn.
 
 gcc/testsuite/
 
-	* gcc.target/powerpc/vec-extract-mem-char-3.c: New file.
 	* gcc.target/powerpc/vec-extract-mem-int-6.c: New file.
 	* gcc.target/powerpc/vec-extract-mem-int_7.c: New file.
-	* gcc.target/powerpc/vec-extract-mem-short-5.c: New file.
-
 
-==================== Branch work119, patch #106 ====================
+==================== Branch work119, patch #126 ====================
 
-Optimize constant element vec_extract to be converted to floating point
+Allow constant element vec_extract to be converted to floating point
 
-This patch allows vec_extract with a constant element of the following types to
-be converted to floating point by loading the value directly to the vector
-register, and then doing the conversion instead of loading the value to a GPR
-and then doing a direct move:
+This patch allows vec_extract of the following types to be converted to
+floating point by loading the value directly to the vector register, and then
+doing the conversion instead of loading the value to a GPR and then doing a
+direct move:
 
 vector int
 vector unsigned int
@@ -49,7 +46,7 @@ gcc/
 
 	* config/rs6000/rs6000.md (fp_int_extend): New code attribute.
 	* config/rs6000/vsx.md (vsx_extract_v4si_load_to_<uns><mode>): New
-	insn.
+	* insn.
 	* vsx_extract_<VSX_EXTRACT_I2:mode>_load_to_uns<SFDF:mode>: New insn.
 
 gcc/testsuite/
@@ -59,7 +56,7 @@ gcc/testsuite/
 	* gcc.target/powerpc/vec-extract-mem-int_5.c: New file.
 	* gcc.target/powerpc/vec-extract-mem-short-4.c: New file.
 
-==================== Branch work119, patch #105 ====================
+==================== Branch work119, patch #125 ====================
 
 Allow variable element vec_extract to be sign or zero extended
 
@@ -80,28 +77,23 @@ gcc/testsuite/
 	* gcc.target/powerpc/vec-extract-mem-int-3.c: New file.
 	* gcc.target/powerpc/vec-extract-mem-short-3.c: New file.
 
-
-==================== Branch work119, patch #104 ====================
+==================== Branch work119, patch #124 ====================
 
 Allow variable element vec_extract to be loaded into vector registers.
 
 This patch allows vec_extract of V4SI, V8HI, and V16QI vector types with a
-variable element number to be loaded into vector registers directly.  It also
-will be split before register allocation.  In doing so, I restricted the
-optimization to only occur if the memory address did not use an Altivec style
-address with AND -16.
+variable element number to be loaded into vector registers directly.
 
-2023-04-27   Michael Meissner  <meissner@linux.ibm.com>
+2023-04-28   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
 	* config/rs6000/vsx.md (vsx_extract_<mode>_var_load): Allow vector
-	registers to be loaded.  Split before register allocation.  Restrict
-	vector addresses to not use Altivec addressing.
+	registers to be loaded.
 
-==================== Branch work119, patch #103 ====================
+==================== Branch work119, patch #123 ====================
 
-Allow consant element vec_extract to be zero or sign extended
+Optimize sign and zero extension of vec_extract from memory with constant element
 
 This patch allows vec_extract of V4SI, V8HI, and V16QI vector types with a
 constant element number to be zero extended.  It also allows vec_extract of V4SI
@@ -111,7 +103,7 @@ and V8HI vector types with constant element number to be sign extended.
 
 gcc/
 
-	* config/rs6000/vsx.md (vsx_extract_v4si_load_to_<su>di): New insn.
+	* config/rs6000/vsx.md (vsx_extract_v4si_load_to_<su>d): New insn.
 	(vsx_extract_<VSX_EXTRACT_I2:mode>_load_to_u<GPR:mode>): New insn.
 	(vsx_extract_v8hi_load_to_s<mode>): New insn.
 
@@ -123,26 +115,27 @@ gcc/testsuite/
 	* gcc.target/powerpc/vec-extract-mem-short-1.c: New file.
 	* gcc.target/powerpc/vec-extract-mem-short-2.c: New file.
 
-==================== Branch work119, patch #102 ====================
+==================== Branch work119, patch #122 ====================
 
 Allow consant element vec_extract to be loaded into vector registers.
 
 This patch allows vec_extract of V4SI, V8HI, and V16QI vector types with a
-constant element number to be loaded into vector registers directly.  It also
-will be split before register allocation.  In doing so, I restricted the
-optimization to only occur if the memory address did not use an Altivec style
-address with AND -16.
+constant element number to be loaded into vector registers directly.
+
+This patch also adds support for optimzing 0 element number to not need a base
+register tempoary.  Likewise, if we have an offsettable address, we don't need
+to allocate a scratch register.
 
 2023-04-28   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
 	* config/rs6000/vsx.md (VSX_EX_ISA): New mode attribute.
-	(vsx_extract_<mode>_load): Allow vector registers to be loaded.  Do insn
-	split before register allocation.  Restrict vector addresses to not use
-	Altivec addressing.
+	(vsx_extract_<mode>_load): Allow vector registers to be loaded.  Add
+	optimizations for loading up element 0 and/or with an offsettable
+	address.
 
-==================== Branch work119, patch #101 ====================
+==================== Branch work119, patch #121 ====================
 
 Optimize vec_extract of V4SF with variable element number being converted to DF
 
@@ -150,73 +143,53 @@ This patch adds a combiner insn to include the conversion of float to double
 within the memory address when vec_extract of V4SF with a variable element
 number is done.
 
-In addition, the patch allows the split of vec_extract of V4SF with a variable
-element number to occur before register allocation.  In doing so, I restricted
-the optimization to only occur if the memory address did not use an Altivec
-style address with AND -16.
+It also removes the '?' from the 'r' constraint so that if the SFmode is needed
+in a GPR, it doesn't have to load it to the vector unit and then store it.
 
 2023-04-28   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
-	* config/rs6000/vsx.md (vsx_extract_v4sf_var_load): Allow split before
-	register allocation.  Restrict memory addresses to not using Altivec
-	memory addresses.
+	* config/rs6000/vsx.md (vsx_extract_v4sf_var_load): Remove '?' from 'r'
+	constraint.
 	(vsx_extract_v4sf_var_load_to_df): New insn.
 
 gcc/testsuite/
 
 	* gcc.target/powerpc/vec-extract-mem-float-2.c: New file.
 
-==================== Branch work119, patch #100 ====================
+==================== Branch work119, patch #120 ====================
 
 Optimize vec_extract of V4SF from memory with constant element numbers.
 
 This patch updates vec_extract of V4SF from memory with constant element
 numbers.
 
-This patch changes the splits so that they can be done before register
-allocation.
-
 This patch corrects the ISA for loading SF values to altivec registers to be
 power8 vector, and not power7.
 
 This patch adds a combiner patch to combine loading up a SF element and
 converting it to double.
 
-In order to do the splitting before register allocation, I modified the various
-vec_extract insns to allow the split to occur before register allocation.  This
-patch goes through the support function rs6000_adjust_vec_address and the
-functions it calls to allow them to be called before register allocation.  The
-places that take a scratch register will allocate a new pseudo register if they
-are passed a SCRATCH register.
-
-I also added a new predicate that checks if the operand is a normal memory
-address but not an Altivec vector addresses (i.e. with an AND -16).  These
-addresses are used in power8 as part of the vector swap optimization.  In the
-past, because we use the 'Q' constraint, ira/reload would handle the AND
-etc. so that the address was only a single register.
+It also removes the '?' from the 'r' constraint so that if the SFmode is needed
+in a GPR, it doesn't have to load it to the vector unit and then store it.
 
 2023-04-28   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
-	* config/rs6000/predicates.md (non_altivec_memory_operand): New
-	predicate.
-	* config/rs6000/rs6000.cc (get_vector_offset): Allow function to be
-	called before register allocation.
-	(adjust_vec_address_pcrel): Likewise.
-	(rs6000_adjust_vec_address): Likewise.
-	* gcc/config/rs6000/vsx.md (vsx_extract_v4sf_load): Allow splitting
-	before register allocation.  Fix ISA for loading up SFmode values to
-	traditional Altivec registers.  Require that the memory being optimized
-	does not use Altivec memory addresses.
+	* gcc/config/rs6000/vsx.md (vsx_extract_v4sf_load): Fix ISA for loading
+	up SFmode values with x-form addresses.  Remove ? from 'r' constraint.
 	(vsx_extract_v4sf_load_to_df): New insn.
 
 gc/testsuite/
 
 	* gcc.target/powerpc/vec-extract-mem-float-1.c: New file.
 
+==================== Branch work119, patche #110-113 were reverted ====================
+
+==================== Branch work119, patche #100-107 were reverted ====================
+
 ==================== Branch work119, patches #90-97 were reverted ====================
 
 ==================== Branch work119, patches #80-84 were reverted ====================

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

* [gcc(refs/users/meissner/heads/work119)] Update ChangeLog.meissner
@ 2023-04-28 19:48 Michael Meissner
  0 siblings, 0 replies; 16+ messages in thread
From: Michael Meissner @ 2023-04-28 19:48 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:711ab57d95d943a427ece0ee96e3c518ea8ccd23

commit 711ab57d95d943a427ece0ee96e3c518ea8ccd23
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Fri Apr 28 15:48:51 2023 -0400

    Update ChangeLog.meissner

Diff:
---
 gcc/ChangeLog.meissner | 207 ++++++++++++++++++++++---------------------------
 1 file changed, 94 insertions(+), 113 deletions(-)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index fea7e2ed108..fbcd62cbbd3 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,16 +1,47 @@
-==================== Branch work119, patch #97 ====================
+==================== Branch work119, patch #107 ====================
 
-Allow constant element vec_extract to be converted to floating point
+Optimize variable element vec_extract to be converted to floating point
 
-This patch allows vec_extract of the following types to be converted to
-floating point by loading the value directly to the vector register, and then
-doing the conversion instead of loading the value to a GPR and then doing a
-direct move:
+This patch allows vec_extract with a variable element of the following types to
+be converted to floating point by loading the value directly to the vector
+register, and then doing the conversion instead of loading the value to a GPR
+and then doing a direct move:
 
-	vector int
-	vector unsigned int
-	vector unsigned short
-	vector unsigned char
+vector int
+vector unsigned int
+vector unsigned short
+vector unsigned char
+
+2023-04-28   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/vsx.md (vsx_extract_v4si_var_load_to_<uns><mode>): New
+	insn.
+	* vsx_extract_<VSX_EXTRACT_I2:mode>_var_load_to_uns<SFDF:mode>: New
+	insn.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/vec-extract-mem-char-3.c: New file.
+	* gcc.target/powerpc/vec-extract-mem-int-6.c: New file.
+	* gcc.target/powerpc/vec-extract-mem-int_7.c: New file.
+	* gcc.target/powerpc/vec-extract-mem-short-5.c: New file.
+
+
+==================== Branch work119, patch #106 ====================
+
+Optimize constant element vec_extract to be converted to floating point
+
+This patch allows vec_extract with a constant element of the following types to
+be converted to floating point by loading the value directly to the vector
+register, and then doing the conversion instead of loading the value to a GPR
+and then doing a direct move:
+
+vector int
+vector unsigned int
+vector unsigned short
+vector unsigned char
 
 2023-04-28   Michael Meissner  <meissner@linux.ibm.com>
 
@@ -18,7 +49,7 @@ gcc/
 
 	* config/rs6000/rs6000.md (fp_int_extend): New code attribute.
 	* config/rs6000/vsx.md (vsx_extract_v4si_load_to_<uns><mode>): New
-	* insn.
+	insn.
 	* vsx_extract_<VSX_EXTRACT_I2:mode>_load_to_uns<SFDF:mode>: New insn.
 
 gcc/testsuite/
@@ -28,7 +59,7 @@ gcc/testsuite/
 	* gcc.target/powerpc/vec-extract-mem-int_5.c: New file.
 	* gcc.target/powerpc/vec-extract-mem-short-4.c: New file.
 
-==================== Branch work119, patch #96 ====================
+==================== Branch work119, patch #105 ====================
 
 Allow variable element vec_extract to be sign or zero extended
 
@@ -49,22 +80,26 @@ gcc/testsuite/
 	* gcc.target/powerpc/vec-extract-mem-int-3.c: New file.
 	* gcc.target/powerpc/vec-extract-mem-short-3.c: New file.
 
-==================== Branch work119, patch #95 ====================
+
+==================== Branch work119, patch #104 ====================
 
 Allow variable element vec_extract to be loaded into vector registers.
 
 This patch allows vec_extract of V4SI, V8HI, and V16QI vector types with a
 variable element number to be loaded into vector registers directly.  It also
-will be split before register allocation.
+will be split before register allocation.  In doing so, I restricted the
+optimization to only occur if the memory address did not use an Altivec style
+address with AND -16.
 
 2023-04-27   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
 	* config/rs6000/vsx.md (vsx_extract_<mode>_var_load): Allow vector
-	registers to be loaded.  Split before register allocation.
+	registers to be loaded.  Split before register allocation.  Restrict
+	vector addresses to not use Altivec addressing.
 
-==================== Branch work119, patch #94 ====================
+==================== Branch work119, patch #103 ====================
 
 Allow consant element vec_extract to be zero or sign extended
 
@@ -72,11 +107,11 @@ This patch allows vec_extract of V4SI, V8HI, and V16QI vector types with a
 constant element number to be zero extended.  It also allows vec_extract of V4SI
 and V8HI vector types with constant element number to be sign extended.
 
-2023-04-27   Michael Meissner  <meissner@linux.ibm.com>
+2023-04-28   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
-	* config/rs6000/vsx.md (vsx_extract_v4si_load_to_<su>d): New insn.
+	* config/rs6000/vsx.md (vsx_extract_v4si_load_to_<su>di): New insn.
 	(vsx_extract_<VSX_EXTRACT_I2:mode>_load_to_u<GPR:mode>): New insn.
 	(vsx_extract_v8hi_load_to_s<mode>): New insn.
 
@@ -88,23 +123,26 @@ gcc/testsuite/
 	* gcc.target/powerpc/vec-extract-mem-short-1.c: New file.
 	* gcc.target/powerpc/vec-extract-mem-short-2.c: New file.
 
-==================== Branch work119, patch #93 ====================
+==================== Branch work119, patch #102 ====================
 
 Allow consant element vec_extract to be loaded into vector registers.
 
 This patch allows vec_extract of V4SI, V8HI, and V16QI vector types with a
 constant element number to be loaded into vector registers directly.  It also
-will be split before register allocation.
+will be split before register allocation.  In doing so, I restricted the
+optimization to only occur if the memory address did not use an Altivec style
+address with AND -16.
 
-2023-04-27   Michael Meissner  <meissner@linux.ibm.com>
+2023-04-28   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
 	* config/rs6000/vsx.md (VSX_EX_ISA): New mode attribute.
 	(vsx_extract_<mode>_load): Allow vector registers to be loaded.  Do insn
-	split before register allocation.
+	split before register allocation.  Restrict vector addresses to not use
+	Altivec addressing.
 
-==================== Branch work119, patch #92 ====================
+==================== Branch work119, patch #101 ====================
 
 Optimize vec_extract of V4SF with variable element number being converted to DF
 
@@ -113,21 +151,24 @@ within the memory address when vec_extract of V4SF with a variable element
 number is done.
 
 In addition, the patch allows the split of vec_extract of V4SF with a variable
-element number to occur before register allocation.
+element number to occur before register allocation.  In doing so, I restricted
+the optimization to only occur if the memory address did not use an Altivec
+style address with AND -16.
 
-2023-04-27   Michael Meissner  <meissner@linux.ibm.com>
+2023-04-28   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
 	* config/rs6000/vsx.md (vsx_extract_v4sf_var_load): Allow split before
-	register allocation.
+	register allocation.  Restrict memory addresses to not using Altivec
+	memory addresses.
 	(vsx_extract_v4sf_var_load_to_df): New insn.
 
 gcc/testsuite/
 
 	* gcc.target/powerpc/vec-extract-mem-float-2.c: New file.
 
-==================== Branch work119, patch #91 ====================
+==================== Branch work119, patch #100 ====================
 
 Optimize vec_extract of V4SF from memory with constant element numbers.
 
@@ -143,108 +184,48 @@ power8 vector, and not power7.
 This patch adds a combiner patch to combine loading up a SF element and
 converting it to double.
 
-2023-04-27   Michael Meissner  <meissner@linux.ibm.com>
-
-gcc/
-
-	* gcc/config/rs6000/vsx.md (vsx_extract_v4sf_load): Allow splitting
-	before register allocation.  Fix ISA for loading up SFmode values to
-	traditional Altivec registers.
-	(vsx_extract_v4sf_load_to_df): New insn.
-
-gc/testsuite/
-
-	* gcc.target/powerpc/vec-extract-mem-float-1.c: New file.
-
-==================== Branch work119, patch #90 ====================
-
-Allow vec_extract from memory support functions before reload
+In order to do the splitting before register allocation, I modified the various
+vec_extract insns to allow the split to occur before register allocation.  This
+patch goes through the support function rs6000_adjust_vec_address and the
+functions it calls to allow them to be called before register allocation.  The
+places that take a scratch register will allocate a new pseudo register if they
+are passed a SCRATCH register.
 
-In the succeeding patches, I will be modifying the various vec_extract insns to
-allow the split to occur before register allocation.  This patch goes through
-the support function rs6000_adjust_vec_address and the functions it calls to
-allow them to be called before register allocation.  The places that take a
-scratch register will allocate a new pseudo register if they are passed a
-SCRATCH register.
+I also added a new predicate that checks if the operand is a normal memory
+address but not an Altivec vector addresses (i.e. with an AND -16).  These
+addresses are used in power8 as part of the vector swap optimization.  In the
+past, because we use the 'Q' constraint, ira/reload would handle the AND
+etc. so that the address was only a single register.
 
-2023-04-27   Michael Meissner  <meissner@linux.ibm.com>
+2023-04-28   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
+	* config/rs6000/predicates.md (non_altivec_memory_operand): New
+	predicate.
 	* config/rs6000/rs6000.cc (get_vector_offset): Allow function to be
 	called before register allocation.
 	(adjust_vec_address_pcrel): Likewise.
 	(rs6000_adjust_vec_address): Likewise.
+	* gcc/config/rs6000/vsx.md (vsx_extract_v4sf_load): Allow splitting
+	before register allocation.  Fix ISA for loading up SFmode values to
+	traditional Altivec registers.  Require that the memory being optimized
+	does not use Altivec memory addresses.
+	(vsx_extract_v4sf_load_to_df): New insn.
 
-==================== Branch work119, patch #84 was reverted ====================
-
-==================== Branch work119, patch #83 was reverted ====================
-
-==================== Branch work119, patch #82 was reverted ====================
-
-==================== Branch work119, patch #81 was reverted ====================
-
-==================== Branch work119, patch #80 was reverted ====================
-
-==================== Branch work119, patch #72 was reverted ====================
-
-==================== Branch work119, patch #71 was reverted ====================
-
-==================== Branch work119, patch #70 was reverted ====================
-
-==================== Branch work119, patch #69 was reverted ====================
-
-==================== Branch work119, patch #68 was reverted ====================
-
-==================== Branch work119, patch #67 was reverted ====================
-
-==================== Branch work119, patch #66 was reverted ====================
-
-==================== Branch work119, patch #65 was reverted ====================
-
-==================== Branch work119, patch #64 was reverted ====================
-
-==================== Branch work119, patch #63 was reverted ====================
-
-==================== Branch work119, patch #62 was reverted ====================
-
-==================== Branch work119, patch #61 was reverted ====================
-
-==================== Branch work119, patch #60 was reverted ====================
-
-==================== Branch work119, patch #52 was reverted ====================
-
-==================== Branch work119, patch #51 was reverted ====================
-
-==================== Branch work119, patch #50 was reverted ====================
-
-==================== Branch work119, patch #49 was reverted ====================
-
-==================== Branch work119, patch #48 was reverted ====================
-
-==================== Branch work119, patch #47 was reverted ====================
-
-==================== Branch work119, patch #46 was reverted ====================
-
-==================== Branch work119, patch #45 was reverted ====================
-
-==================== Branch work119, patch #44 was reverted ====================
-
-==================== Branch work119, patch #43 was reverted ====================
-
-==================== Branch work119, patch #42 was reverted ====================
+gc/testsuite/
 
-==================== Branch work119, patch #41 was reverted ====================
+	* gcc.target/powerpc/vec-extract-mem-float-1.c: New file.
 
-==================== Branch work119, patch #40 was reverted ====================
+==================== Branch work119, patches #90-97 were reverted ====================
 
-==================== Branch work119, patch #33 was reverted ====================
+==================== Branch work119, patches #80-84 were reverted ====================
 
-==================== Branch work119, patch #32 was reverted ====================
+==================== Branch work119, patches #70-60 were reverted ====================
 
-==================== Branch work119, patch #31 was reverted ====================
+==================== Branch work119, patches #50-40 were reverted ====================
 
-==================== Branch work119, patch #30 was reverted ====================
+==================== Branch work119, patches #30-33 were reverted ====================
 
 ==================== Branch work119, patch #23 ====================

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

* [gcc(refs/users/meissner/heads/work119)] Update ChangeLog.meissner
@ 2023-04-28  6:37 Michael Meissner
  0 siblings, 0 replies; 16+ messages in thread
From: Michael Meissner @ 2023-04-28  6:37 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:0f49ae2d0de3e8c53a0fb27afdac5f5f0593ccba

commit 0f49ae2d0de3e8c53a0fb27afdac5f5f0593ccba
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Fri Apr 28 02:37:26 2023 -0400

    Update ChangeLog.meissner

Diff:
---
 gcc/ChangeLog.meissner | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 514c593ada8..fea7e2ed108 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -12,7 +12,7 @@ direct move:
 	vector unsigned short
 	vector unsigned char
 
-2023-04-27   Michael Meissner  <meissner@linux.ibm.com>
+2023-04-28   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/

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

* [gcc(refs/users/meissner/heads/work119)] Update ChangeLog.meissner
@ 2023-04-28  3:44 Michael Meissner
  0 siblings, 0 replies; 16+ messages in thread
From: Michael Meissner @ 2023-04-28  3:44 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:254a02cd8df1afb9393c2526473d9254debdebcd

commit 254a02cd8df1afb9393c2526473d9254debdebcd
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Thu Apr 27 23:44:41 2023 -0400

    Update ChangeLog.meissner

Diff:
---
 gcc/ChangeLog.meissner | 31 ++++++++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index b82c649fdf6..514c593ada8 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,3 +1,33 @@
+==================== Branch work119, patch #97 ====================
+
+Allow constant element vec_extract to be converted to floating point
+
+This patch allows vec_extract of the following types to be converted to
+floating point by loading the value directly to the vector register, and then
+doing the conversion instead of loading the value to a GPR and then doing a
+direct move:
+
+	vector int
+	vector unsigned int
+	vector unsigned short
+	vector unsigned char
+
+2023-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000.md (fp_int_extend): New code attribute.
+	* config/rs6000/vsx.md (vsx_extract_v4si_load_to_<uns><mode>): New
+	* insn.
+	* vsx_extract_<VSX_EXTRACT_I2:mode>_load_to_uns<SFDF:mode>: New insn.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/vec-extract-mem-char-2.c: New file.
+	* gcc.target/powerpc/vec-extract-mem-int-4.c: New file.
+	* gcc.target/powerpc/vec-extract-mem-int_5.c: New file.
+	* gcc.target/powerpc/vec-extract-mem-short-4.c: New file.
+
 ==================== Branch work119, patch #96 ====================
 
 Allow variable element vec_extract to be sign or zero extended
@@ -19,7 +49,6 @@ gcc/testsuite/
 	* gcc.target/powerpc/vec-extract-mem-int-3.c: New file.
 	* gcc.target/powerpc/vec-extract-mem-short-3.c: New file.
 
-
 ==================== Branch work119, patch #95 ====================
 
 Allow variable element vec_extract to be loaded into vector registers.

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

* [gcc(refs/users/meissner/heads/work119)] Update ChangeLog.meissner
@ 2023-04-28  3:37 Michael Meissner
  0 siblings, 0 replies; 16+ messages in thread
From: Michael Meissner @ 2023-04-28  3:37 UTC (permalink / raw)
  To: gcc-cvs

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

commit eea429174b24081377a2331a4aea963211f83996
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Thu Apr 27 23:37:40 2023 -0400

    Update ChangeLog.meissner

Diff:
---
 gcc/ChangeLog.meissner | 159 ++++++++++++++++++++++++++++---------------------
 1 file changed, 91 insertions(+), 68 deletions(-)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 953c2e99983..b82c649fdf6 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,35 +1,4 @@
-==================== Branch work119, patch #84 ====================
-
-Allow constant element vec_extract to be converted to floating point
-
-This patch allows vec_extract of the following types to be converted to
-floating point by loading the value directly to the vector register, and then
-doing the conversion instead of loading the value to a GPR and then doing a
-direct move:
-
-	vector int
-	vector unsigned int
-	vector unsigned short
-	vector unsigned char
-
-2023-04-26   Michael Meissner  <meissner@linux.ibm.com>
-
-gcc/
-
-	* config/rs6000/rs6000.md (fp_int_extend): New code attribute.
-	* config/rs6000/vsx.md (vsx_extract_v4si_load_to_<uns><mode>): New
-	* insn.
-	* vsx_extract_<VSX_EXTRACT_I2:mode>_load_to_uns<SFDF:mode>: New insn.
-
-gcc/testsuite/
-
-	* gcc.target/powerpc/vec-extract-mem-char-2.c: New file.
-	* gcc.target/powerpc/vec-extract-mem-int-4.c: New file.
-	* gcc.target/powerpc/vec-extract-mem-int_5.c: New file.
-	* gcc.target/powerpc/vec-extract-mem-short-4.c: New file.
-
-
-==================== Branch work119, patch #83 ====================
+==================== Branch work119, patch #96 ====================
 
 Allow variable element vec_extract to be sign or zero extended
 
@@ -37,7 +6,7 @@ This patch allows vec_extract of V4SI, V8HI, and V16QI vector types with a
 variable element number to be loaded with sign or zero extension, and GCC will
 not generate a separate zero/sign extension instruction.
 
-2023-04-26   Michael Meissner  <meissner@linux.ibm.com>
+2023-04-27   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
@@ -51,7 +20,7 @@ gcc/testsuite/
 	* gcc.target/powerpc/vec-extract-mem-short-3.c: New file.
 
 
-==================== Branch work119, patch #82 ====================
+==================== Branch work119, patch #95 ====================
 
 Allow variable element vec_extract to be loaded into vector registers.
 
@@ -59,14 +28,14 @@ This patch allows vec_extract of V4SI, V8HI, and V16QI vector types with a
 variable element number to be loaded into vector registers directly.  It also
 will be split before register allocation.
 
-2023-04-26   Michael Meissner  <meissner@linux.ibm.com>
+2023-04-27   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
 	* config/rs6000/vsx.md (vsx_extract_<mode>_var_load): Allow vector
 	registers to be loaded.  Split before register allocation.
 
-==================== Branch work119, patch #81 ====================
+==================== Branch work119, patch #94 ====================
 
 Allow consant element vec_extract to be zero or sign extended
 
@@ -74,7 +43,7 @@ This patch allows vec_extract of V4SI, V8HI, and V16QI vector types with a
 constant element number to be zero extended.  It also allows vec_extract of V4SI
 and V8HI vector types with constant element number to be sign extended.
 
-2023-04-26   Michael Meissner  <meissner@linux.ibm.com>
+2023-04-27   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
@@ -90,7 +59,7 @@ gcc/testsuite/
 	* gcc.target/powerpc/vec-extract-mem-short-1.c: New file.
 	* gcc.target/powerpc/vec-extract-mem-short-2.c: New file.
 
-==================== Branch work119, patch #80 ====================
+==================== Branch work119, patch #93 ====================
 
 Allow consant element vec_extract to be loaded into vector registers.
 
@@ -98,19 +67,95 @@ This patch allows vec_extract of V4SI, V8HI, and V16QI vector types with a
 constant element number to be loaded into vector registers directly.  It also
 will be split before register allocation.
 
-This patch also adds support to rs6000_adjust_vec_address to allow it to be run
-before register allocation.
+2023-04-27   Michael Meissner  <meissner@linux.ibm.com>
 
-2023-04-24   Michael Meissner  <meissner@linux.ibm.com>
+gcc/
+
+	* config/rs6000/vsx.md (VSX_EX_ISA): New mode attribute.
+	(vsx_extract_<mode>_load): Allow vector registers to be loaded.  Do insn
+	split before register allocation.
+
+==================== Branch work119, patch #92 ====================
+
+Optimize vec_extract of V4SF with variable element number being converted to DF
+
+This patch adds a combiner insn to include the conversion of float to double
+within the memory address when vec_extract of V4SF with a variable element
+number is done.
+
+In addition, the patch allows the split of vec_extract of V4SF with a variable
+element number to occur before register allocation.
+
+2023-04-27   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
-	* config/rs6000/rs6000.cc (get_vector_offset): Allow being called before
+	* config/rs6000/vsx.md (vsx_extract_v4sf_var_load): Allow split before
 	register allocation.
+	(vsx_extract_v4sf_var_load_to_df): New insn.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/vec-extract-mem-float-2.c: New file.
+
+==================== Branch work119, patch #91 ====================
+
+Optimize vec_extract of V4SF from memory with constant element numbers.
+
+This patch updates vec_extract of V4SF from memory with constant element
+numbers.
+
+This patch changes the splits so that they can be done before register
+allocation.
+
+This patch corrects the ISA for loading SF values to altivec registers to be
+power8 vector, and not power7.
+
+This patch adds a combiner patch to combine loading up a SF element and
+converting it to double.
+
+2023-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* gcc/config/rs6000/vsx.md (vsx_extract_v4sf_load): Allow splitting
+	before register allocation.  Fix ISA for loading up SFmode values to
+	traditional Altivec registers.
+	(vsx_extract_v4sf_load_to_df): New insn.
+
+gc/testsuite/
+
+	* gcc.target/powerpc/vec-extract-mem-float-1.c: New file.
+
+==================== Branch work119, patch #90 ====================
+
+Allow vec_extract from memory support functions before reload
+
+In the succeeding patches, I will be modifying the various vec_extract insns to
+allow the split to occur before register allocation.  This patch goes through
+the support function rs6000_adjust_vec_address and the functions it calls to
+allow them to be called before register allocation.  The places that take a
+scratch register will allocate a new pseudo register if they are passed a
+SCRATCH register.
+
+2023-04-27   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000.cc (get_vector_offset): Allow function to be
+	called before register allocation.
 	(adjust_vec_address_pcrel): Likewise.
 	(rs6000_adjust_vec_address): Likewise.
-	* config/rs6000/vsx.md (VSX_EX_ISA): New mode attribute.
-	(vsx_extract_<mode>_load): Allow vector registers to be loaded.
+
+==================== Branch work119, patch #84 was reverted ====================
+
+==================== Branch work119, patch #83 was reverted ====================
+
+==================== Branch work119, patch #82 was reverted ====================
+
+==================== Branch work119, patch #81 was reverted ====================
+
+==================== Branch work119, patch #80 was reverted ====================
 
 ==================== Branch work119, patch #72 was reverted ====================
 
@@ -134,31 +179,9 @@ gcc/
 
 ==================== Branch work119, patch #62 was reverted ====================
 
-==================== Branch work119, patch #61 ====================
-
-Combine vec_extract of V4SF with DF convert with variable element.
-
-This patch adds a combine insn that merges loading up a vec_extract of V4SFmode
-where the element number is variable combined with a conversion to DFmode.
-
-2023-04-21   Michael Meissner  <meissner@linux.ibm.com>
-
-gcc/
-
-	* config/rs6000/vsx.md (vsx_extract_v4sf_var_load_to_df): New insn.
-
-==================== Branch work119, patch #60 ====================
-
-Combine vec_extract of V4SF with DF convert with constant element number.
-
-This patch adds a combine insn that merges loading up a vec_extract of V4SFmode
-where the element number is constant combined with a conversion to DFmode.
-
-2023-04-21   Michael Meissner  <meissner@linux.ibm.com>
-
-gcc/
+==================== Branch work119, patch #61 was reverted ====================
 
-	* config/rs6000/vsx.md (vsx_extract_v4sf_to_df_load): New insn.
+==================== Branch work119, patch #60 was reverted ====================
 
 ==================== Branch work119, patch #52 was reverted ====================

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

* [gcc(refs/users/meissner/heads/work119)] Update ChangeLog.meissner
@ 2023-04-26 23:44 Michael Meissner
  0 siblings, 0 replies; 16+ messages in thread
From: Michael Meissner @ 2023-04-26 23:44 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:639a9f1ab0f7f2d37064f59c015b0cc047f472aa

commit 639a9f1ab0f7f2d37064f59c015b0cc047f472aa
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Wed Apr 26 19:44:44 2023 -0400

    Update ChangeLog.meissner

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

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 3cac2be603b..70035b036c6 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,3 +1,34 @@
+==================== Branch work119, patch #84 ====================
+
+Allow constant element vec_extract to be converted to floating point
+
+This patch allows vec_extract of the following types to be converted to
+floating point by loading the value directly to the vector register, and then
+doing the conversion instead of loading the value to a GPR and then doing a
+direct move:
+
+	* vector int
+	* vector unsigned int
+	* vector unsigned short
+	* vector unsigned char
+
+2023-04-26   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/rs6000.md (fp_int_extend): New code attribute.
+	* config/rs6000/vsx.md (vsx_extract_v4si_load_to_<uns><mode>): New
+	* insn.
+	* vsx_extract_<VSX_EXTRACT_I2:mode>_load_to_uns<SFDF:mode>: New insn.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/vec-extract-mem-char-2.c: New file.
+	* gcc.target/powerpc/vec-extract-mem-int-4.c: New file.
+	* gcc.target/powerpc/vec-extract-mem-int_5.c: New file.
+	* gcc.target/powerpc/vec-extract-mem-short-4.c: New file.
+
+
 ==================== Branch work119, patch #83 ====================
 
 Allow variable element vec_extract to be sign or zero extended

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

* [gcc(refs/users/meissner/heads/work119)] Update ChangeLog.meissner
@ 2023-04-26 16:21 Michael Meissner
  0 siblings, 0 replies; 16+ messages in thread
From: Michael Meissner @ 2023-04-26 16:21 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:8c8f054fcc34959bf1ef33808c68598730567b59

commit 8c8f054fcc34959bf1ef33808c68598730567b59
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Wed Apr 26 12:21:10 2023 -0400

    Update ChangeLog.meissner

Diff:
---
 gcc/ChangeLog.meissner | 51 +++++++++++++++++++++++++++++++-------------------
 1 file changed, 32 insertions(+), 19 deletions(-)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 16c9a116edc..3cac2be603b 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -237,25 +237,33 @@ gcc/testsuite/
 
 ==================== Branch work119, patch #1 ====================
 
-Make load/cmp fusion know about prefixed loads.
+PR target/105325: Make load/cmp fusion know about prefixed loads.
 
-I posted a version of patch on March 21st and a second version on March 24th.
-This patch makes some code changes suggested in the genfusion.pl code from the
-last 2 patch submissions.  The fusion.md that is produced by genfusion.pl is
-the same in all 3 versions.
+I posted a version of patch on March 21st, a second version on March 24th, and
+the third version on March 28th.
 
-I changed the genfusion.pl to match the suggestion for code layout.  I also
-used the correct comment for each of the instructions (in the 2nd patch, the
-when I rewrote the comments about ld and lwa being DS format instructions, I
-had put the ld comment in the section handling lwa, and vice versa).
+The V4 patch just adds a new condition to the new test case.  Previously, I was
+using 'powerpc_prefixed_addr' to determine whether the GCC compiler would
+automatically generate prefixed addresses.  The V4 version also adds a check
+for 'power10_ok'.  Power10_ok is needed in case the compiler could generate
+prefixed addresses, but the assembler does not support prefixed instructions.
 
-I also removed lp64 from the new test.  When I first added the prefixed code,
-it was only done for 64-bit, but now it is allowed for 32-bit.  However, the
-case that shows up (lwa) would not hit in 32-bit, since it only generates lwz
-and not lwa.  It also would not generate ld.  But the test does pass when it is
-built with -m32.
+The V3 patch makes some code changes suggested in the genfusion.pl code from
+the last 2 patch submissions.  The fusion.md that is produced by genfusion.pl
+is the same in all 3 versions.
 
-The issue with the bug is the power10 load GPR + cmpi -1/0/1 fusion
+In V3, I changed the genfusion.pl to match the suggestion for code layout.  I
+also used the correct comment for each of the instructions (in the 2nd patch,
+the when I rewrote the comments about ld and lwa being DS format instructions,
+I had put the ld comment in the section handling lwa, and vice versa).
+
+In V3, I also removed lp64 from the new test.  When I first added the prefixed
+code, it was only done for 64-bit, but now it is allowed for 32-bit.  However,
+the case that shows up (lwa) would not hit in 32-bit, since it only generates
+lwz and not lwa.  It also would not generate ld.  But the test does pass when
+it is built with -m32.
+
+The issue with the original bug is the power10 load GPR + cmpi -1/0/1 fusion
 optimization generates illegal assembler code.
 
 Ultimately the code was dying because the fusion load + compare -1/0/1 patterns
@@ -274,10 +282,15 @@ operand[1] is a prefixed instruction.
 
 I have tested this code on a power9 little endian system (with long double
 being IEEE 128-bit and IBM 128-bit), a power10 little endian system, and a
-power8 big endian system, testing both 32-bit and 64-bit code generation.  Can
-I put this code into the master branch, and after a waiting period, apply it to
-the GCC 12 and GCC 11 branches (the bug does show up in those branches, and the
-patch applies without change).
+power8 big endian system, testing both 32-bit and 64-bit code generation.
+
+For the V4 changes I also built the compiler on a big endian system with an
+older assembler, and I verified that the pr105325.C test was listed as
+unsupported.
+
+Can I put this code into the master branch, and after a waiting period, apply
+it to the GCC 12 and GCC 11 branches (the bug does show up in those branches,
+and the patch applies without change).
 
 2023-04-26   Michael Meissner  <meissner@linux.ibm.com>

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

* [gcc(refs/users/meissner/heads/work119)] Update ChangeLog.meissner
@ 2023-04-26 15:47 Michael Meissner
  0 siblings, 0 replies; 16+ messages in thread
From: Michael Meissner @ 2023-04-26 15:47 UTC (permalink / raw)
  To: gcc-cvs

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

commit f64caf896d2a371ef77510d4837e3be99925b76a
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Wed Apr 26 11:47:13 2023 -0400

    Update ChangeLog.meissner

Diff:
---
 gcc/ChangeLog.meissner | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 8254b9027f2..16c9a116edc 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -6,7 +6,7 @@ This patch allows vec_extract of V4SI, V8HI, and V16QI vector types with a
 variable element number to be loaded with sign or zero extension, and GCC will
 not generate a separate zero/sign extension instruction.
 
-2023-04-25   Michael Meissner  <meissner@linux.ibm.com>
+2023-04-26   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
@@ -28,7 +28,7 @@ This patch allows vec_extract of V4SI, V8HI, and V16QI vector types with a
 variable element number to be loaded into vector registers directly.  It also
 will be split before register allocation.
 
-2023-04-25   Michael Meissner  <meissner@linux.ibm.com>
+2023-04-26   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
@@ -43,7 +43,7 @@ This patch allows vec_extract of V4SI, V8HI, and V16QI vector types with a
 constant element number to be zero extended.  It also allows vec_extract of V4SI
 and V8HI vector types with constant element number to be sign extended.
 
-2023-04-25   Michael Meissner  <meissner@linux.ibm.com>
+2023-04-26   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/

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

* [gcc(refs/users/meissner/heads/work119)] Update ChangeLog.meissner
@ 2023-04-26  5:14 Michael Meissner
  0 siblings, 0 replies; 16+ messages in thread
From: Michael Meissner @ 2023-04-26  5:14 UTC (permalink / raw)
  To: gcc-cvs

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

commit df88c72ec0e4326cceefec88a1b7115ed444a184
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Wed Apr 26 01:14:08 2023 -0400

    Update ChangeLog.meissner

Diff:
---
 gcc/ChangeLog.meissner | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 3109354c454..8254b9027f2 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -279,7 +279,7 @@ I put this code into the master branch, and after a waiting period, apply it to
 the GCC 12 and GCC 11 branches (the bug does show up in those branches, and the
 patch applies without change).
 
-2023-04-17   Michael Meissner  <meissner@linux.ibm.com>
+2023-04-26   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/

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

* [gcc(refs/users/meissner/heads/work119)] Update ChangeLog.meissner
@ 2023-04-25 15:56 Michael Meissner
  0 siblings, 0 replies; 16+ messages in thread
From: Michael Meissner @ 2023-04-25 15:56 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:54a3423c6134b2354e2c9b888167f84c6a48de66

commit 54a3423c6134b2354e2c9b888167f84c6a48de66
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Tue Apr 25 11:56:53 2023 -0400

    Update ChangeLog.meissner

Diff:
---
 gcc/ChangeLog.meissner | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 3334848781f..3109354c454 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -6,7 +6,7 @@ This patch allows vec_extract of V4SI, V8HI, and V16QI vector types with a
 variable element number to be loaded with sign or zero extension, and GCC will
 not generate a separate zero/sign extension instruction.
 
-2023-04-24   Michael Meissner  <meissner@linux.ibm.com>
+2023-04-25   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
@@ -28,7 +28,7 @@ This patch allows vec_extract of V4SI, V8HI, and V16QI vector types with a
 variable element number to be loaded into vector registers directly.  It also
 will be split before register allocation.
 
-2023-04-24   Michael Meissner  <meissner@linux.ibm.com>
+2023-04-25   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
@@ -43,7 +43,7 @@ This patch allows vec_extract of V4SI, V8HI, and V16QI vector types with a
 constant element number to be zero extended.  It also allows vec_extract of V4SI
 and V8HI vector types with constant element number to be sign extended.
 
-2023-04-24   Michael Meissner  <meissner@linux.ibm.com>
+2023-04-25   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/

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

* [gcc(refs/users/meissner/heads/work119)] Update ChangeLog.meissner
@ 2023-04-25  2:55 Michael Meissner
  0 siblings, 0 replies; 16+ messages in thread
From: Michael Meissner @ 2023-04-25  2:55 UTC (permalink / raw)
  To: gcc-cvs

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

commit ade6286b050123ef8fcd9ff15e435bed8bd77e38
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Mon Apr 24 22:55:16 2023 -0400

    Update ChangeLog.meissner

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

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 1fe1b591c74..3334848781f 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,3 +1,40 @@
+==================== Branch work119, patch #83 ====================
+
+Allow variable element vec_extract to be sign or zero extended
+
+This patch allows vec_extract of V4SI, V8HI, and V16QI vector types with a
+variable element number to be loaded with sign or zero extension, and GCC will
+not generate a separate zero/sign extension instruction.
+
+2023-04-24   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/vsx.md (vsx_extract_v4si_var_load_to_<su>di): New insn.
+	(vsx_extract_<VSX_EXTRACT_I2:mode>_var_load_to_u<GPR:mode>): New insn.
+	(vsx_extract_v8hi_var_load_to_s<mode>): New insn.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/vec-extract-mem-int-3.c: New file.
+	* gcc.target/powerpc/vec-extract-mem-short-3.c: New file.
+
+
+==================== Branch work119, patch #82 ====================
+
+Allow variable element vec_extract to be loaded into vector registers.
+
+This patch allows vec_extract of V4SI, V8HI, and V16QI vector types with a
+variable element number to be loaded into vector registers directly.  It also
+will be split before register allocation.
+
+2023-04-24   Michael Meissner  <meissner@linux.ibm.com>
+
+gcc/
+
+	* config/rs6000/vsx.md (vsx_extract_<mode>_var_load): Allow vector
+	registers to be loaded.  Split before register allocation.
+
 ==================== Branch work119, patch #81 ====================
 
 Allow consant element vec_extract to be zero or sign extended

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

* [gcc(refs/users/meissner/heads/work119)] Update ChangeLog.meissner
@ 2023-04-25  2:04 Michael Meissner
  0 siblings, 0 replies; 16+ messages in thread
From: Michael Meissner @ 2023-04-25  2:04 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:62b7f25d96b490e5abf15c54e93bee3c1f87b65c

commit 62b7f25d96b490e5abf15c54e93bee3c1f87b65c
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Mon Apr 24 22:04:50 2023 -0400

    Update ChangeLog.meissner

Diff:
---
 gcc/ChangeLog.meissner | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 155c0dcc4a8..1fe1b591c74 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -12,7 +12,7 @@ gcc/
 
 	* config/rs6000/vsx.md (vsx_extract_v4si_load_to_<su>d): New insn.
 	(vsx_extract_<VSX_EXTRACT_I2:mode>_load_to_u<GPR:mode>): New insn.
-	(vsx_extract_v8hi_load_to_z<mode>): New insn.
+	(vsx_extract_v8hi_load_to_s<mode>): New insn.
 
 gcc/testsuite/

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

* [gcc(refs/users/meissner/heads/work119)] Update ChangeLog.meissner
@ 2023-04-25  2:03 Michael Meissner
  0 siblings, 0 replies; 16+ messages in thread
From: Michael Meissner @ 2023-04-25  2:03 UTC (permalink / raw)
  To: gcc-cvs

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

commit e65998ab6c7cdb8a509a3a72553f207587023e32
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Mon Apr 24 22:03:27 2023 -0400

    Update ChangeLog.meissner

Diff:
---
 gcc/ChangeLog.meissner | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index 5210646122b..155c0dcc4a8 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,4 +1,4 @@
-==================== Branch work119, patch #81 was reverted ====================
+==================== Branch work119, patch #81 ====================
 
 Allow consant element vec_extract to be zero or sign extended
 
@@ -22,7 +22,7 @@ gcc/testsuite/
 	* gcc.target/powerpc/vec-extract-mem-short-1.c: New file.
 	* gcc.target/powerpc/vec-extract-mem-short-2.c: New file.
 
-==================== Branch work119, patch #80 was reverted ====================
+==================== Branch work119, patch #80 ====================
 
 Allow consant element vec_extract to be loaded into vector registers.

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

* [gcc(refs/users/meissner/heads/work119)] Update ChangeLog.meissner.
@ 2023-04-21 19:01 Michael Meissner
  0 siblings, 0 replies; 16+ messages in thread
From: Michael Meissner @ 2023-04-21 19:01 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:9c4f9bcb321c704b7a24ec1f101f3e2df2a5a0ce

commit 9c4f9bcb321c704b7a24ec1f101f3e2df2a5a0ce
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Fri Apr 21 15:00:58 2023 -0400

    Update ChangeLog.meissner.
    
    2023-04-21   Michael Meissner  <meissner@linux.ibm.com>
    
    gcc/
    
            * ChangeLog.meissner: Update.

Diff:
---
 gcc/ChangeLog.meissner | 144 +++++++++----------------------------------------
 1 file changed, 25 insertions(+), 119 deletions(-)

diff --git a/gcc/ChangeLog.meissner b/gcc/ChangeLog.meissner
index b16a81f8d58..82745912b34 100644
--- a/gcc/ChangeLog.meissner
+++ b/gcc/ChangeLog.meissner
@@ -1,151 +1,57 @@
-==================== Branch work119, patch #49 ====================
+==================== Branch work119, patch #51 ====================
 
-Fold sign or zero extension into vsx_extract from memory with variable element.
-
-This patch folds conversion to floating point of vsx_extract from memory of V4SI
-elements where the element number is constant.  This code optimizes things so it
-will load the integer with LFIWAX or LFIWZX directly into a vector register
-rather than loading it into a GPR and doing a direct move operation.
-
-2023-04-21   Michael Meissner  <meissner@linux.ibm.com>
-
-gcc/
-
-	* config/rs6000/vsx.md (vsx_extract_v4si_var_load_to_<uns><mode>): New
-	insn.
-
-gcc/testsuite/
-
-	* gcc.target/powerpc/vec-extract-mem-int-4.c: New file.
-
-==================== Branch work119, patch #48 ====================
+Combine vec_extract of V4SF with DF convert.
 
-Fold sign or zero convert into variable vsx_extract from memory.
+This patch adds a combine insn that merges loading up a vec_extract of V4SFmode
+where the element number is constant combined with a conversion to DFmode.
 
-This patch folds sign or zero convert operations into vsx_extract from memory
-where the element number is constant.
+In addition, I changed the vec_extract of V4SFmode where the element number is
+constant without conversion to do the split before register allocation.
 
 2023-04-21   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
-	* config/rs6000/vsx.md (vsx_extract_<mode>_var_load_to_udi): New insn.
-	(vsx_extract_<mode>_var_load_to_sdi): New insn.
-	(vsx_extract_v8hi_var_load_to_<su>si): New insn.
+	* config/rs6000/vsx.md (vsx_extract_v4sf_load): Allow split before
+	register allocation.
+	(vsx_extract_v4sf_to_df_load): New insn.
 
 gcc/testsuite/
 
-	* gcc.target/powerpc/vec-extract-mem-char-2.c: New file.
-	* gcc.target/powerpc/vec-extract-mem-int-3.c: New file.
-	* gcc.target/powerpc/vec-extract-mem-short-2.c: New file.
-
-==================== Branch work119, patch #47 ====================
-
-Allow vec_extract with variable element number to load vector registers.
-
-2023-04-21   Michael Meissner  <meissner@linux.ibm.com>
-
-gcc/
-
-	* config/rs6000/vsx.md (vsx_extract_<mode>_var_load): Allow vec_extract
-	of integer types with a variable element number to load into vector
-	registers.  Allow splitting before register allocation.
-
-==================== Branch work119, patch #46 ====================
+	* gcc.target/powerpc/vec-extract-mem-float-1.c: New test.
 
-Combine variable element vec_extract of V4SF with DF convert.
+==================== Branch work119, patch #50 ====================
 
-This patch adds a combine insn that merges loading up a vec_extract of V4SFmode
-where the element number is variable combined with a conversion to DFmode.
+Allow vec_extract support functions to be called before reload.
 
 2023-04-21   Michael Meissner  <meissner@linux.ibm.com>
 
 gcc/
 
-	* config/rs6000/vsx.md (vsx_extract_v4sf_var_load_to_df): New insn.
-
-==================== Branch work119, patch #45 ====================
-
-Fold conversion to float into V4SI vsx_extract from memory.
+	* config/rs6000/rs6000.cc (get_vector_offset): Allow being called before
+	register allocation.
+	(adjust_vec_address_pcrel): Likewise.
+	(rs6000_adjust_vec_address): Likewise.
 
-This patch folds conversion to floating point of vsx_extract from memory of V4SI
-elements where the element number is constant.  This code optimizes things so it
-will load the integer with LFIWAX or LFIWZX directly into a vector register
-rather than loading it into a GPR and doing a direct move operation.
+==================== Branch work119, patch #49 was reverted ====================
 
-2023-04-18   Michael Meissner  <meissner@linux.ibm.com>
+==================== Branch work119, patch #48 was reverted ====================
 
-gcc/
-
-	* config/rs6000/vsx.md (SIGN_ZERO_EXTEND): New mode attribute.
-	(vsx_extract_v4si_load_to_<uns><mode>): New insn.
+==================== Branch work119, patch #47 was reverted ====================
 
-gcc/testsuite/
+==================== Branch work119, patch #46 was reverted ====================
 
-	* gcc.target/powerpc/vec-extract-mem-int-2.c: New file.
+==================== Branch work119, patch #45 was reverted ====================
 
 ==================== Branch work119, patch #44 was reverted ====================
 
-==================== Branch work119, patch #43 ====================
+==================== Branch work119, patch #43 was reverted ====================
 
-Fold sign or zero convert into vsx_extract from memory.
+==================== Branch work119, patch #42 was reverted ====================
 
-This patch folds sign or zero convert operations into vsx_extract from memory
-where the element number is constant.
+==================== Branch work119, patch #41 was reverted ====================
 
-2023-04-21   Michael Meissner  <meissner@linux.ibm.com>
-
-gcc/
-
-	* config/rs6000/vsx.md (VSX_EXTRACT_ISIGN): New mode attribute.
-	(vsx_extract_<mode>_load_to_udi): New insn.
-	(vsx_extract_<mode>_load_to_sdi): New insn.
-	(vsx_extract_v8hi_load_to_<su>si): New insn.
-
-gcc/testsuite/
-
-	* gcc.target/powerpc/vec-extract-mem-char-1.c: New file.
-	* gcc.target/powerpc/vec-extract-mem-int-1.c: New file.
-	* gcc.target/powerpc/vec-extract-mem-short-1.c: New file.
-
-==================== Branch work119, patch #42 ====================
-
-Allow vec_extract to load vector registers.
-
-2023-04-18   Michael Meissner  <meissner@linux.ibm.com>
-
-gcc/
-
-	* config/rs6000/vsx.md (VSX_EX_ISA): New mode attribute
-	(vsx_extract_<mode>_load): Allow vec_extract of integer types with a
-	constant element number to load into vector registers.  Allow splitting
-	before register allocation.
-
-==================== Branch work119, patch #41 ====================
-
-Combine vec_extract of V4SF with DF convert.
-
-This patch adds a combine insn that merges loading up a vec_extract of V4SFmode
-where the element number is constant combined with a conversion to DFmode.
-
-2023-04-18   Michael Meissner  <meissner@linux.ibm.com>
-
-gcc/
-
-	* config/rs6000/vsx.md (vsx_extract_v4sf_to_df_load): New insn.
-
-==================== Branch work119, patch #40 ====================
-
-Allow vec_extract support functions to be called before reload.
-
-2023-04-19   Michael Meissner  <meissner@linux.ibm.com>
-
-gcc/
-
-	* config/rs6000/rs6000.cc (get_vector_offset): Allow being called before
-	register allocation.
-	(adjust_vec_address_pcrel): Likewise.
-	(rs6000_adjust_vec_address): Likewise.
+==================== Branch work119, patch #40 was reverted ====================
 
 ==================== Branch work119, patch #33 was reverted ====================

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

end of thread, other threads:[~2023-05-01 17:24 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-26 23:55 [gcc(refs/users/meissner/heads/work119)] Update ChangeLog.meissner Michael Meissner
  -- strict thread matches above, loose matches on Subject: below --
2023-05-01 17:24 Michael Meissner
2023-04-29  4:10 Michael Meissner
2023-04-28 19:48 Michael Meissner
2023-04-28  6:37 Michael Meissner
2023-04-28  3:44 Michael Meissner
2023-04-28  3:37 Michael Meissner
2023-04-26 23:44 Michael Meissner
2023-04-26 16:21 Michael Meissner
2023-04-26 15:47 Michael Meissner
2023-04-26  5:14 Michael Meissner
2023-04-25 15:56 Michael Meissner
2023-04-25  2:55 Michael Meissner
2023-04-25  2:04 Michael Meissner
2023-04-25  2:03 Michael Meissner
2023-04-21 19:01 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).