svn commit: r236011 - in stable/9/contrib/compiler-rt: . lib lib/arm lib/ppc lib/x86_64

Marius Strobl marius at FreeBSD.org
Fri May 25 17:14:49 UTC 2012


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 <stdlib.h>
 
 /* 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 <stdlib.h>
 
 /* 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 <stdlib.h>
 
 /* 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 <stdlib.h>
 
 /* 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 <stdlib.h>
 
 /* 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 <stdlib.h>
 
 /* 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 <stdlib.h>
 
 #if __APPLE__
   #include <libkern/OSCacheControl.h>

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 <math.h>
-#include <complex.h>
+#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 <math.h>
-#include <complex.h>
+#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 ***


More information about the svn-src-stable-9 mailing list