[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