mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 00:14:25 +00:00
110 lines
5.5 KiB
ArmAsm
110 lines
5.5 KiB
ArmAsm
ttl ieee format equivalent abs and neg (iefabs/iefneg)
|
||
***************************************
|
||
* (c) copyright 1981 by motorola inc. *
|
||
***************************************
|
||
|
||
*************************************************************
|
||
* iefabs *
|
||
* fast floating point ieee format equivalent absolute value*
|
||
* *
|
||
* input: d7 - ieee format number argument *
|
||
* *
|
||
* output: d7 - ieee format number absolute value result *
|
||
* *
|
||
* condition codes: *
|
||
* n - cleared *
|
||
* z - set if result is zero *
|
||
* v - set if result is nan (not-a-number) *
|
||
* (occurs only if input argument is nan) *
|
||
* c - undefined *
|
||
* x - undefined *
|
||
* *
|
||
* all registers transparent *
|
||
* *
|
||
* maximum stack used: 24 bytes *
|
||
* *
|
||
* notes: *
|
||
* 1) this routine properly handles all ieee floating *
|
||
* point values and number types. *
|
||
* 2) if the input argument is a nan (not-a-number) then *
|
||
* it will be returned as the result with the "v" bit *
|
||
* set in the condition code register. *
|
||
* *
|
||
*************************************************************
|
||
page
|
||
iefabs idnt 1,1 ieee format equivalent abs and neg
|
||
|
||
opt pcs
|
||
|
||
xdef iefabs ieee format absolute value
|
||
|
||
xref iefsop single argument conversion routine
|
||
xref iefrtod7 return caller's original d7 as result
|
||
xref ffpcpyrt copyright notice
|
||
|
||
section 9
|
||
|
||
******************************
|
||
* absolute value entry point *
|
||
******************************
|
||
iefabs jsr iefsop direct return to caller if nan encountered
|
||
nop +0 normalized return (or zero or denormalized)
|
||
* +2 infinity return
|
||
|
||
* all values may be absolutized by forcing a plus sign on the original value
|
||
bclr.b #7,16(sp) clear sign bit of original value
|
||
jmp iefrtod7 and return original value altered a wee bit
|
||
page
|
||
*************************************************************
|
||
* iefneg *
|
||
* fast floating point ieee format equivalent negate *
|
||
* *
|
||
* input: d7 - ieee format number argument *
|
||
* *
|
||
* output: d7 - ieee format number negated result *
|
||
* *
|
||
* condition codes: *
|
||
* n - set if result is negative *
|
||
* z - set if result is zero *
|
||
* v - set if result is nan (not-a-number) *
|
||
* (occurs only if input argument is nan) *
|
||
* c - undefined *
|
||
* x - undefined *
|
||
* *
|
||
* all registers transparent *
|
||
* *
|
||
* maximum stack used: 24 bytes *
|
||
* *
|
||
* notes: *
|
||
* 1) this routine properly handles all ieee floating *
|
||
* point values and number types. *
|
||
* 2) if the input argument is a nan (not-a-number) then *
|
||
* it will be returned as the result with the "v" bit *
|
||
* set in the condition code register. *
|
||
* *
|
||
*************************************************************
|
||
page
|
||
xdef iefneg ieee format negate
|
||
|
||
**********************
|
||
* negate entry point *
|
||
**********************
|
||
iefneg jsr iefsop direct return to caller if nan encountered
|
||
nop +0 normalized return (or zero or denormalized)
|
||
* +6 both infinity return
|
||
|
||
* all values may be negated by inverting the sign bit of the original value
|
||
bchg.b #7,16(sp) negate original sign bit
|
||
jmp iefrtod7 and return this modified original register
|
||
|
||
end
|
||
|
||
|