From 0aaaac2a7ada048b5465452f6e9eb398f4d8f261 Mon Sep 17 00:00:00 2001 From: Ben Vanik Date: Tue, 22 Jan 2013 00:54:49 -0800 Subject: [PATCH] Adding TODO. --- TODO.md | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 TODO.md diff --git a/TODO.md b/TODO.md new file mode 100644 index 000000000..3f23cf7bc --- /dev/null +++ b/TODO.md @@ -0,0 +1,60 @@ + +## Instructions + +``` +stbu +lwzu + +addx +addix +addic +addzex +subfx +subfex +subficx + +mulli +mullwx +divwux + +andix +orx + +rlwinmx +rldiclx +extsbx +slwx +srawix + +# can be no-op +dcbt +dcbtst + +twi + +``` + +## Codegen + +### Indirect branches (ctr/lr) + +emit_control.cc XeEmitBranchTo +Need to take the value in LR/CTR and do something with it. + +Fast path: +- Every time LR would be stashed, add the value of LR (some NIA) to a lookup + table. +- When doing an indirect branch first lookup the address in the table. +- If not found, slow path, else jump. + +Slow path: +- Call out and do an SDB lookup. +- If found, return, add to lookup table, and jump. +- If not found, need new function codegen! + +### Caching of register values in basic blocks + +Right now the SSA values seem to leak from the blocks somehow. All caching +is disabled. + +```