Skip to content

Commit

Permalink
Merge pull request #29 from guzba/ryan
Browse files Browse the repository at this point in the history
1.3.0 add amd64 fma
  • Loading branch information
guzba authored Oct 30, 2024
2 parents c052a1b + 2ae2630 commit be70f82
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 1 deletion.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ F16C | ✅
MOVBE | ✅
MOVBE | ✅
POPCNT | ✅
FMA | ✅

### Compiler flags

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.13"
version = "1.3.0"
author = "Ryan Oldenburg"
description = "Pleasant Nim bindings for SIMD instruction sets."
license = "MIT"
Expand Down
40 changes: 40 additions & 0 deletions src/nimsimd/fma.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import avx

export avx

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

func mm_fmadd_pd*(a, b, c: M128d): M128d {.importc: "_mm_fmadd_pd".}
func mm256_fmadd_pd*(a, b, c: M256d): M256d {.importc: "_mm256_fmadd_pd".}
func mm_fmadd_ps*(a, b, c: M128): M128 {.importc: "_mm_fmadd_ps".}
func mm256_fmadd_ps*(a, b, c: M256): M256 {.importc: "_mm256_fmadd_ps".}
func mm_fmadd_sd*(a, b, c: M128d): M128d {.importc: "_mm_fmadd_sd".}
func mm_fmadd_ss*(a, b, c: M128): M128 {.importc: "_mm_fmadd_ss".}
func mm_fmaddsub_pd*(a, b, c: M128d): M128d {.importc: "_mm_fmaddsub_pd".}
func mm256_fmaddsub_pd*(a, b, c: M256d): M256d {.importc: "_mm256_fmaddsub_pd".}
func mm_fmaddsub_ps*(a, b, c: M128): M128 {.importc: "_mm_fmaddsub_ps".}
func mm256_fmaddsub_ps*(a, b, c: M256): M256 {.importc: "_mm256_fmaddsub_ps".}
func mm_fmsub_pd*(a, b, c: M128d): M128d {.importc: "_mm_fmsub_pd".}
func mm256_fmsub_pd*(a, b, c: M256d): M256d {.importc: "_mm256_fmsub_pd".}
func mm_fmsub_ps*(a, b, c: M128): M128 {.importc: "_mm_fmsub_ps".}
func mm256_fmsub_ps*(a, b, c: M256): M256 {.importc: "_mm256_fmsub_ps".}
func mm_fmsub_sd*(a, b, c: M128d): M128d {.importc: "_mm_fmsub_sd".}
func mm_fmsub_ss*(a, b, c: M128): M128 {.importc: "_mm_fmsub_ss".}
func mm_fmsubadd_pd*(a, b, c: M128d): M128d {.importc: "_mm_fmsubadd_pd".}
func mm256_fmsubadd_pd*(a, b, c: M256d): M256d {.importc: "_mm256_fmsubadd_pd".}
func mm_fmsubadd_ps*(a, b, c: M128): M128 {.importc: "_mm_fmsubadd_ps".}
func mm256_fmsubadd_ps*(a, b, c: M256): M256 {.importc: "_mm256_fmsubadd_ps".}
func mm_fnmadd_pd*(a, b, c: M128d): M128d {.importc: "_mm_fnmadd_pd".}
func mm256_fnmadd_pd*(a, b, c: M256d): M256d {.importc: "_mm256_fnmadd_pd".}
func mm_fnmadd_ps*(a, b, c: M128): M128 {.importc: "_mm_fnmadd_ps".}
func mm256_fnmadd_ps*(a, b, c: M256): M256 {.importc: "_mm256_fnmadd_ps".}
func mm_fnmadd_sd*(a, b, c: M128d): M128d {.importc: "_mm_fnmadd_sd".}
func mm_fnmadd_ss*(a, b, c: M128): M128 {.importc: "_mm_fnmadd_ss".}
func mm_fnmsub_pd*(a, b, c: M128d): M128d {.importc: "_mm_fnmsub_pd".}
func mm256_fnmsub_pd*(a, b, c: M256d): M256d {.importc: "_mm256_fnmsub_pd".}
func mm_fnmsub_ps*(a, b, c: M128): M128 {.importc: "_mm_fnmsub_ps".}
func mm256_fnmsub_ps*(a, b, c: M256): M256 {.importc: "_mm256_fnmsub_ps".}
func mm_fnmsub_sd*(a, b, c: M128d): M128d {.importc: "_mm_fnmsub_sd".}
func mm_fnmsub_ss*(a, b, c: M128): M128 {.importc: "_mm_fnmsub_ss".}

{.pop.}
2 changes: 2 additions & 0 deletions src/nimsimd/sse2.nim
Original file line number Diff line number Diff line change
Expand Up @@ -429,6 +429,8 @@ func mm_loadl_epi64*(p: pointer): M128i {.importc: "_mm_loadl_epi64".}

func mm_loadl_pd*(a: M128d, p: pointer): M128i {.importc: "_mm_loadl_pd".}

func mm_loadl_pi*(a: M128, p: pointer): M128 {.importc: "_mm_loadl_pi".}

func mm_loadr_pd*(p: pointer): M128d {.importc: "_mm_loadr_pd".}

func mm_loadu_pd*(p: pointer): M128d {.importc: "_mm_loadu_pd".}
Expand Down

0 comments on commit be70f82

Please sign in to comment.