aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRevital Eres <eres@il.ibm.com>2007-09-25 15:34:48 +0000
committerRevital Eres <revitale@gcc.gnu.org>2007-09-25 15:34:48 +0000
commit49e39588b6c99f93b6a092c43549a85f2fe9c690 (patch)
treec6776f0826f33d978a7bea8d6727d1ac64100fc8
parent808d6eaa019dd81d95656e2e05bdf34e17c63484 (diff)
downloadgcc-49e39588b6c99f93b6a092c43549a85f2fe9c690.zip
gcc-49e39588b6c99f93b6a092c43549a85f2fe9c690.tar.gz
gcc-49e39588b6c99f93b6a092c43549a85f2fe9c690.tar.bz2
Add missing built-in support for 750CL ps_sel instruction
From-SVN: r128767
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/rs6000/paired.h1
-rw-r--r--gcc/config/rs6000/rs6000.c6
-rw-r--r--gcc/config/rs6000/rs6000.h1
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.target/powerpc/ppc-paired.c1
6 files changed, 21 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b01a75a..9a4d954 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/rs6000/paired.h b/gcc/config/rs6000/paired.h
index e70d0fa..314ea74 100644
--- a/gcc/config/rs6000/paired.h
+++ b/gcc/config/rs6000/paired.h
@@ -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
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 0e9db74..aa4da10 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -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);
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index 5ace155..4b27085 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -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,
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 4f8d576..a4c4923 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
diff --git a/gcc/testsuite/gcc.target/powerpc/ppc-paired.c b/gcc/testsuite/gcc.target/powerpc/ppc-paired.c
index f6f3b6e..a3b61fd 100644
--- a/gcc/testsuite/gcc.target/powerpc/ppc-paired.c
+++ b/gcc/testsuite/gcc.target/powerpc/ppc-paired.c
@@ -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