Changeset 10536


Ignore:
Timestamp:
Aug 22, 2008, 2:19:24 PM (11 years ago)
Author:
gb
Message:

Support some more operand classes; not yet used pending further
merges of assembler changes from trunk.

Incorporate trunk bugfix in code which updates vinsn templates
when opcode ordinals change (this will make introduction of
assembler changes easier to bootstrap.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl/compiler/X86/x86-backend.lisp

    r9620 r10536  
    3636              (8 (x86::encode-operand-type :reg64))
    3737              (4 (x86::encode-operand-type :reg32))))
     38        (:%acc (ecase (arch::target-lisp-node-size (backend-target-arch backend))
     39              (8 (x86::encode-operand-type :reg64 :acc))
     40              (4 (x86::encode-operand-type :reg32 :acc))))
    3841        (:%q (x86::encode-operand-type :reg64))
     42        (:%accq (x86::encode-operand-type :reg64 :acc))
    3943        (:%l (x86::encode-operand-type :reg32))
     44        (:%accl (x86::encode-operand-type :reg32 :acc))
    4045        (:%w (x86::encode-operand-type :reg16))
     46        (:%accw (x86::encode-operand-type :reg16 :acc))
    4147        (:%b (x86::encode-operand-type :reg8))
     48        (:%accb (x86::encode-operand-type :reg8 :acc))
    4249        (:%xmm (x86::encode-operand-type :regxmm))
    4350        (:%mmx (x86::encode-operand-type :regmmx))
     
    5057        (:$ul  (x86::encode-operand-type :imm32))
    5158        (:$q (x86::encode-operand-type :imm64))
    52         (:%shift (x86::encode-operand-type :shiftcount :reg8))))))
     59        (:%shift (x86::encode-operand-type :shiftcount :reg8))
     60        #+notyet
     61        (:$self (x86::encode-operand-type :self))))))
    5362
    5463(defun lookup-x86-opcode (form backend)
     
    91100      (flet ((update-instruction (i)
    92101               (when (consp i)
     102                 ;; An :ANCHORED-UUO directive contains a real
     103                 ;; (vinsn-encoded) instruction (typically a UUO) in
     104                 ;; its cadr.  Other directives won't contain embedded
     105                 ;; instructions and whatever's in their CARs won't
     106                 ;; match in the assoc below.
     107                 (when (eq (car i) :anchored-uuo)
     108                   (setq i (cadr i)))
    93109                 (let* ((pair (assoc (car i) changed :test #'eq)))
    94110                   (when pair
     
    264280                                    (simplify-memory-operand (cdr op))))
    265281                             ((member (car op)
    266                                       '(:% :%q :%l :%w :%b :$ :$1 :$b :$ub :$w :$l
    267                                         :$ul :$q :%mmx :%xmm :%shift))
     282                                      '(:% :%q :%l :%w :%b
     283                                        :%acc :%accq :%accl :%accw :%accb
     284                                        :$ :$1 :$b :$ub :$w :$l
     285                                        :$ul :$q :%mmx :%xmm :%shift :$self))
    268286                              (simplify-simple-operand (cadr op)))
    269287                             (t
Note: See TracChangeset for help on using the changeset viewer.