kernel32/tests: Mask out FILE_ATTRIBUTE_COMPRESSED to prevent failures.
[wine.git] / include / msvcrt / fpieee.h
blob67f6d1147adfa524e70bf8e0d6f85044b76be2ff
1 /**
2 * Derived from mingw-w64 header.
3 * This file is in the public domain.
4 */
5 #ifndef __WINE_FPIEEE_H
6 #define __WINE_FPIEEE_H
8 #include <crtdefs.h>
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
14 typedef enum {
15 _FpCompareEqual,
16 _FpCompareGreater,
17 _FpCompareLess,
18 _FpCompareUnordered
19 } _FPIEEE_COMPARE_RESULT;
21 typedef enum {
22 _FpFormatFp32,
23 _FpFormatFp64,
24 _FpFormatFp80,
25 _FpFormatFp128,
26 _FpFormatI16,
27 _FpFormatI32,
28 _FpFormatI64,
29 _FpFormatU16,
30 _FpFormatU32,
31 _FpFormatU64,
32 _FpFormatBcd80,
33 _FpFormatCompare,
34 _FpFormatString,
35 } _FPIEEE_FORMAT;
37 typedef enum {
38 _FpCodeUnspecified,
39 _FpCodeAdd,
40 _FpCodeSubtract,
41 _FpCodeMultiply,
42 _FpCodeDivide,
43 _FpCodeSquareRoot,
44 _FpCodeRemainder,
45 _FpCodeCompare,
46 _FpCodeConvert,
47 _FpCodeRound,
48 _FpCodeTruncate,
49 _FpCodeFloor,
50 _FpCodeCeil,
51 _FpCodeAcos,
52 _FpCodeAsin,
53 _FpCodeAtan,
54 _FpCodeAtan2,
55 _FpCodeCabs,
56 _FpCodeCos,
57 _FpCodeCosh,
58 _FpCodeExp,
59 _FpCodeFabs,
60 _FpCodeFmod,
61 _FpCodeFrexp,
62 _FpCodeHypot,
63 _FpCodeLdexp,
64 _FpCodeLog,
65 _FpCodeLog10,
66 _FpCodeModf,
67 _FpCodePow,
68 _FpCodeSin,
69 _FpCodeSinh,
70 _FpCodeTan,
71 _FpCodeTanh,
72 _FpCodeY0,
73 _FpCodeY1,
74 _FpCodeYn,
75 _FpCodeLogb,
76 _FpCodeNextafter,
77 _FpCodeNegate,
78 _FpCodeFmin,
79 _FpCodeFmax,
80 _FpCodeConvertTrunc,
81 _XMMIAddps,
82 _XMMIAddss,
83 _XMMISubps,
84 _XMMISubss,
85 _XMMIMulps,
86 _XMMIMulss,
87 _XMMIDivps,
88 _XMMIDivss,
89 _XMMISqrtps,
90 _XMMISqrtss,
91 _XMMIMaxps,
92 _XMMIMaxss,
93 _XMMIMinps,
94 _XMMIMinss,
95 _XMMICmpps,
96 _XMMICmpss,
97 _XMMIComiss,
98 _XMMIUComiss,
99 _XMMICvtpi2ps,
100 _XMMICvtsi2ss,
101 _XMMICvtps2pi,
102 _XMMICvtss2si,
103 _XMMICvttps2pi,
104 _XMMICvttss2si,
105 _XMMIAddsubps,
106 _XMMIHaddps,
107 _XMMIHsubps,
108 _XMMI2Addpd,
109 _XMMI2Addsd,
110 _XMMI2Subpd,
111 _XMMI2Subsd,
112 _XMMI2Mulpd,
113 _XMMI2Mulsd,
114 _XMMI2Divpd,
115 _XMMI2Divsd,
116 _XMMI2Sqrtpd,
117 _XMMI2Sqrtsd,
118 _XMMI2Maxpd,
119 _XMMI2Maxsd,
120 _XMMI2Minpd,
121 _XMMI2Minsd,
122 _XMMI2Cmppd,
123 _XMMI2Cmpsd,
124 _XMMI2Comisd,
125 _XMMI2UComisd,
126 _XMMI2Cvtpd2pi,
127 _XMMI2Cvtsd2si,
128 _XMMI2Cvttpd2pi,
129 _XMMI2Cvttsd2si,
130 _XMMI2Cvtps2pd,
131 _XMMI2Cvtss2sd,
132 _XMMI2Cvtpd2ps,
133 _XMMI2Cvtsd2ss,
134 _XMMI2Cvtdq2ps,
135 _XMMI2Cvttps2dq,
136 _XMMI2Cvtps2dq,
137 _XMMI2Cvttpd2dq,
138 _XMMI2Cvtpd2dq,
139 _XMMI2Addsubpd,
140 _XMMI2Haddpd,
141 _XMMI2Hsubpd,
142 } _FP_OPERATION_CODE;
144 typedef enum {
145 _FpRoundNearest,
146 _FpRoundMinusInfinity,
147 _FpRoundPlusInfinity,
148 _FpRoundChopped
149 } _FPIEEE_ROUNDING_MODE;
151 typedef enum {
152 _FpPrecisionFull,
153 _FpPrecision53,
154 _FpPrecision24,
155 } _FPIEEE_PRECISION;
157 typedef float _FP32;
158 typedef double _FP64;
159 typedef short _I16;
160 typedef int _I32;
161 typedef unsigned short _U16;
162 typedef unsigned int _U32;
163 typedef __int64 _Q64;
165 typedef struct {
166 unsigned short W[5];
167 } _FP80;
169 typedef struct DECLSPEC_ALIGN(16) {
170 __msvcrt_ulong W[4];
171 } _FP128;
173 typedef struct DECLSPEC_ALIGN(8) {
174 __msvcrt_ulong W[2];
175 } _I64;
177 typedef struct DECLSPEC_ALIGN(8) {
178 __msvcrt_ulong W[2];
179 } _U64;
181 typedef struct {
182 unsigned short W[5];
183 } _BCD80;
185 typedef struct DECLSPEC_ALIGN(16) {
186 _Q64 W[2];
187 } _FPQ64;
189 typedef struct {
190 union {
191 _FP32 Fp32Value;
192 _FP64 Fp64Value;
193 _FP80 Fp80Value;
194 _FP128 Fp128Value;
195 _I16 I16Value;
196 _I32 I32Value;
197 _I64 I64Value;
198 _U16 U16Value;
199 _U32 U32Value;
200 _U64 U64Value;
201 _BCD80 Bcd80Value;
202 char *StringValue;
203 int CompareValue;
204 _Q64 Q64Value;
205 _FPQ64 Fpq64Value;
206 } Value;
207 unsigned int OperandValid : 1;
208 unsigned int Format : 4;
209 } _FPIEEE_VALUE;
211 typedef struct {
212 unsigned int Inexact : 1;
213 unsigned int Underflow : 1;
214 unsigned int Overflow : 1;
215 unsigned int ZeroDivide : 1;
216 unsigned int InvalidOperation : 1;
217 } _FPIEEE_EXCEPTION_FLAGS;
219 typedef struct {
220 unsigned int RoundingMode : 2;
221 unsigned int Precision : 3;
222 unsigned int Operation :12;
223 _FPIEEE_EXCEPTION_FLAGS Cause;
224 _FPIEEE_EXCEPTION_FLAGS Enable;
225 _FPIEEE_EXCEPTION_FLAGS Status;
226 _FPIEEE_VALUE Operand1;
227 _FPIEEE_VALUE Operand2;
228 _FPIEEE_VALUE Result;
229 } _FPIEEE_RECORD,*_PFPIEEE_RECORD;
231 struct _EXCEPTION_POINTERS;
233 int __cdecl _fpieee_flt(__msvcrt_ulong _ExceptionCode,struct _EXCEPTION_POINTERS *_PtExceptionPtr,int (__cdecl *_Handler)(_FPIEEE_RECORD *));
235 #ifdef __cplusplus
237 #endif
239 #endif