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">;
// 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 //
HasSPE = false;
HasQPX = false;
HasVSX = false;
+ HasPower8Vector = false;
HasFCPSGN = false;
HasFSQRT = false;
HasFRE = false;
// 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) {
bool HasSPE;
bool HasQPX;
bool HasVSX;
+ bool HasPower8Vector;
bool HasFCPSGN;
bool HasFSQRT;
bool HasFRE, HasFRES, HasFRSQRTE, HasFRSQRTES;
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; }