This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH, rs6000] Enable VSX code generation in little endian mode
- From: Bill Schmidt <wschmidt at linux dot vnet dot ibm dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: dje dot gcc at gmail dot com
- Date: Tue, 05 Nov 2013 12:43:40 -0600
- Subject: [PATCH, rs6000] Enable VSX code generation in little endian mode
- Authentication-results: sourceware.org; auth=none
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.
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