From: David L. <da...@li...> - 2005-01-22 22:29:44
|
The printers for shld/shrd are looking for an 8 bit opcode instead of the 7 bits the opcode field actually has. The patch also adds the second register operand to the output. Index: src/compiler/x86/insts.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/x86/insts.lisp,v retrieving revision 1.31 diff -u -r1.31 insts.lisp --- src/compiler/x86/insts.lisp 27 Jul 2004 17:56:35 -0000 1.31 +++ src/compiler/x86/insts.lisp 22 Jan 2005 22:22:46 -0000 @@ -1471,20 +1474,20 @@ (eval-when (:compile-toplevel :execute) (defun double-shift-inst-printer-list (op) `(#+nil - (ext-reg-reg/mem-imm ((op ,(logior op #b100)) + (ext-reg-reg/mem-imm ((op ,(logior op #b10)) (imm nil :type signed-imm-byte))) - (ext-reg-reg/mem ((op ,(logior op #b101))) - (:name :tab reg/mem ", " 'cl))))) + (ext-reg-reg/mem ((op ,(logior op #b10))) + (:name :tab reg/mem ", " reg ", " 'cl))))) (define-instruction shld (segment dst src amt) (:declare (type (or (member :cl) (mod 32)) amt)) - (:printer-list (double-shift-inst-printer-list #b10100000)) + (:printer-list (double-shift-inst-printer-list #b1010000)) (:emitter (emit-double-shift segment #b0 dst src amt))) (define-instruction shrd (segment dst src amt) (:declare (type (or (member :cl) (mod 32)) amt)) - (:printer-list (double-shift-inst-printer-list #b10101000)) + (:printer-list (double-shift-inst-printer-list #b1010100)) (:emitter (emit-double-shift segment #b1 dst src amt))) |
From: Christophe R. <cs...@ca...> - 2005-01-28 09:43:42
|
David Lichteblau <da...@li...> writes: > The printers for shld/shrd are looking for an 8 bit opcode instead of > the 7 bits the opcode field actually has. The patch also adds the > second register operand to the output. Thanks. I merged this (without understanding it... :-) into sbcl-0.8.19.2, along with your integer-length docstring patch. Cheers, Christophe |