gcc/testsuite/
        * gcc.target/xtensa/double-conv.c: New test.
        * gcc.target/xtensa/float-conv.c: Likewise.
---
 gcc/testsuite/gcc.target/xtensa/double-conv.c | 44 +++++++++++++++++++
 gcc/testsuite/gcc.target/xtensa/float-conv.c  | 31 +++++++++++++
 2 files changed, 75 insertions(+)
 create mode 100644 gcc/testsuite/gcc.target/xtensa/double-conv.c
 create mode 100644 gcc/testsuite/gcc.target/xtensa/float-conv.c

diff --git a/gcc/testsuite/gcc.target/xtensa/double-conv.c 
b/gcc/testsuite/gcc.target/xtensa/double-conv.c
new file mode 100644
index 000000000000..61d839c6a145
--- /dev/null
+++ b/gcc/testsuite/gcc.target/xtensa/double-conv.c
@@ -0,0 +1,44 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target hard_float } */
+
+void si(int v);
+void ui(unsigned int v);
+void f(float v);
+void d(double v);
+
+void dsi(double v)
+{
+       si(v);
+}
+
+void dui(double v)
+{
+       ui(v);
+}
+
+void sid(int v)
+{
+       d(v);
+}
+
+void uid(unsigned int v)
+{
+       d(v);
+}
+
+void fd(float v)
+{
+       d(v);
+}
+
+void df(double v)
+{
+       f(v);
+}
+
+/* { dg-final { scan-assembler-times "trunc.d\t" 2 } } */
+/* { dg-final { scan-assembler-times "utrunc.d\t" 1 } } */
+/* { dg-final { scan-assembler-times "float.d\t" 2 } } */
+/* { dg-final { scan-assembler-times "ufloat.d\t" 1 } } */
+/* { dg-final { scan-assembler-times "cvts.d\t" 1 } } */
+/* { dg-final { scan-assembler-times "cvtd.s\t" 1 } } */
diff --git a/gcc/testsuite/gcc.target/xtensa/float-conv.c 
b/gcc/testsuite/gcc.target/xtensa/float-conv.c
new file mode 100644
index 000000000000..e486018f84ab
--- /dev/null
+++ b/gcc/testsuite/gcc.target/xtensa/float-conv.c
@@ -0,0 +1,31 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target hard_float } */
+
+void si(int v);
+void ui(unsigned int v);
+void f(float v);
+
+void fsi(float v)
+{
+       si(v);
+}
+
+void fui(float v)
+{
+       ui(v);
+}
+
+void sif(int v)
+{
+       f(v);
+}
+
+void uif(unsigned int v)
+{
+       f(v);
+}
+
+/* { dg-final { scan-assembler-times "trunc.s\t" 2 } } */
+/* { dg-final { scan-assembler-times "utrunc.s\t" 1 } } */
+/* { dg-final { scan-assembler-times "float.s\t" 2 } } */
+/* { dg-final { scan-assembler-times "ufloat.s\t" 1 } } */
-- 
2.47.3

Reply via email to