master: add vpsadbw, vpalignr and vpsubusb to sb-simd
stassats via Sbcl-commits <[email protected]> Mon, 20 Jul 2026 15:00:44 +0000
| Newsgroups | gmane.lisp.steel-bank.cvs |
|---|---|
| Message-ID | <[email protected]> |
The branch "master" has been updated in SBCL:
via c315c378e4bf72f398448acc8054c806c132d31b (commit)
from a7e50f3c4a2a6048bf042c0aad14af3843e4a810 (commit)
- Log -----------------------------------------------------------------
commit c315c378e4bf72f398448acc8054c806c132d31b
Author: arthur <[email protected]>
Date: Mon Jul 20 08:21:14 2026 +0200
add vpsadbw, vpalignr and vpsubusb to sb-simd
---
contrib/sb-simd/code/instruction-sets/avx2.lisp | 9 ++++++++-
contrib/sb-simd/code/packages.lisp | 5 +++++
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/contrib/sb-simd/code/instruction-sets/avx2.lisp b/contrib/sb-simd/code/instruction-sets/avx2.lisp
index 7af8bdb47..cce26caa3 100644
--- a/contrib/sb-simd/code/instruction-sets/avx2.lisp
+++ b/contrib/sb-simd/code/instruction-sets/avx2.lisp
@@ -96,6 +96,7 @@
(two-arg-u8.32-min #:vpminub (u8.32) (u8.32 u8.32) :cost 2 :associative t)
(two-arg-u8.32+ #:vpaddb (u8.32) (u8.32 u8.32) :cost 2 :associative t)
(two-arg-u8.32- #:vpsubb (u8.32) (u8.32 u8.32) :cost 2)
+ (two-arg-u8.32-sat- #:vpsubusb (u8.32) (u8.32 u8.32) :cost 2)
(two-arg-u8.32= #:vpcmpeqb (u8.32) (u8.32 u8.32) :cost 1 :associative t)
(two-arg-u8.32/= nil (u8.32) (u8.32 u8.32) :cost 2 :associative t :encoding :fake-vop)
(two-arg-u8.32>~ #:vpcmpgtb (u8.32) (u8.32 u8.32) :cost 1)
@@ -110,7 +111,11 @@
(u8.32-movemask #:vpmovmskb (u32) (u8.32) :cost 1)
(u8.32-shuffle #:vpshufb (u8.32) (u8.32 u8.32) :cost 1)
(u8.32-insert-u8.16 #:vinserti128 (u8.32) (u8.32 u8.16 imm8) :cost 1)
- (u8.16-from-u8.32 #:vextracti128 (u8.16) (u8.32 imm1) :cost 1)
+ (u8.16-from-u8.32 #:vextracti128 (u8.16) (u8.32 imm1) :cost 1)
+ (u8.16-sad #:vpsadbw (u64.4) (u8.16 u8.16) :cost 1)
+ (u8.32-sad #:vpsadbw (u64.4) (u8.32 u8.32) :cost 1)
+ (u8.16-alignr #:vpalignr (u8.16) (u8.16 u8.16 imm8) :cost 1)
+ (u8.32-alignr #:vpalignr (u8.32) (u8.32 u8.32 imm8) :cost 1)
(u8.32-permute128 #:vperm2i128 (u8.32) (u8.32 u8.32 imm8) :cost 1)
;; u16.16
(make-u16.16 nil (u16.16) (u16 u16 u16 u16 u16 u16 u16 u16 u16 u16 u16 u16 u16 u16 u16 u16) :cost 1 :encoding :fake-vop)
@@ -241,6 +246,8 @@
(s8.32-sign #:vpsignb (s8.32) (s8.32 s8.32) :cost 1)
(s8.32-broadcastvec #:vpbroadcastb (s8.32) (s8.32) :cost 1)
(s8.16-from-s8.32 #:vextracti128 (s8.16) (s8.32 imm1) :cost 1)
+ (s8.16-sad #:vpsadbw (u64.4) (s8.16 s8.16) :cost 1)
+ (s8.32-sad #:vpsadbw (u64.4) (s8.32 s8.32) :cost 1)
(s8.32-insert-s8.16 #:vinserti128 (s8.32) (s8.32 s8.16 imm1) :cost 1)
(s8.32-permute128 #:vperm2i128 (s8.32) (s8.32 s8.32 imm8) :cost 1)
;; s16.16
diff --git a/contrib/sb-simd/code/packages.lisp b/contrib/sb-simd/code/packages.lisp
index a0207f394..b82262aa6 100644
--- a/contrib/sb-simd/code/packages.lisp
+++ b/contrib/sb-simd/code/packages.lisp
@@ -1764,11 +1764,13 @@
#8#
#9=
(:export
+ #:two-arg-u8.32-sat-
;; f32.8
;; f64.4
#:f64.4-reverse
#:f64.4-permute4x64
;; u8.16
+ #:u8.16-alignr
;; u16.8
;; u32.4
#:u32.4-shiftl
@@ -1779,6 +1781,7 @@
;; s8.16
;; s16.8
;; s32.4
+ #:s8.16-sad
#:s32.4-shiftl
#:s32.4-shiftr
;; s64.2
@@ -1802,6 +1805,8 @@
#:u8.32>=
#:u8.32<=
#:u8.32-avg
+ #:u8.32-sad
+ #:u8.32-alignr
#:u8.32-packus
#:u8.32-unpackhi
#:u8.32-unpacklo
-----------------------------------------------------------------------
hooks/post-receive
--
SBCL