Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 18 additions & 9 deletions simd_apple.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
27 changes: 18 additions & 9 deletions simd_avx.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
24 changes: 16 additions & 8 deletions simd_avx512.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
27 changes: 18 additions & 9 deletions simd_neon.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)