Changeset 11080


Ignore:
Timestamp:
Oct 14, 2008, 12:39:44 AM (11 years ago)
Author:
rme
Message:

TRUNCATE-GUESS-LOOP: actually loop. (ticket:347)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/level-0/X86/X8632/x8632-bignum.lisp

    r10959 r11080  
    863863                                          (xidx 4) #|(ra 0)|#
    864864                                          (yptr arg_y) (yidx arg_z))
    865   (movl (% ebp) (@ 20 (% esp)))
    866   (leal (@ 20 (% esp)) (% ebp))
    867   (popl (@ 4 (% ebp)))
     865  (save-stackargs-frame 4)
    868866  (push (% arg_y))
    869867  (push (% arg_z))
     
    874872  (movd (% imm0) (% mm0))               ;save guess
    875873
     874  @loop
     875  (movl (@ (% esp)) (% yidx))
     876  (movl (@ 4 (% esp)) (% yptr))
    876877  (movd (@ (- x8632::misc-data-offset 0) (% yptr) (% yidx)) (% mm1)) ;y1 (high)
    877878  ;; (%multiply guess y1)
     
    897898  (sbbl (% eax) (% edx))
    898899  (movd (% edx) (% mm7))                ;save high digit
    899   ;; guess is now either good, or one too large
     900  ;; see if guess is suitable
    900901  ;; if (and (= high-digit 0)
    901902  (test (% edx) (% edx))
     
    933934  (subl ($ 1) (% imm0))
    934935  (movd (% imm0) (% mm0))
    935   (jmp @return))
     936  (jmp @loop))
    936937
    937938;;; If x[i] = y[j], return the all ones digit (as two halves).
Note: See TracChangeset for help on using the changeset viewer.