на всякий чуть разверну: FPU совершенно, полностью не нужен. есть ровно одно место, где надо забрать значение со стека FPU: x86 cdecl ABI (и другие x86 ABI, да). вся плавающая точка делается на SSE. компилятор, собственно, просто откажется запускаться, если SSE не увидит — потому что SSE-инструкции много где, в том числе и для нового типа `VEC4`. никакого смысла писать обвязки для не-SSE камней нет. соответственно, вся работа с FPU — это мёртвый код, который не будет активирован никогда вообще. из плавающих типов в O/Ur только `REAL` и `SHORTREAL` (double и float соответственно).
да, в SSE нет синусов, косинусов и прочих гитик. но в Nanojit и инструкций таких нет, это всё равно интринсики, так что даже это не теряется. есть инструкции round/trunc/ceil/floor, но я их добавил сам, и они требуют SSE4.2 (или 4.1, не помню). а при отсутствии такого SSE опять будут интринсики (пришлось, потому что мой валгринд умеет только в SSE2).
|