Changeset 5450


Ignore:
Timestamp:
Nov 3, 2006, 11:47:00 AM (18 years ago)
Author:
Gary Byers
Message:

Fix misc-set-c-u64 braino; add/change some 2d array stuff.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/compiler/X86/X8664/x8664-vinsns.lisp

    r5370 r5450  
    202202                                     (v :lisp)
    203203                                     (idx :u32const)))
    204   (movq (:%q val) (:@ idx (:%q v))))
     204  (movq (:%q val) (:@ (:apply + x8664::misc-data-offset (:apply ash idx 3)) (:%q v))))
    205205
    206206(define-x8664-vinsn misc-set-s64 (()
     
    38033803  (shrq (:$ub amt) (:%q dest)))
    38043804
     3805(define-x8664-vinsn trap-unless-simple-array-2 (()
     3806                                                ((object :lisp)
     3807                                                 (expected-flags :u32const)
     3808                                                 (type-error :u8const))
     3809                                                ((tag :u8)))
     3810 
     3811  (movb (:%b object) (:%b tag))
     3812  (andb (:$b x8664::tagmask) (:%b tag))
     3813  (cmpb (:$b x8664::tag-misc) (:%b tag))
     3814  (jne :bad)
     3815  (cmpb (:$b x8664::subtag-arrayH) (:@ x8664::misc-subtag-offset (:%q object)))
     3816  (jne :bad)
     3817  (cmpq (:$b (ash 2 x8664::fixnumshift)) (:@ x8664::arrayH.rank (:%q object)))
     3818  (jne :bad)
     3819  (cmpq (:$l (:apply ash expected-flags x8664::fixnumshift)) (:@ x8664::arrayH.flags (:%q object)))
     3820  (je.pt :good)
     3821  :bad
     3822  (uuo-error-reg-not-type (:%q object) (:$ub type-error))
     3823  :good)
     3824 
    38053825(define-x8664-vinsn trap-unless-array-header (()
    38063826                                              ((object :lisp))
     
    40064026
    40074027
    4008 (define-x8664-vinsn 2d-unscaled-index (((dest :u64))
    4009                                        ((array :lisp)
    4010                                         (i :imm)
    4011                                         (j :imm)
    4012                                         (dim1 :u64)))
    4013   ((:not (:pred =
    4014                 (:apply %hard-regspec-value dim1)
    4015                 (:apply %hard-regspec-value dest)))
    4016    (movq (:% dim1) (:% dest)))
    4017   (imulq (:%q i) (:%q dest))
    4018   (addq (:%q j) (:%q dest)))
     4028(define-x8664-vinsn 2d-unscaled-index (((dest :imm)
     4029                                        (dim1 :u64))
     4030                                       ((dim1 :u64)
     4031                                        (i :imm)
     4032                                        (j :imm)))
     4033
     4034  (imulq (:%q i) (:%q dim1))
     4035  (leaq (:@ (:%q j) (:%q dim1)) (:%q dest)))
    40194036
    40204037(define-x8664-vinsn branch-unless-both-args-fixnums (()
Note: See TracChangeset for help on using the changeset viewer.