Changeset 11926


Ignore:
Timestamp:
Apr 9, 2009, 10:02:33 PM (10 years ago)
Author:
rme
Message:

Merge r11861 and r11862 from trunk (double-float vinsns).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/1.3/source/compiler/X86/X8632/x8632-vinsns.lisp

    r11814 r11926  
    5454                                              ((v :lisp)
    5555                                               (idx :s32const)))
    56   (movsd (:@ (:apply + x8632::misc-dfloat-offset (:apply ash idx x8632::word-shift)) (:%l v)) (:%xmm dest)))
     56  (movsd (:@ (:apply + x8632::misc-dfloat-offset (:apply ash idx 3)) (:%l v)) (:%xmm dest)))
    5757
    5858(define-x8632-vinsn misc-ref-node  (((dest :lisp))
     
    14371437;;; IWBNI we could simply call the "trap-unless-typecode=" vinsn here,
    14381438;;; instead of replicating it ..
    1439 ;;; get-double?
    1440 
     1439(define-x8632-vinsn get-double? (((target :double-float))
     1440                                 ((source :lisp))
     1441                                 ((tag :u8)))
     1442  :resume
     1443  (movl (:%l source) (:%l tag))
     1444  ((:pred = (:apply %hard-regspec-value tag) x8632::eax)
     1445   (andl (:$b x8632::tagmask) (:%accl tag))
     1446   (cmpl (:$b x8632::tag-misc) (:%accl tag)))
     1447  ((:pred > (:apply %hard-regspec-value tag) x8632::eax)
     1448   (andl (:$b x8632::tagmask) (:%l tag))
     1449   (cmpl (:$b x8632::tag-misc) (:%l tag)))
     1450  (jne :have-tag)
     1451  (movsbl (:@ x8632::misc-subtag-offset (:%l source)) (:%l tag))
     1452  :have-tag
     1453  (cmpl (:$b x8632::subtag-double-float) (:%l tag))
     1454  (jne :bad)
     1455  (movsd (:@  x8632::double-float.value (:%l source)) (:%xmm target))
     1456
     1457  (:anchored-uuo-section :resume)
     1458  :bad
     1459  (:anchored-uuo (uuo-error-reg-not-tag (:%q source) (:$ub x8632::subtag-double-float))))
    14411460
    14421461(define-x8632-vinsn copy-double-float (((dest :double-float))
Note: See TracChangeset for help on using the changeset viewer.