aboutsummaryrefslogtreecommitdiff
path: root/vendor/sdl2/sdl_cpuinfo.odin
blob: a98b6f8d3783817744569e7166658c8339f708d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package sdl2

import "core:c"

when ODIN_OS == .Windows {
	@(ignore_duplicates)
	foreign import lib "SDL2.lib"
} else {
	@(ignore_duplicates)
	foreign import lib "system:SDL2"
}

/* This is a guess for the cacheline size used for padding.
 * Most x86 processors have a 64 byte cache line.
 * The 64-bit PowerPC processors have a 128 byte cache line.
 * We'll use the larger value to be generally safe.
 */
CACHELINE_SIZE :: 128


@(default_calling_convention="c", link_prefix="SDL_")
foreign lib {
	GetCPUCount         :: proc() -> c.int ---
	GetCPUCacheLineSize :: proc() -> c.int ---

	HasRDTSC            :: proc() -> bool  ---
	HasAltiVec          :: proc() -> bool  ---
	HasMMX              :: proc() -> bool  ---
	Has3DNow            :: proc() -> bool  ---
	HasSSE              :: proc() -> bool  ---
	HasSSE2             :: proc() -> bool  ---
	HasSSE3             :: proc() -> bool  ---
	HasSSE41            :: proc() -> bool  ---
	HasSSE42            :: proc() -> bool  ---
	HasAVX              :: proc() -> bool  ---
	HasAVX2             :: proc() -> bool  ---
	HasAVX512F          :: proc() -> bool  ---
	HasARMSIMD          :: proc() -> bool  ---
	HasNEON             :: proc() -> bool  ---

	GetSystemRAM        :: proc() -> c.int ---

	SIMDGetAlignment    :: proc() -> c.size_t ---
	SIMDAlloc           :: proc(len: c.size_t) -> rawptr ---
	SIMDRealloc         :: proc(mem: rawptr, len: c.size_t) -> rawptr ---
	SIMDFree            :: proc(ptr: rawptr) ---
}