This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH], PR target/58452, Fix gcc 4.8/trunk linuxpaired breakage


While doing some work on power8, I wanted to make sure that for existing
systems, I was generating the same code.  So I built some code and ran it
through various -mcpu=xxxx options.  When I built a powerpc-linuxpaired
compiler, the compiler has trouble with a simple loop that should be
vectorized.  I traced the code to changes in the vectorizer that required the
predicates for movmismalign* to accept memory operands.

In the main part of the powerpc compiler, we made this change in April, 2011,
but we missed the paired floating point support, since you need to use special
configuration options to enable paired floating point support.

2011-04-01  Andrew Pinski  <pinskia@gmail.com>
	    Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/48262
	* config/rs6000/vector.md (movmisalign<mode>): Allow for memory
	operands, as per the specifications.

	* config/rs6000/altivec.md (vec_extract_evenv4si): Correct modes.
	(vec_extract_evenv4sf): Ditto.
	(vec_extract_evenv8hi): Ditto.
	(vec_extract_evenv16qi): Ditto.
	(vec_extract_oddv4si): Ditto.

I will do the usual bootstrap/make check tomorrow.  Assuming it has no
regressions, can I check this patch it to both the 4.8 branch and trunk?

2013-09-17  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/58452
	* config/rs6000/paired.md (movmisalignv2sf): Fix to allow memory
	operaands.

Index: gcc/config/rs6000/paired.md
===================================================================
--- gcc/config/rs6000/paired.md	(revision 202632)
+++ gcc/config/rs6000/paired.md	(working copy)
@@ -462,8 +462,8 @@ (define_expand "reduc_splus_v2sf"
 }")
 
 (define_expand "movmisalignv2sf"
-  [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
-        (match_operand:V2SF 1 "gpc_reg_operand" "f"))]
+  [(set (match_operand:V2SF 0 "nonimmediate_operand" "")
+        (match_operand:V2SF 1 "any_operand" ""))]
   "TARGET_PAIRED_FLOAT"
 {
   paired_expand_vector_move (operands);


-- 
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460, USA
email: meissner@linux.vnet.ibm.com, phone: +1 (978) 899-4797


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]