mirror of
https://github.com/reactos/reactos.git
synced 2024-11-18 21:13:52 +00:00
140 lines
4.5 KiB
C
140 lines
4.5 KiB
C
/**
|
|
* This file has no copyright assigned and is placed in the Public Domain.
|
|
* This file is part of the w64 mingw-runtime package.
|
|
* No warranty is given; refer to the file DISCLAIMER within this package.
|
|
*/
|
|
#ifndef _INC_FPIEEE
|
|
#define _INC_FPIEEE
|
|
|
|
#include <crtdefs.h>
|
|
|
|
#pragma pack(push,_CRT_PACKING)
|
|
|
|
#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,
|
|
#if defined(__ia64__)
|
|
_FpFormatFp82
|
|
#endif
|
|
} _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,
|
|
#if defined(__ia64__)
|
|
_FpCodeFma,_FpCodeFmaSingle,_FpCodeFmaDouble,_FpCodeFms,_FpCodeFmsSingle,_FpCodeFmsDouble,_FpCodeFnma,_FpCodeFnmaSingle,_FpCodeFnmaDouble,_FpCodeFamin,_FpCodeFamax
|
|
#endif
|
|
} _FP_OPERATION_CODE;
|
|
|
|
typedef enum {
|
|
_FpRoundNearest,_FpRoundMinusInfinity,_FpRoundPlusInfinity,_FpRoundChopped
|
|
} _FPIEEE_ROUNDING_MODE;
|
|
|
|
typedef enum {
|
|
_FpPrecisionFull,_FpPrecision53,_FpPrecision24,
|
|
#if defined(__ia64__)
|
|
_FpPrecision64,_FpPrecision113
|
|
#endif
|
|
} _FPIEEE_PRECISION;
|
|
|
|
typedef float _FP32;
|
|
typedef double _FP64;
|
|
typedef short _I16;
|
|
typedef int _I32;
|
|
typedef unsigned short _U16;
|
|
typedef unsigned int _U32;
|
|
__MINGW_EXTENSION typedef __int64 _Q64;
|
|
|
|
typedef struct
|
|
#if defined(__ia64__)
|
|
_CRT_ALIGN(16)
|
|
#endif
|
|
{
|
|
unsigned short W[5];
|
|
} _FP80;
|
|
|
|
typedef struct _CRT_ALIGN(16) {
|
|
unsigned long W[4];
|
|
} _FP128;
|
|
|
|
typedef struct _CRT_ALIGN(8) {
|
|
unsigned long W[2];
|
|
} _I64;
|
|
|
|
typedef struct _CRT_ALIGN(8) {
|
|
unsigned long W[2];
|
|
} _U64;
|
|
|
|
typedef struct
|
|
#if defined(__ia64__)
|
|
_CRT_ALIGN(16)
|
|
#endif
|
|
{
|
|
unsigned short W[5];
|
|
} _BCD80;
|
|
|
|
typedef struct _CRT_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;
|
|
#if defined(__ia64__)
|
|
_FPIEEE_VALUE Operand3;
|
|
#endif
|
|
} _FPIEEE_RECORD,*_PFPIEEE_RECORD;
|
|
|
|
struct _EXCEPTION_POINTERS;
|
|
|
|
_CRTIMP int __cdecl _fpieee_flt(unsigned long _ExceptionCode,struct _EXCEPTION_POINTERS *_PtExceptionPtr,int (__cdecl *_Handler)(_FPIEEE_RECORD *));
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#pragma pack(pop)
|
|
#endif
|