comparison gcc/config/arm/ieee754-sf.S @ 47:3bfb6c00c1e0

update it from 4.4.2 to 4.4.3.
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Sun, 07 Feb 2010 17:44:34 +0900
parents a06113de4d67
children
comparison
equal deleted inserted replaced
46:b85a337e5837 47:3bfb6c00c1e0
820 ARM_FUNC_START cmpsf2 820 ARM_FUNC_START cmpsf2
821 ARM_FUNC_ALIAS nesf2 cmpsf2 821 ARM_FUNC_ALIAS nesf2 cmpsf2
822 ARM_FUNC_ALIAS eqsf2 cmpsf2 822 ARM_FUNC_ALIAS eqsf2 cmpsf2
823 mov ip, #1 @ how should we specify unordered here? 823 mov ip, #1 @ how should we specify unordered here?
824 824
825 1: str ip, [sp, #-4] 825 1: str ip, [sp, #-4]!
826 826
827 @ Trap any INF/NAN first. 827 @ Trap any INF/NAN first.
828 mov r2, r0, lsl #1 828 mov r2, r0, lsl #1
829 mov r3, r1, lsl #1 829 mov r3, r1, lsl #1
830 mvns ip, r2, asr #24 830 mvns ip, r2, asr #24
832 COND(mvn,s,ne) ip, r3, asr #24 832 COND(mvn,s,ne) ip, r3, asr #24
833 beq 3f 833 beq 3f
834 834
835 @ Compare values. 835 @ Compare values.
836 @ Note that 0.0 is equal to -0.0. 836 @ Note that 0.0 is equal to -0.0.
837 2: orrs ip, r2, r3, lsr #1 @ test if both are 0, clear C flag 837 2: add sp, sp, #4
838 orrs ip, r2, r3, lsr #1 @ test if both are 0, clear C flag
838 do_it ne 839 do_it ne
839 teqne r0, r1 @ if not 0 compare sign 840 teqne r0, r1 @ if not 0 compare sign
840 do_it pl 841 do_it pl
841 COND(sub,s,pl) r0, r2, r3 @ if same sign compare values, set r0 842 COND(sub,s,pl) r0, r2, r3 @ if same sign compare values, set r0
842 843
856 bne 5f @ r0 is NAN 857 bne 5f @ r0 is NAN
857 4: mvns ip, r3, asr #24 858 4: mvns ip, r3, asr #24
858 bne 2b 859 bne 2b
859 movs ip, r1, lsl #9 860 movs ip, r1, lsl #9
860 beq 2b @ r1 is not NAN 861 beq 2b @ r1 is not NAN
861 5: ldr r0, [sp, #-4] @ return unordered code. 862 5: ldr r0, [sp], #4 @ return unordered code.
862 RET 863 RET
863 864
864 FUNC_END gesf2 865 FUNC_END gesf2
865 FUNC_END gtsf2 866 FUNC_END gtsf2
866 FUNC_END lesf2 867 FUNC_END lesf2