[LLVMdev] specifying accumulator based load/stores
Sanjiv Gupta
llvmdev at gmail.com
Thu Jan 17 04:12:18 PST 2008
I have load / store instructions that require accumulator.
So a store looks like..
mov 3, acc
st acc, addr
I have specified "acc" as a separate register class containing only one
register which is the "acc".
The instr patterns are then splitted into:
set imm:$src, ACCClass:$dst (generating the "mov" above)
set ACCClass:$src, mem:$dst (generating the "st" above)
The problem with the generated code is incorrectly assuming that value in
"acc" is still live.
for example, for code like below
a = 3;
b = 4;
c = 3;
it generates:
mov 3, acc
st acc, @a
mov 4, acc
st acc, @b
st acc, @c (Wrong)
When I use the GPRRegs, which has more regs, the code is ok.
is it because I still haven't implemented the stack/frame related routines
and the value in acc is getting spilled to stack and reloaded?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20080117/6285d8b0/attachment.html>
More information about the llvm-dev
mailing list