Changeset 9581


Ignore:
Timestamp:
May 22, 2008, 11:29:28 PM (11 years ago)
Author:
rme
Message:

x862-get-immediate-xxx: rearrange the placement of with-add'l-imm-reg forms

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ia32/compiler/X86/x862.lisp

    r9580 r9581  
    79617961                      (and offval (logtest 3 offval) (setq offval nil))
    79627962                      (and absptr (logtest 3 absptr) (setq absptr nil)))))
    7963            (with-additional-imm-reg ()
    7964              (cond
    7965                (fixnump
    7966                 (with-imm-target () (dest :signed-natural)
    7967                   (cond
    7968                     (absptr                             
     7963           (cond
     7964             (fixnump
     7965              (with-imm-target () (dest :signed-natural)
     7966                (cond
     7967                  (absptr                             
     7968                   (target-arch-case
     7969                    (:x8632 (! mem-ref-c-absolute-fullword dest absptr))
     7970                    (:x8664 (! mem-ref-c-absolute-doubleword dest  absptr))))
     7971                  (offval
     7972                   (with-imm-target () (src-reg :address)
     7973                     (x862-one-targeted-reg-form seg ptr src-reg)
    79697974                     (target-arch-case
    7970                       (:x8632 (! mem-ref-c-absolute-fullword dest absptr))
    7971                       (:x8664 (! mem-ref-c-absolute-doubleword dest  absptr))))
    7972                     (offval
    7973                      (with-imm-target () (src-reg :address)
    7974                        (x862-one-targeted-reg-form seg ptr src-reg)
    7975                        (target-arch-case
    7976                         (:x8632 (! mem-ref-c-fullword dest src-reg offval))
    7977                         (:x8664 (! mem-ref-c-doubleword dest src-reg offval)))))
    7978                     (t
    7979                      (with-imm-target () (src-reg :address)
     7975                      (:x8632 (! mem-ref-c-fullword dest src-reg offval))
     7976                      (:x8664 (! mem-ref-c-doubleword dest src-reg offval)))))
     7977                  (t
     7978                   (with-imm-target () (src-reg :address)
     7979                     (with-additional-imm-reg ()
    79807980                       (with-imm-target (src-reg) (offset-reg :signed-natural)
    79817981                         (x862-one-targeted-reg-form seg ptr src-reg)
     
    79927992                         (target-arch-case
    79937993                          (:x8632 (! mem-ref-fullword dest src-reg offset-reg))
    7994                           (:x8664 (! mem-ref-doubleword dest src-reg offset-reg)))))))
    7995                   (if (node-reg-p vreg)
    7996                     (! box-fixnum vreg dest)
    7997                     (<- dest))))
    7998                (signed
    7999                 (with-imm-target () (dest :signed-natural)
    8000                   (cond
    8001                     (absptr
    8002                      (case size
    8003                        (8 (! mem-ref-c-absolute-signed-doubleword dest absptr))
    8004                        (4 (! mem-ref-c-absolute-signed-fullword dest  absptr))
    8005                        (2 (! mem-ref-c-absolute-s16 dest absptr))
    8006                        (1 (! mem-ref-c-absolute-s8 dest absptr))))
    8007                     (offval
     7994                          (:x8664 (! mem-ref-doubleword dest src-reg offset-reg))))))))
     7995                (if (node-reg-p vreg)
     7996                  (! box-fixnum vreg dest)
     7997                  (<- dest))))
     7998             (signed
     7999              (with-imm-target () (dest :signed-natural)
     8000                (cond
     8001                  (absptr
     8002                   (case size
     8003                     (8 (! mem-ref-c-absolute-signed-doubleword dest absptr))
     8004                     (4 (! mem-ref-c-absolute-signed-fullword dest  absptr))
     8005                     (2 (! mem-ref-c-absolute-s16 dest absptr))
     8006                     (1 (! mem-ref-c-absolute-s8 dest absptr))))
     8007                  (offval
     8008                   (with-additional-imm-reg ()
    80088009                     (with-imm-target (dest) (src-reg :address)
    80098010                       (x862-one-targeted-reg-form seg ptr src-reg)
     
    80128013                         (4 (! mem-ref-c-signed-fullword dest src-reg offval))
    80138014                         (2 (! mem-ref-c-s16 dest src-reg offval))
    8014                          (1 (! mem-ref-c-s8 dest src-reg offval)))))
    8015                     (t
    8016                      (with-imm-target () (src-reg :address)
     8015                         (1 (! mem-ref-c-s8 dest src-reg offval))))))
     8016                  (t
     8017                   (with-imm-target () (src-reg :address)
     8018                     (with-additional-imm-reg ()
    80178019                       (with-imm-target (src-reg) (offset-reg :signed-natural)
    80188020                         (x862-one-targeted-reg-form seg ptr src-reg)
     
    80318033                           (4 (! mem-ref-signed-fullword dest src-reg offset-reg))
    80328034                           (2 (! mem-ref-s16 dest src-reg offset-reg))
    8033                            (1 (! mem-ref-s8 dest src-reg offset-reg)))))))
    8034                   (if (node-reg-p vreg)
    8035                     (case size
    8036                       ((1 2) (! box-fixnum vreg dest))
    8037                       (4 (target-arch-case
    8038                           (:x8632 (<- dest))
    8039                           (:x8664 (! box-fixnum vreg dest))))
    8040                       (8 (<- dest)))
    8041                     (<- dest))))
    8042                (t
    8043                 (with-imm-target () (dest :natural)
    8044                   (cond
    8045                     (absptr
    8046                      (case size
    8047                        (8 (! mem-ref-c-absolute-doubleword dest absptr))
    8048                        (4 (! mem-ref-c-absolute-fullword dest absptr))
    8049                        (2 (! mem-ref-c-absolute-u16 dest absptr))
    8050                        (1 (! mem-ref-c-absolute-u8 dest absptr))))
    8051                     (offval
     8035                           (1 (! mem-ref-s8 dest src-reg offset-reg))))))))
     8036                (if (node-reg-p vreg)
     8037                  (case size
     8038                    ((1 2) (! box-fixnum vreg dest))
     8039                    (4 (target-arch-case
     8040                        (:x8632 (<- dest))
     8041                        (:x8664 (! box-fixnum vreg dest))))
     8042                    (8 (<- dest)))
     8043                  (<- dest))))
     8044             (t
     8045              (with-imm-target () (dest :natural)
     8046                (cond
     8047                  (absptr
     8048                   (case size
     8049                     (8 (! mem-ref-c-absolute-doubleword dest absptr))
     8050                     (4 (! mem-ref-c-absolute-fullword dest absptr))
     8051                     (2 (! mem-ref-c-absolute-u16 dest absptr))
     8052                     (1 (! mem-ref-c-absolute-u8 dest absptr))))
     8053                  (offval
     8054                   (with-additional-imm-reg ()
    80528055                     (with-imm-target (dest) (src-reg :address)
    80538056                       (x862-one-targeted-reg-form seg ptr src-reg)
     
    80568059                         (4 (! mem-ref-c-fullword dest src-reg offval))
    80578060                         (2 (! mem-ref-c-u16 dest src-reg offval))
    8058                          (1 (! mem-ref-c-u8 dest src-reg offval)))))
    8059                     (t
     8061                         (1 (! mem-ref-c-u8 dest src-reg offval))))))
     8062                  (t
     8063                   (with-additional-imm-reg ()
    80608064                     (with-imm-target () (src-reg :address)
    80618065                       (with-imm-target (src-reg) (offset-reg :signed-natural)
     
    80758079                           (4 (! mem-ref-fullword dest src-reg offset-reg))
    80768080                           (2 (! mem-ref-u16 dest src-reg offset-reg))
    8077                            (1 (! mem-ref-u8 dest src-reg offset-reg)))))))
    8078                   (<- (set-regspec-mode
    8079                        dest
    8080                        (gpr-mode-name-value
    8081                         (case size
    8082                           (8 :u64)
    8083                           (4 :u32)
    8084                           (2 :u16)
    8085                           (1 :u8)))))))))
     8081                           (1 (! mem-ref-u8 dest src-reg offset-reg))))))))
     8082                (<- (set-regspec-mode
     8083                     dest
     8084                     (gpr-mode-name-value
     8085                      (case size
     8086                        (8 :u64)
     8087                        (4 :u32)
     8088                        (2 :u16)
     8089                        (1 :u8))))))))
    80868090           (^)))))
    80878091
Note: See TracChangeset for help on using the changeset viewer.