[llvm] r219501 - [PowerPC] Add feature for Power8 vector extensions
Bill Schmidt
wschmidt at linux.vnet.ibm.com
Fri Oct 10 10:32:28 PDT 2014
Hi Hal,
Requested changes are in r219514 and r219515.
Thanks!
Bill
On Fri, 2014-10-10 at 11:55 -0500, Hal Finkel wrote:
> ----- Original Message -----
> > From: "Bill Schmidt" <wschmidt at linux.vnet.ibm.com>
> > To: "Hal Finkel" <hfinkel at anl.gov>
> > Cc: llvm-commits at cs.uiuc.edu, "Samuel F Antao" <sfantao at us.ibm.com>
> > Sent: Friday, October 10, 2014 11:54:28 AM
> > Subject: Re: [llvm] r219501 - [PowerPC] Add feature for Power8 vector extensions
> >
> > On Fri, 2014-10-10 at 11:17 -0500, Hal Finkel wrote:
> > > ----- Original Message -----
> > > > From: "Bill Schmidt" <wschmidt at linux.vnet.ibm.com>
> > > > To: llvm-commits at cs.uiuc.edu
> > > > Sent: Friday, October 10, 2014 10:09:29 AM
> > > > Subject: [llvm] r219501 - [PowerPC] Add feature for Power8 vector
> > > > extensions
> > > >
> > > > Author: wschmidt
> > > > Date: Fri Oct 10 10:09:28 2014
> > > > New Revision: 219501
> > > >
> > > > URL: http://llvm.org/viewvc/llvm-project?rev=219501&view=rev
> > > > Log:
> > > > [PowerPC] Add feature for Power8 vector extensions
> > > >
> > > > The current VSX feature for PowerPC specifies availability of the
> > > > VSX
> > > > instructions added with the 2.06 architecture version. With
> > > > 2.07,
> > > > the
> > > > architecture adds new instructions to both the Category:Vector
> > > > and
> > > > Category:VSX instruction sets. Additionally, unaligned vector
> > > > storage
> > > > operations have improved performance.
> > > >
> > > > This patch adds a feature to provide access to the new
> > > > instructions
> > > > and performance capabilities of Power8. For compatibility with
> > > > GCC,
> > > > the feature is controlled via a new -mpower8-vector switch, and
> > > > the
> > > > feature causes the __POWER8_VECTOR__ builtin define to be
> > > > generated
> > > > by
> > > > the preprocessor.
> > > >
> > > > There is a companion patch for cfe being committed at the same
> > > > time.
> > > >
> > > > Modified:
> > > > llvm/trunk/lib/Target/PowerPC/PPC.td
> > > > llvm/trunk/lib/Target/PowerPC/PPCSubtarget.cpp
> > > > llvm/trunk/lib/Target/PowerPC/PPCSubtarget.h
> > > >
> > > > Modified: llvm/trunk/lib/Target/PowerPC/PPC.td
> > > > URL:
> > > > http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPC.td?rev=219501&r1=219500&r2=219501&view=diff
> > > > ==============================================================================
> > > > --- llvm/trunk/lib/Target/PowerPC/PPC.td (original)
> > > > +++ llvm/trunk/lib/Target/PowerPC/PPC.td Fri Oct 10 10:09:28 2014
> > > > @@ -104,6 +104,10 @@ def FeatureQPX : SubtargetFeature<
> > > > def FeatureVSX : SubtargetFeature<"vsx","HasVSX", "true",
> > > > "Enable VSX
> > > > instructions",
> > > > [FeatureAltivec]>;
> > > > +def FeaturePower8Vector : SubtargetFeature<"power8-vector",
> > > > "HasPower8Vector",
> > >
> > > For all these backend things, I prefer less typing when doing so
> > > does not reduce clarity... can we please abbreviate this as
> > > FeatureP8Vector instead of spelling-out 'Power'. Furthermore, I
> > > find calling it 'vector' somewhat misleading because it refers to
> > > more than just vector instructions, but the P8 extensions to VSX
> > > generally. So I think that FeatureP8VSX is a better name. Same for
> > > all of the other variables, etc.
> >
> > Actually, FeatureP8VSX would be misleading, because instructions are
> > added for the VMX instructions (Category:Vector) as well as the VSX
> > instructions (Category:VSX). Hence the general term "vector" seems
> > better to me. It also matches the option name and the GCC usage.
> >
> > However, I'm happy to reduce this to FeatureP8Vector.
>
> Okay; yes, please do.
>
> >
> > >
> > > > + "true",
> > > > + "Enable Power8 vector
> > > > instructions",
> > >
> > > It looks like IBM's preferred spelling is POWER8, and I'd like to
> > > keep a consistent spelling across the code base, and thus far,
> > > we've been using all caps for the others.
> >
> > Agreed - rather surprised I typed it this way. :) I'll fix that.
>
> Thanks!
>
> -Hal
>
> >
> > Thanks,
> > Bill
> >
> > >
> > > Thanks again,
> > > Hal
> > >
> > > > + [FeatureVSX,
> > > > FeatureAltivec]>;
> > > >
> > > > def DeprecatedMFTB : SubtargetFeature<"", "DeprecatedMFTB",
> > > > "true",
> > > > "Treat mftb as
> > > > deprecated">;
> > > > @@ -116,7 +120,6 @@ def DeprecatedDST : SubtargetFeature<
> > > > // CMPB p6, p6x, p7 cmpb
> > > > // DFP p6, p6x, p7 decimal floating-point
> > > > instructions
> > > > // POPCNTB p5 through p7 popcntb and related
> > > > instructions
> > > > -// VSX p7 vector-scalar instruction set
> > > >
> > > > //===----------------------------------------------------------------------===//
> > > > // ABI Selection
> > > > //
> > > >
> > > > Modified: llvm/trunk/lib/Target/PowerPC/PPCSubtarget.cpp
> > > > URL:
> > > > http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCSubtarget.cpp?rev=219501&r1=219500&r2=219501&view=diff
> > > > ==============================================================================
> > > > --- llvm/trunk/lib/Target/PowerPC/PPCSubtarget.cpp (original)
> > > > +++ llvm/trunk/lib/Target/PowerPC/PPCSubtarget.cpp Fri Oct 10
> > > > 10:09:28 2014
> > > > @@ -94,6 +94,7 @@ void PPCSubtarget::initializeEnvironment
> > > > HasSPE = false;
> > > > HasQPX = false;
> > > > HasVSX = false;
> > > > + HasPower8Vector = false;
> > > > HasFCPSGN = false;
> > > > HasFSQRT = false;
> > > > HasFRE = false;
> > > > @@ -155,8 +156,10 @@ void PPCSubtarget::initSubtargetFeatures
> > > >
> > > > // FIXME: For now, we disable VSX in little-endian mode until
> > > > endian
> > > > // issues in those instructions can be addressed.
> > > > - if (IsLittleEndian)
> > > > + if (IsLittleEndian) {
> > > > HasVSX = false;
> > > > + HasPower8Vector = false;
> > > > + }
> > > >
> > > > // Determine default ABI.
> > > > if (TargetABI == PPC_ABI_UNKNOWN) {
> > > >
> > > > Modified: llvm/trunk/lib/Target/PowerPC/PPCSubtarget.h
> > > > URL:
> > > > http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCSubtarget.h?rev=219501&r1=219500&r2=219501&view=diff
> > > > ==============================================================================
> > > > --- llvm/trunk/lib/Target/PowerPC/PPCSubtarget.h (original)
> > > > +++ llvm/trunk/lib/Target/PowerPC/PPCSubtarget.h Fri Oct 10
> > > > 10:09:28
> > > > 2014
> > > > @@ -91,6 +91,7 @@ protected:
> > > > bool HasSPE;
> > > > bool HasQPX;
> > > > bool HasVSX;
> > > > + bool HasPower8Vector;
> > > > bool HasFCPSGN;
> > > > bool HasFSQRT;
> > > > bool HasFRE, HasFRES, HasFRSQRTE, HasFRSQRTES;
> > > > @@ -215,6 +216,7 @@ public:
> > > > bool hasSPE() const { return HasSPE; }
> > > > bool hasQPX() const { return HasQPX; }
> > > > bool hasVSX() const { return HasVSX; }
> > > > + bool hasPower8Vector() const { return HasPower8Vector; }
> > > > bool hasMFOCRF() const { return HasMFOCRF; }
> > > > bool hasISEL() const { return HasISEL; }
> > > > bool hasPOPCNTD() const { return HasPOPCNTD; }
> > > >
> > > >
> > > > _______________________________________________
> > > > llvm-commits mailing list
> > > > llvm-commits at cs.uiuc.edu
> > > > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> > > >
> > >
> >
> >
> >
>
More information about the llvm-commits
mailing list