rs6000-p8swap.c (rs6000_gen_stvx): Generate different rtl trees depending on TARGET_6...
authorKelvin Nilsen <kelvin@gcc.gnu.org>
Tue, 16 Jan 2018 22:14:27 +0000 (22:14 +0000)
committerKelvin Nilsen <kelvin@gcc.gnu.org>
Tue, 16 Jan 2018 22:14:27 +0000 (22:14 +0000)
gcc/ChangeLog:

2018-01-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
different rtl trees depending on TARGET_64BIT.
(rs6000_gen_lvx): Likewise.

From-SVN: r256762

gcc/ChangeLog
gcc/config/rs6000/rs6000-p8swap.c

index 194f975d432b4c47bd9e33bca0ecc3d55c64e695..a4fa75c773fe0d92128b0d29b46c8214bfe7b966 100644 (file)
@@ -1,3 +1,9 @@
+2018-01-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+
+       * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
+       different rtl trees depending on TARGET_64BIT.
+       (rs6000_gen_lvx): Likewise.
+
 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
 
        * config/visium/visium.md (nop): Tweak comment.
index 876f339a79ed7f01ca4cd5610c31a7d229c18dcf..a4322962d232d26543ea5721289de9a0f312f938 100644 (file)
@@ -1554,23 +1554,39 @@ rs6000_gen_stvx (enum machine_mode mode, rtx dest_exp, rtx src_exp)
       op1 = XEXP (memory_address, 0);
       op2 = XEXP (memory_address, 1);
       if (mode == V16QImode)
-       stvx = gen_altivec_stvx_v16qi_2op (src_exp, op1, op2);
+       stvx = TARGET_64BIT
+         ? gen_altivec_stvx_v16qi_2op (src_exp, op1, op2)
+         : gen_altivec_stvx_v16qi_2op_si (src_exp, op1, op2);
       else if (mode == V8HImode)
-       stvx = gen_altivec_stvx_v8hi_2op (src_exp, op1, op2);
+       stvx = TARGET_64BIT
+         ? gen_altivec_stvx_v8hi_2op (src_exp, op1, op2)
+         : gen_altivec_stvx_v8hi_2op_si (src_exp, op1, op2);
 #ifdef HAVE_V8HFmode
       else if (mode == V8HFmode)
-       stvx = gen_altivec_stvx_v8hf_2op (src_exp, op1, op2);
+       stvx = TARGET_64BIT
+         ? gen_altivec_stvx_v8hf_2op (src_exp, op1, op2)
+         : gen_altivec_stvx_v8hf_2op_si (src_exp, op1, op2);
 #endif
       else if (mode == V4SImode)
-       stvx = gen_altivec_stvx_v4si_2op (src_exp, op1, op2);
+       stvx = TARGET_64BIT
+         ? gen_altivec_stvx_v4si_2op (src_exp, op1, op2)
+         : gen_altivec_stvx_v4si_2op_si (src_exp, op1, op2);
       else if (mode == V4SFmode)
-       stvx = gen_altivec_stvx_v4sf_2op (src_exp, op1, op2);
+       stvx = TARGET_64BIT
+         ? gen_altivec_stvx_v4sf_2op (src_exp, op1, op2)
+         : gen_altivec_stvx_v4sf_2op_si (src_exp, op1, op2);
       else if (mode == V2DImode)
-       stvx = gen_altivec_stvx_v2di_2op (src_exp, op1, op2);
+       stvx = TARGET_64BIT
+         ? gen_altivec_stvx_v2di_2op (src_exp, op1, op2)
+         : gen_altivec_stvx_v2di_2op_si (src_exp, op1, op2);
       else if (mode == V2DFmode)
-       stvx = gen_altivec_stvx_v2df_2op (src_exp, op1, op2);
+       stvx = TARGET_64BIT
+         ? gen_altivec_stvx_v2df_2op (src_exp, op1, op2)
+         : gen_altivec_stvx_v2df_2op_si (src_exp, op1, op2);
       else if (mode == V1TImode)
-       stvx = gen_altivec_stvx_v1ti_2op (src_exp, op1, op2);
+       stvx = TARGET_64BIT
+         ? gen_altivec_stvx_v1ti_2op (src_exp, op1, op2)
+         : gen_altivec_stvx_v1ti_2op_si (src_exp, op1, op2);
       else
        /* KFmode, TFmode, other modes not expected in this context.  */
        gcc_unreachable ();
