Mercurial > foo_out_sdl
view foosdk/sdk/pfc/fpu.h @ 1:20d02a178406 default tip
*: check in everything else
yay
| author | Paper <paper@tflc.us> |
|---|---|
| date | Mon, 05 Jan 2026 02:15:46 -0500 |
| parents | |
| children |
line wrap: on
line source
#pragma once #ifdef _MSC_VER class fpu_control { unsigned old_val; unsigned mask; public: inline fpu_control(unsigned p_mask,unsigned p_val) { mask = p_mask; _controlfp_s(&old_val,p_val,mask); } inline ~fpu_control() { unsigned dummy; _controlfp_s(&dummy,old_val,mask); } }; class fpu_control_roundnearest : private fpu_control { public: fpu_control_roundnearest() : fpu_control(_MCW_RC,_RC_NEAR) {} }; class fpu_control_flushdenormal : private fpu_control { public: fpu_control_flushdenormal() : fpu_control(_MCW_DN,_DN_FLUSH) {} }; class fpu_control_default : private fpu_control { public: fpu_control_default() : fpu_control(_MCW_DN|_MCW_RC,_DN_FLUSH|_RC_NEAR) {} }; #ifdef _M_IX86 class sse_control { public: sse_control(unsigned p_mask,unsigned p_val) : m_mask(p_mask) { __control87_2(p_val,p_mask,NULL,&m_oldval); } ~sse_control() { __control87_2(m_oldval,m_mask,NULL,&m_oldval); } private: unsigned m_mask,m_oldval; }; class sse_control_flushdenormal : private sse_control { public: sse_control_flushdenormal() : sse_control(_MCW_DN,_DN_FLUSH) {} }; #endif #endif
