Skip to content
Snippets Groups Projects
Forked from cmucl / cmucl
Source project has a limited visibility.
  • dtc's avatar
    a9e601ad
    Bring in enhancements from the experimental branch: · a9e601ad
    dtc authored
    * On the X86 port stack SCs may be placed in the list of operand
    preferred SCs and these are selected by emit-coerce-vop in preference
    to the register SCs because they happen to be defined first in
    vm.lisp.  Since in most cases a register SC is preferable,
    emit-coerce-vop now searches these first.
    
    Note that there are a few VOPs on the X86 port for which a stack SC is
    preferable, typically when the argument must be in memory,
    e.g. integer to float coercion, so this could use a little move work.
    
    
    * Add-representation-costs ignores the representation costs for MOVE
    VOPs when the representation of neither argument has been
    determined. In this case select-tn-representation chooses the first
    possible representation which may not be the most appropriate, and
    which can be improved upon by delaying the choice for the MOVE VOPs.
    
    This patch modifies select-representations to use two passes. On the
    first pass ambiguous choices are ignored giving a better chance for
    the propagation of argument and result representations for the MOVE
    VOPs after which a second pass can make a better choice.  This
    required an extension to select-tn-representation to return a second
    value indicating if a unique choice could be made.
    a9e601ad
    History
    Bring in enhancements from the experimental branch:
    dtc authored
    * On the X86 port stack SCs may be placed in the list of operand
    preferred SCs and these are selected by emit-coerce-vop in preference
    to the register SCs because they happen to be defined first in
    vm.lisp.  Since in most cases a register SC is preferable,
    emit-coerce-vop now searches these first.
    
    Note that there are a few VOPs on the X86 port for which a stack SC is
    preferable, typically when the argument must be in memory,
    e.g. integer to float coercion, so this could use a little move work.
    
    
    * Add-representation-costs ignores the representation costs for MOVE
    VOPs when the representation of neither argument has been
    determined. In this case select-tn-representation chooses the first
    possible representation which may not be the most appropriate, and
    which can be improved upon by delaying the choice for the MOVE VOPs.
    
    This patch modifies select-representations to use two passes. On the
    first pass ambiguous choices are ignored giving a better chance for
    the propagation of argument and result representations for the MOVE
    VOPs after which a second pass can make a better choice.  This
    required an extension to select-tn-representation to return a second
    value indicating if a unique choice could be made.