diff mbox

[rs6000] Enable VSX code generation in little endian mode

Message ID 1383677020.30428.33.camel@gnopaine
State New
Headers show

Commit Message

Bill Schmidt Nov. 5, 2013, 6:43 p.m. UTC
Hi,

With the recent set of patches, there are no longer any vector-related
regressions for powerpc64le-linux-gnu that do not also occur for
powerpc64-linux-gnu.  (gcc.dg/vect/vect-96.c is still broken for both
endiannesses and is being tracked.)  I did a code walkthrough on the
back-end code and did not find any additional endianness concerns.
Therefore, this patch removes the restriction that we cannot generate
VSX instructions for a little endian target.

Note that there are still two relevant patches pending approval, so this
patch is contingent on final resolution of those and will not be
committed until then.

With that restriction, is this ok for trunk?

Thanks,
Bill


2013-11-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/rs6000.c (rs6000_option_override_internal):
	Remove restriction against use of VSX instructions when generating
	code for little endian mode.

Comments

David Edelsohn Nov. 6, 2013, 2:44 a.m. UTC | #1
On Tue, Nov 5, 2013 at 1:43 PM, Bill Schmidt
<wschmidt@linux.vnet.ibm.com> wrote:
> Hi,
>
> With the recent set of patches, there are no longer any vector-related
> regressions for powerpc64le-linux-gnu that do not also occur for
> powerpc64-linux-gnu.  (gcc.dg/vect/vect-96.c is still broken for both
> endiannesses and is being tracked.)  I did a code walkthrough on the
> back-end code and did not find any additional endianness concerns.
> Therefore, this patch removes the restriction that we cannot generate
> VSX instructions for a little endian target.
>
> Note that there are still two relevant patches pending approval, so this
> patch is contingent on final resolution of those and will not be
> committed until then.
>
> With that restriction, is this ok for trunk?
>
> Thanks,
> Bill
>
>
> 2013-11-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
>
>         * config/rs6000/rs6000.c (rs6000_option_override_internal):
>         Remove restriction against use of VSX instructions when generating
>         code for little endian mode.

Okay.  Woohoo :-/

- David
diff mbox

Patch

Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c	(revision 204350)
+++ gcc/config/rs6000/rs6000.c	(working copy)
@@ -3221,11 +3221,6 @@  rs6000_option_override_internal (bool global_init_
 	}
       else if (TARGET_PAIRED_FLOAT)
 	msg = N_("-mvsx and -mpaired are incompatible");
-      /* The hardware will allow VSX and little endian, but until we make sure
-	 things like vector select, etc. work don't allow VSX on little endian
-	 systems at this point.  */
-      else if (!BYTES_BIG_ENDIAN)
-	msg = N_("-mvsx used with little endian code");
       else if (TARGET_AVOID_XFORM > 0)
 	msg = N_("-mvsx needs indexed addressing");
       else if (!TARGET_ALTIVEC && (rs6000_isa_flags_explicit