Displaying 2 results from an estimated 2 matches for "setidnode".
Did you mean:
getmdnode
2014 Feb 08
2
[LLVMdev] selecting ISD node - help
...Type = Node->getValueType(0);
if(Subtarget->is64Bit())
{
idReg = X86::RCX;
resultReg = X86::RAX;
}
else
{
idReg = X86::ECX;
resultReg = X86::EAX;
}
idRegValue = CurDAG->getRegister(idReg, resultType);
SmallVector<SDValue, 8> Ops;
SDValue setIdNode = CurDAG->getCopyToReg(CurDAG->getEntryNode(), dl,
idRegValue, id, SDValue());
SDValue rdmsrNode = SDValue(CurDAG->getMachineNode(X86::RDMSR, dl,
MVT::Other, setIdNode), 0);
SDValue resultNode = CurDAG->getCopyFromReg(rdmsrNode, dl, resultReg,
resultType);
Ops.push_back(result...
2014 Feb 08
2
[LLVMdev] selecting ISD node - help
Hi Tim,
Tim Northover-2 wrote
> The code used for DIV is around X86ISelDAGToDAG.cpp:2415, but from a
> glance the key points seem to be:
> 1. use the second result of getCopyToReg (i.e. SDValue(setIdNode, 1))
> in the RDMSR node.
> 2. Give your RDMSR node type MVT::Glue instead of MVT::Other
I tried doing what you said, and the DAG looks like how I think it supposed
to look like (attached the picture below).
if(Subtarget->is64Bit())
{
idReg = X86::RCX;
resultReg = MF.addLi...