Displaying 7 results from an estimated 7 matches for "getsplitdestvts".
2009 Dec 10
2
[LLVMdev] SplitVecRes with SIGN_EXTEND_INREG unsupported
...f the same size as the LHS SDValue. This causes a split on the LHS side to work correctly, but then it fails instruction selection because of Other. I have not been able to figure out how to split the MVT::Other node yet, any idea how to do this?
You should be able to split the contained type with GetSplitDestVTs,
then recreate the node using SelectionDAG::getValueType(), I think.
That said, it could possibly be considered a bug in DAGCombine that
the second operand is a vector type; someone want to comment on that?
-Eli
2009 Dec 10
2
[LLVMdev] SplitVecRes with SIGN_EXTEND_INREG unsupported
...is look correct to you?
void DAGTypeLegalizer::SplitVecRes_SIGN_EXTEND_INREG(SDNode *N, SDValue &Lo,
SDValue &Hi) {
SDValue LHSLo, LHSHi;
GetSplitVector(N->getOperand(0), LHSLo, LHSHi);
DebugLoc dl = N->getDebugLoc();
EVT LoVT, HiVT;
GetSplitDestVTs(N->getValueType(1), LoVT, HiVT);
Lo = DAG.getNode(N->getOpcode(), dl, LHSLo.getValueType(), LHSLo, DAG.getValueType(LoVT));
Hi = DAG.getNode(N->getOpcode(), dl, LHSHi.getValueType(), LHSHi, DAG.getValueType(HiVT));
}
Thanks,
Micah
> -----Original Message-----
> From: llvmdev-...
2009 Dec 10
0
[LLVMdev] SplitVecRes with SIGN_EXTEND_INREG unsupported
...lue. This causes a split on the LHS side to work
> correctly, but then it fails instruction selection because of Other. I
> have not been able to figure out how to split the MVT::Other node yet,
> any idea how to do this?
>
>
> You should be able to split the contained type with GetSplitDestVTs,
> then recreate the node using SelectionDAG::getValueType(), I think.
>
> That said, it could possibly be considered a bug in DAGCombine that
> the second operand is a vector type; someone want to comment on that?
>
> -Eli
2009 Dec 10
0
[LLVMdev] SplitVecRes with SIGN_EXTEND_INREG unsupported
...peLegalizer::SplitVecRes_SIGN_EXTEND_INREG(SDNode *N, SDValue
> &Lo,
> SDValue &Hi) {
> SDValue LHSLo, LHSHi;
> GetSplitVector(N->getOperand(0), LHSLo, LHSHi);
> DebugLoc dl = N->getDebugLoc();
> EVT LoVT, HiVT;
> GetSplitDestVTs(N->getValueType(1), LoVT, HiVT);
>
> Lo = DAG.getNode(N->getOpcode(), dl, LHSLo.getValueType(), LHSLo,
> DAG.getValueType(LoVT));
> Hi = DAG.getNode(N->getOpcode(), dl, LHSHi.getValueType(), LHSHi,
> DAG.getValueType(HiVT));
> }
>
>
> Thanks,
> Micah
&g...
2009 Dec 11
1
[LLVMdev] SplitVecRes with SIGN_EXTEND_INREG unsupported
...EG(SDNode *N,
> SDValue
> > &Lo,
> > SDValue &Hi) {
> > SDValue LHSLo, LHSHi;
> > GetSplitVector(N->getOperand(0), LHSLo, LHSHi);
> > DebugLoc dl = N->getDebugLoc();
> > EVT LoVT, HiVT;
> > GetSplitDestVTs(N->getValueType(1), LoVT, HiVT);
> >
> > Lo = DAG.getNode(N->getOpcode(), dl, LHSLo.getValueType(), LHSLo,
> > DAG.getValueType(LoVT));
> > Hi = DAG.getNode(N->getOpcode(), dl, LHSHi.getValueType(), LHSHi,
> > DAG.getValueType(HiVT));
> > }
> >...
2009 Dec 10
0
[LLVMdev] SplitVecRes with SIGN_EXTEND_INREG unsupported
Eli,
I have a simple SplitVecRes function that implements what you mentioned, splitting the LHS just as in BinaryOp, but passing through the RHS. The problem is that the second operand is MVT::Other, but when casted to an VTSDNode reveals that it is a vector length of the same size as the LHS SDValue. This causes a split on the LHS side to work correctly, but then it fails instruction selection
2009 Dec 10
2
[LLVMdev] SplitVecRes with SIGN_EXTEND_INREG unsupported
Thanks Eli,
I'll see if I can get something working and submit a patch.
Micah
-----Original Message-----
From: Eli Friedman [mailto:eli.friedman at gmail.com]
Sent: Wednesday, December 09, 2009 11:18 PM
To: Villmow, Micah
Cc: llvmdev at cs.uiuc.edu
Subject: Re: [LLVMdev] SplitVecRes with SIGN_EXTEND_INREG unsupported
On Wed, Dec 9, 2009 at 8:40 PM, Villmow, Micah <Micah.Villmow at