mirror of
https://github.com/odin-lang/Odin.git
synced 2026-04-06 06:38:20 +00:00
35 lines
1.3 KiB
Odin
35 lines
1.3 KiB
Odin
#+build arm64,arm32
|
|
package simd_arm
|
|
|
|
@(require_results, enable_target_feature = "aes")
|
|
vaeseq_u8 :: #force_inline proc "c" (data, key: uint8x16_t) -> uint8x16_t {
|
|
return _vaeseq_u8(data, key)
|
|
}
|
|
|
|
@(require_results, enable_target_feature = "aes")
|
|
vaesdq_u8 :: #force_inline proc "c" (data, key: uint8x16_t) -> uint8x16_t {
|
|
return _vaesdq_u8(data, key)
|
|
}
|
|
|
|
@(require_results, enable_target_feature = "aes")
|
|
vaesmcq_u8 :: #force_inline proc "c" (data: uint8x16_t) -> uint8x16_t {
|
|
return _vaesmcq_u8(data)
|
|
}
|
|
|
|
@(require_results,enable_target_feature = "aes")
|
|
vaesimcq_u8 :: #force_inline proc "c" (data: uint8x16_t) -> uint8x16_t {
|
|
return _vaesimcq_u8(data)
|
|
}
|
|
|
|
@(private, default_calling_convention = "none")
|
|
foreign _ {
|
|
@(link_name = "llvm.aarch64.crypto.aese" when ODIN_ARCH == .arm64 else "llvm.arm.neon.aese")
|
|
_vaeseq_u8 :: proc(data, key: uint8x16_t) -> uint8x16_t ---
|
|
@(link_name = "llvm.aarch64.crypto.aesd" when ODIN_ARCH == .arm64 else "llvm.arm.neon.aesd")
|
|
_vaesdq_u8 :: proc(data, key: uint8x16_t) -> uint8x16_t ---
|
|
@(link_name = "llvm.aarch64.crypto.aesmc" when ODIN_ARCH == .arm64 else "llvm.arm.neon.aesmc")
|
|
_vaesmcq_u8 :: proc(data: uint8x16_t) -> uint8x16_t ---
|
|
@(link_name = "llvm.aarch64.crypto.aesimc" when ODIN_ARCH == .arm64 else "llvm.arm.neon.aesimc")
|
|
_vaesimcq_u8 :: proc(data: uint8x16_t) -> uint8x16_t ---
|
|
}
|