diff --git a/lib/Target/PowerPC/PPC.td b/lib/Target/PowerPC/PPC.td index 8f4c1ee77a7..f13be4ab9d0 100644 --- a/lib/Target/PowerPC/PPC.td +++ b/lib/Target/PowerPC/PPC.td @@ -104,6 +104,10 @@ def FeatureQPX : SubtargetFeature<"qpx","HasQPX", "true", def FeatureVSX : SubtargetFeature<"vsx","HasVSX", "true", "Enable VSX instructions", [FeatureAltivec]>; +def FeaturePower8Vector : SubtargetFeature<"power8-vector", "HasPower8Vector", + "true", + "Enable Power8 vector instructions", + [FeatureVSX, FeatureAltivec]>; def DeprecatedMFTB : SubtargetFeature<"", "DeprecatedMFTB", "true", "Treat mftb as deprecated">; @@ -116,7 +120,6 @@ def DeprecatedDST : SubtargetFeature<"", "DeprecatedDST", "true", // 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 // diff --git a/lib/Target/PowerPC/PPCSubtarget.cpp b/lib/Target/PowerPC/PPCSubtarget.cpp index ba8bda9ec2c..8d00be82959 100644 --- a/lib/Target/PowerPC/PPCSubtarget.cpp +++ b/lib/Target/PowerPC/PPCSubtarget.cpp @@ -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(StringRef CPU, StringRef FS) { // 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) { diff --git a/lib/Target/PowerPC/PPCSubtarget.h b/lib/Target/PowerPC/PPCSubtarget.h index 9e4953f20d9..8c135379c7f 100644 --- a/lib/Target/PowerPC/PPCSubtarget.h +++ b/lib/Target/PowerPC/PPCSubtarget.h @@ -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; }