Changeset 10265
 Timestamp:
 Jul 31, 2008, 5:47:29 PM (11 years ago)
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

trunk/source/level0/X86/X8632/x8632hash.lisp
r7986 r10265 19 19 (markasnode temp1) 20 20 (singlevaluereturn)) 21 22 ;; Faster mod based on Bruce Hoult's Dylan version, modified to use a 23 ;; branchfree max. 24 (defx8632lapfunction fastmod3 ((number 4) #(ra 0)# (divisor arg_y) (recip arg_z)) 25 (std) ;temp1 now unboxed 26 (let ((imm1 temp1) 27 (n temp0)) 28 (movl (@ number (% esp)) (% n)) 29 (movl (% n) (% imm0)) 30 (sarl ($ target::fixnumshift) (% imm0)) 31 (mov (% recip) (% imm1)) 32 (mul (% imm1)) ;; > hi word in imm1 (unboxed) 33 (mov (% divisor) (% imm0)) 34 (mul (% imm1)) ;; > lo word in imm0 (boxed) 35 (subl (% imm0) (% n)) 36 (subl (% divisor) (% n)) 37 (mov (% n) (% arg_z)) 38 (mov (% n) (% imm0)) 39 (sar ($ (1 target::nbitsinword)) (% imm0)) 40 (andl (% imm0) (% divisor)) 41 (addl (% divisor) (% arg_z))) 42 (xorl (% temp1) (% temp1)) 43 (cld) ;temp1 now boxed 44 (singlevaluereturn 3)) 21 45 22 46 (defx8632lapfunction %dfloathash ((key arg_z))
Note: See TracChangeset
for help on using the changeset viewer.