| /** | |
| * Derived from mingw-w64 header. | |
| * This file is in the public domain. | |
| */ | |
| #ifndef __WINE_FPIEEE_H | |
| #define __WINE_FPIEEE_H | |
| #include <crtdefs.h> | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| typedef enum { | |
| _FpCompareEqual, | |
| _FpCompareGreater, | |
| _FpCompareLess, | |
| _FpCompareUnordered | |
| } _FPIEEE_COMPARE_RESULT; | |
| typedef enum { | |
| _FpFormatFp32, | |
| _FpFormatFp64, | |
| _FpFormatFp80, | |
| _FpFormatFp128, | |
| _FpFormatI16, | |
| _FpFormatI32, | |
| _FpFormatI64, | |
| _FpFormatU16, | |
| _FpFormatU32, | |
| _FpFormatU64, | |
| _FpFormatBcd80, | |
| _FpFormatCompare, | |
| _FpFormatString, | |
| } _FPIEEE_FORMAT; | |
| typedef enum { | |
| _FpCodeUnspecified, | |
| _FpCodeAdd, | |
| _FpCodeSubtract, | |
| _FpCodeMultiply, | |
| _FpCodeDivide, | |
| _FpCodeSquareRoot, | |
| _FpCodeRemainder, | |
| _FpCodeCompare, | |
| _FpCodeConvert, | |
| _FpCodeRound, | |
| _FpCodeTruncate, | |
| _FpCodeFloor, | |
| _FpCodeCeil, | |
| _FpCodeAcos, | |
| _FpCodeAsin, | |
| _FpCodeAtan, | |
| _FpCodeAtan2, | |
| _FpCodeCabs, | |
| _FpCodeCos, | |
| _FpCodeCosh, | |
| _FpCodeExp, | |
| _FpCodeFabs, | |
| _FpCodeFmod, | |
| _FpCodeFrexp, | |
| _FpCodeHypot, | |
| _FpCodeLdexp, | |
| _FpCodeLog, | |
| _FpCodeLog10, | |
| _FpCodeModf, | |
| _FpCodePow, | |
| _FpCodeSin, | |
| _FpCodeSinh, | |
| _FpCodeTan, | |
| _FpCodeTanh, | |
| _FpCodeY0, | |
| _FpCodeY1, | |
| _FpCodeYn, | |
| _FpCodeLogb, | |
| _FpCodeNextafter, | |
| _FpCodeNegate, | |
| _FpCodeFmin, | |
| _FpCodeFmax, | |
| _FpCodeConvertTrunc, | |
| _XMMIAddps, | |
| _XMMIAddss, | |
| _XMMISubps, | |
| _XMMISubss, | |
| _XMMIMulps, | |
| _XMMIMulss, | |
| _XMMIDivps, | |
| _XMMIDivss, | |
| _XMMISqrtps, | |
| _XMMISqrtss, | |
| _XMMIMaxps, | |
| _XMMIMaxss, | |
| _XMMIMinps, | |
| _XMMIMinss, | |
| _XMMICmpps, | |
| _XMMICmpss, | |
| _XMMIComiss, | |
| _XMMIUComiss, | |
| _XMMICvtpi2ps, | |
| _XMMICvtsi2ss, | |
| _XMMICvtps2pi, | |
| _XMMICvtss2si, | |
| _XMMICvttps2pi, | |
| _XMMICvttss2si, | |
| _XMMIAddsubps, | |
| _XMMIHaddps, | |
| _XMMIHsubps, | |
| _XMMI2Addpd, | |
| _XMMI2Addsd, | |
| _XMMI2Subpd, | |
| _XMMI2Subsd, | |
| _XMMI2Mulpd, | |
| _XMMI2Mulsd, | |
| _XMMI2Divpd, | |
| _XMMI2Divsd, | |
| _XMMI2Sqrtpd, | |
| _XMMI2Sqrtsd, | |
| _XMMI2Maxpd, | |
| _XMMI2Maxsd, | |
| _XMMI2Minpd, | |
| _XMMI2Minsd, | |
| _XMMI2Cmppd, | |
| _XMMI2Cmpsd, | |
| _XMMI2Comisd, | |
| _XMMI2UComisd, | |
| _XMMI2Cvtpd2pi, | |
| _XMMI2Cvtsd2si, | |
| _XMMI2Cvttpd2pi, | |
| _XMMI2Cvttsd2si, | |
| _XMMI2Cvtps2pd, | |
| _XMMI2Cvtss2sd, | |
| _XMMI2Cvtpd2ps, | |
| _XMMI2Cvtsd2ss, | |
| _XMMI2Cvtdq2ps, | |
| _XMMI2Cvttps2dq, | |
| _XMMI2Cvtps2dq, | |
| _XMMI2Cvttpd2dq, | |
| _XMMI2Cvtpd2dq, | |
| _XMMI2Addsubpd, | |
| _XMMI2Haddpd, | |
| _XMMI2Hsubpd, | |
| } _FP_OPERATION_CODE; | |
| typedef enum { | |
| _FpRoundNearest, | |
| _FpRoundMinusInfinity, | |
| _FpRoundPlusInfinity, | |
| _FpRoundChopped | |
| } _FPIEEE_ROUNDING_MODE; | |
| typedef enum { | |
| _FpPrecisionFull, | |
| _FpPrecision53, | |
| _FpPrecision24, | |
| } _FPIEEE_PRECISION; | |
| typedef float _FP32; | |
| typedef double _FP64; | |
| typedef short _I16; | |
| typedef int _I32; | |
| typedef unsigned short _U16; | |
| typedef unsigned int _U32; | |
| typedef __int64 _Q64; | |
| typedef struct { | |
| unsigned short W[5]; | |
| } _FP80; | |
| typedef struct DECLSPEC_ALIGN(16) { | |
| __msvcrt_ulong W[4]; | |
| } _FP128; | |
| typedef struct DECLSPEC_ALIGN(8) { | |
| __msvcrt_ulong W[2]; | |
| } _I64; | |
| typedef struct DECLSPEC_ALIGN(8) { | |
| __msvcrt_ulong W[2]; | |
| } _U64; | |
| typedef struct { | |
| unsigned short W[5]; | |
| } _BCD80; | |
| typedef struct DECLSPEC_ALIGN(16) { | |
| _Q64 W[2]; | |
| } _FPQ64; | |
| typedef struct { | |
| union { | |
| _FP32 Fp32Value; | |
| _FP64 Fp64Value; | |
| _FP80 Fp80Value; | |
| _FP128 Fp128Value; | |
| _I16 I16Value; | |
| _I32 I32Value; | |
| _I64 I64Value; | |
| _U16 U16Value; | |
| _U32 U32Value; | |
| _U64 U64Value; | |
| _BCD80 Bcd80Value; | |
| char *StringValue; | |
| int CompareValue; | |
| _Q64 Q64Value; | |
| _FPQ64 Fpq64Value; | |
| } Value; | |
| unsigned int OperandValid : 1; | |
| unsigned int Format : 4; | |
| } _FPIEEE_VALUE; | |
| typedef struct { | |
| unsigned int Inexact : 1; | |
| unsigned int Underflow : 1; | |
| unsigned int Overflow : 1; | |
| unsigned int ZeroDivide : 1; | |
| unsigned int InvalidOperation : 1; | |
| } _FPIEEE_EXCEPTION_FLAGS; | |
| typedef struct { | |
| unsigned int RoundingMode : 2; | |
| unsigned int Precision : 3; | |
| unsigned int Operation :12; | |
| _FPIEEE_EXCEPTION_FLAGS Cause; | |
| _FPIEEE_EXCEPTION_FLAGS Enable; | |
| _FPIEEE_EXCEPTION_FLAGS Status; | |
| _FPIEEE_VALUE Operand1; | |
| _FPIEEE_VALUE Operand2; | |
| _FPIEEE_VALUE Result; | |
| } _FPIEEE_RECORD,*_PFPIEEE_RECORD; | |
| struct _EXCEPTION_POINTERS; | |
| int __cdecl _fpieee_flt(__msvcrt_ulong _ExceptionCode,struct _EXCEPTION_POINTERS *_PtExceptionPtr,int (__cdecl *_Handler)(_FPIEEE_RECORD *)); | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif |