search for: getsplitdestvts

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