Is it possible to get a register number to which the value is allocated to
in MIPS in DAGToDAG class?
More Specifically:
SDValue Reg3 = Node->getOperand(3);
if (RegisterSDNode *R =
dyn_cast<RegisterSDNode>(Reg3))
{
op3 = cast<RegisterSDNode>(Reg3)->getReg();
fprintf(stderr,"Op3 is register and regnum is
%d\n",op3);
}
else if (ConstantSDNode *C
dyn_cast<ConstantSDNode>(Reg3))
{
op3 = C->getZExtValue();
fprintf(stderr,"Op3 is constant and value is
%d\n",op3);
}
When I run this code Reg3 is found out to be a ConstantSDNode but is stored
in the register in assembly. I want to store the value in register but also
need the register number to which the value is allocated.
Thanks,
Ambuj Agrawal
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20150227/eb92dacd/attachment.html>
> On Feb 27, 2015, at 1:59 AM, Ambuj Agrawal <ambujbwt at gmail.com> wrote: > > Is it possible to get a register number to which the value is allocated to in MIPS in DAGToDAG class? > > More Specifically: > SDValue Reg3 = Node->getOperand(3); > if (RegisterSDNode *R = dyn_cast<RegisterSDNode>(Reg3)) > { > op3 = cast<RegisterSDNode>(Reg3)->getReg(); > fprintf(stderr,"Op3 is register and regnum is %d\n",op3); > } > else if (ConstantSDNode *C = dyn_cast<ConstantSDNode>(Reg3)) > { > op3 = C->getZExtValue(); > fprintf(stderr,"Op3 is constant and value is %d\n",op3); > } > > When I run this code Reg3 is found out to be a ConstantSDNode but is stored in the register in assembly. I want to store the value in register but also need the register number to which the value is allocated.The registers are allocated much later in the pipeline. At this stage, these are virtual registers. What are you trying to achieved? Cheers, -Quentin> > Thanks, > Ambuj Agrawal > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Thanks for your reply Quentin. I do understand that the registers are
allocated much later in the pipeline.
I am assuming that the physical registers are allocated before
MipsAsmPrinter class.
I am doing something like
if (MI->getOpcode() == Mips::OPCODE) {
unsigned n = MI->getNumOperands();
for(unsigned i=0 ; i < n ; i++) {
const MachineOperand &MO = MI->getOperand(i);
if (MO.isReg())
{
fprintf(stderr,"int i is %u and reg is %d\n",i,
MO.getReg());
}
}
}
but I am still getting wrong physical register number.
For eg when the allocated register is 3 in assembly the output given by
MO.getReg() is 290.
Any clues why is this the case?
Thanks,
Ambuj
On Fri, Feb 27, 2015 at 5:46 PM, Quentin Colombet <qcolombet at apple.com>
wrote:
>
> > On Feb 27, 2015, at 1:59 AM, Ambuj Agrawal <ambujbwt at
gmail.com> wrote:
> >
> > Is it possible to get a register number to which the value is
allocated
> to in MIPS in DAGToDAG class?
> >
> > More Specifically:
> > SDValue Reg3 = Node->getOperand(3);
> > if (RegisterSDNode *R >
dyn_cast<RegisterSDNode>(Reg3))
> > {
> > op3 =
cast<RegisterSDNode>(Reg3)->getReg();
> > fprintf(stderr,"Op3 is register and
regnum is
> %d\n",op3);
> > }
> > else if (ConstantSDNode *C >
dyn_cast<ConstantSDNode>(Reg3))
> > {
> > op3 = C->getZExtValue();
> > fprintf(stderr,"Op3 is constant and value
is
> %d\n",op3);
> > }
> >
> > When I run this code Reg3 is found out to be a ConstantSDNode but is
> stored in the register in assembly. I want to store the value in register
> but also need the register number to which the value is allocated.
>
> The registers are allocated much later in the pipeline. At this stage,
> these are virtual registers.
>
> What are you trying to achieved?
>
> Cheers,
> -Quentin
>
> >
> > Thanks,
> > Ambuj Agrawal
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20150228/2782acdb/attachment.html>