aes.odin 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. //+build i386, amd64
  2. package simd_x86
  3. @(require_results, enable_target_feature = "aes")
  4. _mm_aesdec_si128 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
  5. return aesdec(a, b)
  6. }
  7. @(require_results, enable_target_feature = "aes")
  8. _mm_aesdeclast_si128 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
  9. return aesdeclast(a, b)
  10. }
  11. @(require_results, enable_target_feature = "aes")
  12. _mm_aesenc_si128 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
  13. return aesenc(a, b)
  14. }
  15. @(require_results, enable_target_feature = "aes")
  16. _mm_aesenclast_si128 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
  17. return aesenclast(a, b)
  18. }
  19. @(require_results, enable_target_feature = "aes")
  20. _mm_aesimc_si128 :: #force_inline proc "c" (a: __m128i) -> __m128i {
  21. return aesimc(a)
  22. }
  23. @(require_results, enable_target_feature = "aes")
  24. _mm_aeskeygenassist_si128 :: #force_inline proc "c" (a: __m128i, $IMM8: u8) -> __m128i {
  25. return aeskeygenassist(a, IMM8)
  26. }
  27. @(private, default_calling_convention = "none")
  28. foreign _ {
  29. @(link_name = "llvm.x86.aesni.aesdec")
  30. aesdec :: proc(a, b: __m128i) -> __m128i ---
  31. @(link_name = "llvm.x86.aesni.aesdeclast")
  32. aesdeclast :: proc(a, b: __m128i) -> __m128i ---
  33. @(link_name = "llvm.x86.aesni.aesenc")
  34. aesenc :: proc(a, b: __m128i) -> __m128i ---
  35. @(link_name = "llvm.x86.aesni.aesenclast")
  36. aesenclast :: proc(a, b: __m128i) -> __m128i ---
  37. @(link_name = "llvm.x86.aesni.aesimc")
  38. aesimc :: proc(a: __m128i) -> __m128i ---
  39. @(link_name = "llvm.x86.aesni.aeskeygenassist")
  40. aeskeygenassist :: proc(a: __m128i, #const imm8: u8) -> __m128i ---
  41. }