diff options
| author | gingerBill <bill@gingerbill.org> | 2022-05-29 13:36:55 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2022-05-29 13:36:55 +0100 |
| commit | 7f3540b7f541b75b1c4b4db558636d8295297c3f (patch) | |
| tree | 6397e96bd2b132d70dd5975a10f0e2f92b95df77 | |
| parent | 3ad2cde833dc7b8ad83185f251f1ee544b4e3ef8 (diff) | |
Add abm.odin
| -rw-r--r-- | core/simd/x86/abm.odin | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/core/simd/x86/abm.odin b/core/simd/x86/abm.odin new file mode 100644 index 000000000..f1898811f --- /dev/null +++ b/core/simd/x86/abm.odin @@ -0,0 +1,20 @@ +//+build i386, amd64 +package simd_x86 + +import "core:intrinsics" + +_lzcnt_u32 :: #force_inline proc "c" (x: u32) -> u32 { + return intrinsics.count_leading_zeros(x) +} +_popcnt32 :: #force_inline proc "c" (x: u32) -> i32 { + return i32(intrinsics.count_ones(x)) +} + +when ODIN_ARCH == .amd64 { + _lzcnt_u64 :: #force_inline proc "c" (x: u64) -> u64 { + return intrinsics.count_leading_zeros(x) + } + _popcnt64 :: #force_inline proc "c" (x: u64) -> i32 { + return i32(intrinsics.count_ones(x)) + } +}
\ No newline at end of file |