master: Disassemble more avx512 instructions

stassats via Sbcl-commits <[email protected]>
Newsgroups gmane.lisp.steel-bank.cvs
Message-ID <[email protected]>
The branch "master" has been updated in SBCL:
       via  ad1b771806f84638af8a494765ecdfe457951ff9 (commit)
      from  fa59dfa2e72e7116b20eefbd40c70a9339f71352 (commit)

- Log -----------------------------------------------------------------
commit ad1b771806f84638af8a494765ecdfe457951ff9
Author: Stas Boukarev <[email protected]>
Date:   Wed Aug 26 04:48:06 2026 +0300

    Disassemble more avx512 instructions
---
 src/compiler/x86-64/avx2-insts.lisp | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/compiler/x86-64/avx2-insts.lisp b/src/compiler/x86-64/avx2-insts.lisp
index 7f29e7785..973702df3 100644
--- a/src/compiler/x86-64/avx2-insts.lisp
+++ b/src/compiler/x86-64/avx2-insts.lisp
@@ -777,7 +777,8 @@ REG is the source (encoded in ModR/M.r/m).
                                       xmmreg-mem-size
                                       w
                                       l
-                                      nds)
+                                      nds
+                                      evex)
     (let ((fields `((pp ,(vex-encode-pp prefix))
                     (m-mmmm ,(vex-encode-m-mmmm opcode-prefix))
                     (op ,opcode)
@@ -818,7 +819,8 @@ REG is the source (encoded in ModR/M.r/m).
        ;; instructions reuse those opcodes). Map 0F38 has many conflicts
        ;; (broadcasts, vmaskmov vs vscalef, etc.), so we only include the
        ;; FMA range (#x96-#xBF) which is safe. Map 0F3A is skipped entirely.
-       (when (or (= opcode-prefix #x0F)
+       (when (or evex
+                 (= opcode-prefix #x0F)
                  (and (= opcode-prefix #x0F38)
                       (<= #x96 opcode #xbf)))
          (avx512-inst-printer-list inst-format-stem prefix opcode
@@ -1325,7 +1327,8 @@ REG is the source (encoded in ModR/M.r/m).
                                           :opcode-prefix op-prefix
                                           :reg-mem-size size ;; FIXME: it has r32/m8, but we print as r8/m8
                                           :more-fields `((imm nil :type 'imm-byte))
-                                          :printer `(:name :tab reg ", " vvvv ", " reg/mem ", " imm))
+                                          :printer `(:name :tab reg ", " vvvv ", " reg/mem ", " imm)
+                                          :evex t)
                 (:emitter
                  (emit-avx2-inst segment src2 dst ,prefix ,op
                                  :opcode-prefix ,op-prefix
@@ -1341,7 +1344,8 @@ REG is the source (encoded in ModR/M.r/m).
                                            :opcode-prefix #x0f3a
                                            :reg-mem-size size ;; FIXME: it has r32/m8, but we print as r8/m8
                                            :more-fields `((imm nil :type 'imm-byte))
-                                           :printer `(:name :tab reg/mem ", " reg ", "imm))
+                                           :printer `(:name :tab reg/mem ", " reg ", "imm)
+                                           :evex t)
                 (:emitter
                  (aver (and (xmm-register-p src) (not (xmm-register-p dst))))
                  (emit-avx2-inst segment dst src ,prefix ,op

-----------------------------------------------------------------------


hooks/post-receive
-- 
SBCL
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.