diff --git a/lib/Support/Host.cpp b/lib/Support/Host.cpp index ad0ac93b6bd..59ca1ba7c9d 100644 --- a/lib/Support/Host.cpp +++ b/lib/Support/Host.cpp @@ -265,6 +265,11 @@ std::string sys::getHostCPUName() { case 54: // 32 nm Atom Midview return "atom"; + case 55: // Intel Atom Silvermont processors + case 74: + case 77: + return "slm"; + default: return (Em64T) ? "x86-64" : "i686"; } case 15: { diff --git a/lib/Target/X86/X86.td b/lib/Target/X86/X86.td index 2c3643dbd2e..da989ad42d2 100644 --- a/lib/Target/X86/X86.td +++ b/lib/Target/X86/X86.td @@ -206,6 +206,15 @@ def : ProcessorModel<"atom", AtomModel, FeatureLEAUsesAG, FeaturePadShortFunctions]>; +// Silvermont. +def : ProcessorModel<"slm", AtomModel, + [ProcIntelAtom, FeatureSSE42, FeatureCMPXCHG16B, + FeatureMOVBE, FeatureSlowBTMem, FeatureLeaForSP, + FeatureSlowDivide, + FeatureCallRegIndirect, + FeatureLEAUsesAG, + FeaturePadShortFunctions]>; + // "Arrandale" along with corei3 and corei5 def : ProcessorModel<"corei7", SandyBridgeModel, [FeatureSSE42, FeatureCMPXCHG16B, FeatureSlowBTMem,