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