diff fuhtark_test/include/conio.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/conio.h	Wed Nov 26 21:36:48 2025 +0700
@@ -0,0 +1,409 @@
+/**
+ * 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_CONIO
+#define _INC_CONIO
+
+#include <_mingw.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  _CRTIMP char *_cgets(char *_Buffer);
+  _CRTIMP int __cdecl _cprintf(const char *_Format,...);
+  _CRTIMP int __cdecl _cputs(const char *_Str);
+  _CRTIMP int __cdecl _cscanf(const char *_Format,...);
+  _CRTIMP int __cdecl _cscanf_l(const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _getch(void);
+  _CRTIMP int __cdecl _getche(void);
+  _CRTIMP int __cdecl _vcprintf(const char *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _cprintf_p(const char *_Format,...);
+  _CRTIMP int __cdecl _vcprintf_p(const char *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _cprintf_l(const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcprintf_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _cprintf_p_l(const char *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcprintf_p_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _kbhit(void);
+
+#if defined(_X86_) && !defined(__x86_64)
+  int __cdecl _inp(unsigned short);
+  unsigned short __cdecl _inpw(unsigned short);
+  unsigned long __cdecl _inpd(unsigned short);
+  int __cdecl _outp(unsigned short,int);
+  unsigned short __cdecl _outpw(unsigned short,unsigned short);
+  unsigned long __cdecl _outpd(unsigned short,unsigned long);
+#endif
+
+  _CRTIMP int __cdecl _putch(int _Ch);
+  _CRTIMP int __cdecl _ungetch(int _Ch);
+  _CRTIMP int __cdecl _getch_nolock(void);
+  _CRTIMP int __cdecl _getche_nolock(void);
+  _CRTIMP int __cdecl _putch_nolock(int _Ch);
+  _CRTIMP int __cdecl _ungetch_nolock(int _Ch);
+
+#ifndef _WCONIO_DEFINED
+#define _WCONIO_DEFINED
+
+#ifndef WEOF
+#define WEOF (wint_t)(0xFFFF)
+#endif
+
+  _CRTIMP wchar_t *_cgetws(wchar_t *_Buffer);
+  _CRTIMP wint_t __cdecl _getwch(void);
+  _CRTIMP wint_t __cdecl _getwche(void);
+  _CRTIMP wint_t __cdecl _putwch(wchar_t _WCh);
+  _CRTIMP wint_t __cdecl _ungetwch(wint_t _WCh);
+  _CRTIMP int __cdecl _cputws(const wchar_t *_String);
+  _CRTIMP int __cdecl _cwprintf(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _cwscanf(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _cwscanf_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcwprintf(const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _cwprintf_p(const wchar_t *_Format,...);
+  _CRTIMP int __cdecl _vcwprintf_p(const wchar_t *_Format,va_list _ArgList);
+  _CRTIMP int __cdecl _cwprintf_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcwprintf_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP int __cdecl _cwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,...);
+  _CRTIMP int __cdecl _vcwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
+  _CRTIMP wint_t __cdecl _putwch_nolock(wchar_t _WCh);
+  _CRTIMP wint_t __cdecl _getwch_nolock(void);
+  _CRTIMP wint_t __cdecl _getwche_nolock(void);
+  _CRTIMP wint_t __cdecl _ungetwch_nolock(wint_t _WCh);
+#endif
+
+#ifndef	NO_OLDNAMES
+  char *__cdecl cgets(char *_Buffer);
+  int __cdecl cprintf(const char *_Format,...);
+  int __cdecl cputs(const char *_Str);
+  int __cdecl cscanf(const char *_Format,...);
+  int __cdecl getch(void);
+  int __cdecl getche(void);
+  int __cdecl kbhit(void);
+  int __cdecl putch(int _Ch);
+  int __cdecl ungetch(int _Ch);
+
+#if (defined(_X86_) && !defined(__x86_64))
+  int __cdecl inp(unsigned short);
+  unsigned short __cdecl inpw(unsigned short);
+  int __cdecl outp(unsigned short,int);
+  unsigned short __cdecl outpw(unsigned short,unsigned short);
+#endif
+
+  /* I/O intrin functions.  */
+  __CRT_INLINE unsigned char __inbyte(unsigned short Port)
+  {
+      unsigned char value;
+      __asm__ __volatile__ ("inb %w1,%b0"
+          : "=a" (value)
+          : "Nd" (Port));
+      return value;
+  }
+  __CRT_INLINE unsigned short __inword(unsigned short Port)
+  {
+      unsigned short value;
+      __asm__ __volatile__ ("inw %w1,%w0"
+          : "=a" (value)
+          : "Nd" (Port));
+      return value;
+  }
+  __CRT_INLINE unsigned long __indword(unsigned short Port)
+  {
+      unsigned long value;
+      __asm__ __volatile__ ("inl %w1,%0"
+          : "=a" (value)
+          : "Nd" (Port));
+      return value;
+  }
+  __CRT_INLINE void __outbyte(unsigned short Port,unsigned char Data)
+  {
+      __asm__ __volatile__ ("outb %b0,%w1"
+          :
+          : "a" (Data), "Nd" (Port));
+  }
+  __CRT_INLINE void __outword(unsigned short Port,unsigned short Data)
+  {
+      __asm__ __volatile__ ("outw %w0,%w1"
+          :
+          : "a" (Data), "Nd" (Port));
+  }
+  __CRT_INLINE void __outdword(unsigned short Port,unsigned long Data)
+  {
+      __asm__ __volatile__ ("outl %0,%w1"
+          :
+          : "a" (Data), "Nd" (Port));
+  }
+  __CRT_INLINE void __inbytestring(unsigned short Port,unsigned char *Buffer,unsigned long Count)
+  {
+	__asm__ __volatile__ (
+		"cld ; rep ; insb " 
+		: "=D" (Buffer), "=c" (Count)
+		: "d"(Port), "0"(Buffer), "1" (Count)
+		);
+  }
+  __CRT_INLINE void __inwordstring(unsigned short Port,unsigned short *Buffer,unsigned long Count)
+  {
+	__asm__ __volatile__ (
+		"cld ; rep ; insw " 
+		: "=D" (Buffer), "=c" (Count)
+		: "d"(Port), "0"(Buffer), "1" (Count)
+		);
+  }
+  __CRT_INLINE void __indwordstring(unsigned short Port,unsigned long *Buffer,unsigned long Count)
+  {
+	__asm__ __volatile__ (
+		"cld ; rep ; insl " 
+		: "=D" (Buffer), "=c" (Count)
+		: "d"(Port), "0"(Buffer), "1" (Count)
+		);
+  }
+
+  __CRT_INLINE void __outbytestring(unsigned short Port,unsigned char *Buffer,unsigned long Count)
+  {
+      __asm__ __volatile__ (
+          "cld ; rep ; outsb " 
+          : "=S" (Buffer), "=c" (Count)
+          : "d"(Port), "0"(Buffer), "1" (Count)
+          );
+  }
+  __CRT_INLINE void __outwordstring(unsigned short Port,unsigned short *Buffer,unsigned long Count)
+  {
+      __asm__ __volatile__ (
+          "cld ; rep ; outsw " 
+          : "=S" (Buffer), "=c" (Count)
+          : "d"(Port), "0"(Buffer), "1" (Count)
+          );
+  }
+  __CRT_INLINE void __outdwordstring(unsigned short Port,unsigned long *Buffer,unsigned long Count)
+  {
+      __asm__ __volatile__ (
+          "cld ; rep ; outsl " 
+          : "=S" (Buffer), "=c" (Count)
+          : "d"(Port), "0"(Buffer), "1" (Count)
+          );
+  }
+
+  __CRT_INLINE unsigned __int64 __readcr0(void)
+  {
+      unsigned __int64 value;
+      __asm__ __volatile__ (
+          "mov %%cr0, %[value]" 
+          : [value] "=q" (value));
+      return value;
+  }
+ 
+  /* Register sizes are different between 32/64 bit mode. So we have to do this for _WIN64 and _WIN32
+     separately.  */
+ 
+#ifdef _WIN64
+  __CRT_INLINE void __writecr0(unsigned __int64 Data)
+  {
+   __asm__ __volatile__ (
+       "mov %[Data], %%cr0"
+       :
+       : [Data] "q" (Data)
+       : "memory");
+  }
+ 
+  __CRT_INLINE unsigned __int64 __readcr2(void)
+  {
+      unsigned __int64 value;
+      __asm__ __volatile__ (
+          "mov %%cr2, %[value]" 
+          : [value] "=q" (value));
+      return value;
+  }
+
+ __CRT_INLINE void __writecr2(unsigned __int64 Data)
+ {
+   __asm__ __volatile__ (
+       "mov %[Data], %%cr2"
+       :
+       : [Data] "q" (Data)
+       : "memory");
+ }
+ 
+  __CRT_INLINE unsigned __int64 __readcr3(void)
+  {
+      unsigned __int64 value;
+      __asm__ __volatile__ (
+          "mov %%cr3, %[value]" 
+          : [value] "=q" (value));
+      return value;
+  }
+
+ __CRT_INLINE void __writecr3(unsigned __int64 Data)
+ {
+   __asm__ __volatile__ (
+       "mov %[Data], %%cr3"
+       :
+       : [Data] "q" (Data)
+       : "memory");
+ }
+ 
+  __CRT_INLINE unsigned __int64 __readcr4(void)
+  {
+      unsigned __int64 value;
+      __asm__ __volatile__ (
+          "mov %%cr4, %[value]" 
+          : [value] "=q" (value));
+      return value;
+  }
+
+ __CRT_INLINE void __writecr4(unsigned __int64 Data)
+ {
+     __asm__ __volatile__ (
+         "mov %[Data], %%cr4"
+         :
+         : [Data] "q" (Data)
+         : "memory");
+ }
+ 
+  __CRT_INLINE unsigned __int64 __readcr8(void)
+  {
+      unsigned __int64 value;
+      __asm__ __volatile__ (
+          "mov %%cr8, %[value]" 
+          : [value] "=q" (value));
+      return value;
+  }
+
+ __CRT_INLINE void __writecr8(unsigned __int64 Data)
+ {
+   __asm__ __volatile__ (
+       "mov %[Data], %%cr8"
+       :
+       : [Data] "q" (Data)
+       : "memory");
+ }
+ 
+#elif defined(_WIN32)
+
+  __CRT_INLINE void __writecr0(unsigned Data)
+  {
+    __asm__ __volatile__ (
+       "mov %[Data], %%cr0"
+       :
+       : [Data] "q" (Data)
+       : "memory");
+  }
+ 
+  __CRT_INLINE unsigned long __readcr2(void)
+  {
+      unsigned long value;
+      __asm__ __volatile__ (
+          "mov %%cr2, %[value]" 
+          : [value] "=q" (value));
+      return value;
+  }
+
+ __CRT_INLINE void __writecr2(unsigned Data)
+ {
+   __asm__ __volatile__ (
+       "mov %[Data], %%cr2"
+       :
+       : [Data] "q" (Data)
+       : "memory");
+ }
+ 
+  __CRT_INLINE unsigned long __readcr3(void)
+  {
+      unsigned long value;
+      __asm__ __volatile__ (
+          "mov %%cr3, %[value]" 
+          : [value] "=q" (value));
+      return value;
+  }
+
+ __CRT_INLINE void __writecr3(unsigned Data)
+ {
+   __asm__ __volatile__ (
+       "mov %[Data], %%cr3"
+       :
+       : [Data] "q" (Data)
+       : "memory");
+ }
+ 
+  __CRT_INLINE unsigned long __readcr4(void)
+  {
+      unsigned long value;
+      __asm__ __volatile__ (
+          "mov %%cr4, %[value]" 
+          : [value] "=q" (value));
+      return value;
+  }
+
+ __CRT_INLINE void __writecr4(unsigned Data)
+ {
+     __asm__ __volatile__ (
+         "mov %[Data], %%cr4"
+         :
+         : [Data] "q" (Data)
+         : "memory");
+ }
+ 
+ __CRT_INLINE unsigned long __readcr8(void)
+ {
+   unsigned long value;      __asm__ __volatile__ (
+          "mov %%cr8, %[value]" 
+          : [value] "=q" (value));
+     return value;
+ }
+
+ __CRT_INLINE void __writecr8(unsigned Data)
+ {
+   __asm__ __volatile__ (
+       "mov %[Data], %%cr8"
+       :
+       : [Data] "q" (Data)
+       : "memory");
+ }
+ 
+#endif
+
+  __CRT_INLINE unsigned __int64 __readmsr(unsigned long msr)
+  {
+      unsigned __int64 val1, val2;
+       __asm__ __volatile__(
+           "rdmsr"
+           : "=a" (val1), "=d" (val2)
+           : "c" (msr));
+      return val1 | (val2 << 32);
+  }
+
+ __CRT_INLINE void __writemsr (unsigned long msr, unsigned __int64 Value)
+ {
+    unsigned long val1 = Value, val2 = Value >> 32;
+   __asm__ __volatile__ (
+       "wrmsr"
+       :
+       : "c" (msr), "a" (val1), "d" (val2));
+ }
+ 
+  __CRT_INLINE unsigned __int64 __rdtsc(void)
+  {
+      unsigned __int64 val1, val2;
+      __asm__ __volatile__ (
+          "rdtsc" 
+          : "=a" (val1), "=d" (val2));
+      return val1 | (val2 << 32);
+  }
+
+  __CRT_INLINE void __cpuid(int CPUInfo[4], int InfoType)
+  {
+      __asm__ __volatile__ (
+          "cpuid"
+          : "=a" (CPUInfo [0]), "=b" (CPUInfo [1]), "=c" (CPUInfo [2]), "=d" (CPUInfo [3])
+          : "a" (InfoType));
+  }
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <sec_api/conio_s.h>
+
+#endif