@@ -1578,23 +1594,39 @@ rs6000_gen_stvx (enum machine_mode mode, rtx dest_exp, rtx src_exp)
   else                         /* REG_P (memory_address) */
     {
       if (mode == V16QImode)
-       stvx = gen_altivec_stvx_v16qi_1op (src_exp, memory_address);
+       stvx = TARGET_64BIT
+         ? gen_altivec_stvx_v16qi_1op (src_exp, memory_address)
+         : gen_altivec_stvx_v16qi_1op_si (src_exp, memory_address);
       else if (mode == V8HImode)
-       stvx = gen_altivec_stvx_v8hi_1op (src_exp, memory_address);
+       stvx = TARGET_64BIT
+         ? gen_altivec_stvx_v8hi_1op (src_exp, memory_address)
+         : gen_altivec_stvx_v8hi_1op_si (src_exp, memory_address);
 #ifdef HAVE_V8HFmode
       else if (mode == V8HFmode)
-       stvx = gen_altivec_stvx_v8hf_1op (src_exp, memory_address);
+       stvx = TARGET_64BIT
+         ? gen_altivec_stvx_v8hf_1op (src_exp, memory_address)
+         : gen_altivec_stvx_v8hf_1op_si (src_exp, memory_address);
 #endif
       else if (mode == V4SImode)
-       stvx = gen_altivec_stvx_v4si_1op (src_exp, memory_address);
+       stvx =TARGET_64BIT
+         ? gen_altivec_stvx_v4si_1op (src_exp, memory_address)
+         : gen_altivec_stvx_v4si_1op_si (src_exp, memory_address);
       else if (mode == V4SFmode)
-       stvx = gen_altivec_stvx_v4sf_1op (src_exp, memory_address);
+       stvx = TARGET_64BIT
+         ? gen_altivec_stvx_v4sf_1op (src_exp, memory_address)
+         : gen_altivec_stvx_v4sf_1op_si (src_exp, memory_address);
       else if (mode == V2DImode)
-       stvx = gen_altivec_stvx_v2di_1op (src_exp, memory_address);
+       stvx = TARGET_64BIT
+         ? gen_altivec_stvx_v2di_1op (src_exp, memory_address)
+         : gen_altivec_stvx_v2di_1op_si (src_exp, memory_address);
       else if (mode == V2DFmode)
-       stvx = gen_altivec_stvx_v2df_1op (src_exp, memory_address);
+       stvx = TARGET_64BIT
+         ? gen_altivec_stvx_v2df_1op (src_exp, memory_address)
+         : gen_altivec_stvx_v2df_1op_si (src_exp, memory_address);
       else if (mode == V1TImode)
-       stvx = gen_altivec_stvx_v1ti_1op (src_exp, memory_address);
+       stvx = TARGET_64BIT
+         ? gen_altivec_stvx_v1ti_1op (src_exp, memory_address)
+         : gen_altivec_stvx_v1ti_1op_si (src_exp, memory_address);
       else
        /* KFmode, TFmode, other modes not expected in this context.  */
        gcc_unreachable ();
@@ -1702,23 +1734,39 @@ rs6000_gen_lvx (enum machine_mode mode, rtx dest_exp, rtx src_exp)
       op2 = XEXP (memory_address, 1);
 
       if (mode == V16QImode)
-       lvx = gen_altivec_lvx_v16qi_2op (dest_exp, op1, op2);
+       lvx = TARGET_64BIT
+         ? gen_altivec_lvx_v16qi_2op (dest_exp, op1, op2)
+         : gen_altivec_lvx_v16qi_2op_si (dest_exp, op1, op2);
       else if (mode == V8HImode)
-       lvx = gen_altivec_lvx_v8hi_2op (dest_exp, op1, op2);
+       lvx = TARGET_64BIT
+         ? gen_altivec_lvx_v8hi_2op (dest_exp, op1, op2)
+         : gen_altivec_lvx_v8hi_2op_si (dest_exp, op1, op2);
 #ifdef HAVE_V8HFmode
       else if (mode == V8HFmode)
-       lvx = gen_altivec_lvx_v8hf_2op (dest_exp, op1, op2);
+       lvx = TARGET_64BIT
+         ? gen_altivec_lvx_v8hf_2op (dest_exp, op1, op2)
+         : gen_altivec_lvx_v8hf_2op_si (dest_exp, op1, op2);
 #endif
       else if (mode == V4SImode)
-       lvx = gen_altivec_lvx_v4si_2op (dest_exp, op1, op2);
+       lvx = TARGET_64BIT
+         ? gen_altivec_lvx_v4si_2op (dest_exp, op1, op2)
+         : gen_altivec_lvx_v4si_2op_si (dest_exp, op1, op2);
       else if (mode == V4SFmode)
-       lvx = gen_altivec_lvx_v4sf_2op (dest_exp, op1, op2);
+       lvx = TARGET_64BIT
+         ? gen_altivec_lvx_v4sf_2op (dest_exp, op1, op2)
+         : gen_altivec_lvx_v4sf_2op_si (dest_exp, op1, op2);
       else if (mode == V2DImode)
-       lvx = gen_altivec_lvx_v2di_2op (dest_exp, op1, op2);
+       lvx = TARGET_64BIT
+         ? gen_altivec_lvx_v2di_2op (dest_exp, op1, op2)
+         : gen_altivec_lvx_v2di_2op_si (dest_exp, op1, op2);
       else if (mode == V2DFmode)
-       lvx = gen_altivec_lvx_v2df_2op (dest_exp, op1, op2);
+       lvx = TARGET_64BIT
+         ? gen_altivec_lvx_v2df_2op (dest_exp, op1, op2)
+         : gen_altivec_lvx_v2df_2op_si (dest_exp, op1, op2);
       else if (mode == V1TImode)
-       lvx = gen_altivec_lvx_v1ti_2op (dest_exp, op1, op2);
+       lvx = TARGET_64BIT
+         ? gen_altivec_lvx_v1ti_2op (dest_exp, op1, op2)
+         : gen_altivec_lvx_v1ti_2op_si (dest_exp, op1, op2);
       else
        /* KFmode, TFmode, other modes not expected in this context.  */
        gcc_unreachable ();
@@ -1726,23 +1774,39 @@ rs6000_gen_lvx (enum machine_mode mode, rtx dest_exp, rtx src_exp)
   else                         /* REG_P (memory_address) */
     {
       if (mode == V16QImode)
-       lvx = gen_altivec_lvx_v16qi_1op (dest_exp, memory_address);
+       lvx = TARGET_64BIT
+         ? gen_altivec_lvx_v16qi_1op (dest_exp, memory_address)
+         : gen_altivec_lvx_v16qi_1op_si (dest_exp, memory_address);
       else if (mode == V8HImode)
-       lvx = gen_altivec_lvx_v8hi_1op (dest_exp, memory_address);
+       lvx = TARGET_64BIT
+         ? gen_altivec_lvx_v8hi_1op (dest_exp, memory_address)
+         : gen_altivec_lvx_v8hi_1op_si (dest_exp, memory_address);
 #ifdef HAVE_V8HFmode
       else if (mode == V8HFmode)
-       lvx = gen_altivec_lvx_v8hf_1op (dest_exp, memory_address);
+       lvx = TARGET_64BIT
+         ? gen_altivec_lvx_v8hf_1op (dest_exp, memory_address)
+         : gen_altivec_lvx_v8hf_1op_si (dest_exp, memory_address);
 #endif
       else if (mode == V4SImode)
-       lvx = gen_altivec_lvx_v4si_1op (dest_exp, memory_address);
+       lvx = TARGET_64BIT
+         ? gen_altivec_lvx_v4si_1op (dest_exp, memory_address)
+         : gen_altivec_lvx_v4si_1op_si (dest_exp, memory_address);
       else if (mode == V4SFmode)
-       lvx = gen_altivec_lvx_v4sf_1op (dest_exp, memory_address);
+       lvx = TARGET_64BIT
+         ? gen_altivec_lvx_v4sf_1op (dest_exp, memory_address)
+         : gen_altivec_lvx_v4sf_1op_si (dest_exp, memory_address);
       else if (mode == V2DImode)
-       lvx = gen_altivec_lvx_v2di_1op (dest_exp, memory_address);
+       lvx = TARGET_64BIT
+         ? gen_altivec_lvx_v2di_1op (dest_exp, memory_address)
+         : gen_altivec_lvx_v2di_1op_si (dest_exp, memory_address);
       else if (mode == V2DFmode)
-       lvx = gen_altivec_lvx_v2df_1op (dest_exp, memory_address);
+       lvx = TARGET_64BIT
+         ? gen_altivec_lvx_v2df_1op (dest_exp, memory_address)
+         : gen_altivec_lvx_v2df_1op_si (dest_exp, memory_address);
       else if (mode == V1TImode)
-       lvx = gen_altivec_lvx_v1ti_1op (dest_exp, memory_address);
+       lvx = TARGET_64BIT
+         ? gen_altivec_lvx_v1ti_1op (dest_exp, memory_address)
+         : gen_altivec_lvx_v1ti_1op_si (dest_exp, memory_address);
       else
        /* KFmode, TFmode, other modes not expected in this context.  */
        gcc_unreachable ();