sdl_cpuinfo.odin 1.5 KB

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