Mercurial > games > semicongine
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fuhtark_test/include/fpieee.h Wed Nov 26 21:36:48 2025 +0700 @@ -0,0 +1,161 @@ +/** + * 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 <_mingw.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
