source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/fpieee.h@ 1186

Last change on this file since 1186 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 4.6 KB
Line 
1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#ifndef _INC_FPIEEE
7#define _INC_FPIEEE
8
9#include <crtdefs.h>
10
11#pragma pack(push,_CRT_PACKING)
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17 typedef enum {
18 _FpCompareEqual,_FpCompareGreater,_FpCompareLess,_FpCompareUnordered
19 } _FPIEEE_COMPARE_RESULT;
20
21 typedef enum {
22 _FpFormatFp32,_FpFormatFp64,_FpFormatFp80,_FpFormatFp128,_FpFormatI16,_FpFormatI32,
23 _FpFormatI64,_FpFormatU16,_FpFormatU32,_FpFormatU64,_FpFormatBcd80,_FpFormatCompare,
24 _FpFormatString,
25#if defined(__ia64__)
26 _FpFormatFp82
27#endif
28 } _FPIEEE_FORMAT;
29
30 typedef enum {
31 _FpCodeUnspecified,_FpCodeAdd,_FpCodeSubtract,_FpCodeMultiply,_FpCodeDivide,
32 _FpCodeSquareRoot,_FpCodeRemainder,_FpCodeCompare,_FpCodeConvert,_FpCodeRound,
33 _FpCodeTruncate,_FpCodeFloor,_FpCodeCeil,_FpCodeAcos,_FpCodeAsin,_FpCodeAtan,
34 _FpCodeAtan2,_FpCodeCabs,_FpCodeCos,_FpCodeCosh,_FpCodeExp,_FpCodeFabs,_FpCodeFmod,
35 _FpCodeFrexp,_FpCodeHypot,_FpCodeLdexp,_FpCodeLog,_FpCodeLog10,_FpCodeModf,
36 _FpCodePow,_FpCodeSin,_FpCodeSinh,_FpCodeTan,_FpCodeTanh,_FpCodeY0,_FpCodeY1,
37 _FpCodeYn,_FpCodeLogb,_FpCodeNextafter,_FpCodeNegate,_FpCodeFmin,_FpCodeFmax,
38 _FpCodeConvertTrunc,
39 _XMMIAddps,_XMMIAddss,_XMMISubps,_XMMISubss,_XMMIMulps,_XMMIMulss,_XMMIDivps,
40 _XMMIDivss,_XMMISqrtps,_XMMISqrtss,_XMMIMaxps,_XMMIMaxss,_XMMIMinps,_XMMIMinss,
41 _XMMICmpps,_XMMICmpss,_XMMIComiss,_XMMIUComiss,_XMMICvtpi2ps,_XMMICvtsi2ss,
42 _XMMICvtps2pi,_XMMICvtss2si,_XMMICvttps2pi,_XMMICvttss2si,_XMMIAddsubps,_XMMIHaddps,
43 _XMMIHsubps,_XMMI2Addpd,_XMMI2Addsd,_XMMI2Subpd,_XMMI2Subsd,_XMMI2Mulpd,_XMMI2Mulsd,
44 _XMMI2Divpd,_XMMI2Divsd,_XMMI2Sqrtpd,_XMMI2Sqrtsd,_XMMI2Maxpd,_XMMI2Maxsd,_XMMI2Minpd,
45 _XMMI2Minsd,_XMMI2Cmppd,_XMMI2Cmpsd,_XMMI2Comisd,_XMMI2UComisd,_XMMI2Cvtpd2pi,
46 _XMMI2Cvtsd2si,_XMMI2Cvttpd2pi,_XMMI2Cvttsd2si,_XMMI2Cvtps2pd,_XMMI2Cvtss2sd,
47 _XMMI2Cvtpd2ps,_XMMI2Cvtsd2ss,_XMMI2Cvtdq2ps,_XMMI2Cvttps2dq,_XMMI2Cvtps2dq,
48 _XMMI2Cvttpd2dq,_XMMI2Cvtpd2dq,_XMMI2Addsubpd,_XMMI2Haddpd,_XMMI2Hsubpd,
49#if defined(__ia64__)
50 _FpCodeFma,_FpCodeFmaSingle,_FpCodeFmaDouble,_FpCodeFms,_FpCodeFmsSingle,
51 _FpCodeFmsDouble,_FpCodeFnma,_FpCodeFnmaSingle,_FpCodeFnmaDouble,_FpCodeFamin,
52 _FpCodeFamax
53#endif
54 } _FP_OPERATION_CODE;
55
56 typedef enum {
57 _FpRoundNearest,_FpRoundMinusInfinity,_FpRoundPlusInfinity,_FpRoundChopped
58 } _FPIEEE_ROUNDING_MODE;
59
60 typedef enum {
61 _FpPrecisionFull,_FpPrecision53,_FpPrecision24,
62#if defined(__ia64__)
63 _FpPrecision64,_FpPrecision113
64#endif
65 } _FPIEEE_PRECISION;
66
67 typedef float _FP32;
68 typedef double _FP64;
69 typedef short _I16;
70 typedef int _I32;
71 typedef unsigned short _U16;
72 typedef unsigned int _U32;
73 __MINGW_EXTENSION typedef __int64 _Q64;
74
75 typedef struct
76#if defined(__ia64__)
77 _CRT_ALIGN(16)
78#endif
79 {
80 unsigned short W[5];
81 } _FP80;
82
83 typedef struct _CRT_ALIGN(16) {
84 unsigned long W[4];
85 } _FP128;
86
87 typedef struct _CRT_ALIGN(8) {
88 unsigned long W[2];
89 } _I64;
90
91 typedef struct _CRT_ALIGN(8) {
92 unsigned long W[2];
93 } _U64;
94
95 typedef struct
96#if defined(__ia64__)
97 _CRT_ALIGN(16)
98#endif
99 {
100 unsigned short W[5];
101 } _BCD80;
102
103 typedef struct _CRT_ALIGN(16) {
104 _Q64 W[2];
105 } _FPQ64;
106
107 typedef struct {
108 union {
109 _FP32 Fp32Value;
110 _FP64 Fp64Value;
111 _FP80 Fp80Value;
112 _FP128 Fp128Value;
113 _I16 I16Value;
114 _I32 I32Value;
115 _I64 I64Value;
116 _U16 U16Value;
117 _U32 U32Value;
118 _U64 U64Value;
119 _BCD80 Bcd80Value;
120 char *StringValue;
121 int CompareValue;
122 _Q64 Q64Value;
123 _FPQ64 Fpq64Value;
124 } Value;
125 unsigned int OperandValid : 1;
126 unsigned int Format : 4;
127 } _FPIEEE_VALUE;
128
129 typedef struct {
130 unsigned int Inexact : 1;
131 unsigned int Underflow : 1;
132 unsigned int Overflow : 1;
133 unsigned int ZeroDivide : 1;
134 unsigned int InvalidOperation : 1;
135 } _FPIEEE_EXCEPTION_FLAGS;
136
137 typedef struct {
138 unsigned int RoundingMode : 2;
139 unsigned int Precision : 3;
140 unsigned int Operation :12;
141 _FPIEEE_EXCEPTION_FLAGS Cause;
142 _FPIEEE_EXCEPTION_FLAGS Enable;
143 _FPIEEE_EXCEPTION_FLAGS Status;
144 _FPIEEE_VALUE Operand1;
145 _FPIEEE_VALUE Operand2;
146 _FPIEEE_VALUE Result;
147#if defined(__ia64__)
148 _FPIEEE_VALUE Operand3;
149#endif
150 } _FPIEEE_RECORD,*_PFPIEEE_RECORD;
151
152 struct _EXCEPTION_POINTERS;
153
154 _CRTIMP int __cdecl _fpieee_flt(unsigned long _ExceptionCode,struct _EXCEPTION_POINTERS *_PtExceptionPtr,int (__cdecl *_Handler)(_FPIEEE_RECORD *));
155
156#ifdef __cplusplus
157}
158#endif
159
160#pragma pack(pop)
161#endif
Note: See TracBrowser for help on using the repository browser.