1.0.37.69: Avoid emitting instructions (LODS, MOVSXD) that confuse others
[sbcl.git] / src / compiler / x86-64 / insts.lisp
index b141f85..fef01fe 100644 (file)
 
 (sb!disassem:define-instruction-format (xmm-xmm/mem-imm 24
                                         :default-printer
-                                        '(:name :tab reg ", " reg/mem " " imm))
+                                        '(:name
+                                          :tab reg ", " reg/mem ", " imm))
   (x0f     :field (byte 8 0)    :value #x0f)
   (op      :field (byte 8 8))
   (reg/mem :fields (list (byte 2 22) (byte 3 16))
 
 (sb!disassem:define-instruction-format (rex-xmm-xmm/mem-imm 32
                                         :default-printer
-                                        '(:name :tab reg ", " reg/mem " " imm))
+                                        '(:name
+                                          :tab reg ", " reg/mem ", " imm))
   (rex     :field (byte 4 4)    :value #b0100)
   (wrxb    :field (byte 4 0)    :type 'wrxb)
   (x0f     :field (byte 8 8)    :value #x0f)
 
 (sb!disassem:define-instruction-format (ext-xmm-xmm/mem-imm 32
                                         :default-printer
-                                        '(:name :tab reg ", " reg/mem " " imm))
+                                        '(:name
+                                          :tab reg ", " reg/mem ", " imm))
   (prefix  :field (byte 8 0))
   (x0f     :field (byte 8 8)    :value #x0f)
   (op      :field (byte 8 16))
 
 (sb!disassem:define-instruction-format (ext-rex-xmm-xmm/mem-imm 40
                                         :default-printer
-                                        '(:name :tab reg ", " reg/mem " " imm))
+                                        '(:name
+                                          :tab reg ", " reg/mem ", " imm))
   (prefix  :field (byte 8 0))
   (rex     :field (byte 4 12)   :value #b0100)
   (wrxb    :field (byte 4 8)    :type 'wrxb)
                                    (cond (ea-p (ea-base src))
                                          ((tn-p src) src)
                                          (t nil)))
-            (emit-byte segment #x63)    ;movsxd
+            (emit-byte segment (if signed-p #x63 #x8b)) ;movsxd or straight mov
             ;;(emit-byte segment opcode)
             (emit-ea segment src (reg-tn-encoding dst)))))))))