projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.36.8: deal with environment argument in TYPEP transforms
[sbcl.git]
/
src
/
compiler
/
x86
/
insts.lisp
diff --git
a/src/compiler/x86/insts.lisp
b/src/compiler/x86/insts.lisp
index
6ed33ad
..
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))))
@@
-2642,9
+2655,8
@@
(define-instruction fxch (segment source)
(:printer floating-point-fp ((op '(#b001 #b001))))
(:emitter
(define-instruction fxch (segment source)
(:printer floating-point-fp ((op '(#b001 #b001))))
(:emitter
- (unless (and (tn-p source)
- (eq (sb-name (sc-sb (tn-sc source))) 'float-registers))
- (cl:break))
+ (aver (and (tn-p source)
+ (eq (sb-name (sc-sb (tn-sc source))) 'float-registers)))
(emit-byte segment #b11011001)
(emit-fp-op segment source #b001)))
(emit-byte segment #b11011001)
(emit-fp-op segment source #b001)))