Mercurial > games > semicongine
comparison fuhtark_test/include/fpieee.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1499:1f58458b7ef7 | 1500:91c8c3b7cbf0 |
|---|---|
| 1 /** | |
| 2 * This file has no copyright assigned and is placed in the Public Domain. | |
| 3 * This file is part of the w64 mingw-runtime package. | |
| 4 * No warranty is given; refer to the file DISCLAIMER within this package. | |
| 5 */ | |
| 6 #ifndef _INC_FPIEEE | |
| 7 #define _INC_FPIEEE | |
| 8 | |
| 9 #include <_mingw.h> | |
| 10 | |
| 11 #pragma pack(push,_CRT_PACKING) | |
| 12 | |
| 13 #ifdef __cplusplus | |
| 14 extern "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 |
