You know, after implementing all the optimizations listed above, I realized something: neg(b1000...) == b1000...
This means I can't use NEG for the comparison test. Poop. I guess I'll have to lose the ~1 clock bonus of NEG. On the up side, that means a LOT fewer peepholes to test (even though it was all written and tested...)
So new plan.
Use ABS for all tests with dead registers, except for A>=0 tests. I can still use INV for that one.