Browse Source

Add abm.odin

gingerBill 3 năm trước cách đây
mục cha
commit
7f3540b7f5
1 tập tin đã thay đổi với 20 bổ sung0 xóa
  1. 20 0
      core/simd/x86/abm.odin

+ 20 - 0
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))
+	}
+}