def FeaturePOPCNT : SubtargetFeature<"popcnt", "HasPOPCNT", "true",
"Support POPCNT instruction">;
+def FeatureXSAVE : SubtargetFeature<"xsave", "HasXSAVE", "true",
+ "Support xsave instructions">;
+
+def FeatureXSAVEOPT: SubtargetFeature<"xsaveopt", "HasXSAVEOPT", "true",
+ "Support xsaveopt instructions">;
+
+def FeatureXSAVEC : SubtargetFeature<"xsavec", "HasXSAVEC", "true",
+ "Support xsavec instructions">;
+
+def FeatureXSAVES : SubtargetFeature<"xsaves", "HasXSAVES", "true",
+ "Support xsaves instructions">;
+
// The MMX subtarget feature is separate from the rest of the SSE features
// because it's important (for odd compatibility reasons) to be able to
// turn it off explicitly while allowing SSE+ to be on.
"Support RDSEED instruction">;
def FeatureMPX : SubtargetFeature<"mpx", "HasMPX", "true",
"Support MPX instructions">;
-def FeatureLeaForSP : SubtargetFeature<"lea-sp", "UseLeaForSP", "true",
+def FeatureLEAForSP : SubtargetFeature<"lea-sp", "UseLeaForSP", "true",
"Use LEA for adjusting the stack pointer">;
def FeatureSlowDivide32 : SubtargetFeature<"idivl-to-divb",
"HasSlowDivide32", "true",
FeatureCMPXCHG16B,
FeatureMOVBE,
FeatureSlowBTMem,
- FeatureLeaForSP,
+ FeatureLEAForSP,
FeatureSlowDivide32,
FeatureSlowDivide64,
FeatureCallRegIndirect,
FeatureSlowUAMem32,
FeaturePOPCNT,
FeatureAES,
- FeaturePCLMUL
+ FeaturePCLMUL,
+ FeatureXSAVE,
+ FeatureXSAVEOPT
]>;
def : SandyBridgeProc<"sandybridge">;
def : SandyBridgeProc<"corei7-avx">; // Legacy alias.
FeaturePOPCNT,
FeatureAES,
FeaturePCLMUL,
+ FeatureXSAVE,
+ FeatureXSAVEOPT,
FeatureRDRAND,
FeatureF16C,
FeatureFSGSBase
FeatureAES,
FeaturePCLMUL,
FeatureRDRAND,
+ FeatureXSAVE,
+ FeatureXSAVEOPT,
FeatureF16C,
FeatureFSGSBase,
FeatureMOVBE,
FeaturePOPCNT,
FeatureAES,
FeaturePCLMUL,
+ FeatureXSAVE,
+ FeatureXSAVEOPT,
FeatureRDRAND,
FeatureF16C,
FeatureFSGSBase,
FeaturePOPCNT,
FeatureAES,
FeaturePCLMUL,
+ FeatureXSAVE,
+ FeatureXSAVEOPT,
FeatureRDRAND,
FeatureF16C,
FeatureFSGSBase,
FeatureADX,
FeatureRDSEED,
FeatureSlowIncDec,
- FeatureMPX
+ FeatureMPX,
+ FeatureXSAVEC,
+ FeatureXSAVES
]>;
def : SkylakeProc<"skylake">;
def : SkylakeProc<"skx">; // Legacy alias.
FeaturePRFCHW,
FeatureLZCNT,
FeaturePOPCNT,
+ FeatureXSAVE,
FeatureSlowSHLD
]>;
FeatureMOVBE,
FeatureLZCNT,
FeaturePOPCNT,
+ FeatureXSAVE,
+ FeatureXSAVEOPT,
FeatureSlowSHLD
]>;
FeatureSSE4A,
FeatureLZCNT,
FeaturePOPCNT,
+ FeatureXSAVE,
FeatureSlowSHLD
]>;
// Piledriver
FeatureF16C,
FeatureLZCNT,
FeaturePOPCNT,
+ FeatureXSAVE,
FeatureBMI,
FeatureTBM,
FeatureFMA,
FeatureF16C,
FeatureLZCNT,
FeaturePOPCNT,
+ FeatureXSAVE,
FeatureBMI,
FeatureTBM,
FeatureFMA,
+ FeatureXSAVEOPT,
FeatureSlowSHLD,
FeatureFSGSBase
]>;
FeatureF16C,
FeatureLZCNT,
FeaturePOPCNT,
+ FeatureXSAVE,
FeatureBMI,
FeatureBMI2,
FeatureTBM,
FeatureFMA,
- FeatureSSE4A,
+ FeatureXSAVEOPT,
FeatureFSGSBase
]>;