aboutsummaryrefslogtreecommitdiff
path: root/core/simd/x86/aes.odin
blob: 338381422e79fbcb7d7cf11bce5889173e4af69c (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
48
49
#+build i386, amd64
package simd_x86

@(require_results, enable_target_feature = "aes")
_mm_aesdec_si128 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
	return aesdec(a, b)
}

@(require_results, enable_target_feature = "aes")
_mm_aesdeclast_si128 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
	return aesdeclast(a, b)
}

@(require_results, enable_target_feature = "aes")
_mm_aesenc_si128 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
	return aesenc(a, b)
}

@(require_results, enable_target_feature = "aes")
_mm_aesenclast_si128 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
	return aesenclast(a, b)
}

@(require_results, enable_target_feature = "aes")
_mm_aesimc_si128 :: #force_inline proc "c" (a: __m128i) -> __m128i {
	return aesimc(a)
}

@(require_results, enable_target_feature = "aes")
_mm_aeskeygenassist_si128 :: #force_inline proc "c" (a: __m128i, $IMM8: u8) -> __m128i {
	return aeskeygenassist(a, IMM8)
}


@(private, default_calling_convention = "none")
foreign _ {
	@(link_name = "llvm.x86.aesni.aesdec")
	aesdec :: proc(a, b: __m128i) -> __m128i ---
	@(link_name = "llvm.x86.aesni.aesdeclast")
	aesdeclast :: proc(a, b: __m128i) -> __m128i ---
	@(link_name = "llvm.x86.aesni.aesenc")
	aesenc :: proc(a, b: __m128i) -> __m128i ---
	@(link_name = "llvm.x86.aesni.aesenclast")
	aesenclast :: proc(a, b: __m128i) -> __m128i ---
	@(link_name = "llvm.x86.aesni.aesimc")
	aesimc :: proc(a: __m128i) -> __m128i ---
	@(link_name = "llvm.x86.aesni.aeskeygenassist")
	aeskeygenassist :: proc(a: __m128i, #const imm8: u8) -> __m128i ---
}