Ignore:
Timestamp:
Feb 23, 2010, 6:08:58 AM (10 years ago)
Author:
gb
Message:

Try to tighten up %IASR, %ILSR vinsns: use CMOV instead of branching,
avoid partial register writes.

File:
1 edited

Legend:

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

    r13446 r13457  
    22222222  (movl (:%l count) (:%l temp))
    22232223  (sarl (:$ub x8632::fixnumshift) (:%l temp))
    2224   (rcmpl (:%l temp) (:$l 31))
    2225   (cmovbw (:%w temp) (:%w shiftcount))
     2224  (movl (:$l 31) (:%l shiftcount))
     2225  (rcmpl (:%l temp) (:%l shiftcount))
     2226  (cmovbel (:%l temp) (:%l shiftcount))
    22262227  (movl (:%l src) (:%l temp))
    2227   (jae :shift-max)
    22282228  (sarl (:%shift x8632::cl) (:%l temp))
    2229   (jmp :done)
    2230   :shift-max
    2231   (sarl (:$ub 31) (:%l temp))
    2232   :done
    22332229  (andl (:$l (lognot x8632::fixnummask)) (:%l temp))
    22342230  (movl (:%l temp) (:%l dest)))
     
    22412237  (movl (:%l count) (:%l temp))
    22422238  (sarl (:$ub x8632::fixnumshift) (:%l temp))
    2243   (rcmpl (:%l temp) (:$l 31))
    2244   (cmovbw (:%w temp) (:%w shiftcount))
     2239  (movl (:$l 31) (:%l shiftcount))
     2240  (rcmpl (:%l temp) (:%l shiftcount))
     2241  (cmovbel (:%l temp) (:%l shiftcount))
    22452242  (movl (:%l src) (:%l temp))
    2246   (jae :shift-max)
    22472243  (shrl (:%shift x8632::cl) (:%l temp))
    2248   (jmp :done)
    2249   :shift-max
    2250   (shrl (:$ub 31) (:%l temp))
    2251   :done
    2252   (andb (:$b (lognot x8632::fixnummask)) (:%b temp))
     2244  (andl (:$b (lognot x8632::fixnummask)) (:%l temp))
    22532245  (movl (:%l temp) (:%l dest)))
    22542246
Note: See TracChangeset for help on using the changeset viewer.