[llvm-commits] Re: llvm-commits Digest, Vol 18, Issue 43
Chris Lattner
sabre at nondot.org
Mon Dec 26 18:24:08 PST 2005
On Mon, 26 Dec 2005, Andrew Lenharth wrote:
>> -let isCall = 1, Defs = [R23, R24, R25, R27, R28], Uses = [R24, R25, R27]
>> in +let isCall = 1, noResults = 1, Defs = [R23, R24, R25, R27, R28], Uses =
>> [R24, R25, R27] in def JSRs : MbrForm< 0x1A, 0x01, (ops ), "jsr
>> $$23,($$27),0">; //Jump to div or rem
>
> things like JSR and BSR and BR and reg do return results, but I guess the only
> uses can be hidden with the use of flags. What I really need to remove hacks
> is a way to force a results to be in a certain register that doesn't depend
> on the register allocator optionally doing the right thing. This is easy in
> the PatternISel, but not in the DAG. maybe like
> (ops GPRC:$RD = R27, GPRC:$RS)
> or
> let constraints = (constrain GPRC:$RD = 27) in ...
> not that there are enough hacks around this to be worth it.
I'm not sure I follow. If this is fixed by the architecture (seems
unlikely for alpha but...) you should be able to do something like this:
(set R27, (fooop GPRC:$in1, GPRC:$in2))
it it is not fixed by the ISA, but fixed by the architecture, you should
handle this in the lowering code, and emit copyto/from regs.
-Chris
--
http://nondot.org/sabre/
http://llvm.org/
More information about the llvm-commits
mailing list