Add missing built-in support for 750CL ps_sel instruction
authorRevital Eres <eres@il.ibm.com>
Tue, 25 Sep 2007 15:34:48 +0000 (15:34 +0000)
committerRevital Eres <revitale@gcc.gnu.org>
Tue, 25 Sep 2007 15:34:48 +0000 (15:34 +0000)
From-SVN: r128767

gcc/ChangeLog
gcc/config/rs6000/paired.h
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/ppc-paired.c

index b01a75ae917a71a3929912f804c19d50e584c7e2..9a4d954a785a2f1d8c55dabda603a9c38b01078c 100644 (file)
@@ -1,3 +1,12 @@
+2007-09-25  Revital Eres  <eres@il.ibm.com>
+
+       * config/rs6000/paired.h (paired_sel): New.
+       * config/rs6000/rs6000.c (bdesc_3arg): Add selv2sf4.
+       (rs6000_expand_ternop_builtin): Pass zero const_double operand
+       when expanding selv2sf.
+       * config/rs6000/rs6000.h (rs6000_builtins): Add
+       PAIRED_BUILTIN_SELV2SF4.
+
 2007-09-25  Joseph Myers  <joseph@codesourcery.com>
 
        PR c/32295
index e70d0fa878f6d7aa26adc69e8f360ef2a6f6de2c..314ea74699c7600ca76b8191220f9652115d5a65 100644 (file)
@@ -58,6 +58,7 @@
 #define paired_lx __builtin_paired_lx
 #define paired_cmpu0 __builtin_paired_cmpu0
 #define paired_cmpu1 __builtin_paired_cmpu1
+#define paired_sel __builtin_paired_selv2sf4
 
 /* Condition register codes for Paired predicates. */
 #define LT            0
index 0e9db742af33bd24437a6391a726c371fa80658f..aa4da105fa192699c72a0b7be2b251b7b4a93d20 100644 (file)
@@ -6674,6 +6674,7 @@ static const struct builtin_description bdesc_3arg[] =
   { 0, CODE_FOR_paired_nmadd, "__builtin_paired_nmadd", PAIRED_BUILTIN_NMADD },
   { 0, CODE_FOR_paired_sum0, "__builtin_paired_sum0", PAIRED_BUILTIN_SUM0 },
   { 0, CODE_FOR_paired_sum1, "__builtin_paired_sum1", PAIRED_BUILTIN_SUM1 },
+  { 0, CODE_FOR_selv2sf4, "__builtin_paired_selv2sf4", PAIRED_BUILTIN_SELV2SF4 },
 };
 
 /* DST operations: void foo (void *, const int, const char).  */
@@ -7755,7 +7756,10 @@ rs6000_expand_ternop_builtin (enum insn_code icode, tree exp, rtx target)
   if (! (*insn_data[icode].operand[3].predicate) (op2, mode2))
     op2 = copy_to_mode_reg (mode2, op2);
 
-  pat = GEN_FCN (icode) (target, op0, op1, op2);
+  if (TARGET_PAIRED_FLOAT && icode == CODE_FOR_selv2sf4)
+    pat = GEN_FCN (icode) (target, op0, op1, op2, CONST0_RTX (SFmode));
+  else 
+    pat = GEN_FCN (icode) (target, op0, op1, op2);
   if (! pat)
     return 0;
   emit_insn (pat);
index 5ace155565054475fc866ab05f120b9b9c6c213f..4b270857c69e7e12c38ef2455ba8d1fe28947e27 100644 (file)
@@ -2990,6 +2990,7 @@ enum rs6000_builtins
   PAIRED_BUILTIN_MADDS1,
   PAIRED_BUILTIN_STX,
   PAIRED_BUILTIN_LX,
+  PAIRED_BUILTIN_SELV2SF4,
   PAIRED_BUILTIN_CMPU0,
   PAIRED_BUILTIN_CMPU1,
 
index 4f8d576c4d11d39be264a1b1c43245f3d5ab3427..a4c4923729f9eb3adbfd433f1ff1774c7c8ca2b2 100644 (file)
@@ -1,3 +1,7 @@
+2007-09-25  Revital Eres  <eres@il.ibm.com>
+
+       * testsuite/gcc.target/powerpc/ppc-paired.c (paired_sel): Add.
+
 2007-09-25  Joseph Myers  <joseph@codesourcery.com>
 
        PR c/32295
index f6f3b6e5babcd0b917c1cb90a5ce7496ac4e7c98..a3b61fd3fd30e88aaad5dfdb0eeb93bde5e0e5a9 100644 (file)
@@ -33,6 +33,7 @@ test_api ()
   b = paired_nabs (a);
   b = paired_sqrt (a);
   b = paired_res (a);
+  b = paired_sel (a, b, c);
 }
 
 int