[llvm-commits] [llvm] r171027 - in /llvm/trunk: include/llvm/Target/TargetTransformImpl.h include/llvm/TargetTransformInfo.h lib/Target/TargetTransformImpl.cpp

Hal Finkel hfinkel at anl.gov
Thu Dec 27 05:24:49 PST 2012


----- Original Message -----
> From: "Nadav Rotem" <nrotem at apple.com>
> To: "Hal Finkel" <hfinkel at anl.gov>
> Cc: llvm-commits at cs.uiuc.edu
> Sent: Wednesday, December 26, 2012 4:45:58 PM
> Subject: Re: [llvm-commits] [llvm] r171027 - in /llvm/trunk: include/llvm/Target/TargetTransformImpl.h
> include/llvm/TargetTransformInfo.h lib/Target/TargetTransformImpl.cpp
> 
> oh yes, you are correct, we need to add a second type to the API.

Do you prefer to add Type *SubTy = 0 or unsigned SubLen = 0 (or something else)?

 -Hal

> 
> On Dec 26, 2012, at 2:09 PM, Hal Finkel <hfinkel at anl.gov> wrote:
> 
> > ----- Original Message -----
> >> From: "Nadav Rotem" <nrotem at apple.com>
> >> To: "Hal Finkel" <hfinkel at anl.gov>
> >> Cc: llvm-commits at cs.uiuc.edu
> >> Sent: Wednesday, December 26, 2012 3:47:44 PM
> >> Subject: Re: [llvm-commits] [llvm] r171027 - in /llvm/trunk:
> >> include/llvm/Target/TargetTransformImpl.h
> >> include/llvm/TargetTransformInfo.h
> >> lib/Target/TargetTransformImpl.cpp
> >> 
> >> Hi Hal,
> >> 
> >> The length of the vector should be a part of the 'Type' argument.
> >> The extracted vector starts at index and ends at index+len, much
> >> like the SelectionDAG extract_subvector.
> > 
> > The type is the type of vector being extracted from, right? In the
> > SDAG case, we have both the argument and result type. Here, so
> > far, we have only one type (I think).
> > 
> > -Hal
> > 
> >> 
> >> Thanks,
> >> Nadav
> >> 
> >> On Dec 26, 2012, at 1:45 PM, Hal Finkel <hfinkel at anl.gov> wrote:
> >> 
> >>> ----- Original Message -----
> >>>> From: "Nadav Rotem" <nrotem at apple.com>
> >>>> To: llvm-commits at cs.uiuc.edu
> >>>> Sent: Monday, December 24, 2012 4:04:03 AM
> >>>> Subject: [llvm-commits] [llvm] r171027 - in /llvm/trunk:
> >>>> include/llvm/Target/TargetTransformImpl.h
> >>>> include/llvm/TargetTransformInfo.h
> >>>> lib/Target/TargetTransformImpl.cpp
> >>>> 
> >>>> Author: nadav
> >>>> Date: Mon Dec 24 04:04:03 2012
> >>>> New Revision: 171027
> >>>> 
> >>>> URL: http://llvm.org/viewvc/llvm-project?rev=171027&view=rev
> >>>> Log:
> >>>> CostModel: We have API for checking the costs of known shuffles.
> >>>> This
> >>>> patch adds
> >>>> support for the insert-subvector and extract-subvector kinds.
> >>>> 
> >>>> 
> >>>> Modified:
> >>>>   llvm/trunk/include/llvm/Target/TargetTransformImpl.h
> >>>>   llvm/trunk/include/llvm/TargetTransformInfo.h
> >>>>   llvm/trunk/lib/Target/TargetTransformImpl.cpp
> >>>> 
> >>>> Modified: llvm/trunk/include/llvm/Target/TargetTransformImpl.h
> >>>> URL:
> >>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetTransformImpl.h?rev=171027&r1=171026&r2=171027&view=diff
> >>>> ==============================================================================
> >>>> --- llvm/trunk/include/llvm/Target/TargetTransformImpl.h
> >>>> (original)
> >>>> +++ llvm/trunk/include/llvm/Target/TargetTransformImpl.h Mon Dec
> >>>> 24
> >>>> 04:04:03 2012
> >>>> @@ -71,7 +71,8 @@
> >>>> 
> >>>>  virtual unsigned getArithmeticInstrCost(unsigned Opcode, Type
> >>>>  *Ty)
> >>>>  const;
> >>>> 
> >>>> -  virtual unsigned getShuffleCost(ShuffleKind Kind, Type *Tp)
> >>>> const;
> >>>> +  virtual unsigned getShuffleCost(ShuffleKind Kind, Type *Tp,
> >>>> +                                  int Index) const;
> >>>> 
> >>>>  virtual unsigned getCastInstrCost(unsigned Opcode, Type *Dst,
> >>>>                                    Type *Src) const;
> >>>> 
> >>>> Modified: llvm/trunk/include/llvm/TargetTransformInfo.h
> >>>> URL:
> >>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/TargetTransformInfo.h?rev=171027&r1=171026&r2=171027&view=diff
> >>>> ==============================================================================
> >>>> --- llvm/trunk/include/llvm/TargetTransformInfo.h (original)
> >>>> +++ llvm/trunk/include/llvm/TargetTransformInfo.h Mon Dec 24
> >>>> 04:04:03
> >>>> 2012
> >>>> @@ -158,8 +158,10 @@
> >>>>  virtual ~VectorTargetTransformInfo() {}
> >>>> 
> >>>>  enum ShuffleKind {
> >>>> -    Broadcast, // Broadcast element 0 to all other elements.
> >>>> -    Reverse    // Reverse the order of the vector.
> >>>> +    Broadcast,       // Broadcast element 0 to all other
> >>>> elements.
> >>>> +    Reverse,         // Reverse the order of the vector.
> >>>> +    InsertSubvector, // InsertSubvector. Index indicates start
> >>>> offset.
> >>>> +    ExtractSubvector // ExtractSubvector Index indicates start
> >>>> offset.
> >>>>  };
> >>> 
> >>> Are these subvector insert and extract from the indicated index
> >>> to
> >>> the end of the vector? Should we add a length so that we have
> >>> both
> >>> the starting offset and length of the subvector?
> >>> 
> >>> Thanks again,
> >>> Hal
> >>> 
> >>>> 
> >>>>  /// Returns the expected cost of arithmetic ops, such as mul,
> >>>>  xor,
> >>>>  fsub, etc.
> >>>> @@ -168,7 +170,10 @@
> >>>>  }
> >>>> 
> >>>>  /// Returns the cost of a shuffle instruction of kind Kind and
> >>>>  of
> >>>>  type Tp.
> >>>> -  virtual unsigned getShuffleCost(ShuffleKind Kind, Type *Tp)
> >>>> const
> >>>> {
> >>>> +  /// The index parameter is used by some of the shuffle kinds
> >>>> to
> >>>> add
> >>>> +  /// additional information.
> >>>> +  virtual unsigned getShuffleCost(ShuffleKind Kind, Type *Tp,
> >>>> +                                  int Index) const {
> >>>>    return 1;
> >>>>  }
> >>>> 
> >>>> 
> >>>> Modified: llvm/trunk/lib/Target/TargetTransformImpl.cpp
> >>>> URL:
> >>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetTransformImpl.cpp?rev=171027&r1=171026&r2=171027&view=diff
> >>>> ==============================================================================
> >>>> --- llvm/trunk/lib/Target/TargetTransformImpl.cpp (original)
> >>>> +++ llvm/trunk/lib/Target/TargetTransformImpl.cpp Mon Dec 24
> >>>> 04:04:03
> >>>> 2012
> >>>> @@ -209,7 +209,8 @@
> >>>> }
> >>>> 
> >>>> unsigned VectorTargetTransformImpl::getShuffleCost(ShuffleKind
> >>>> Kind,
> >>>> -                                                   Type *Tp)
> >>>> const {
> >>>> +                                                   Type *Tp,
> >>>> +                                                   int Index)
> >>>> const
> >>>> {
> >>>>  return 1;
> >>>> }
> >>>> 
> >>>> 
> >>>> 
> >>>> _______________________________________________
> >>>> llvm-commits mailing list
> >>>> llvm-commits at cs.uiuc.edu
> >>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> >>>> 
> >>> 
> >>> --
> >>> Hal Finkel
> >>> Postdoctoral Appointee
> >>> Leadership Computing Facility
> >>> Argonne National Laboratory
> >> 
> >> 
> > 
> > --
> > Hal Finkel
> > Postdoctoral Appointee
> > Leadership Computing Facility
> > Argonne National Laboratory
> 
> 

-- 
Hal Finkel
Postdoctoral Appointee
Leadership Computing Facility
Argonne National Laboratory



More information about the llvm-commits mailing list