sdl_cpuinfo.odin 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package sdl2
  2. import "core:c"
  3. when ODIN_OS == .Windows {
  4. @(ignore_duplicates)
  5. foreign import lib "SDL2.lib"
  6. } else {
  7. @(ignore_duplicates)
  8. foreign import lib "system:SDL2"
  9. }
  10. /* This is a guess for the cacheline size used for padding.
  11. * Most x86 processors have a 64 byte cache line.
  12. * The 64-bit PowerPC processors have a 128 byte cache line.
  13. * We'll use the larger value to be generally safe.
  14. */
  15. CACHELINE_SIZE :: 128
  16. @(default_calling_convention="c", link_prefix="SDL_")
  17. foreign lib {
  18. GetCPUCount :: proc() -> c.int ---
  19. GetCPUCacheLineSize :: proc() -> c.int ---
  20. HasRDTSC :: proc() -> bool ---
  21. HasAltiVec :: proc() -> bool ---
  22. HasMMX :: proc() -> bool ---
  23. Has3DNow :: proc() -> bool ---
  24. HasSSE :: proc() -> bool ---
  25. HasSSE2 :: proc() -> bool ---
  26. HasSSE3 :: proc() -> bool ---
  27. HasSSE41 :: proc() -> bool ---
  28. HasSSE42 :: proc() -> bool ---
  29. HasAVX :: proc() -> bool ---
  30. HasAVX2 :: proc() -> bool ---
  31. HasAVX512F :: proc() -> bool ---
  32. HasARMSIMD :: proc() -> bool ---
  33. HasNEON :: proc() -> bool ---
  34. GetSystemRAM :: proc() -> c.int ---
  35. SIMDGetAlignment :: proc() -> c.size_t ---
  36. SIMDAlloc :: proc(len: c.size_t) -> rawptr ---
  37. SIMDRealloc :: proc(mem: rawptr, len: c.size_t) -> rawptr ---
  38. SIMDFree :: proc(ptr: rawptr) ---
  39. }