diff --git a/compiler/x86/insts.lisp b/compiler/x86/insts.lisp index f671fdc229ad1656f8e438564d9489614550c95f..b5703053ea9030eff5e29ac9942bafcfed8082c3 100644 --- a/compiler/x86/insts.lisp +++ b/compiler/x86/insts.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/x86/insts.lisp,v 1.32.6.2.2.8 2008/10/10 21:48:54 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/x86/insts.lisp,v 1.32.6.2.2.9 2008/10/11 15:22:49 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -3178,6 +3178,7 @@ ;; dst[127:64] = src[63:0] (define-regular-sse-inst unpcklpd #x66 #x14 t) (define-regular-sse-inst unpcklps nil #x14 t) + ) ;;; MOVSD, MOVSS @@ -3233,6 +3234,24 @@ (emit-sse-inst segment dst src #xf2 #x12 :operand-size :do-not-set))) +;;; MOVHLPS +;;; +;;; dst[63:0] = src[127:64] +;;; dst[127:64] unchanged. +(define-instruction movhlps (segment dst src) + (:printer xmm-xmm/mem ((op #x12))) + (:emitter + (assert (xmm-register-p src)) + (emit-sse-inst segment dst src nil #x12 + :operand-size :do-not-set))) + +(define-instruction movlhps (segment dst src) + (:printer xmm-xmm/mem ((op #x16))) + (:emitter + (assert (xmm-register-p src)) + (emit-sse-inst segment dst src nil #x16 + :operand-size :do-not-set))) + ;;; SHUFPD ;;; ;;; Shuffle packed double floats. Basically, the low part of dst is