Skip to content

Commit

Permalink
1.2.13 add popcnt + fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
guzba committed Sep 22, 2024
1 parent 391de70 commit 71891c8
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 5 deletions.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ BMI1 | ✅
BMI2 | ✅
F16C | ✅
MOVBE | ✅
MOVBE | ✅
POPCNT | ✅

### Compiler flags

Some instruction sets require additional compiler flags to compile. I suggest
Expand Down
2 changes: 1 addition & 1 deletion nimsimd.nimble
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
version = "1.2.12"
version = "1.2.13"
author = "Ryan Oldenburg"
description = "Pleasant Nim bindings for SIMD instruction sets."
license = "MIT"
Expand Down
10 changes: 10 additions & 0 deletions src/nimsimd/popcnt.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
## POPCNT intrinsics

{.push header: "immintrin.h".}

func mm_popcnt_u32*(a: uint32): int32 {.importc: "_mm_popcnt_u32".}
func mm_popcnt_u64*(a: uint64): int64 {.importc: "_mm_popcnt_u64".}
func popcnt32*(a: int32): int32 {.importc: "_popcnt32".}
func popcnt64*(a: int64): int32 {.importc: "_popcnt64".}

{.pop.}
4 changes: 3 additions & 1 deletion src/nimsimd/sse2.nim
Original file line number Diff line number Diff line change
Expand Up @@ -493,7 +493,7 @@ func mm_set_epi16*(a, b, c, d, e, f, g, h: int16): M128i {.importc: "_mm_set_epi

func mm_set_epi32*(a, b, c, d: int32 | uint32): M128i {.importc: "_mm_set_epi32".}

func mm_set_epi64x*(a, b: int64): M128i {.importc: "_mm_set_epi64x".}
func mm_set_epi64x*(a, b: int64 | uint64): M128i {.importc: "_mm_set_epi64x".}

func mm_set_epi8*(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p: int8 | uint8): M128i {.importc: "_mm_set_epi8".}

Expand Down Expand Up @@ -665,4 +665,6 @@ func mm_xor_pd*(a, b: M128d): M128d {.importc: "_mm_xor_pd".}

func mm_xor_si128*(a, b: M128i): M128i {.importc: "_mm_xor_si128".}

func mm_storel_pi*(p: pointer, a: M128) {.importc: "_mm_storel_pi".}

{.pop.}
6 changes: 3 additions & 3 deletions src/nimsimd/sse41.nim
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,11 @@ func mm_floor_sd*(a, b: M128d): M128d {.importc: "_mm_floor_sd".}

func mm_floor_ss*(a, b: M128): M128 {.importc: "_mm_floor_ss".}

func mm_insert_epi32*(a: M128i, i, imm8: int32 | uint32) {.importc: "_mm_insert_epi32".}
func mm_insert_epi32*(a: M128i, i, imm8: int32 | uint32): M128i {.importc: "_mm_insert_epi32".}

func mm_insert_epi64*(a: M128i, i: int64 | uint64, imm8: int32 | uint32) {.importc: "_mm_insert_epi64".}
func mm_insert_epi64*(a: M128i, i: int64 | uint64, imm8: int32 | uint32): M128i {.importc: "_mm_insert_epi64".}

func mm_insert_epi8*(a: M128i, i, imm8: int32 | uint32) {.importc: "_mm_insert_epi8".}
func mm_insert_epi8*(a: M128i, i, imm8: int32 | uint32): M128i {.importc: "_mm_insert_epi8".}

func mm_insert_ps*(a, b: M128, imm8: int32 | uint32): M128 {.importc: "_mm_insert_ps".}

Expand Down

0 comments on commit 71891c8

Please sign in to comment.