ieee 754: start section

This commit is contained in:
Ciro Santilli 六四事件 法轮功
2019-06-29 00:00:02 +00:00
parent 4da91c1e51
commit e0c9a43aae
3 changed files with 105 additions and 1 deletions

View File

@@ -12063,7 +12063,7 @@ Particularly important numerical analysis instruction, that is used in particula
* Dot product
* Matrix multiplication
FMA is so important that IEEE 754 specifies it with single precision drop compared to a separate add and multiply!
FMA is so important that <<ieee-754>> specifies it with single precision drop compared to a separate add and multiply!
Micro-op fun: http://stackoverflow.com/questions/28630864/how-is-fma-implemented
@@ -12990,6 +12990,19 @@ Old floating point unit that you should likely not use anymore, prefer instead t
** link:userland/arch/x86_64/fsqrt.S[] FSQRT: square root
** link:userland/arch/x86_64/fxch.S[] FXCH: swap ST0 and another register
The ST0-ST7 x87 FPU registers are actually 80-bits wide, this can be seen from GDB with:
....
i r st0 st1
....
By counting the number of hex digits, we have 20 digits instead of 16!
Instructions such as FLDL convert standard <<ieee-754>> 64-bit values from memory into this custom 80-bit format.
* https://stackoverflow.com/questions/3206101/extended-80-bit-double-floating-point-in-x87-not-sse2-we-dont-miss-it
* https://en.wikipedia.org/wiki/Extended_precision#x86_extended_precision_format
==== x86 x87 FPU vs SIMD
http://stackoverflow.com/questions/1844669/benefits-of-x87-over-sse
@@ -14177,6 +14190,18 @@ http://infocenter.arm.com/help/topic/com.arm.doc.ddi0438i/DDI0438I_cortex_a15_r4
2013.
== IEEE 754
https://en.wikipedia.org/wiki/IEEE_754
Examples:
* link:userland/arch/x86_64/ieee754.S[]
* link:lkmc/float.h[]
* https://stackoverflow.com/questions/8341395/what-is-a-subnormal-floating-point-number/53203428#53203428
* https://stackoverflow.com/questions/18118408/what-is-difference-between-quiet-nan-and-signaling-nan/55648118#55648118
* https://stackoverflow.com/questions/2618059/in-java-what-does-nan-mean/55673220#55673220
== Baremetal
Getting started at: <<baremetal-setup>>