projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.32.12: Fix slot-value on specialized parameters in SVUC methods
[sbcl.git]
/
src
/
compiler
/
x86
/
insts.lisp
diff --git
a/src/compiler/x86/insts.lisp
b/src/compiler/x86/insts.lisp
index
2479299
..
4edb1a4
100644
(file)
--- a/
src/compiler/x86/insts.lisp
+++ b/
src/compiler/x86/insts.lisp
@@
-608,6
+608,13
@@
;; optional fields
(imm))
;; optional fields
(imm))
+;;; reg-no-width with #x0f prefix
+(sb!disassem:define-instruction-format (ext-reg-no-width 16
+ :default-printer '(:name :tab reg))
+ (prefix :field (byte 8 0) :value #b00001111)
+ (op :field (byte 5 11))
+ (reg :field (byte 3 8) :type 'reg))
+
;;; Same as reg/mem, but with a prefix of #b00001111
(sb!disassem:define-instruction-format (ext-reg/mem 24
:default-printer '(:name :tab reg/mem))
;;; Same as reg/mem, but with a prefix of #b00001111
(sb!disassem:define-instruction-format (ext-reg/mem 24
:default-printer '(:name :tab reg/mem))
@@
-1593,6
+1600,12
@@
(emit-byte segment #b11010100)
(emit-byte segment #b00001010)))
(emit-byte segment #b11010100)
(emit-byte segment #b00001010)))
+(define-instruction bswap (segment dst)
+ (:printer ext-reg-no-width ((op #b11001)))
+ (:emitter
+ (emit-byte segment #x0f)
+ (emit-byte-with-reg segment #b11001 (reg-tn-encoding dst))))
+
;;; CBW -- Convert Byte to Word. AX <- sign_xtnd(AL)
(define-instruction cbw (segment)
(:printer two-bytes ((op '(#b01100110 #b10011000))))
;;; CBW -- Convert Byte to Word. AX <- sign_xtnd(AL)
(define-instruction cbw (segment)
(:printer two-bytes ((op '(#b01100110 #b10011000))))