summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2011-12-30 07:16:00 +0000
committerCraig Topper <craig.topper@gmail.com>2011-12-30 07:16:00 +0000
commita5d1fc2cc75cd7044c61483becaeda33ed410b0f (patch)
tree91a1e10d98b2a5c16eb9723b5d291eb7858bb0c2
parent2ba766ae84c31ee6066f9c5e8029751d3e92cb05 (diff)
downloadbcm5719-llvm-a5d1fc2cc75cd7044c61483becaeda33ed410b0f.tar.gz
bcm5719-llvm-a5d1fc2cc75cd7044c61483becaeda33ed410b0f.zip
Make FMA4 imply AVX so that YMM registers would be available. Necessitates removing from Bulldozer CPU types since it would enable AVX code generation implicitly. Also make SSE4A imply SSE3. Without some level of SSE implied, XMM registers wouldn't be legal.
llvm-svn: 147369
-rw-r--r--llvm/lib/Target/X86/X86.td14
1 files changed, 8 insertions, 6 deletions
diff --git a/llvm/lib/Target/X86/X86.td b/llvm/lib/Target/X86/X86.td
index d053c76de78..66779361da1 100644
--- a/llvm/lib/Target/X86/X86.td
+++ b/llvm/lib/Target/X86/X86.td
@@ -77,7 +77,8 @@ def FeatureFastUAMem : SubtargetFeature<"fast-unaligned-mem",
"IsUAMemFast", "true",
"Fast unaligned memory access">;
def FeatureSSE4A : SubtargetFeature<"sse4a", "HasSSE4A", "true",
- "Support SSE 4a instructions">;
+ "Support SSE 4a instructions",
+ [FeatureSSE3]>;
def FeatureAVX : SubtargetFeature<"avx", "HasAVX", "true",
"Enable AVX instructions">;
@@ -90,8 +91,9 @@ def FeatureFMA3 : SubtargetFeature<"fma3", "HasFMA3", "true",
"Enable three-operand fused multiple-add",
[FeatureAVX]>;
def FeatureFMA4 : SubtargetFeature<"fma4", "HasFMA4", "true",
- "Enable four-operand fused multiple-add">;
-def FeatureXOP : SubtargetFeature<"xop", "HasXOP", "true",
+ "Enable four-operand fused multiple-add",
+ [FeatureAVX]>;
+def FeatureXOP : SubtargetFeature<"xop", "HasXOP", "true",
"Enable XOP instructions">;
def FeatureVectorUAMem : SubtargetFeature<"vector-unaligned-mem",
"HasVectorUAMem", "true",
@@ -201,12 +203,12 @@ def : Proc<"athlon64-sse3", [FeatureSSE3, Feature3DNowA, FeatureCMPXCHG16B,
def : Proc<"amdfam10", [FeatureSSE3, FeatureSSE4A,
Feature3DNowA, FeatureCMPXCHG16B, FeatureLZCNT,
FeaturePOPCNT, FeatureSlowBTMem]>;
-// FIXME: Disabling AVX for now since it's not ready.
+// FIXME: Disabling AVX/FMA4 for now since it's not ready.
def : Proc<"bdver1", [FeatureSSE42, FeatureSSE4A, FeatureCMPXCHG16B,
- FeatureAES, FeatureCLMUL, FeatureFMA4,
+ FeatureAES, FeatureCLMUL,
FeatureXOP, FeatureLZCNT, FeaturePOPCNT]>;
def : Proc<"bdver2", [FeatureSSE42, FeatureSSE4A, FeatureCMPXCHG16B,
- FeatureAES, FeatureCLMUL, FeatureFMA4,
+ FeatureAES, FeatureCLMUL,
FeatureXOP, FeatureF16C, FeatureLZCNT,
FeaturePOPCNT, FeatureBMI]>;
OpenPOWER on IntegriCloud