Skip to content
Felix S. Klock II edited this page Jul 28, 2013 · 1 revision

These are some quick notes PnkFelix is making to himself (they were in his Emacs scratch buffer, but that is too transient/unreliable for his purposes at the moment...)

  • Do we need to do something like the xform:

 const 3
 op2    <:fix:fix,2
 

==>


 reg 2
 op2imm >:fix:fix,3
 

in the peephole optimizer? (The latter can subsequently be optimized into reg/op2imm, saving a move instruction.) Or should this be taken care of within Twobit? Is this even a safe transformation?

  • OP2's todo: ia86.generic_char_compare ia86.fixnum_shift ia86.fixnum_arithmetic ia86.fixnum_compare (fx<, fx<=, fx=, ...) ia86.indexed_structure_ref fxlogand fxlogior fxlogxor vector-ref:trusted cons (have to deal with potential mcall tho'...) +:idx:idx +:fix:fix -:idx:idx -:fix:fix

  • OP2IMM's todo: eq? ia86.generic_imm_compare ia86.generic_char_imm_compare ia86.fixnum_imm_arithmetic ia86.fixnum_imm_compare vector-ref:trusted =:fix:fix <:fix:fix <=:fix:fix >:fix:fix >=:fix:fix +:idx:idx +:fix:fix -:idx:idx -:fix:fix

  • OP1's todo: integer? zero? fixnum? fxlognot char? char->integer integer->char port? structure? symbol? compnum? flonum? string? vector? bytevector? fx-- fxzero? fxpositive? fxnegative? string-length vector-length bytevector-length procedure-length vector-like-length bytevector-like-length make-bytevector make-procedure make-string

  • REG/OP1/SETREG's done: unspecified undefined eof-object car cdr car:pair cdr:pair not null? procedure? bytevector-like? vector-like? vector-length:vec make-cell cell-ref

  • REG/OP1/BRANCHF's done: null? eof-object? pair? zero? fixnum?

  • REG/OP1/CHECK's done: fixnum? pair? vector? string?

  • REG/OP2/SETREG's done: eq? set-car! set-cdr! cons + - =:fix:fix <:fix:fix <=:fix:fix >=fix:fix >:fix:fix vector-ref:trusted

  • REG/OP2IMM/SETREG's done: eq? +:idx:idx -:idx:idx +:fix:fix -:fix:fix + - =:fix:fix <:fix:fix <=:fix:fix >=:fix:fix >:fix:fix vector-ref:trusted

  • REG/OP2/BRANCHF's done: eq? < <= = > >= <:fix:fix <=:fix:fix =:fix:fix >:fix:fix >=:fix:fix

  • REG/OP2/CHECK's done: =:fix:fix <:fix:fix <=:fix:fix >=:fix:fix >:fix:fix

  • REG/OP2IMM/CHECK's done: =:fix:fix <:fix:fix <=:fix:fix >=:fix:fix >:fix:fix

  • REG/OP2IMM/BRANCHF's done: eq? < <= = > >= <:fix:fix <=:fix:fix =:fix:fix >:fix:fix >=:fix:fix

Clone this wiki locally