1.0.24.35: Flag-setting VOPs on x86[-64] and conditional moves
authorPaul Khuong <pvk@pvk.ca>
Sun, 11 Jan 2009 18:39:07 +0000 (18:39 +0000)
committerPaul Khuong <pvk@pvk.ca>
Sun, 11 Jan 2009 18:39:07 +0000 (18:39 +0000)
commitd95f1e6476aa63695e018a7769a1ae9e002fca36
tree89fc196d34811229e096d430c0bbdc7a1d1c1788
parent5cf3c4259d529e180d75d4d140f344e600d2b06b
1.0.24.35: Flag-setting VOPs on x86[-64] and conditional moves

 * Most :CONDITIONAL VOPs only specify which condition flags they set

 * GENERIC-{EQL,=,<,>} are :CONDITIONAL VOPs, but don't show up as
   calls anymore

 * Values may be selected with CMOVcc if applicable (and :CMOV is
   in *backend-subfeatures*, for x86):
    - Values that are represented, unboxed, in GPRs are CMOVed using
      custom VOPs
    - Unboxed float and complex types aren't converted
    - Other types are assumed to be boxed and CMOVed as descriptors

 * A test to try and to cover an interesting cross-section of flags
   and values to move conditionally.
17 files changed:
src/assembly/x86-64/arith.lisp
src/assembly/x86/arith.lisp
src/compiler/x86-64/arith.lisp
src/compiler/x86-64/cell.lisp
src/compiler/x86-64/char.lisp
src/compiler/x86-64/float.lisp
src/compiler/x86-64/pred.lisp
src/compiler/x86-64/type-vops.lisp
src/compiler/x86/arith.lisp
src/compiler/x86/cell.lisp
src/compiler/x86/char.lisp
src/compiler/x86/float.lisp
src/compiler/x86/pred.lisp
src/compiler/x86/type-vops.lisp
tests/compiler.pure.lisp
tests/step.impure.lisp
version.lisp-expr