瀏覽代碼

Add abm.odin

gingerBill 3 年之前
父節點
當前提交
7f3540b7f5
共有 1 個文件被更改,包括 20 次插入0 次删除
  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))
+	}
+}