aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKewen Lin <linkw@linux.ibm.com>2022-04-27 22:34:27 -0500
committerKewen Lin <linkw@linux.ibm.com>2022-04-27 22:34:27 -0500
commit84c1c9b013faf8cdac31db3f6612bd9d5f70ddb3 (patch)
tree57c19ddc581414548f509e089ef6e43653b66a82 /gcc
parentd5b66a905322262483af5c4ca6cb6676c24e1f3f (diff)
downloadgcc-84c1c9b013faf8cdac31db3f6612bd9d5f70ddb3.zip
gcc-84c1c9b013faf8cdac31db3f6612bd9d5f70ddb3.tar.gz
gcc-84c1c9b013faf8cdac31db3f6612bd9d5f70ddb3.tar.bz2
testsuite: Add test case for pack/unpack bifs at soft-float [PR105334]
This patch is to add the test coverage for the two recent fixes r12-8091 and r12-8226 from Segher, aix is skipped since it takes soft-float and long-double-128 incompatible. PR target/105334 gcc/testsuite/ChangeLog: * gcc.target/powerpc/pr105334.c: New test.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr105334.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/powerpc/pr105334.c b/gcc/testsuite/gcc.target/powerpc/pr105334.c
new file mode 100644
index 0000000..7664e03
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr105334.c
@@ -0,0 +1,31 @@
+/* Skip this on aix, since it takes soft-float and long-double-128
+ incompatible and warns it. */
+/* { dg-skip-if "aix long-double-128 soft-float" { powerpc*-*-aix* } } */
+/* { dg-options "-mlong-double-128 -msoft-float" } */
+
+/* Verify there is no ICE. */
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <math.h>
+
+#define PACK __builtin_pack_ibm128
+#define UNPACK __builtin_unpack_ibm128
+#define LDOUBLE __ibm128
+
+extern LDOUBLE bar (LDOUBLE);
+
+int
+main (void)
+{
+ double high = pow (2.0, 60);
+ double low = 2.0;
+ LDOUBLE a = ((LDOUBLE) high) + ((LDOUBLE) low);
+ double x0 = UNPACK (a, 0);
+ double x1 = UNPACK (a, 1);
+ LDOUBLE b = PACK (x0, x1);
+ LDOUBLE c = bar (b);
+
+ return c > a;
+}
+