From: Philipp K. K. <pk...@sp...> - 2012-04-16 13:51:05
|
Am 14.04.2012 07:48, schrieb Erik Petrich: > > > On Fri, 13 Apr 2012, Philipp Klaus Krause wrote: > >> I just commited revision #7585. Everything compiles, code looks much >> better now, and all current failures are in the library, not the tests >> themselves (13 tests are failing). > > As of revision #7586, there are no regression test failures. Thanks a lot!. There's one more issue I don't see clearly: When removing the comments at /*if(ic->op == RECEIVE && (!ic->next || !(ic->next->op == RECEIVE) || !result_in_X || getSize(operandType(result)) >= 2)) return(true);*/ in ralloc2.cc, I get some regression failures. I looked at the diff in the asm generated, but couldn't see the problem. A typical one (gcc-torture-execute_compare-3) is attached. > >> I wonder if it would be a good idea to allow more register combinations, >> e.g. AX and AH. It should be easy to make instructions that don't care >> about the order, like assignment and cast to accept them as input. >> Furthermore they are cheap to emit as result by arithmetic instructions >> (since the highest byte is calculated last and already in a at the end >> of the instruction). > > I'm still not very convinced of the usefulness of H in any context other > than HX. The only place I see that it might be useful is with the DIV > (divide) instruction; it uses HA as the dividend and leaves the remainder > in H. But the complications don't seem to me to be worth the payoff. > > On the other hand, I think AX could be useful, particularly for > shifts/additions leading to a pointer get/set (which requires the address > in HX, so we only need to transfer A to H). OK, so I'll try to enable AX later this week. Philipp |