-
Notifications
You must be signed in to change notification settings - Fork 32
IntelPeepholeTodo
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