Changeset 14762


Ignore:
Timestamp:
Apr 30, 2011, 1:37:21 AM (14 years ago)
Author:
Gary Byers
Message:

Floating-point negation.
Tighten up some FP memory access stuff.
Use :CSP attribute (consistently) for vinsns that affect the control stack.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/compiler/ARM/arm-vinsns.lisp

    r14707 r14762  
    656656    (((dest :double-float))
    657657     ((src :address)
    658       (index :s16const))
    659      ((low (:u32 #.arm::imm0))
    660       (high (:u32 #.arm::imm1))))
    661   (ldrd low (:@ src (:$ index)))
    662   (fmdrr dest low high))
     658      (index :s16const)))
     659  (fldd dest (:@ src (:$ index)))
     660)
    663661
    664662(define-arm-vinsn (mem-ref-double-float :predicatable)
    665     (((dest :double-float))
     663    (((dest :double-float)
     664      (src :address))
    666665     ((src :address)
    667       (index :s32))
    668      ((low (:u32 #.arm::imm0))
    669       (high (:u32 #.arm::imm1))))
    670   (ldrd low (:@ src  index))
    671   (fmdrr dest low high))
     666      (index :s32)))
     667  (add src src index)
     668  (fldd dest (:@ src (:$ 0))))
    672669
    673670(define-arm-vinsn (mem-set-c-double-float :predicatable)
     
    700697    (((dest :single-float))
    701698     ((src :address)
    702       (index :s32))
     699      (index :lisp))
    703700     ((temp :u32)))
    704   (ldr temp (:@ src index))
     701  (ldr temp (:@ src (:asr index (:$ arm::fixnumshift))))
    705702  (fmsr dest temp))
    706703
     
    15891586  (bla .SPcheck-fpu-exception))
    15901587
     1588(define-arm-vinsn (double-float-negate :predicatable) (((dest :double-float))
     1589                                                       ((src :double-float)))
     1590  (fnegd dest src))
     1591
     1592
    15911593
    15921594(define-arm-vinsn single-float-compare (((crf :crf))
     
    16661668  (bla .SPcheck-fpu-exception))
    16671669
     1670(define-arm-vinsn (single-float-negate :predicatable) (((dest :single-float))
     1671                                                       ((src :single-float)))
     1672  (fnegs dest src))
    16681673
    16691674
     
    30703075  :defined)
    30713076
    3072 (define-arm-vinsn (temp-push-unboxed-word :push :word :sp :predicatable)
     3077(define-arm-vinsn (temp-push-unboxed-word :push :word :csp :predicatable)
    30733078   
    30743079    (()
     
    30793084  (str w (:@ sp (:$ 4))))
    30803085
    3081 (define-arm-vinsn (temp-pop-unboxed-word :pop :word :sp :predicatable)
     3086(define-arm-vinsn (temp-pop-unboxed-word :pop :word :csp :predicatable)
    30823087   
    30833088    (((w :u32))
     
    30863091  (add sp sp (:$ arm::dnode-size)))
    30873092
    3088 (define-arm-vinsn (temp-push-double-float :push :doubleword :sp :predicatable)
     3093(define-arm-vinsn (temp-push-double-float :push :doubleword :csp :predicatable)
    30893094   
    30903095    (()
     
    30953100  (fstd d (:@ sp (:$ 8))))
    30963101
    3097 (define-arm-vinsn (temp-pop-double-float :pop :doubleword :sp :predicatable)
     3102(define-arm-vinsn (temp-pop-double-float :pop :doubleword :csp :predicatable)
    30983103   
    30993104    (()
     
    31133118
    31143119
    3115 (define-arm-vinsn (temp-pop-single-float :pop :word :sp :predicatable)
     3120(define-arm-vinsn (temp-pop-single-float :pop :word :csp :predicatable)
    31163121   
    31173122    (()
Note: See TracChangeset for help on using the changeset viewer.