[llvm-commits] Patch to add support for WidenVecRes_MERGE_VALUES

Villmow, Micah Micah.Villmow at amd.com
Tue Aug 30 05:04:00 PDT 2011


Thanks for the feedback, new revision attached.

> -----Original Message-----
> From: Tobias Grosser [mailto:tobias at grosser.es]
> Sent: Tuesday, August 30, 2011 12:12 AM
> To: Villmow, Micah
> Cc: Eli Friedman; llvm-commits
> Subject: Re: [llvm-commits] Patch to add support for
> WidenVecRes_MERGE_VALUES
> 
> On 08/30/2011 01:07 AM, Villmow, Micah wrote:
> > [Villmow, Micah] Here is an updated patch. This version merges the
> common
> > code between SplitRes_MERGE_VALUES and WidenVecRes_MERGE_VALUES into
> a
> > seperate function and has them call this function and then modify the
> > resulting value.
> 
> Two comments inline, otherwise it looks good to me.
> (Review by official reviewer still necessary).
> 
> Cheers
> Tobi
> 
> 
> > Index: lib/CodeGen/SelectionDAG/LegalizeTypes.h
> > ===================================================================
> > --- lib/CodeGen/SelectionDAG/LegalizeTypes.h	(revision 138781)
> > +++ lib/CodeGen/SelectionDAG/LegalizeTypes.h	(working copy)
> > @@ -148,12 +148,20 @@
> >     SDValue CreateStackStoreLoad(SDValue Op, EVT DestVT);
> >     bool CustomLowerNode(SDNode *N, EVT VT, bool LegalizeResult);
> >     bool CustomWidenLowerNode(SDNode *N, EVT VT);
> > +
> > +  // DecomposeMERGE_VALUES  takes a SDNode and returns the first
> > +  // operand that illegal operand that needs to be modified.
> Is this correct grammar? What do you mean?
>   - DecomposeMERGE_VALUES takes a SDNode and returns the first
>     operand that needs to be modified.
>   - DecomposeMERGE_VALUES takes a SDNode and returns the first
>     illegal operand.
>   - DecomposeMERGE_VALUES takes a SDNode and returns the first
>     illegal operand which needs to be modified.
> 
> > +  // All other nodes are legalized, whether they are legal or not.
> > +  // The resulting SDValue needs to be modified to make it legal.
> > +  SDValue DecomposeMERGE_VALUES(SDNode *N);
> > +
> >     SDValue GetVectorElementPointer(SDValue VecPtr, EVT EltVT,
> SDValue Index);
> >     SDValue JoinIntegers(SDValue Lo, SDValue Hi);
> >     SDValue LibCallify(RTLIB::Libcall LC, SDNode *N, bool isSigned);
> >     SDValue MakeLibCall(RTLIB::Libcall LC, EVT RetVT,
> >                         const SDValue *Ops, unsigned NumOps, bool
> isSigned,
> >                         DebugLoc dl);
> > +
> >   	std::pair<SDValue, SDValue>  ExpandChainLibCall(RTLIB::Libcall
> LC,
> >
> SDNode *Node, bool isSigned);
> >   	std::pair<SDValue, SDValue>  ExpandAtomic(SDNode *Node);
> >   void DAGTypeLegalizer::SplitRes_SELECT(SDNode *N, SDValue&Lo,
> > Index: lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
> > ===================================================================
> > --- lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp	(revision
> 138781)
> > +++ lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp	(working
> copy)
> > @@ -1557,6 +1558,12 @@
> >                        WidenVT, WidenLHS, DAG.getValueType(ExtVT));
> >   }
> >
> > +SDValue DAGTypeLegalizer::WidenVecRes_MERGE_VALUES(SDNode *N)
> > +{
> The '{' should be in the previous line to match coding standards in
> this
> file.
> 
> > +  SDValue WidenVec = DecomposeMERGE_VALUES(N);
> > +  return GetWidenedVector(WidenVec);
> > +}
> > +
> >   SDValue DAGTypeLegalizer::WidenVecRes_BITCAST(SDNode *N) {
> >     SDValue InOp = N->getOperand(0);
> >     EVT InVT = InOp.getValueType();

-------------- next part --------------
A non-text attachment was scrubbed...
Name: AMDIL_Bug_10736-3.patch
Type: application/octet-stream
Size: 5084 bytes
Desc: AMDIL_Bug_10736-3.patch
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20110830/f2313590/attachment.obj>


More information about the llvm-commits mailing list