comparison gcc/config/arm/ieee754-df.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
1115 ARM_FUNC_START cmpdf2 1115 ARM_FUNC_START cmpdf2
1116 ARM_FUNC_ALIAS nedf2 cmpdf2 1116 ARM_FUNC_ALIAS nedf2 cmpdf2
1117 ARM_FUNC_ALIAS eqdf2 cmpdf2 1117 ARM_FUNC_ALIAS eqdf2 cmpdf2
1118 mov ip, #1 @ how should we specify unordered here? 1118 mov ip, #1 @ how should we specify unordered here?
1119 1119
1120 1: str ip, [sp, #-4] 1120 1: str ip, [sp, #-4]!
1121 1121
1122 @ Trap any INF/NAN first. 1122 @ Trap any INF/NAN first.
1123 mov ip, xh, lsl #1 1123 mov ip, xh, lsl #1
1124 mvns ip, ip, asr #21 1124 mvns ip, ip, asr #21
1125 mov ip, yh, lsl #1 1125 mov ip, yh, lsl #1
1127 COND(mvn,s,ne) ip, ip, asr #21 1127 COND(mvn,s,ne) ip, ip, asr #21
1128 beq 3f 1128 beq 3f
1129 1129
1130 @ Test for equality. 1130 @ Test for equality.
1131 @ Note that 0.0 is equal to -0.0. 1131 @ Note that 0.0 is equal to -0.0.
1132 2: orrs ip, xl, xh, lsl #1 @ if x == 0.0 or -0.0 1132 2: add sp, sp, #4
1133 orrs ip, xl, xh, lsl #1 @ if x == 0.0 or -0.0
1133 do_it eq, e 1134 do_it eq, e
1134 COND(orr,s,eq) ip, yl, yh, lsl #1 @ and y == 0.0 or -0.0 1135 COND(orr,s,eq) ip, yl, yh, lsl #1 @ and y == 0.0 or -0.0
1135 teqne xh, yh @ or xh == yh 1136 teqne xh, yh @ or xh == yh
1136 do_it eq, tt 1137 do_it eq, tt
1137 teqeq xl, yl @ and xl == yl 1138 teqeq xl, yl @ and xl == yl
1166 4: mov ip, yh, lsl #1 1167 4: mov ip, yh, lsl #1
1167 mvns ip, ip, asr #21 1168 mvns ip, ip, asr #21
1168 bne 2b 1169 bne 2b
1169 orrs ip, yl, yh, lsl #12 1170 orrs ip, yl, yh, lsl #12
1170 beq 2b @ y is not NAN 1171 beq 2b @ y is not NAN
1171 5: ldr r0, [sp, #-4] @ unordered return code 1172 5: ldr r0, [sp], #4 @ unordered return code
1172 RET 1173 RET
1173 1174
1174 FUNC_END gedf2 1175 FUNC_END gedf2
1175 FUNC_END gtdf2 1176 FUNC_END gtdf2
1176 FUNC_END ledf2 1177 FUNC_END ledf2