mirror of
https://github.com/odin-lang/Odin.git
synced 2026-01-04 04:02:33 +00:00
core/simd/x86: Add the AES-NI intrinsics
This commit is contained in:
49
core/simd/x86/aes.odin
Normal file
49
core/simd/x86/aes.odin
Normal file
@@ -0,0 +1,49 @@
|
||||
//+build i386, amd64
|
||||
package simd_x86
|
||||
|
||||
@(require_results, enable_target_feature = "aes")
|
||||
_mm_aesdec :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
|
||||
return aesdec(a, b)
|
||||
}
|
||||
|
||||
@(require_results, enable_target_feature = "aes")
|
||||
_mm_aesdeclast :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
|
||||
return aesdeclast(a, b)
|
||||
}
|
||||
|
||||
@(require_results, enable_target_feature = "aes")
|
||||
_mm_aesenc :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
|
||||
return aesenc(a, b)
|
||||
}
|
||||
|
||||
@(require_results, enable_target_feature = "aes")
|
||||
_mm_aesenclast :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
|
||||
return aesenclast(a, b)
|
||||
}
|
||||
|
||||
@(require_results, enable_target_feature = "aes")
|
||||
_mm_aesimc :: #force_inline proc "c" (a: __m128i) -> __m128i {
|
||||
return aesimc(a)
|
||||
}
|
||||
|
||||
@(require_results, enable_target_feature = "aes")
|
||||
_mm_aeskeygenassist :: #force_inline proc "c" (a: __m128i, $IMM8: u8) -> __m128i {
|
||||
return aeskeygenassist(a, u8(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, imm8: u8) -> __m128i ---
|
||||
}
|
||||
Reference in New Issue
Block a user