summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorNick Kledzik <kledzik@apple.com>2009-09-11 20:02:01 +0000
committerNick Kledzik <kledzik@apple.com>2009-09-11 20:02:01 +0000
commitd47c2cfb86a7d9746f7665a73fa25a724c4ce354 (patch)
treeee9fa8b50a532af8e377c279d3fb228dec40b2bb /test
parent3ea8287d4f270edfa965d4defd824f4d6a117e6d (diff)
downloadcompiler-rt-d47c2cfb86a7d9746f7665a73fa25a724c4ce354.tar.gz
compiler-rt-d47c2cfb86a7d9746f7665a73fa25a724c4ce354.tar.bz2
compiler-rt-d47c2cfb86a7d9746f7665a73fa25a724c4ce354.tar.xz
start adding implementation of arm *vfp routines with test cases
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@81558 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/Unit/adddf3vfp.c46
-rw-r--r--test/Unit/addsf3vfp.c46
-rw-r--r--test/Unit/divdf3vfp.c46
-rw-r--r--test/Unit/divsf3vfp.c46
-rw-r--r--test/Unit/muldf3vfp.c48
-rw-r--r--test/Unit/mulsf3vfp.c48
-rw-r--r--test/Unit/subdf3vfp.c46
-rw-r--r--test/Unit/subsf3vfp.c46
-rwxr-xr-xtest/Unit/test42
9 files changed, 402 insertions, 12 deletions
diff --git a/test/Unit/adddf3vfp.c b/test/Unit/adddf3vfp.c
new file mode 100644
index 00000000..c5bec05c
--- /dev/null
+++ b/test/Unit/adddf3vfp.c
@@ -0,0 +1,46 @@
+//===-- adddf3vfp_test.c - Test __adddf3vfp -------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file tests __adddf3vfp for the compiler_rt library.
+//
+//===----------------------------------------------------------------------===//
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+
+#if __arm__
+extern double __adddf3vfp(double a, double b);
+
+int test__adddf3vfp(double a, double b)
+{
+ double actual = __adddf3vfp(a, b);
+ double expected = a + b;
+ if (actual != expected)
+ printf("error in test__adddf3vfp(%f, %f) = %f, expected %f\n",
+ a, b, actual, expected);
+ return actual != expected;
+}
+#endif
+
+int main()
+{
+#if __arm__
+ if (test__adddf3vfp(1.0, 1.0))
+ return 1;
+ if (test__adddf3vfp(HUGE_VAL, HUGE_VAL))
+ return 1;
+ if (test__adddf3vfp(0.0, HUGE_VAL))
+ return 1;
+ if (test__adddf3vfp(0.0, -0.0))
+ return 1;
+#endif
+ return 0;
+}
diff --git a/test/Unit/addsf3vfp.c b/test/Unit/addsf3vfp.c
new file mode 100644
index 00000000..0a731a9b
--- /dev/null
+++ b/test/Unit/addsf3vfp.c
@@ -0,0 +1,46 @@
+//===-- addsf3vfp_test.c - Test __addsf3vfp -------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file tests __addsf3vfp for the compiler_rt library.
+//
+//===----------------------------------------------------------------------===//
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+
+extern float __addsf3vfp(float a, float b);
+
+#if __arm__
+int test__addsf3vfp(float a, float b)
+{
+ float actual = __addsf3vfp(a, b);
+ float expected = a + b;
+ if (actual != expected)
+ printf("error in test__addsf3vfp(%f, %f) = %f, expected %f\n",
+ a, b, actual, expected);
+ return actual != expected;
+}
+#endif
+
+int main()
+{
+#if __arm__
+ if (test__addsf3vfp(1.0, 1.0))
+ return 1;
+ if (test__addsf3vfp(HUGE_VALF, HUGE_VALF))
+ return 1;
+ if (test__addsf3vfp(0.0, HUGE_VALF))
+ return 1;
+ if (test__addsf3vfp(0.0, -0.0))
+ return 1;
+#endif
+ return 0;
+}
diff --git a/test/Unit/divdf3vfp.c b/test/Unit/divdf3vfp.c
new file mode 100644
index 00000000..2ca382a5
--- /dev/null
+++ b/test/Unit/divdf3vfp.c
@@ -0,0 +1,46 @@
+//===-- divdf3vfp_test.c - Test __divdf3vfp -------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file tests __divdf3vfp for the compiler_rt library.
+//
+//===----------------------------------------------------------------------===//
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+
+#if __arm__
+extern double __divdf3vfp(double a, double b);
+
+int test__divdf3vfp(double a, double b)
+{
+ double actual = __divdf3vfp(a, b);
+ double expected = a / b;
+ if (actual != expected)
+ printf("error in test__divdf3vfp(%f, %f) = %f, expected %f\n",
+ a, b, actual, expected);
+ return actual != expected;
+}
+#endif
+
+int main()
+{
+#if __arm__
+ if (test__divdf3vfp(1.0, 1.0))
+ return 1;
+ if (test__divdf3vfp(12345.678, 1.23))
+ return 1;
+ if (test__divdf3vfp(-10.0, 0.25))
+ return 1;
+ if (test__divdf3vfp(10.0, -2.0))
+ return 1;
+#endif
+ return 0;
+}
diff --git a/test/Unit/divsf3vfp.c b/test/Unit/divsf3vfp.c
new file mode 100644
index 00000000..0dbae2fc
--- /dev/null
+++ b/test/Unit/divsf3vfp.c
@@ -0,0 +1,46 @@
+//===-- divsf3vfp_test.c - Test __divsf3vfp -------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file tests __divsf3vfp for the compiler_rt library.
+//
+//===----------------------------------------------------------------------===//
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+
+extern float __divsf3vfp(float a, float b);
+
+#if __arm__
+int test__divsf3vfp(float a, float b)
+{
+ float actual = __divsf3vfp(a, b);
+ float expected = a / b;
+ if (actual != expected)
+ printf("error in test__divsf3vfp(%f, %f) = %f, expected %f\n",
+ a, b, actual, expected);
+ return actual != expected;
+}
+#endif
+
+int main()
+{
+#if __arm__
+ if (test__divsf3vfp(1.0, 1.0))
+ return 1;
+ if (test__divsf3vfp(12345.678, 1.23))
+ return 1;
+ if (test__divsf3vfp(0.0, HUGE_VALF))
+ return 1;
+ if (test__divsf3vfp(10.0, -2.0))
+ return 1;
+#endif
+ return 0;
+}
diff --git a/test/Unit/muldf3vfp.c b/test/Unit/muldf3vfp.c
new file mode 100644
index 00000000..a99d8e9a
--- /dev/null
+++ b/test/Unit/muldf3vfp.c
@@ -0,0 +1,48 @@
+//===-- muldf3vfp_test.c - Test __muldf3vfp -------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file tests __muldf3vfp for the compiler_rt library.
+//
+//===----------------------------------------------------------------------===//
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+
+#if __arm__
+extern double __muldf3vfp(double a, double b);
+
+int test__muldf3vfp(double a, double b)
+{
+ double actual = __muldf3vfp(a, b);
+ double expected = a * b;
+ if (actual != expected)
+ printf("error in test__muldf3vfp(%f, %f) = %f, expected %f\n",
+ a, b, actual, expected);
+ return actual != expected;
+}
+#endif
+
+int main()
+{
+#if __arm__
+ if (test__muldf3vfp(0.5, 10.0))
+ return 1;
+ if (test__muldf3vfp(-0.5, -2.0))
+ return 1;
+ if (test__muldf3vfp(HUGE_VALF, 0.25))
+ return 1;
+ if (test__muldf3vfp(-0.125, HUGE_VALF))
+ return 1;
+ if (test__muldf3vfp(0.0, -0.0))
+ return 1;
+#endif
+ return 0;
+}
diff --git a/test/Unit/mulsf3vfp.c b/test/Unit/mulsf3vfp.c
new file mode 100644
index 00000000..f706c47e
--- /dev/null
+++ b/test/Unit/mulsf3vfp.c
@@ -0,0 +1,48 @@
+//===-- mulsf3vfp_test.c - Test __mulsf3vfp -------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file tests __mulsf3vfp for the compiler_rt library.
+//
+//===----------------------------------------------------------------------===//
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+
+extern float __mulsf3vfp(float a, float b);
+
+#if __arm__
+int test__mulsf3vfp(float a, float b)
+{
+ float actual = __mulsf3vfp(a, b);
+ float expected = a * b;
+ if (actual != expected)
+ printf("error in test__mulsf3vfp(%f, %f) = %f, expected %f\n",
+ a, b, actual, expected);
+ return actual != expected;
+}
+#endif
+
+int main()
+{
+#if __arm__
+ if (test__mulsf3vfp(0.5, 10.0))
+ return 1;
+ if (test__mulsf3vfp(-0.5, -2.0))
+ return 1;
+ if (test__mulsf3vfp(HUGE_VALF, 0.25))
+ return 1;
+ if (test__mulsf3vfp(-0.125, HUGE_VALF))
+ return 1;
+ if (test__mulsf3vfp(0.0, -0.0))
+ return 1;
+#endif
+ return 0;
+}
diff --git a/test/Unit/subdf3vfp.c b/test/Unit/subdf3vfp.c
new file mode 100644
index 00000000..ee5a4920
--- /dev/null
+++ b/test/Unit/subdf3vfp.c
@@ -0,0 +1,46 @@
+//===-- subdf3vfp_test.c - Test __subdf3vfp -------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file tests __subdf3vfp for the compiler_rt library.
+//
+//===----------------------------------------------------------------------===//
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+
+#if __arm__
+extern double __subdf3vfp(double a, double b);
+
+int test__subdf3vfp(double a, double b)
+{
+ double actual = __subdf3vfp(a, b);
+ double expected = a - b;
+ if (actual != expected)
+ printf("error in test__subdf3vfp(%f, %f) = %f, expected %f\n",
+ a, b, actual, expected);
+ return actual != expected;
+}
+#endif
+
+int main()
+{
+#if __arm__
+ if (test__subdf3vfp(1.0, 1.0))
+ return 1;
+ if (test__subdf3vfp(1234.567, 765.4321))
+ return 1;
+ if (test__subdf3vfp(-123.0, -678.0))
+ return 1;
+ if (test__subdf3vfp(0.0, -0.0))
+ return 1;
+#endif
+ return 0;
+}
diff --git a/test/Unit/subsf3vfp.c b/test/Unit/subsf3vfp.c
new file mode 100644
index 00000000..f6853e3d
--- /dev/null
+++ b/test/Unit/subsf3vfp.c
@@ -0,0 +1,46 @@
+//===-- subsf3vfp_test.c - Test __subsf3vfp -------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file tests __subsf3vfp for the compiler_rt library.
+//
+//===----------------------------------------------------------------------===//
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+
+extern float __subsf3vfp(float a, float b);
+
+#if __arm__
+int test__subsf3vfp(float a, float b)
+{
+ float actual = __subsf3vfp(a, b);
+ float expected = a - b;
+ if (actual != expected)
+ printf("error in test__subsf3vfp(%f, %f) = %f, expected %f\n",
+ a, b, actual, expected);
+ return actual != expected;
+}
+#endif
+
+int main()
+{
+#if __arm__
+ if (test__subsf3vfp(1.0, 1.0))
+ return 1;
+ if (test__subsf3vfp(1234.567, 765.4321))
+ return 1;
+ if (test__subsf3vfp(-123.0, -678.0))
+ return 1;
+ if (test__subsf3vfp(0.0, -0.0))
+ return 1;
+#endif
+ return 0;
+}
diff --git a/test/Unit/test b/test/Unit/test
index e5f540e9..0ec771c4 100755
--- a/test/Unit/test
+++ b/test/Unit/test
@@ -1,9 +1,17 @@
#!/usr/bin/env bash
ARCHS='<host>'
+REMOTE=0
if test `uname` = "Darwin"; then
- ARCHS="i386 x86_64 ppc"
- LIBS="-lSystem"
+ if test "$1" = "armv6"; then
+ ARCHS="armv6"
+ LIBS="-lSystem"
+ REMOTE=1
+ mkdir -p remote
+ else
+ ARCHS="i386 x86_64 ppc"
+ LIBS="-lSystem"
+ fi
else
LIBS="-lc -lm"
fi
@@ -30,20 +38,30 @@ for ARCH in $ARCHS; do
# this test requires an extra compiler option
EXTRA="-fnested-functions"
fi
- if gcc $CFLAGS $FILE ../../Release/libcompiler_rt.Optimized.a $LIBS $EXTRA
- then
- echo "Testing $FILE for $ARCH"
- if ./a.out
+ if test $REMOTE
+ then
+ if gcc $CFLAGS $FILE ../../Release/libcompiler_rt.Optimized.a $LIBS $EXTRA -o ./remote/$FILE.exe
then
- rm ./a.out
+ echo "Built $FILE.exe for $ARCH"
+ else
+ echo "$FILE failed to compile"
+ fi
+ else
+ if gcc $CFLAGS $FILE ../../Release/libcompiler_rt.Optimized.a $LIBS $EXTRA
+ then
+ echo "Testing $FILE for $ARCH"
+ if ./a.out
+ then
+ rm ./a.out
+ else
+ echo "fail"
+ exit 1
+ fi
else
- echo "fail"
+ echo "$FILE failed to compile"
exit 1
fi
- else
- echo "$FILE failed to compile"
- exit 1
- fi
+ fi
done
done
echo "pass"