Files
Odin/core/simd/arm/aes.odin
2026-03-14 14:05:15 +09:00

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 ---
}