Changeset 7964


Ignore:
Timestamp:
Dec 28, 2007, 10:44:46 PM (13 years ago)
Author:
rme
Message:

Correct SHLD and SHRD operands for 32 and 16 bit variants. Define a
couple of SSE2 instructions (PMULUDQ, PADDQ, PSRLQ w/imm shift)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ia32/compiler/X86/x86-asm.lisp

    r7906 r7964  
    25762576     #x0fa5 #o000 #x48)
    25772577
    2578    (def-x86-opcode shldl ((:imm8 :insert-imm8) (:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
     2578   (def-x86-opcode shldl ((:imm8 :insert-imm8) (:reg32 :insert-modrm-reg) (:reg32 :insert-modrm-rm))
    25792579     #x0fa4 #o300 #x0)
    2580    (def-x86-opcode shldl ((:imm8 :insert-imm8) (:reg64 :insert-modrm-reg) (:anymem :insert-memory))
     2580   (def-x86-opcode shldl ((:imm8 :insert-imm8) (:reg32 :insert-modrm-reg) (:anymem :insert-memory))
    25812581     #x0fa4 #o000 #x0)
    2582    (def-x86-opcode shldl ((:shiftcount :insert-nothing) (:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
     2582   (def-x86-opcode shldl ((:shiftcount :insert-nothing) (:reg32 :insert-modrm-reg) (:reg32 :insert-modrm-rm))
    25832583     #x0fa5 #o300 #x0)
    2584    (def-x86-opcode shldl ((:shiftcount :insert-nothing) (:reg64 :insert-modrm-reg) (:anymem :insert-memory))
     2584   (def-x86-opcode shldl ((:shiftcount :insert-nothing) (:reg32 :insert-modrm-reg) (:anymem :insert-memory))
    25852585     #x0fa5 #o000 #x0)
    2586    (def-x86-opcode shldl ((:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
     2586   (def-x86-opcode shldl ((:reg32 :insert-modrm-reg) (:reg32 :insert-modrm-rm))
    25872587     #x0fa5 #o300 #x0)
    2588    (def-x86-opcode shldl ((:reg64 :insert-modrm-reg) (:anymem :insert-memory))
     2588   (def-x86-opcode shldl ((:reg32 :insert-modrm-reg) (:anymem :insert-memory))
    25892589     #x0fa5 #o000 #x0)
    25902590
    2591    (def-x86-opcode shldw ((:imm8 :insert-imm8) (:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
     2591   (def-x86-opcode shldw ((:imm8 :insert-imm8) (:reg16 :insert-modrm-reg) (:reg16 :insert-modrm-rm))
    25922592     #x0fa4 #o300 #x0 #x66)
    2593    (def-x86-opcode shldw ((:imm8 :insert-imm8) (:reg64 :insert-modrm-reg) (:anymem :insert-memory))
     2593   (def-x86-opcode shldw ((:imm8 :insert-imm8) (:reg16 :insert-modrm-reg) (:anymem :insert-memory))
    25942594     #x0fa4 #o000 #x0 #x66)
    2595    (def-x86-opcode shldw ((:shiftcount :insert-nothing) (:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
     2595   (def-x86-opcode shldw ((:shiftcount :insert-nothing) (:reg16 :insert-modrm-reg) (:reg16 :insert-modrm-rm))
    25962596     #x0fa5 #o300 #x0 #x66)
    2597    (def-x86-opcode shldw ((:shiftcount :insert-nothing) (:reg64 :insert-modrm-reg) (:anymem :insert-memory))
     2597   (def-x86-opcode shldw ((:shiftcount :insert-nothing) (:reg16 :insert-modrm-reg) (:anymem :insert-memory))
    25982598     #x0fa5 #o000 #x0 #x66)
    2599    (def-x86-opcode shldw ((:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
     2599   (def-x86-opcode shldw ((:reg16 :insert-modrm-reg) (:reg16 :insert-modrm-rm))
    26002600     #x0fa5 #o300 #x0 #x66)
    2601    (def-x86-opcode shldw ((:reg64 :insert-modrm-reg) (:anymem :insert-memory))
     2601   (def-x86-opcode shldw ((:reg16 :insert-modrm-reg) (:anymem :insert-memory))
    26022602     #x0fa5 #o000 #x0 #x66)
    26032603
     
    26692669     #x0fad #o000 #x48)
    26702670
    2671    (def-x86-opcode shrdl ((:imm8 :insert-imm8) (:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
     2671   (def-x86-opcode shrdl ((:imm8 :insert-imm8) (:reg32 :insert-modrm-reg) (:reg32 :insert-modrm-rm))
    26722672     #x0fac #o300 #x0)
    2673    (def-x86-opcode shrdl ((:imm8 :insert-imm8) (:reg64 :insert-modrm-reg) (:anymem :insert-memory))
     2673   (def-x86-opcode shrdl ((:imm8 :insert-imm8) (:reg32 :insert-modrm-reg) (:anymem :insert-memory))
    26742674     #x0fac #o000 #x0)
    2675    (def-x86-opcode shrdl ((:shiftcount :insert-nothing) (:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
     2675   (def-x86-opcode shrdl ((:shiftcount :insert-nothing) (:reg32 :insert-modrm-reg) (:reg32 :insert-modrm-rm))
    26762676     #x0fad #o300 #x0)
    2677    (def-x86-opcode shrdl ((:shiftcount :insert-nothing) (:reg64 :insert-modrm-reg) (:anymem :insert-memory))
     2677   (def-x86-opcode shrdl ((:shiftcount :insert-nothing) (:reg32 :insert-modrm-reg) (:anymem :insert-memory))
    26782678     #x0fad #o000 #x0)
    2679    (def-x86-opcode shrdl ((:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
     2679   (def-x86-opcode shrdl ((:reg32 :insert-modrm-reg) (:reg32 :insert-modrm-rm))
    26802680     #x0fad #o300 #x0)
    2681    (def-x86-opcode shrdl ((:reg64 :insert-modrm-reg) (:anymem :insert-memory))
     2681   (def-x86-opcode shrdl ((:reg32 :insert-modrm-reg) (:anymem :insert-memory))
    26822682     #x0fad #o000 #x0)
    26832683
    2684    (def-x86-opcode shrdw ((:imm8 :insert-imm8) (:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
     2684   (def-x86-opcode shrdw ((:imm8 :insert-imm8) (:reg16 :insert-modrm-reg) (:reg16 :insert-modrm-rm))
    26852685     #x0fac #o300 #x0 #x66)
    2686    (def-x86-opcode shrdw ((:imm8 :insert-imm8) (:reg64 :insert-modrm-reg) (:anymem :insert-memory))
     2686   (def-x86-opcode shrdw ((:imm8 :insert-imm8) (:reg16 :insert-modrm-reg) (:anymem :insert-memory))
    26872687     #x0fac #o000 #x0 #x66)
    2688    (def-x86-opcode shrdw ((:shiftcount :insert-nothing) (:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
     2688   (def-x86-opcode shrdw ((:shiftcount :insert-nothing) (:reg16 :insert-modrm-reg) (:reg16 :insert-modrm-rm))
    26892689     #x0fad #o300 #x0 #x66)
    2690    (def-x86-opcode shrdw ((:shiftcount :insert-nothing) (:reg64 :insert-modrm-reg) (:anymem :insert-memory))
     2690   (def-x86-opcode shrdw ((:shiftcount :insert-nothing) (:reg16 :insert-modrm-reg) (:anymem :insert-memory))
    26912691     #x0fad #o000 #x0 #x66)
    2692    (def-x86-opcode shrdw ((:reg64 :insert-modrm-reg) (:reg64 :insert-modrm-rm))
     2692   (def-x86-opcode shrdw ((:reg16 :insert-modrm-reg) (:reg16 :insert-modrm-rm))
    26932693     #x0fad #o300 #x0 #x66)
    2694    (def-x86-opcode shrdw ((:reg64 :insert-modrm-reg) (:anymem :insert-memory))
     2694   (def-x86-opcode shrdw ((:reg16 :insert-modrm-reg) (:anymem :insert-memory))
    26952695     #x0fad #o000 #x0 #x66)
    26962696
     
    32563256   (def-x86-opcode psrlq ((:anymem :insert-memory) (:regmmx :insert-mmx-reg))
    32573257     #x0fd3 #o000 #x0)
     3258   (def-x86-opcode psrlq ((:imm8 :insert-imm8) (:regmmx :insert-mmx-rm))
     3259     #x0f73 #o320 #o0)
    32583260   (def-x86-opcode psrlq ((:regxmm :insert-modrm-rm) (:regxmm :insert-modrm-reg))
    32593261     #x0fd3 #o300 #x0 #x66)
     
    32703272   
    32713273   ;; psrlw
    3272    
     3274
     3275   ;; pmuludq
     3276   (def-x86-opcode pmuludq ((:regmmx :insert-mmx-rm) (:regmmx :insert-mmx-reg))
     3277     #x0ff4 #o300 #x0)
     3278   (def-x86-opcode pmuludq ((:anymem :insert-memory) (:regmmx :insert-mmx-reg))
     3279     #x0ff4 #o000 #x0)
     3280   (def-x86-opcode pmuludq ((:regxmm :insert-xmm-rm) (:regxmm :insert-xmm-reg))
     3281     #x0ff4 #o300 #x0 #x66)
     3282   (def-x86-opcode pmuludq ((:anymem :insert-memory) (:regxmm :insert-xmm-reg))
     3283     #x0ff4 #o000 #x0 #x66)
     3284
     3285   ;; paddq
     3286   (def-x86-opcode paddq ((:regmmx :insert-mmx-rm) (:regmmx :insert-mmx-reg))
     3287     #x0fd4 #o300 #x0)
     3288   (def-x86-opcode paddq ((:anymem :insert-memory) (:regmmx :insert-mmx-reg))
     3289     #x0fd4 #o000 #x0)
     3290   (def-x86-opcode paddq ((:regxmm :insert-xmm-reg) (:regxmm :insert-xmm-reg))
     3291     #x0fd4 #o300 #x0 #x66)
     3292   (def-x86-opcode paddq ((:anymem :insert-memory) (:regxmm :insert-xmm-reg))
     3293     #x0fd4 #o000 #x0 #x66)
     3294
    32733295;;; End of list of useful mmx instructions
    32743296   (def-x86-opcode ldmxcsr ((:anymem :insert-memory))
Note: See TracChangeset for help on using the changeset viewer.