From aba5cb4326a16e2225effdbe3ece62890f57b0e2 Mon Sep 17 00:00:00 2001 From: apocelipes Date: Mon, 19 May 2025 15:54:16 +0800 Subject: [PATCH] Fix Compiler Directives `//go:noescape,nosplit` is not correct directives. The correct one is `//go:nosplit\n//go:noescape`. --- simd_apple.go | 27 ++++++++++++++++++--------- simd_avx.go | 27 ++++++++++++++++++--------- simd_avx512.go | 24 ++++++++++++++++-------- simd_neon.go | 27 ++++++++++++++++++--------- 4 files changed, 70 insertions(+), 35 deletions(-) diff --git a/simd_apple.go b/simd_apple.go index 045d1f0..aa9e578 100644 --- a/simd_apple.go +++ b/simd_apple.go @@ -5,29 +5,38 @@ package bitmap import "unsafe" -//go:noescape,nosplit +//go:nosplit +//go:noescape func _and(a unsafe.Pointer, b unsafe.Pointer, n uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _andn(a unsafe.Pointer, b unsafe.Pointer, n uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _or(a unsafe.Pointer, b unsafe.Pointer, n uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _xor(a unsafe.Pointer, b unsafe.Pointer, n uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _and_many(a unsafe.Pointer, b unsafe.Pointer, dims uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _andn_many(a unsafe.Pointer, b unsafe.Pointer, dims uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _or_many(a unsafe.Pointer, b unsafe.Pointer, dims uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _xor_many(a unsafe.Pointer, b unsafe.Pointer, dims uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _count(a unsafe.Pointer, size uint64, result unsafe.Pointer) diff --git a/simd_avx.go b/simd_avx.go index 9bbb453..a326753 100644 --- a/simd_avx.go +++ b/simd_avx.go @@ -5,29 +5,38 @@ package bitmap import "unsafe" -//go:noescape,nosplit +//go:nosplit +//go:noescape func _and(a unsafe.Pointer, b unsafe.Pointer, n uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _andn(a unsafe.Pointer, b unsafe.Pointer, n uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _or(a unsafe.Pointer, b unsafe.Pointer, n uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _xor(a unsafe.Pointer, b unsafe.Pointer, n uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _and_many(a unsafe.Pointer, b unsafe.Pointer, dims uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _andn_many(a unsafe.Pointer, b unsafe.Pointer, dims uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _or_many(a unsafe.Pointer, b unsafe.Pointer, dims uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _xor_many(a unsafe.Pointer, b unsafe.Pointer, dims uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _count(a unsafe.Pointer, size uint64, result unsafe.Pointer) diff --git a/simd_avx512.go b/simd_avx512.go index a993b1a..358d815 100644 --- a/simd_avx512.go +++ b/simd_avx512.go @@ -5,26 +5,34 @@ package bitmap import "unsafe" -//go:noescape,nosplit +//go:nosplit +//go:noescape func _and_avx512(a unsafe.Pointer, b unsafe.Pointer, n uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _andn_avx512(a unsafe.Pointer, b unsafe.Pointer, n uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _or_avx512(a unsafe.Pointer, b unsafe.Pointer, n uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _xor_avx512(a unsafe.Pointer, b unsafe.Pointer, n uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _and_many_avx512(a unsafe.Pointer, b unsafe.Pointer, dims uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _andn_many_avx512(a unsafe.Pointer, b unsafe.Pointer, dims uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _or_many_avx512(a unsafe.Pointer, b unsafe.Pointer, dims uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _xor_many_avx512(a unsafe.Pointer, b unsafe.Pointer, dims uint64) diff --git a/simd_neon.go b/simd_neon.go index 68cfb63..e758252 100644 --- a/simd_neon.go +++ b/simd_neon.go @@ -5,29 +5,38 @@ package bitmap import "unsafe" -//go:noescape,nosplit +//go:nosplit +//go:noescape func _and(a unsafe.Pointer, b unsafe.Pointer, n uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _andn(a unsafe.Pointer, b unsafe.Pointer, n uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _or(a unsafe.Pointer, b unsafe.Pointer, n uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _xor(a unsafe.Pointer, b unsafe.Pointer, n uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _and_many(a unsafe.Pointer, b unsafe.Pointer, dims uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _andn_many(a unsafe.Pointer, b unsafe.Pointer, dims uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _or_many(a unsafe.Pointer, b unsafe.Pointer, dims uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _xor_many(a unsafe.Pointer, b unsafe.Pointer, dims uint64) -//go:noescape,nosplit +//go:nosplit +//go:noescape func _count(a unsafe.Pointer, size uint64, result unsafe.Pointer)