[llvm-commits] [compiler-rt] r81558 - in /compiler-rt/trunk: lib/arm/adddf3vfp.S lib/arm/addsf3vfp.S lib/arm/divdf3vfp.S lib/arm/divsf3vfp.S lib/arm/muldf3vfp.S lib/arm/mulsf3vfp.S lib/arm/subdf3vfp.S lib/arm/subsf3vfp.S test/Unit/adddf3vfp.c tes
Sandeep Patel
deeppatel1987 at gmail.com
Fri Sep 11 13:54:37 PDT 2009
Why are these in asm? LLVM should generate these correctly from C.
deep
On Fri, Sep 11, 2009 at 8:02 PM, Nick Kledzik<kledzik at apple.com> wrote:
> Author: kledzik
> Date: Fri Sep 11 15:02:01 2009
> New Revision: 81558
>
> URL: http://llvm.org/viewvc/llvm-project?rev=81558&view=rev
> Log:
> start adding implementation of arm *vfp routines with test cases
>
> Added:
> compiler-rt/trunk/lib/arm/adddf3vfp.S
> compiler-rt/trunk/lib/arm/addsf3vfp.S
> compiler-rt/trunk/lib/arm/divdf3vfp.S
> compiler-rt/trunk/lib/arm/divsf3vfp.S
> compiler-rt/trunk/lib/arm/muldf3vfp.S
> compiler-rt/trunk/lib/arm/mulsf3vfp.S
> compiler-rt/trunk/lib/arm/subdf3vfp.S
> compiler-rt/trunk/lib/arm/subsf3vfp.S
> compiler-rt/trunk/test/Unit/adddf3vfp.c
> compiler-rt/trunk/test/Unit/addsf3vfp.c
> compiler-rt/trunk/test/Unit/divdf3vfp.c
> compiler-rt/trunk/test/Unit/divsf3vfp.c
> compiler-rt/trunk/test/Unit/muldf3vfp.c
> compiler-rt/trunk/test/Unit/mulsf3vfp.c
> compiler-rt/trunk/test/Unit/subdf3vfp.c
> compiler-rt/trunk/test/Unit/subsf3vfp.c
> Modified:
> compiler-rt/trunk/test/Unit/test
>
> Added: compiler-rt/trunk/lib/arm/adddf3vfp.S
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/arm/adddf3vfp.S?rev=81558&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/lib/arm/adddf3vfp.S (added)
> +++ compiler-rt/trunk/lib/arm/adddf3vfp.S Fri Sep 11 15:02:01 2009
> @@ -0,0 +1,23 @@
> +//===-- adddf3vfp.S - Implement adddf3vfp ---------------------------------===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +
> +//
> +// double __adddf3vfp(double a, double b) { return a + b; }
> +//
> +// Adds two double precision floating point numbers using the Darwin
> +// calling convention where double arguments are passsed in GPR pairs
> +//
> + .globl ___adddf3vfp
> +___adddf3vfp:
> + fmdrr d6, r0, r1 // move first param from r0/r1 pair into d6
> + fmdrr d7, r2, r3 // move second param from r2/r3 pair into d7
> + faddd d6, d6, d7
> + fmrrd r0, r1, d6 // move result back to r0/r1 pair
> + bx lr
>
> Added: compiler-rt/trunk/lib/arm/addsf3vfp.S
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/arm/addsf3vfp.S?rev=81558&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/lib/arm/addsf3vfp.S (added)
> +++ compiler-rt/trunk/lib/arm/addsf3vfp.S Fri Sep 11 15:02:01 2009
> @@ -0,0 +1,23 @@
> +//===-- addsf3vfp.S - Implement addsf3vfp ---------------------------------===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +
> +//
> +// extern float __addsf3vfp(float a, float b);
> +//
> +// Adds two single precision floating point numbers using the Darwin
> +// calling convention where single arguments are passsed in GPRs
> +//
> + .globl ___addsf3vfp
> +___addsf3vfp:
> + fmsr s14, r0 // move first param from r0 into float register
> + fmsr s15, r1 // move second param from r1 into float register
> + fadds s14, s14, s15
> + fmrs r0, s14 // move result back to r0
> + bx lr
>
> Added: compiler-rt/trunk/lib/arm/divdf3vfp.S
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/arm/divdf3vfp.S?rev=81558&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/lib/arm/divdf3vfp.S (added)
> +++ compiler-rt/trunk/lib/arm/divdf3vfp.S Fri Sep 11 15:02:01 2009
> @@ -0,0 +1,23 @@
> +//===-- divdf3vfp.S - Implement divdf3vfp ---------------------------------===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +
> +//
> +// extern double __divdf3vfp(double a, double b);
> +//
> +// Divides two double precision floating point numbers using the Darwin
> +// calling convention where double arguments are passsed in GPR pairs
> +//
> + .globl ___divdf3vfp
> +___divdf3vfp:
> + fmdrr d6, r0, r1 // move first param from r0/r1 pair into d6
> + fmdrr d7, r2, r3 // move second param from r2/r3 pair into d7
> + fdivd d5, d6, d7
> + fmrrd r0, r1, d5 // move result back to r0/r1 pair
> + bx lr
>
> Added: compiler-rt/trunk/lib/arm/divsf3vfp.S
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/arm/divsf3vfp.S?rev=81558&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/lib/arm/divsf3vfp.S (added)
> +++ compiler-rt/trunk/lib/arm/divsf3vfp.S Fri Sep 11 15:02:01 2009
> @@ -0,0 +1,23 @@
> +//===-- divsf3vfp.S - Implement divsf3vfp ---------------------------------===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +
> +//
> +// extern float __divsf3vfp(float a, float b);
> +//
> +// Divides two single precision floating point numbers using the Darwin
> +// calling convention where single arguments are passsed like 32-bit ints.
> +//
> + .globl ___divsf3vfp
> +___divsf3vfp:
> + fmsr s14, r0 // move first param from r0 into float register
> + fmsr s15, r1 // move second param from r1 into float register
> + fdivs s13, s14, s15
> + fmrs r0, s13 // move result back to r0
> + bx lr
>
> Added: compiler-rt/trunk/lib/arm/muldf3vfp.S
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/arm/muldf3vfp.S?rev=81558&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/lib/arm/muldf3vfp.S (added)
> +++ compiler-rt/trunk/lib/arm/muldf3vfp.S Fri Sep 11 15:02:01 2009
> @@ -0,0 +1,23 @@
> +//===-- muldf3vfp.S - Implement muldf3vfp ---------------------------------===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +
> +//
> +// extern double __muldf3vfp(double a, double b);
> +//
> +// Multiplies two double precision floating point numbers using the Darwin
> +// calling convention where double arguments are passsed in GPR pairs
> +//
> + .globl ___muldf3vfp
> +___muldf3vfp:
> + fmdrr d6, r0, r1 // move first param from r0/r1 pair into d6
> + fmdrr d7, r2, r3 // move second param from r2/r3 pair into d7
> + fmuld d6, d6, d7
> + fmrrd r0, r1, d6 // move result back to r0/r1 pair
> + bx lr
>
> Added: compiler-rt/trunk/lib/arm/mulsf3vfp.S
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/arm/mulsf3vfp.S?rev=81558&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/lib/arm/mulsf3vfp.S (added)
> +++ compiler-rt/trunk/lib/arm/mulsf3vfp.S Fri Sep 11 15:02:01 2009
> @@ -0,0 +1,23 @@
> +//===-- mulsf3vfp.S - Implement mulsf3vfp ---------------------------------===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +
> +//
> +// extern float __mulsf3vfp(float a, float b);
> +//
> +// Multiplies two single precision floating point numbers using the Darwin
> +// calling convention where single arguments are passsed like 32-bit ints.
> +//
> + .globl ___mulsf3vfp
> +___mulsf3vfp:
> + fmsr s14, r0 // move first param from r0 into float register
> + fmsr s15, r1 // move second param from r1 into float register
> + fmuls s13, s14, s15
> + fmrs r0, s13 // move result back to r0
> + bx lr
>
> Added: compiler-rt/trunk/lib/arm/subdf3vfp.S
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/arm/subdf3vfp.S?rev=81558&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/lib/arm/subdf3vfp.S (added)
> +++ compiler-rt/trunk/lib/arm/subdf3vfp.S Fri Sep 11 15:02:01 2009
> @@ -0,0 +1,23 @@
> +//===-- subdf3vfp.S - Implement subdf3vfp ---------------------------------===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +
> +//
> +// extern double __subdf3vfp(double a, double b);
> +//
> +// Returns difference between two double precision floating point numbers using
> +// the Darwin calling convention where double arguments are passsed in GPR pairs
> +//
> + .globl ___subdf3vfp
> +___subdf3vfp:
> + fmdrr d6, r0, r1 // move first param from r0/r1 pair into d6
> + fmdrr d7, r2, r3 // move second param from r2/r3 pair into d7
> + fsubd d6, d6, d7
> + fmrrd r0, r1, d6 // move result back to r0/r1 pair
> + bx lr
>
> Added: compiler-rt/trunk/lib/arm/subsf3vfp.S
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/arm/subsf3vfp.S?rev=81558&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/lib/arm/subsf3vfp.S (added)
> +++ compiler-rt/trunk/lib/arm/subsf3vfp.S Fri Sep 11 15:02:01 2009
> @@ -0,0 +1,24 @@
> +//===-- subsf3vfp.S - Implement subsf3vfp ---------------------------------===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +
> +//
> +// extern float __subsf3vfp(float a, float b);
> +//
> +// Returns the difference between two single precision floating point numbers
> +// using the Darwin calling convention where single arguments are passsed
> +// like 32-bit ints.
> +//
> + .globl ___subsf3vfp
> +___subsf3vfp:
> + fmsr s14, r0 // move first param from r0 into float register
> + fmsr s15, r1 // move second param from r1 into float register
> + fsubs s14, s14, s15
> + fmrs r0, s14 // move result back to r0
> + bx lr
>
> Added: compiler-rt/trunk/test/Unit/adddf3vfp.c
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/Unit/adddf3vfp.c?rev=81558&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/Unit/adddf3vfp.c (added)
> +++ compiler-rt/trunk/test/Unit/adddf3vfp.c Fri Sep 11 15:02:01 2009
> @@ -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;
> +}
>
> Added: compiler-rt/trunk/test/Unit/addsf3vfp.c
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/Unit/addsf3vfp.c?rev=81558&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/Unit/addsf3vfp.c (added)
> +++ compiler-rt/trunk/test/Unit/addsf3vfp.c Fri Sep 11 15:02:01 2009
> @@ -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;
> +}
>
> Added: compiler-rt/trunk/test/Unit/divdf3vfp.c
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/Unit/divdf3vfp.c?rev=81558&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/Unit/divdf3vfp.c (added)
> +++ compiler-rt/trunk/test/Unit/divdf3vfp.c Fri Sep 11 15:02:01 2009
> @@ -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;
> +}
>
> Added: compiler-rt/trunk/test/Unit/divsf3vfp.c
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/Unit/divsf3vfp.c?rev=81558&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/Unit/divsf3vfp.c (added)
> +++ compiler-rt/trunk/test/Unit/divsf3vfp.c Fri Sep 11 15:02:01 2009
> @@ -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;
> +}
>
> Added: compiler-rt/trunk/test/Unit/muldf3vfp.c
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/Unit/muldf3vfp.c?rev=81558&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/Unit/muldf3vfp.c (added)
> +++ compiler-rt/trunk/test/Unit/muldf3vfp.c Fri Sep 11 15:02:01 2009
> @@ -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;
> +}
>
> Added: compiler-rt/trunk/test/Unit/mulsf3vfp.c
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/Unit/mulsf3vfp.c?rev=81558&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/Unit/mulsf3vfp.c (added)
> +++ compiler-rt/trunk/test/Unit/mulsf3vfp.c Fri Sep 11 15:02:01 2009
> @@ -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;
> +}
>
> Added: compiler-rt/trunk/test/Unit/subdf3vfp.c
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/Unit/subdf3vfp.c?rev=81558&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/Unit/subdf3vfp.c (added)
> +++ compiler-rt/trunk/test/Unit/subdf3vfp.c Fri Sep 11 15:02:01 2009
> @@ -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;
> +}
>
> Added: compiler-rt/trunk/test/Unit/subsf3vfp.c
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/Unit/subsf3vfp.c?rev=81558&view=auto
>
> ==============================================================================
> --- compiler-rt/trunk/test/Unit/subsf3vfp.c (added)
> +++ compiler-rt/trunk/test/Unit/subsf3vfp.c Fri Sep 11 15:02:01 2009
> @@ -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;
> +}
>
> Modified: compiler-rt/trunk/test/Unit/test
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/Unit/test?rev=81558&r1=81557&r2=81558&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/test/Unit/test (original)
> +++ compiler-rt/trunk/test/Unit/test Fri Sep 11 15:02:01 2009
> @@ -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 @@
> # 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"
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
More information about the llvm-commits
mailing list