diff mbox

[4.8,17/26] Backport Power8 and LE support: Direct moves

Message ID 1395257593.17148.19.camel@gnopaine
State New
Headers show

Commit Message

Bill Schmidt March 19, 2014, 7:33 p.m. UTC
Hi,

This patch (diff-direct-move) backports support for the Power8 direct
move instructions for little endian.

Thanks,
Bill


2014-03-19  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	Backport from mainline
	2013-10-23  Pat Haugen  <pthaugen@us.ibm.com>

	* gcc.target/powerpc/direct-move.h: Fix header for executable tests.

	Back port from mainline
	2014-01-16  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/59844
	* config/rs6000/rs6000.md (reload_vsx_from_gprsf): Add little
	endian support, remove tests for WORDS_BIG_ENDIAN.
	(p8_mfvsrd_3_<mode>): Likewise.
	(reload_gpr_from_vsx<mode>): Likewise.
	(reload_gpr_from_vsxsf): Likewise.
	(p8_mfvsrd_4_disf): Likewise.

Comments

David Edelsohn April 3, 2014, 2:40 p.m. UTC | #1
On Wed, Mar 19, 2014 at 3:33 PM, Bill Schmidt
<wschmidt@linux.vnet.ibm.com> wrote:
> Hi,
>
> This patch (diff-direct-move) backports support for the Power8 direct
> move instructions for little endian.
>
> Thanks,
> Bill
>
>
> 2014-03-19  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
>
>         Backport from mainline
>         2013-10-23  Pat Haugen  <pthaugen@us.ibm.com>
>
>         * gcc.target/powerpc/direct-move.h: Fix header for executable tests.
>
>         Back port from mainline
>         2014-01-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
>
>         PR target/59844
>         * config/rs6000/rs6000.md (reload_vsx_from_gprsf): Add little
>         endian support, remove tests for WORDS_BIG_ENDIAN.
>         (p8_mfvsrd_3_<mode>): Likewise.
>         (reload_gpr_from_vsx<mode>): Likewise.
>         (reload_gpr_from_vsxsf): Likewise.
>         (p8_mfvsrd_4_disf): Likewise.

Okay.

Thanks, David
diff mbox

Patch

Index: gcc-4_8-test/gcc/config/rs6000/rs6000.md
===================================================================
--- gcc-4_8-test.orig/gcc/config/rs6000/rs6000.md
+++ gcc-4_8-test/gcc/config/rs6000/rs6000.md
@@ -9438,7 +9438,7 @@ 
 	(unspec:SF [(match_operand:SF 1 "register_operand" "r")]
 		   UNSPEC_P8V_RELOAD_FROM_GPR))
    (clobber (match_operand:DI 2 "register_operand" "=r"))]
-  "TARGET_POWERPC64 && TARGET_DIRECT_MOVE && WORDS_BIG_ENDIAN"
+  "TARGET_POWERPC64 && TARGET_DIRECT_MOVE"
   "#"
   "&& reload_completed"
   [(const_int 0)]
@@ -9465,7 +9465,7 @@ 
   [(set (match_operand:DF 0 "register_operand" "=r")
 	(unspec:DF [(match_operand:FMOVE128_GPR 1 "register_operand" "wa")]
 		   UNSPEC_P8V_RELOAD_FROM_VSX))]
-  "TARGET_POWERPC64 && TARGET_DIRECT_MOVE && WORDS_BIG_ENDIAN"
+  "TARGET_POWERPC64 && TARGET_DIRECT_MOVE"
   "mfvsrd %0,%x1"
   [(set_attr "type" "mftgpr")])
 
@@ -9475,7 +9475,7 @@ 
 	 [(match_operand:FMOVE128_GPR 1 "register_operand" "wa")]
 	 UNSPEC_P8V_RELOAD_FROM_VSX))
    (clobber (match_operand:FMOVE128_GPR 2 "register_operand" "=wa"))]
-  "TARGET_POWERPC64 && TARGET_DIRECT_MOVE && WORDS_BIG_ENDIAN"
+  "TARGET_POWERPC64 && TARGET_DIRECT_MOVE"
   "#"
   "&& reload_completed"
   [(const_int 0)]
@@ -9502,7 +9502,7 @@ 
 	(unspec:SF [(match_operand:SF 1 "register_operand" "wa")]
 		   UNSPEC_P8V_RELOAD_FROM_VSX))
    (clobber (match_operand:V4SF 2 "register_operand" "=wa"))]
-  "TARGET_POWERPC64 && TARGET_DIRECT_MOVE && WORDS_BIG_ENDIAN"
+  "TARGET_POWERPC64 && TARGET_DIRECT_MOVE"
   "#"
   "&& reload_completed"
   [(const_int 0)]
@@ -9524,7 +9524,7 @@ 
   [(set (match_operand:DI 0 "register_operand" "=r")
 	(unspec:DI [(match_operand:V4SF 1 "register_operand" "wa")]
 		   UNSPEC_P8V_RELOAD_FROM_VSX))]
-  "TARGET_POWERPC64 && TARGET_DIRECT_MOVE && WORDS_BIG_ENDIAN"
+  "TARGET_POWERPC64 && TARGET_DIRECT_MOVE"
   "mfvsrd %0,%x1"
   [(set_attr "type" "mftgpr")])
 
Index: gcc-4_8-test/gcc/testsuite/gcc.target/powerpc/direct-move.h
===================================================================
--- gcc-4_8-test.orig/gcc/testsuite/gcc.target/powerpc/direct-move.h
+++ gcc-4_8-test/gcc/testsuite/gcc.target/powerpc/direct-move.h
@@ -1,5 +1,7 @@ 
 /* Test functions for direct move support.  */
 
+#include <math.h>
+extern void abort (void);
 
 #ifndef VSX_REG_ATTR
 #define VSX_REG_ATTR "wa"
@@ -111,7 +113,7 @@  const struct test_struct test_functions[
 void __attribute__((__noinline__))
 test_value (TYPE a)
 {
-  size_t i;
+  long i;
 
   for (i = 0; i < sizeof (test_functions) / sizeof (test_functions[0]); i++)
     {
@@ -127,8 +129,7 @@  test_value (TYPE a)
 int
 main (void)
 {
-  size_t i;
-  long j;
+  long i,j;
   union {
     TYPE value;
     unsigned char bytes[sizeof (TYPE)];