From owner-svn-src-stable@FreeBSD.ORG Fri May 25 17:14:49 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 141181065676; Fri, 25 May 2012 17:14:49 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EAEBE8FC25; Fri, 25 May 2012 17:14:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4PHEmvP023129; Fri, 25 May 2012 17:14:48 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4PHEmgO023068; Fri, 25 May 2012 17:14:48 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201205251714.q4PHEmgO023068@svn.freebsd.org> From: Marius Strobl Date: Fri, 25 May 2012 17:14:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236011 - in stable/9/contrib/compiler-rt: . lib lib/arm lib/ppc lib/x86_64 X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 May 2012 17:14:49 -0000 Author: marius Date: Fri May 25 17:14:47 2012 New Revision: 236011 URL: http://svn.freebsd.org/changeset/base/236011 Log: MFC: r222656 Upgrade libcompiler_rt from revision 117047 to 132478. It seems there have only been a small amount to the compiler-rt source code in the mean time. I'd rather have the code in sync as much as possible by the time we release 9.0. Changes: - The libcompiler_rt library is now dual licensed under both the University of Illinois "BSD-Like" license and the MIT license. - Our local modifications for using .hidden instead of .private_extern have been upstreamed, meaning our changes to lib/assembly.h can now be reverted. - A possible endless recursion in __modsi3() has been fixed. - Support for ARM EABI has been added, but it has no effect on FreeBSD (yet). - The functions __udivmodsi4 and __divmodsi4 have been added. Requested by: many, including bf@ and Pedro Giffuni Added: stable/9/contrib/compiler-rt/lib/int_endianness.h - copied unchanged from r229135, head/contrib/compiler-rt/lib/int_endianness.h stable/9/contrib/compiler-rt/lib/int_math.h - copied unchanged from r229135, head/contrib/compiler-rt/lib/int_math.h stable/9/contrib/compiler-rt/lib/int_types.h - copied unchanged from r229135, head/contrib/compiler-rt/lib/int_types.h stable/9/contrib/compiler-rt/lib/int_util.c - copied unchanged from r229135, head/contrib/compiler-rt/lib/int_util.c stable/9/contrib/compiler-rt/lib/int_util.h - copied unchanged from r229135, head/contrib/compiler-rt/lib/int_util.h stable/9/contrib/compiler-rt/lib/mulodi4.c - copied unchanged from r229135, head/contrib/compiler-rt/lib/mulodi4.c stable/9/contrib/compiler-rt/lib/mulosi4.c - copied unchanged from r229135, head/contrib/compiler-rt/lib/mulosi4.c stable/9/contrib/compiler-rt/lib/muloti4.c - copied unchanged from r229135, head/contrib/compiler-rt/lib/muloti4.c Deleted: stable/9/contrib/compiler-rt/lib/abi.h stable/9/contrib/compiler-rt/lib/apple_versioning.c stable/9/contrib/compiler-rt/lib/endianness.h Modified: stable/9/contrib/compiler-rt/LICENSE.TXT stable/9/contrib/compiler-rt/README.txt stable/9/contrib/compiler-rt/lib/absvdi2.c stable/9/contrib/compiler-rt/lib/absvsi2.c stable/9/contrib/compiler-rt/lib/absvti2.c stable/9/contrib/compiler-rt/lib/adddf3.c stable/9/contrib/compiler-rt/lib/addsf3.c stable/9/contrib/compiler-rt/lib/addvdi3.c stable/9/contrib/compiler-rt/lib/addvsi3.c stable/9/contrib/compiler-rt/lib/addvti3.c stable/9/contrib/compiler-rt/lib/arm/adddf3vfp.S stable/9/contrib/compiler-rt/lib/arm/addsf3vfp.S stable/9/contrib/compiler-rt/lib/arm/divdf3vfp.S stable/9/contrib/compiler-rt/lib/arm/divsf3vfp.S stable/9/contrib/compiler-rt/lib/arm/eqdf2vfp.S stable/9/contrib/compiler-rt/lib/arm/eqsf2vfp.S stable/9/contrib/compiler-rt/lib/arm/extendsfdf2vfp.S stable/9/contrib/compiler-rt/lib/arm/fixdfsivfp.S stable/9/contrib/compiler-rt/lib/arm/fixsfsivfp.S stable/9/contrib/compiler-rt/lib/arm/fixunsdfsivfp.S stable/9/contrib/compiler-rt/lib/arm/fixunssfsivfp.S stable/9/contrib/compiler-rt/lib/arm/floatsidfvfp.S stable/9/contrib/compiler-rt/lib/arm/floatsisfvfp.S stable/9/contrib/compiler-rt/lib/arm/floatunssidfvfp.S stable/9/contrib/compiler-rt/lib/arm/floatunssisfvfp.S stable/9/contrib/compiler-rt/lib/arm/gedf2vfp.S stable/9/contrib/compiler-rt/lib/arm/gesf2vfp.S stable/9/contrib/compiler-rt/lib/arm/gtdf2vfp.S stable/9/contrib/compiler-rt/lib/arm/gtsf2vfp.S stable/9/contrib/compiler-rt/lib/arm/ledf2vfp.S stable/9/contrib/compiler-rt/lib/arm/lesf2vfp.S stable/9/contrib/compiler-rt/lib/arm/ltdf2vfp.S stable/9/contrib/compiler-rt/lib/arm/ltsf2vfp.S stable/9/contrib/compiler-rt/lib/arm/muldf3vfp.S stable/9/contrib/compiler-rt/lib/arm/mulsf3vfp.S stable/9/contrib/compiler-rt/lib/arm/nedf2vfp.S stable/9/contrib/compiler-rt/lib/arm/negdf2vfp.S stable/9/contrib/compiler-rt/lib/arm/negsf2vfp.S stable/9/contrib/compiler-rt/lib/arm/nesf2vfp.S stable/9/contrib/compiler-rt/lib/arm/subdf3vfp.S stable/9/contrib/compiler-rt/lib/arm/subsf3vfp.S stable/9/contrib/compiler-rt/lib/arm/truncdfsf2vfp.S stable/9/contrib/compiler-rt/lib/arm/unorddf2vfp.S stable/9/contrib/compiler-rt/lib/arm/unordsf2vfp.S stable/9/contrib/compiler-rt/lib/ashldi3.c stable/9/contrib/compiler-rt/lib/ashrdi3.c stable/9/contrib/compiler-rt/lib/assembly.h stable/9/contrib/compiler-rt/lib/clear_cache.c stable/9/contrib/compiler-rt/lib/clzdi2.c stable/9/contrib/compiler-rt/lib/clzsi2.c stable/9/contrib/compiler-rt/lib/cmpdi2.c stable/9/contrib/compiler-rt/lib/ctzdi2.c stable/9/contrib/compiler-rt/lib/ctzsi2.c stable/9/contrib/compiler-rt/lib/divdc3.c stable/9/contrib/compiler-rt/lib/divdf3.c stable/9/contrib/compiler-rt/lib/divdi3.c stable/9/contrib/compiler-rt/lib/divmoddi4.c stable/9/contrib/compiler-rt/lib/divmodsi4.c stable/9/contrib/compiler-rt/lib/divsc3.c stable/9/contrib/compiler-rt/lib/divsf3.c stable/9/contrib/compiler-rt/lib/divsi3.c stable/9/contrib/compiler-rt/lib/divxc3.c stable/9/contrib/compiler-rt/lib/enable_execute_stack.c stable/9/contrib/compiler-rt/lib/eprintf.c stable/9/contrib/compiler-rt/lib/extendsfdf2.c stable/9/contrib/compiler-rt/lib/ffsdi2.c stable/9/contrib/compiler-rt/lib/fixdfdi.c stable/9/contrib/compiler-rt/lib/fixdfsi.c stable/9/contrib/compiler-rt/lib/fixsfdi.c stable/9/contrib/compiler-rt/lib/fixsfsi.c stable/9/contrib/compiler-rt/lib/fixunsdfdi.c stable/9/contrib/compiler-rt/lib/fixunsdfsi.c stable/9/contrib/compiler-rt/lib/fixunssfdi.c stable/9/contrib/compiler-rt/lib/fixunssfsi.c stable/9/contrib/compiler-rt/lib/floatdidf.c stable/9/contrib/compiler-rt/lib/floatdisf.c stable/9/contrib/compiler-rt/lib/floatsidf.c stable/9/contrib/compiler-rt/lib/floatsisf.c stable/9/contrib/compiler-rt/lib/floattidf.c stable/9/contrib/compiler-rt/lib/floattisf.c stable/9/contrib/compiler-rt/lib/floattixf.c stable/9/contrib/compiler-rt/lib/floatundidf.c stable/9/contrib/compiler-rt/lib/floatundisf.c stable/9/contrib/compiler-rt/lib/floatunsidf.c stable/9/contrib/compiler-rt/lib/floatunsisf.c stable/9/contrib/compiler-rt/lib/floatuntidf.c stable/9/contrib/compiler-rt/lib/floatuntisf.c stable/9/contrib/compiler-rt/lib/floatuntixf.c stable/9/contrib/compiler-rt/lib/fp_lib.h stable/9/contrib/compiler-rt/lib/gcc_personality_v0.c stable/9/contrib/compiler-rt/lib/int_lib.h stable/9/contrib/compiler-rt/lib/lshrdi3.c stable/9/contrib/compiler-rt/lib/moddi3.c stable/9/contrib/compiler-rt/lib/modsi3.c stable/9/contrib/compiler-rt/lib/muldc3.c stable/9/contrib/compiler-rt/lib/muldf3.c stable/9/contrib/compiler-rt/lib/muldi3.c stable/9/contrib/compiler-rt/lib/mulsc3.c stable/9/contrib/compiler-rt/lib/mulsf3.c stable/9/contrib/compiler-rt/lib/mulvdi3.c stable/9/contrib/compiler-rt/lib/mulvsi3.c stable/9/contrib/compiler-rt/lib/mulvti3.c stable/9/contrib/compiler-rt/lib/mulxc3.c stable/9/contrib/compiler-rt/lib/negdf2.c stable/9/contrib/compiler-rt/lib/negsf2.c stable/9/contrib/compiler-rt/lib/negvdi2.c stable/9/contrib/compiler-rt/lib/negvsi2.c stable/9/contrib/compiler-rt/lib/negvti2.c stable/9/contrib/compiler-rt/lib/paritydi2.c stable/9/contrib/compiler-rt/lib/paritysi2.c stable/9/contrib/compiler-rt/lib/popcountdi2.c stable/9/contrib/compiler-rt/lib/popcountsi2.c stable/9/contrib/compiler-rt/lib/powidf2.c stable/9/contrib/compiler-rt/lib/powisf2.c stable/9/contrib/compiler-rt/lib/ppc/DD.h stable/9/contrib/compiler-rt/lib/ppc/divtc3.c stable/9/contrib/compiler-rt/lib/ppc/fixtfdi.c stable/9/contrib/compiler-rt/lib/ppc/fixunstfdi.c stable/9/contrib/compiler-rt/lib/ppc/floatditf.c stable/9/contrib/compiler-rt/lib/ppc/floatunditf.c stable/9/contrib/compiler-rt/lib/ppc/multc3.c stable/9/contrib/compiler-rt/lib/subdf3.c stable/9/contrib/compiler-rt/lib/subsf3.c stable/9/contrib/compiler-rt/lib/subvdi3.c stable/9/contrib/compiler-rt/lib/subvsi3.c stable/9/contrib/compiler-rt/lib/subvti3.c stable/9/contrib/compiler-rt/lib/trampoline_setup.c stable/9/contrib/compiler-rt/lib/truncdfsf2.c stable/9/contrib/compiler-rt/lib/ucmpdi2.c stable/9/contrib/compiler-rt/lib/udivdi3.c stable/9/contrib/compiler-rt/lib/udivmoddi4.c stable/9/contrib/compiler-rt/lib/udivmodsi4.c stable/9/contrib/compiler-rt/lib/udivmodti4.c stable/9/contrib/compiler-rt/lib/udivsi3.c stable/9/contrib/compiler-rt/lib/umoddi3.c stable/9/contrib/compiler-rt/lib/umodsi3.c stable/9/contrib/compiler-rt/lib/x86_64/floatdidf.c stable/9/contrib/compiler-rt/lib/x86_64/floatdisf.c stable/9/contrib/compiler-rt/lib/x86_64/floatdixf.c Directory Properties: stable/9/contrib/compiler-rt/ (props changed) Modified: stable/9/contrib/compiler-rt/LICENSE.TXT ============================================================================== --- stable/9/contrib/compiler-rt/LICENSE.TXT Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/LICENSE.TXT Fri May 25 17:14:47 2012 (r236011) @@ -74,3 +74,25 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE F LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +============================================================================== +Copyrights and Licenses for Third Party Software Distributed with LLVM: +============================================================================== +The LLVM software contains code written by third parties. Such software will +have its own individual LICENSE.TXT file in the directory in which it appears. +This file will describe the copyrights, license, and restrictions which apply +to that code. + +The disclaimer of warranty in the University of Illinois Open Source License +applies to all code in the LLVM Distribution, and nothing in any of the +other licenses gives permission to use the names of the LLVM Team or the +University of Illinois to endorse or promote products derived from this +Software. + +The following pieces of software have additional or alternate copyrights, +licenses, and/or restrictions: + +Program Directory +------- --------- +sysinfo lib/asan/sysinfo +mach_override lib/asan/mach_override Modified: stable/9/contrib/compiler-rt/README.txt ============================================================================== --- stable/9/contrib/compiler-rt/README.txt Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/README.txt Fri May 25 17:14:47 2012 (r236011) @@ -106,6 +106,15 @@ si_int __mulvsi3(si_int a, si_int b); / di_int __mulvdi3(di_int a, di_int b); // a * b ti_int __mulvti3(ti_int a, ti_int b); // a * b + +// Integral arithmetic which returns if overflow + +si_int __mulosi4(si_int a, si_int b, int* overflow); // a * b, overflow set to one if result not in signed range +di_int __mulodi4(di_int a, di_int b, int* overflow); // a * b, overflow set to one if result not in signed range +ti_int __muloti4(ti_int a, ti_int b, int* overflow); // a * b, overflow set to + one if result not in signed range + + // Integral comparison: a < b -> 0 // a == b -> 1 // a > b -> 2 Modified: stable/9/contrib/compiler-rt/lib/absvdi2.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/absvdi2.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/absvdi2.c Fri May 25 17:14:47 2012 (r236011) @@ -11,10 +11,8 @@ * *===----------------------------------------------------------------------=== */ -#include "abi.h" #include "int_lib.h" -#include /* Returns: absolute value */ Modified: stable/9/contrib/compiler-rt/lib/absvsi2.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/absvsi2.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/absvsi2.c Fri May 25 17:14:47 2012 (r236011) @@ -11,10 +11,8 @@ * * ===----------------------------------------------------------------------=== */ -#include "abi.h" #include "int_lib.h" -#include /* Returns: absolute value */ Modified: stable/9/contrib/compiler-rt/lib/absvti2.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/absvti2.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/absvti2.c Fri May 25 17:14:47 2012 (r236011) @@ -15,7 +15,6 @@ #if __x86_64 #include "int_lib.h" -#include /* Returns: absolute value */ Modified: stable/9/contrib/compiler-rt/lib/adddf3.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/adddf3.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/adddf3.c Fri May 25 17:14:47 2012 (r236011) @@ -12,8 +12,6 @@ // //===----------------------------------------------------------------------===// -#include "abi.h" - #define DOUBLE_PRECISION #include "fp_lib.h" Modified: stable/9/contrib/compiler-rt/lib/addsf3.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/addsf3.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/addsf3.c Fri May 25 17:14:47 2012 (r236011) @@ -12,8 +12,6 @@ // //===----------------------------------------------------------------------===// -#include "abi.h" - #define SINGLE_PRECISION #include "fp_lib.h" Modified: stable/9/contrib/compiler-rt/lib/addvdi3.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/addvdi3.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/addvdi3.c Fri May 25 17:14:47 2012 (r236011) @@ -11,10 +11,8 @@ * * ===----------------------------------------------------------------------=== */ -#include "abi.h" #include "int_lib.h" -#include /* Returns: a + b */ Modified: stable/9/contrib/compiler-rt/lib/addvsi3.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/addvsi3.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/addvsi3.c Fri May 25 17:14:47 2012 (r236011) @@ -11,10 +11,8 @@ * * ===----------------------------------------------------------------------=== */ -#include "abi.h" #include "int_lib.h" -#include /* Returns: a + b */ Modified: stable/9/contrib/compiler-rt/lib/addvti3.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/addvti3.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/addvti3.c Fri May 25 17:14:47 2012 (r236011) @@ -15,7 +15,6 @@ #if __x86_64 #include "int_lib.h" -#include /* Returns: a + b */ Modified: stable/9/contrib/compiler-rt/lib/arm/adddf3vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/adddf3vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/adddf3vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -15,10 +15,11 @@ // Adds two double precision floating point numbers using the Darwin // calling convention where double arguments are passsed in GPR pairs // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__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 + vmov d6, r0, r1 // move first param from r0/r1 pair into d6 + vmov d7, r2, r3 // move second param from r2/r3 pair into d7 + vadd.f64 d6, d6, d7 + vmov r0, r1, d6 // move result back to r0/r1 pair bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/addsf3vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/addsf3vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/addsf3vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -15,10 +15,11 @@ // Adds two single precision floating point numbers using the Darwin // calling convention where single arguments are passsed in GPRs // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__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 + vmov s14, r0 // move first param from r0 into float register + vmov s15, r1 // move second param from r1 into float register + vadd.f32 s14, s14, s15 + vmov r0, s14 // move result back to r0 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/divdf3vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/divdf3vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/divdf3vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -15,10 +15,11 @@ // Divides two double precision floating point numbers using the Darwin // calling convention where double arguments are passsed in GPR pairs // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__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 + vmov d6, r0, r1 // move first param from r0/r1 pair into d6 + vmov d7, r2, r3 // move second param from r2/r3 pair into d7 + vdiv.f64 d5, d6, d7 + vmov r0, r1, d5 // move result back to r0/r1 pair bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/divsf3vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/divsf3vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/divsf3vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -15,10 +15,11 @@ // Divides two single precision floating point numbers using the Darwin // calling convention where single arguments are passsed like 32-bit ints. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__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 + vmov s14, r0 // move first param from r0 into float register + vmov s15, r1 // move second param from r1 into float register + vdiv.f32 s13, s14, s15 + vmov r0, s13 // move result back to r0 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/eqdf2vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/eqdf2vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/eqdf2vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,12 +16,13 @@ // Uses Darwin calling convention where double precision arguments are passsed // like in GPR pairs. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__eqdf2vfp) - fmdrr d6, r0, r1 // load r0/r1 pair in double register - fmdrr d7, r2, r3 // load r2/r3 pair in double register - fcmpd d6, d7 - fmstat + vmov d6, r0, r1 // load r0/r1 pair in double register + vmov d7, r2, r3 // load r2/r3 pair in double register + vcmp.f64 d6, d7 + vmrs apsr_nzcv, fpscr moveq r0, #1 // set result register to 1 if equal movne r0, #0 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/eqsf2vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/eqsf2vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/eqsf2vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,12 +16,13 @@ // Uses Darwin calling convention where single precision arguments are passsed // like 32-bit ints // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__eqsf2vfp) - fmsr s14, r0 // move from GPR 0 to float register - fmsr s15, r1 // move from GPR 1 to float register - fcmps s14, s15 - fmstat + vmov s14, r0 // move from GPR 0 to float register + vmov s15, r1 // move from GPR 1 to float register + vcmp.f32 s14, s15 + vmrs apsr_nzcv, fpscr moveq r0, #1 // set result register to 1 if equal movne r0, #0 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/extendsfdf2vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/extendsfdf2vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/extendsfdf2vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,9 +16,10 @@ // Uses Darwin calling convention where a single precision parameter is // passed in a GPR and a double precision result is returned in R0/R1 pair. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__extendsfdf2vfp) - fmsr s15, r0 // load float register from R0 - fcvtds d7, s15 // convert single to double - fmrrd r0, r1, d7 // return result in r0/r1 pair + vmov s15, r0 // load float register from R0 + vcvt.f64.f32 d7, s15 // convert single to double + vmov r0, r1, d7 // return result in r0/r1 pair bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/fixdfsivfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/fixdfsivfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/fixdfsivfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,9 +16,10 @@ // Uses Darwin calling convention where a double precision parameter is // passed in GPR register pair. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__fixdfsivfp) - fmdrr d7, r0, r1 // load double register from R0/R1 - ftosizd s15, d7 // convert double to 32-bit int into s15 - fmrs r0, s15 // move s15 to result register + vmov d7, r0, r1 // load double register from R0/R1 + vcvt.s32.f64 s15, d7 // convert double to 32-bit int into s15 + vmov r0, s15 // move s15 to result register bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/fixsfsivfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/fixsfsivfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/fixsfsivfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,9 +16,10 @@ // Uses Darwin calling convention where a single precision parameter is // passed in a GPR.. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__fixsfsivfp) - fmsr s15, r0 // load float register from R0 - ftosizs s15, s15 // convert single to 32-bit int into s15 - fmrs r0, s15 // move s15 to result register + vmov s15, r0 // load float register from R0 + vcvt.s32.f32 s15, s15 // convert single to 32-bit int into s15 + vmov r0, s15 // move s15 to result register bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/fixunsdfsivfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/fixunsdfsivfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/fixunsdfsivfp.S Fri May 25 17:14:47 2012 (r236011) @@ -17,9 +17,10 @@ // Uses Darwin calling convention where a double precision parameter is // passed in GPR register pair. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__fixunsdfsivfp) - fmdrr d7, r0, r1 // load double register from R0/R1 - ftouizd s15, d7 // convert double to 32-bit int into s15 - fmrs r0, s15 // move s15 to result register + vmov d7, r0, r1 // load double register from R0/R1 + vcvt.u32.f64 s15, d7 // convert double to 32-bit int into s15 + vmov r0, s15 // move s15 to result register bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/fixunssfsivfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/fixunssfsivfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/fixunssfsivfp.S Fri May 25 17:14:47 2012 (r236011) @@ -17,9 +17,10 @@ // Uses Darwin calling convention where a single precision parameter is // passed in a GPR.. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__fixunssfsivfp) - fmsr s15, r0 // load float register from R0 - ftouizs s15, s15 // convert single to 32-bit unsigned into s15 - fmrs r0, s15 // move s15 to result register + vmov s15, r0 // load float register from R0 + vcvt.u32.f32 s15, s15 // convert single to 32-bit unsigned into s15 + vmov r0, s15 // move s15 to result register bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/floatsidfvfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/floatsidfvfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/floatsidfvfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,9 +16,10 @@ // Uses Darwin calling convention where a double precision result is // return in GPR register pair. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__floatsidfvfp) - fmsr s15, r0 // move int to float register s15 - fsitod d7, s15 // convert 32-bit int in s15 to double in d7 - fmrrd r0, r1, d7 // move d7 to result register pair r0/r1 + vmov s15, r0 // move int to float register s15 + vcvt.f64.s32 d7, s15 // convert 32-bit int in s15 to double in d7 + vmov r0, r1, d7 // move d7 to result register pair r0/r1 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/floatsisfvfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/floatsisfvfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/floatsisfvfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,9 +16,10 @@ // Uses Darwin calling convention where a single precision result is // return in a GPR.. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__floatsisfvfp) - fmsr s15, r0 // move int to float register s15 - fsitos s15, s15 // convert 32-bit int in s15 to float in s15 - fmrs r0, s15 // move s15 to result register + vmov s15, r0 // move int to float register s15 + vcvt.f32.s32 s15, s15 // convert 32-bit int in s15 to float in s15 + vmov r0, s15 // move s15 to result register bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/floatunssidfvfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/floatunssidfvfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/floatunssidfvfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,9 +16,10 @@ // Uses Darwin calling convention where a double precision result is // return in GPR register pair. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__floatunssidfvfp) - fmsr s15, r0 // move int to float register s15 - fuitod d7, s15 // convert 32-bit int in s15 to double in d7 - fmrrd r0, r1, d7 // move d7 to result register pair r0/r1 + vmov s15, r0 // move int to float register s15 + vcvt.f64.u32 d7, s15 // convert 32-bit int in s15 to double in d7 + vmov r0, r1, d7 // move d7 to result register pair r0/r1 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/floatunssisfvfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/floatunssisfvfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/floatunssisfvfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,9 +16,10 @@ // Uses Darwin calling convention where a single precision result is // return in a GPR.. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__floatunssisfvfp) - fmsr s15, r0 // move int to float register s15 - fuitos s15, s15 // convert 32-bit int in s15 to float in s15 - fmrs r0, s15 // move s15 to result register + vmov s15, r0 // move int to float register s15 + vcvt.f32.u32 s15, s15 // convert 32-bit int in s15 to float in s15 + vmov r0, s15 // move s15 to result register bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/gedf2vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/gedf2vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/gedf2vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,12 +16,13 @@ // Uses Darwin calling convention where double precision arguments are passsed // like in GPR pairs. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__gedf2vfp) - fmdrr d6, r0, r1 // load r0/r1 pair in double register - fmdrr d7, r2, r3 // load r2/r3 pair in double register - fcmpd d6, d7 - fmstat + vmov d6, r0, r1 // load r0/r1 pair in double register + vmov d7, r2, r3 // load r2/r3 pair in double register + vcmp.f64 d6, d7 + vmrs apsr_nzcv, fpscr movge r0, #1 // set result register to 1 if greater than or equal movlt r0, #0 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/gesf2vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/gesf2vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/gesf2vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,12 +16,13 @@ // Uses Darwin calling convention where single precision arguments are passsed // like 32-bit ints // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__gesf2vfp) - fmsr s14, r0 // move from GPR 0 to float register - fmsr s15, r1 // move from GPR 1 to float register - fcmps s14, s15 - fmstat + vmov s14, r0 // move from GPR 0 to float register + vmov s15, r1 // move from GPR 1 to float register + vcmp.f32 s14, s15 + vmrs apsr_nzcv, fpscr movge r0, #1 // set result register to 1 if greater than or equal movlt r0, #0 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/gtdf2vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/gtdf2vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/gtdf2vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,12 +16,13 @@ // Uses Darwin calling convention where double precision arguments are passsed // like in GPR pairs. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__gtdf2vfp) - fmdrr d6, r0, r1 // load r0/r1 pair in double register - fmdrr d7, r2, r3 // load r2/r3 pair in double register - fcmpd d6, d7 - fmstat + vmov d6, r0, r1 // load r0/r1 pair in double register + vmov d7, r2, r3 // load r2/r3 pair in double register + vcmp.f64 d6, d7 + vmrs apsr_nzcv, fpscr movgt r0, #1 // set result register to 1 if equal movle r0, #0 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/gtsf2vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/gtsf2vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/gtsf2vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,12 +16,13 @@ // Uses Darwin calling convention where single precision arguments are passsed // like 32-bit ints // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__gtsf2vfp) - fmsr s14, r0 // move from GPR 0 to float register - fmsr s15, r1 // move from GPR 1 to float register - fcmps s14, s15 - fmstat + vmov s14, r0 // move from GPR 0 to float register + vmov s15, r1 // move from GPR 1 to float register + vcmp.f32 s14, s15 + vmrs apsr_nzcv, fpscr movgt r0, #1 // set result register to 1 if equal movle r0, #0 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/ledf2vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/ledf2vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/ledf2vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,12 +16,13 @@ // Uses Darwin calling convention where double precision arguments are passsed // like in GPR pairs. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__ledf2vfp) - fmdrr d6, r0, r1 // load r0/r1 pair in double register - fmdrr d7, r2, r3 // load r2/r3 pair in double register - fcmpd d6, d7 - fmstat + vmov d6, r0, r1 // load r0/r1 pair in double register + vmov d7, r2, r3 // load r2/r3 pair in double register + vcmp.f64 d6, d7 + vmrs apsr_nzcv, fpscr movls r0, #1 // set result register to 1 if equal movhi r0, #0 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/lesf2vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/lesf2vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/lesf2vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,12 +16,13 @@ // Uses Darwin calling convention where single precision arguments are passsed // like 32-bit ints // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__lesf2vfp) - fmsr s14, r0 // move from GPR 0 to float register - fmsr s15, r1 // move from GPR 1 to float register - fcmps s14, s15 - fmstat + vmov s14, r0 // move from GPR 0 to float register + vmov s15, r1 // move from GPR 1 to float register + vcmp.f32 s14, s15 + vmrs apsr_nzcv, fpscr movls r0, #1 // set result register to 1 if equal movhi r0, #0 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/ltdf2vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/ltdf2vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/ltdf2vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,12 +16,13 @@ // Uses Darwin calling convention where double precision arguments are passsed // like in GPR pairs. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__ltdf2vfp) - fmdrr d6, r0, r1 // load r0/r1 pair in double register - fmdrr d7, r2, r3 // load r2/r3 pair in double register - fcmpd d6, d7 - fmstat + vmov d6, r0, r1 // load r0/r1 pair in double register + vmov d7, r2, r3 // load r2/r3 pair in double register + vcmp.f64 d6, d7 + vmrs apsr_nzcv, fpscr movmi r0, #1 // set result register to 1 if equal movpl r0, #0 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/ltsf2vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/ltsf2vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/ltsf2vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,12 +16,13 @@ // Uses Darwin calling convention where single precision arguments are passsed // like 32-bit ints // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__ltsf2vfp) - fmsr s14, r0 // move from GPR 0 to float register - fmsr s15, r1 // move from GPR 1 to float register - fcmps s14, s15 - fmstat + vmov s14, r0 // move from GPR 0 to float register + vmov s15, r1 // move from GPR 1 to float register + vcmp.f32 s14, s15 + vmrs apsr_nzcv, fpscr movmi r0, #1 // set result register to 1 if equal movpl r0, #0 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/muldf3vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/muldf3vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/muldf3vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -15,10 +15,11 @@ // Multiplies two double precision floating point numbers using the Darwin // calling convention where double arguments are passsed in GPR pairs // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__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 + vmov d6, r0, r1 // move first param from r0/r1 pair into d6 + vmov d7, r2, r3 // move second param from r2/r3 pair into d7 + vmul.f64 d6, d6, d7 + vmov r0, r1, d6 // move result back to r0/r1 pair bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/mulsf3vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/mulsf3vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/mulsf3vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -15,10 +15,11 @@ // Multiplies two single precision floating point numbers using the Darwin // calling convention where single arguments are passsed like 32-bit ints. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__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 + vmov s14, r0 // move first param from r0 into float register + vmov s15, r1 // move second param from r1 into float register + vmul.f32 s13, s14, s15 + vmov r0, s13 // move result back to r0 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/nedf2vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/nedf2vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/nedf2vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,12 +16,13 @@ // Uses Darwin calling convention where double precision arguments are passsed // like in GPR pairs. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__nedf2vfp) - fmdrr d6, r0, r1 // load r0/r1 pair in double register - fmdrr d7, r2, r3 // load r2/r3 pair in double register - fcmpd d6, d7 - fmstat + vmov d6, r0, r1 // load r0/r1 pair in double register + vmov d7, r2, r3 // load r2/r3 pair in double register + vcmp.f64 d6, d7 + vmrs apsr_nzcv, fpscr movne r0, #1 // set result register to 0 if unequal moveq r0, #0 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/negdf2vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/negdf2vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/negdf2vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -15,6 +15,7 @@ // Returns the negation a double precision floating point numbers using the // Darwin calling convention where double arguments are passsed in GPR pairs. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__negdf2vfp) eor r1, r1, #-2147483648 // flip sign bit on double in r0/r1 pair Modified: stable/9/contrib/compiler-rt/lib/arm/negsf2vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/negsf2vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/negsf2vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -15,6 +15,7 @@ // Returns the negation of a single precision floating point numbers using the // Darwin calling convention where single arguments are passsed like 32-bit ints // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__negsf2vfp) eor r0, r0, #-2147483648 // flip sign bit on float in r0 Modified: stable/9/contrib/compiler-rt/lib/arm/nesf2vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/nesf2vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/nesf2vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,12 +16,13 @@ // Uses Darwin calling convention where single precision arguments are passsed // like 32-bit ints // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__nesf2vfp) - fmsr s14, r0 // move from GPR 0 to float register - fmsr s15, r1 // move from GPR 1 to float register - fcmps s14, s15 - fmstat + vmov s14, r0 // move from GPR 0 to float register + vmov s15, r1 // move from GPR 1 to float register + vcmp.f32 s14, s15 + vmrs apsr_nzcv, fpscr movne r0, #1 // set result register to 1 if unequal moveq r0, #0 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/subdf3vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/subdf3vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/subdf3vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -15,10 +15,11 @@ // Returns difference between two double precision floating point numbers using // the Darwin calling convention where double arguments are passsed in GPR pairs // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__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 + vmov d6, r0, r1 // move first param from r0/r1 pair into d6 + vmov d7, r2, r3 // move second param from r2/r3 pair into d7 + vsub.f64 d6, d6, d7 + vmov r0, r1, d6 // move result back to r0/r1 pair bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/subsf3vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/subsf3vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/subsf3vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,10 +16,11 @@ // using the Darwin calling convention where single arguments are passsed // like 32-bit ints. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__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 + vmov s14, r0 // move first param from r0 into float register + vmov s15, r1 // move second param from r1 into float register + vsub.f32 s14, s14, s15 + vmov r0, s14 // move result back to r0 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/truncdfsf2vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/truncdfsf2vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/truncdfsf2vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,9 +16,10 @@ // Uses Darwin calling convention where a double precision parameter is // passed in a R0/R1 pair and a signle precision result is returned in R0. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__truncdfsf2vfp) - fmdrr d7, r0, r1 // load double from r0/r1 pair - fcvtsd s15, d7 // convert double to single (trucate precision) - fmrs r0, s15 // return result in r0 + vmov d7, r0, r1 // load double from r0/r1 pair + vcvt.f32.f64 s15, d7 // convert double to single (trucate precision) + vmov r0, s15 // return result in r0 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/unorddf2vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/unorddf2vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/unorddf2vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,12 +16,13 @@ // Uses Darwin calling convention where double precision arguments are passsed // like in GPR pairs. // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__unorddf2vfp) - fmdrr d6, r0, r1 // load r0/r1 pair in double register - fmdrr d7, r2, r3 // load r2/r3 pair in double register - fcmpd d6, d7 - fmstat + vmov d6, r0, r1 // load r0/r1 pair in double register + vmov d7, r2, r3 // load r2/r3 pair in double register + vcmp.f64 d6, d7 + vmrs apsr_nzcv, fpscr movvs r0, #1 // set result register to 1 if "overflow" (any NaNs) movvc r0, #0 bx lr Modified: stable/9/contrib/compiler-rt/lib/arm/unordsf2vfp.S ============================================================================== --- stable/9/contrib/compiler-rt/lib/arm/unordsf2vfp.S Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/arm/unordsf2vfp.S Fri May 25 17:14:47 2012 (r236011) @@ -16,12 +16,13 @@ // Uses Darwin calling convention where single precision arguments are passsed // like 32-bit ints // + .syntax unified .align 2 DEFINE_COMPILERRT_FUNCTION(__unordsf2vfp) - fmsr s14, r0 // move from GPR 0 to float register - fmsr s15, r1 // move from GPR 1 to float register - fcmps s14, s15 - fmstat + vmov s14, r0 // move from GPR 0 to float register + vmov s15, r1 // move from GPR 1 to float register + vcmp.f32 s14, s15 + vmrs apsr_nzcv, fpscr movvs r0, #1 // set result register to 1 if "overflow" (any NaNs) movvc r0, #0 bx lr Modified: stable/9/contrib/compiler-rt/lib/ashldi3.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/ashldi3.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/ashldi3.c Fri May 25 17:14:47 2012 (r236011) @@ -11,7 +11,6 @@ * * ===----------------------------------------------------------------------=== */ -#include "abi.h" #include "int_lib.h" Modified: stable/9/contrib/compiler-rt/lib/ashrdi3.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/ashrdi3.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/ashrdi3.c Fri May 25 17:14:47 2012 (r236011) @@ -11,7 +11,6 @@ * * ===----------------------------------------------------------------------=== */ -#include "abi.h" #include "int_lib.h" Modified: stable/9/contrib/compiler-rt/lib/assembly.h ============================================================================== --- stable/9/contrib/compiler-rt/lib/assembly.h Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/assembly.h Fri May 25 17:14:47 2012 (r236011) @@ -35,15 +35,16 @@ #define SYMBOL_NAME(name) GLUE(__USER_LABEL_PREFIX__, name) #ifdef VISIBILITY_HIDDEN -#define DEFINE_COMPILERRT_FUNCTION(name) \ - .globl SYMBOL_NAME(name) SEPARATOR \ - HIDDEN_DIRECTIVE SYMBOL_NAME(name) SEPARATOR \ - SYMBOL_NAME(name): +#define DECLARE_SYMBOL_VISIBILITY(name) \ + HIDDEN_DIRECTIVE SYMBOL_NAME(name) SEPARATOR #else +#define DECLARE_SYMBOL_VISIBILITY(name) +#endif + #define DEFINE_COMPILERRT_FUNCTION(name) \ .globl SYMBOL_NAME(name) SEPARATOR \ + DECLARE_SYMBOL_VISIBILITY(name) \ SYMBOL_NAME(name): -#endif #define DEFINE_COMPILERRT_PRIVATE_FUNCTION(name) \ .globl SYMBOL_NAME(name) SEPARATOR \ Modified: stable/9/contrib/compiler-rt/lib/clear_cache.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/clear_cache.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/clear_cache.c Fri May 25 17:14:47 2012 (r236011) @@ -9,7 +9,6 @@ */ #include "int_lib.h" -#include #if __APPLE__ #include Modified: stable/9/contrib/compiler-rt/lib/clzdi2.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/clzdi2.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/clzdi2.c Fri May 25 17:14:47 2012 (r236011) @@ -11,7 +11,6 @@ * * ===----------------------------------------------------------------------=== */ -#include "abi.h" #include "int_lib.h" Modified: stable/9/contrib/compiler-rt/lib/clzsi2.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/clzsi2.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/clzsi2.c Fri May 25 17:14:47 2012 (r236011) @@ -11,7 +11,6 @@ * * ===----------------------------------------------------------------------=== */ -#include "abi.h" #include "int_lib.h" Modified: stable/9/contrib/compiler-rt/lib/cmpdi2.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/cmpdi2.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/cmpdi2.c Fri May 25 17:14:47 2012 (r236011) @@ -11,7 +11,6 @@ * * ===----------------------------------------------------------------------=== */ -#include "abi.h" #include "int_lib.h" Modified: stable/9/contrib/compiler-rt/lib/ctzdi2.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/ctzdi2.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/ctzdi2.c Fri May 25 17:14:47 2012 (r236011) @@ -11,7 +11,6 @@ * * ===----------------------------------------------------------------------=== */ -#include "abi.h" #include "int_lib.h" Modified: stable/9/contrib/compiler-rt/lib/ctzsi2.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/ctzsi2.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/ctzsi2.c Fri May 25 17:14:47 2012 (r236011) @@ -11,7 +11,6 @@ * * ===----------------------------------------------------------------------=== */ -#include "abi.h" #include "int_lib.h" Modified: stable/9/contrib/compiler-rt/lib/divdc3.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/divdc3.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/divdc3.c Fri May 25 17:14:47 2012 (r236011) @@ -13,8 +13,7 @@ */ #include "int_lib.h" -#include -#include +#include "int_math.h" /* Returns: the quotient of (a + ib) / (c + id) */ @@ -22,35 +21,37 @@ double _Complex __divdc3(double __a, double __b, double __c, double __d) { int __ilogbw = 0; - double __logbw = logb(fmax(fabs(__c), fabs(__d))); - if (isfinite(__logbw)) + double __logbw = crt_logb(crt_fmax(crt_fabs(__c), crt_fabs(__d))); + if (crt_isfinite(__logbw)) { __ilogbw = (int)__logbw; - __c = scalbn(__c, -__ilogbw); - __d = scalbn(__d, -__ilogbw); + __c = crt_scalbn(__c, -__ilogbw); + __d = crt_scalbn(__d, -__ilogbw); } double __denom = __c * __c + __d * __d; double _Complex z; - __real__ z = scalbn((__a * __c + __b * __d) / __denom, -__ilogbw); - __imag__ z = scalbn((__b * __c - __a * __d) / __denom, -__ilogbw); - if (isnan(__real__ z) && isnan(__imag__ z)) + __real__ z = crt_scalbn((__a * __c + __b * __d) / __denom, -__ilogbw); + __imag__ z = crt_scalbn((__b * __c - __a * __d) / __denom, -__ilogbw); + if (crt_isnan(__real__ z) && crt_isnan(__imag__ z)) { - if ((__denom == 0.0) && (!isnan(__a) || !isnan(__b))) + if ((__denom == 0.0) && (!crt_isnan(__a) || !crt_isnan(__b))) { - __real__ z = copysign(INFINITY, __c) * __a; - __imag__ z = copysign(INFINITY, __c) * __b; + __real__ z = crt_copysign(CRT_INFINITY, __c) * __a; + __imag__ z = crt_copysign(CRT_INFINITY, __c) * __b; } - else if ((isinf(__a) || isinf(__b)) && isfinite(__c) && isfinite(__d)) + else if ((crt_isinf(__a) || crt_isinf(__b)) && + crt_isfinite(__c) && crt_isfinite(__d)) { - __a = copysign(isinf(__a) ? 1.0 : 0.0, __a); - __b = copysign(isinf(__b) ? 1.0 : 0.0, __b); - __real__ z = INFINITY * (__a * __c + __b * __d); - __imag__ z = INFINITY * (__b * __c - __a * __d); + __a = crt_copysign(crt_isinf(__a) ? 1.0 : 0.0, __a); + __b = crt_copysign(crt_isinf(__b) ? 1.0 : 0.0, __b); + __real__ z = CRT_INFINITY * (__a * __c + __b * __d); + __imag__ z = CRT_INFINITY * (__b * __c - __a * __d); } - else if (isinf(__logbw) && __logbw > 0.0 && isfinite(__a) && isfinite(__b)) + else if (crt_isinf(__logbw) && __logbw > 0.0 && + crt_isfinite(__a) && crt_isfinite(__b)) { - __c = copysign(isinf(__c) ? 1.0 : 0.0, __c); - __d = copysign(isinf(__d) ? 1.0 : 0.0, __d); + __c = crt_copysign(crt_isinf(__c) ? 1.0 : 0.0, __c); + __d = crt_copysign(crt_isinf(__d) ? 1.0 : 0.0, __d); __real__ z = 0.0 * (__a * __c + __b * __d); __imag__ z = 0.0 * (__b * __c - __a * __d); } Modified: stable/9/contrib/compiler-rt/lib/divdf3.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/divdf3.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/divdf3.c Fri May 25 17:14:47 2012 (r236011) @@ -15,7 +15,6 @@ // underflow with correct rounding. // //===----------------------------------------------------------------------===// -#include "abi.h" #define DOUBLE_PRECISION #include "fp_lib.h" Modified: stable/9/contrib/compiler-rt/lib/divdi3.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/divdi3.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/divdi3.c Fri May 25 17:14:47 2012 (r236011) @@ -11,7 +11,6 @@ * * ===----------------------------------------------------------------------=== */ -#include "abi.h" #include "int_lib.h" Modified: stable/9/contrib/compiler-rt/lib/divmoddi4.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/divmoddi4.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/divmoddi4.c Fri May 25 17:14:47 2012 (r236011) @@ -11,7 +11,6 @@ * * ===----------------------------------------------------------------------=== */ -#include "abi.h" #include "int_lib.h" Modified: stable/9/contrib/compiler-rt/lib/divmodsi4.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/divmodsi4.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/divmodsi4.c Fri May 25 17:14:47 2012 (r236011) @@ -11,7 +11,6 @@ * * ===----------------------------------------------------------------------=== */ -#include "abi.h" #include "int_lib.h" Modified: stable/9/contrib/compiler-rt/lib/divsc3.c ============================================================================== --- stable/9/contrib/compiler-rt/lib/divsc3.c Fri May 25 16:52:00 2012 (r236010) +++ stable/9/contrib/compiler-rt/lib/divsc3.c Fri May 25 17:14:47 2012 (r236011) @@ -13,8 +13,7 @@ */ #include "int_lib.h" -#include -#include +#include "int_math.h" /* Returns: the quotient of (a + ib) / (c + id) */ @@ -22,35 +21,37 @@ float _Complex __divsc3(float __a, float __b, float __c, float __d) { int __ilogbw = 0; - float __logbw = logbf(fmaxf(fabsf(__c), fabsf(__d))); - if (isfinite(__logbw)) + float __logbw = crt_logbf(crt_fmaxf(crt_fabsf(__c), crt_fabsf(__d))); + if (crt_isfinite(__logbw)) { __ilogbw = (int)__logbw; - __c = scalbnf(__c, -__ilogbw); - __d = scalbnf(__d, -__ilogbw); + __c = crt_scalbnf(__c, -__ilogbw); + __d = crt_scalbnf(__d, -__ilogbw); } float __denom = __c * __c + __d * __d; float _Complex z; - __real__ z = scalbnf((__a * __c + __b * __d) / __denom, -__ilogbw); - __imag__ z = scalbnf((__b * __c - __a * __d) / __denom, -__ilogbw); - if (isnan(__real__ z) && isnan(__imag__ z)) + __real__ z = crt_scalbnf((__a * __c + __b * __d) / __denom, -__ilogbw); + __imag__ z = crt_scalbnf((__b * __c - __a * __d) / __denom, -__ilogbw); + if (crt_isnan(__real__ z) && crt_isnan(__imag__ z)) { - if ((__denom == 0) && (!isnan(__a) || !isnan(__b))) + if ((__denom == 0) && (!crt_isnan(__a) || !crt_isnan(__b))) { - __real__ z = copysignf(INFINITY, __c) * __a; - __imag__ z = copysignf(INFINITY, __c) * __b; + __real__ z = crt_copysignf(CRT_INFINITY, __c) * __a; + __imag__ z = crt_copysignf(CRT_INFINITY, __c) * __b; } *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***