The mapping is, effectively, an exclusive or with 0x01. Replace.

Savings: 10 bytes of code/constant data, 1 machine instruction (including
one memory access).
This commit is contained in:
is 2000-12-04 12:02:08 +00:00
parent ff72f95eaa
commit 0bffee4893
1 changed files with 5 additions and 3 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: flt_rounds.S,v 1.8 1999/10/25 23:48:10 thorpej Exp $ */ /* $NetBSD: flt_rounds.S,v 1.9 2000/12/04 12:02:08 is Exp $ */
/* /*
* Written by J.T. Conklin, Apr 6, 1995 * Written by J.T. Conklin, Apr 6, 1995
@ -9,15 +9,17 @@
.text .text
.even .even
#if 0
/* XXX This is, effectively, an exclusive-or with 1 operation. */
_map: _map:
.byte 1 /* round to nearest */ .byte 1 /* round to nearest */
.byte 0 /* round to zero */ .byte 0 /* round to zero */
.byte 3 /* round to negative infinity */ .byte 3 /* round to negative infinity */
.byte 2 /* round to positive infinity */ .byte 2 /* round to positive infinity */
#endif
ENTRY(__flt_rounds) ENTRY(__flt_rounds)
fmovel %fpcr,%d0 fmovel %fpcr,%d0
bfextu %d0{#26:#2},%d0 bfextu %d0{#26:#2},%d0
lea _map,%a0 eorib #1,%d0
moveb %a0@(%d0:l:1),%d0
rts rts