aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorCarl Love <cel@us.ibm.com>2018-06-28 19:45:07 +0000
committerCarl Love <carll@gcc.gnu.org>2018-06-28 19:45:07 +0000
commit02fa47a905c1e06a5490032cc4bd4f733f4a0453 (patch)
tree11b4a5baf84587b2de21fa211474b5b9df3d38b9 /gcc
parent81c8283fb6fe366ce6b1615cf3d05427e2f91d14 (diff)
downloadgcc-02fa47a905c1e06a5490032cc4bd4f733f4a0453.zip
gcc-02fa47a905c1e06a5490032cc4bd4f733f4a0453.tar.gz
gcc-02fa47a905c1e06a5490032cc4bd4f733f4a0453.tar.bz2
p9-extract-1.c: Add test case.
gcc/testsuite/ChangeLog: 2018-06-28 Carl Love <cel@us.ibm.com> * gcc.target/p9-extract-1.c: Add test case. * gcc.target/builtins-3-p9-runnable.c: Add test case to match name in ABI. From-SVN: r262230
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c42
-rw-r--r--gcc/testsuite/gcc.target/powerpc/p9-extract-1.c8
3 files changed, 56 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 197a468..58860c7 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2018-06-28 Carl Love <cel@us.ibm.com>
+
+ * gcc.target/p9-extract-1.c: Add test case.
+ * gcc.target/builtins-3-p9-runnable.c: Add test case to match
+ name in ABI.
+
2018-06-28 Uros Bizjak <ubizjak@gmail.com>
PR target/86348
diff --git a/gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c b/gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c
index 3197a50..35a81a7 100644
--- a/gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c
+++ b/gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c
@@ -30,6 +30,48 @@ int main() {
printf (" 0B011110100000000, 0B1011010000000000};\n\n");
#endif
+ /* The ABI lists the builtins as:
+
+ vec_extract_fp32_from_shorth()
+ vec_extract_fp32_from_shortl()
+
+ GCC will also accept and map the builtin names
+
+ vec_extract_fp_from_shorth()
+ vec_extract_fp_from_shortl()
+
+ to the same builtins internally. For completeness,
+ test both builtin function names. */
+
+ vfexpt = (vector float){1.0, -2.0, 0.0, 8.5};
+ vfr = vec_extract_fp32_from_shorth(vusha);
+
+#ifdef DEBUG
+ printf ("vec_extract_fp32_from_shorth\n");
+ for (i=0; i<4; i++)
+ printf("result[%d] = %f; expected[%d] = %f\n",
+ i, vfr[i], i, vfexpt[i]);
+#endif
+
+ for (i=0; i<4; i++) {
+ if (vfr[i] != vfexpt[i])
+ abort();
+ }
+
+ vfexpt = (vector float){1.5, 0.5, 1.25, -0.25};
+ vfr = vec_extract_fp32_from_shortl(vusha);
+
+#ifdef DEBUG
+ printf ("\nvec_extract_fp32_from_shortl\n");
+ for (i=0; i<4; i++)
+ printf("result[%d] = %f; expected[%d] = %f\n",
+ i, vfr[i], i, vfexpt[i]);
+#endif
+
+ for (i=0; i<4; i++) {
+ if (vfr[i] != vfexpt[i])
+ abort();
+ }
vfexpt = (vector float){1.0, -2.0, 0.0, 8.5};
vfr = vec_extract_fp_from_shorth(vusha);
diff --git a/gcc/testsuite/gcc.target/powerpc/p9-extract-1.c b/gcc/testsuite/gcc.target/powerpc/p9-extract-1.c
index ab9e766..203f5bf 100644
--- a/gcc/testsuite/gcc.target/powerpc/p9-extract-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/p9-extract-1.c
@@ -122,6 +122,14 @@ extract_bool_int_0 (vector bool int a)
return b;
}
+unsigned short int
+extract_bool_short_int_0 (vector bool short int a)
+{
+ int c = 0;
+ unsigned short int b = vec_extract (a, c);
+ return b;
+}
+
/* { dg-final { scan-assembler "vextub\[lr\]x " } } */
/* { dg-final { scan-assembler "vextuh\[lr\]x " } } */
/* { dg-final { scan-assembler "vextuw\[lr\]x " } } */