Index: /branches/ia32/compiler/X86/x86-asm.lisp
===================================================================
--- /branches/ia32/compiler/X86/x86-asm.lisp	(revision 7963)
+++ /branches/ia32/compiler/X86/x86-asm.lisp	(revision 7964)
@@ -2576,28 +2576,28 @@
      #x0fa5 #o000 #x48)
 
-   (def-x86-opcode shldl ((:imm8 :insert-imm8) (:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
+   (def-x86-opcode shldl ((:imm8 :insert-imm8) (:reg32 :insert-modrm-reg) (:reg32 :insert-modrm-rm))
      #x0fa4 #o300 #x0)
-   (def-x86-opcode shldl ((:imm8 :insert-imm8) (:reg64 :insert-modrm-reg) (:anymem :insert-memory))
+   (def-x86-opcode shldl ((:imm8 :insert-imm8) (:reg32 :insert-modrm-reg) (:anymem :insert-memory))
      #x0fa4 #o000 #x0)
-   (def-x86-opcode shldl ((:shiftcount :insert-nothing) (:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
+   (def-x86-opcode shldl ((:shiftcount :insert-nothing) (:reg32 :insert-modrm-reg) (:reg32 :insert-modrm-rm))
      #x0fa5 #o300 #x0)
-   (def-x86-opcode shldl ((:shiftcount :insert-nothing) (:reg64 :insert-modrm-reg) (:anymem :insert-memory))
+   (def-x86-opcode shldl ((:shiftcount :insert-nothing) (:reg32 :insert-modrm-reg) (:anymem :insert-memory))
      #x0fa5 #o000 #x0)
-   (def-x86-opcode shldl ((:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
+   (def-x86-opcode shldl ((:reg32 :insert-modrm-reg) (:reg32 :insert-modrm-rm))
      #x0fa5 #o300 #x0)
-   (def-x86-opcode shldl ((:reg64 :insert-modrm-reg) (:anymem :insert-memory))
+   (def-x86-opcode shldl ((:reg32 :insert-modrm-reg) (:anymem :insert-memory))
      #x0fa5 #o000 #x0)
 
-   (def-x86-opcode shldw ((:imm8 :insert-imm8) (:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
+   (def-x86-opcode shldw ((:imm8 :insert-imm8) (:reg16 :insert-modrm-reg) (:reg16 :insert-modrm-rm))
      #x0fa4 #o300 #x0 #x66)
-   (def-x86-opcode shldw ((:imm8 :insert-imm8) (:reg64 :insert-modrm-reg) (:anymem :insert-memory))
+   (def-x86-opcode shldw ((:imm8 :insert-imm8) (:reg16 :insert-modrm-reg) (:anymem :insert-memory))
      #x0fa4 #o000 #x0 #x66)
-   (def-x86-opcode shldw ((:shiftcount :insert-nothing) (:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
+   (def-x86-opcode shldw ((:shiftcount :insert-nothing) (:reg16 :insert-modrm-reg) (:reg16 :insert-modrm-rm))
      #x0fa5 #o300 #x0 #x66)
-   (def-x86-opcode shldw ((:shiftcount :insert-nothing) (:reg64 :insert-modrm-reg) (:anymem :insert-memory))
+   (def-x86-opcode shldw ((:shiftcount :insert-nothing) (:reg16 :insert-modrm-reg) (:anymem :insert-memory))
      #x0fa5 #o000 #x0 #x66)
-   (def-x86-opcode shldw ((:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
+   (def-x86-opcode shldw ((:reg16 :insert-modrm-reg) (:reg16 :insert-modrm-rm))
      #x0fa5 #o300 #x0 #x66)
-   (def-x86-opcode shldw ((:reg64 :insert-modrm-reg) (:anymem :insert-memory))
+   (def-x86-opcode shldw ((:reg16 :insert-modrm-reg) (:anymem :insert-memory))
      #x0fa5 #o000 #x0 #x66)
 
@@ -2669,28 +2669,28 @@
      #x0fad #o000 #x48)
 
-   (def-x86-opcode shrdl ((:imm8 :insert-imm8) (:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
+   (def-x86-opcode shrdl ((:imm8 :insert-imm8) (:reg32 :insert-modrm-reg) (:reg32 :insert-modrm-rm))
      #x0fac #o300 #x0)
-   (def-x86-opcode shrdl ((:imm8 :insert-imm8) (:reg64 :insert-modrm-reg) (:anymem :insert-memory))
+   (def-x86-opcode shrdl ((:imm8 :insert-imm8) (:reg32 :insert-modrm-reg) (:anymem :insert-memory))
      #x0fac #o000 #x0)
-   (def-x86-opcode shrdl ((:shiftcount :insert-nothing) (:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
+   (def-x86-opcode shrdl ((:shiftcount :insert-nothing) (:reg32 :insert-modrm-reg) (:reg32 :insert-modrm-rm))
      #x0fad #o300 #x0)
-   (def-x86-opcode shrdl ((:shiftcount :insert-nothing) (:reg64 :insert-modrm-reg) (:anymem :insert-memory))
+   (def-x86-opcode shrdl ((:shiftcount :insert-nothing) (:reg32 :insert-modrm-reg) (:anymem :insert-memory))
      #x0fad #o000 #x0)
-   (def-x86-opcode shrdl ((:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
+   (def-x86-opcode shrdl ((:reg32 :insert-modrm-reg) (:reg32 :insert-modrm-rm))
      #x0fad #o300 #x0)
-   (def-x86-opcode shrdl ((:reg64 :insert-modrm-reg) (:anymem :insert-memory))
+   (def-x86-opcode shrdl ((:reg32 :insert-modrm-reg) (:anymem :insert-memory))
      #x0fad #o000 #x0)
 
-   (def-x86-opcode shrdw ((:imm8 :insert-imm8) (:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
+   (def-x86-opcode shrdw ((:imm8 :insert-imm8) (:reg16 :insert-modrm-reg) (:reg16 :insert-modrm-rm))
      #x0fac #o300 #x0 #x66)
-   (def-x86-opcode shrdw ((:imm8 :insert-imm8) (:reg64 :insert-modrm-reg) (:anymem :insert-memory))
+   (def-x86-opcode shrdw ((:imm8 :insert-imm8) (:reg16 :insert-modrm-reg) (:anymem :insert-memory))
      #x0fac #o000 #x0 #x66)
-   (def-x86-opcode shrdw ((:shiftcount :insert-nothing) (:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
+   (def-x86-opcode shrdw ((:shiftcount :insert-nothing) (:reg16 :insert-modrm-reg) (:reg16 :insert-modrm-rm))
      #x0fad #o300 #x0 #x66)
-   (def-x86-opcode shrdw ((:shiftcount :insert-nothing) (:reg64 :insert-modrm-reg) (:anymem :insert-memory))
+   (def-x86-opcode shrdw ((:shiftcount :insert-nothing) (:reg16 :insert-modrm-reg) (:anymem :insert-memory))
      #x0fad #o000 #x0 #x66)
-   (def-x86-opcode shrdw ((:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
+   (def-x86-opcode shrdw ((:reg16 :insert-modrm-reg) (:reg16 :insert-modrm-rm))
      #x0fad #o300 #x0 #x66)
-   (def-x86-opcode shrdw ((:reg64 :insert-modrm-reg) (:anymem :insert-memory))
+   (def-x86-opcode shrdw ((:reg16 :insert-modrm-reg) (:anymem :insert-memory))
      #x0fad #o000 #x0 #x66)
 
@@ -3256,4 +3256,6 @@
    (def-x86-opcode psrlq ((:anymem :insert-memory) (:regmmx :insert-mmx-reg))
      #x0fd3 #o000 #x0)
+   (def-x86-opcode psrlq ((:imm8 :insert-imm8) (:regmmx :insert-mmx-rm))
+     #x0f73 #o320 #o0)
    (def-x86-opcode psrlq ((:regxmm :insert-modrm-rm) (:regxmm :insert-modrm-reg))
      #x0fd3 #o300 #x0 #x66)
@@ -3270,5 +3272,25 @@
    
    ;; psrlw
-   
+
+   ;; pmuludq
+   (def-x86-opcode pmuludq ((:regmmx :insert-mmx-rm) (:regmmx :insert-mmx-reg))
+     #x0ff4 #o300 #x0)
+   (def-x86-opcode pmuludq ((:anymem :insert-memory) (:regmmx :insert-mmx-reg))
+     #x0ff4 #o000 #x0)
+   (def-x86-opcode pmuludq ((:regxmm :insert-xmm-rm) (:regxmm :insert-xmm-reg))
+     #x0ff4 #o300 #x0 #x66)
+   (def-x86-opcode pmuludq ((:anymem :insert-memory) (:regxmm :insert-xmm-reg))
+     #x0ff4 #o000 #x0 #x66)
+
+   ;; paddq
+   (def-x86-opcode paddq ((:regmmx :insert-mmx-rm) (:regmmx :insert-mmx-reg))
+     #x0fd4 #o300 #x0)
+   (def-x86-opcode paddq ((:anymem :insert-memory) (:regmmx :insert-mmx-reg))
+     #x0fd4 #o000 #x0)
+   (def-x86-opcode paddq ((:regxmm :insert-xmm-reg) (:regxmm :insert-xmm-reg))
+     #x0fd4 #o300 #x0 #x66)
+   (def-x86-opcode paddq ((:anymem :insert-memory) (:regxmm :insert-xmm-reg))
+     #x0fd4 #o000 #x0 #x66)
+
 ;;; End of list of useful mmx instructions
    (def-x86-opcode ldmxcsr ((:anymem :insert-memory))
