diff options
| author | Richard Sandiford <rsandifo@linux.vnet.ibm.com> | 2013-10-31 12:14:17 +0000 |
|---|---|---|
| committer | Richard Sandiford <rsandifo@linux.vnet.ibm.com> | 2013-10-31 12:14:17 +0000 |
| commit | f834ea19dbd28d876e089af6384373e0c4af4f5e (patch) | |
| tree | 3a31a952160010c737ed5cadbe1057dc087363c3 /llvm/lib/Target | |
| parent | d764fcbd5a35d7abdba1ba4735da09c28e240d8a (diff) | |
| download | bcm5719-llvm-f834ea19dbd28d876e089af6384373e0c4af4f5e.tar.gz bcm5719-llvm-f834ea19dbd28d876e089af6384373e0c4af4f5e.zip | |
[SystemZ] Automatically detect zEC12 and z196 hosts
As on other hosts, the CPU identification instruction is priveleged,
so we need to look through /proc/cpuinfo. I copied the PowerPC way of
handling "generic".
Several tests were implicitly assuming z10 and so failed on z196.
llvm-svn: 193742
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/SystemZ/SystemZProcessors.td | 5 | ||||
| -rw-r--r-- | llvm/lib/Target/SystemZ/SystemZSubtarget.cpp | 7 |
2 files changed, 9 insertions, 3 deletions
diff --git a/llvm/lib/Target/SystemZ/SystemZProcessors.td b/llvm/lib/Target/SystemZ/SystemZProcessors.td index 00d4338af55..f241fb0c222 100644 --- a/llvm/lib/Target/SystemZ/SystemZProcessors.td +++ b/llvm/lib/Target/SystemZ/SystemZProcessors.td @@ -36,8 +36,9 @@ def FeatureFPExtension : SystemZFeature< "Assume that the floating-point extension facility is installed" >; -def : Processor<"z10", NoItineraries, []>; -def : Processor<"z196", NoItineraries, +def : Processor<"generic", NoItineraries, []>; +def : Processor<"z10", NoItineraries, []>; +def : Processor<"z196", NoItineraries, [FeatureDistinctOps, FeatureLoadStoreOnCond, FeatureHighWord, FeatureFPExtension]>; def : Processor<"zEC12", NoItineraries, diff --git a/llvm/lib/Target/SystemZ/SystemZSubtarget.cpp b/llvm/lib/Target/SystemZ/SystemZSubtarget.cpp index b6a63923cf5..474192099f2 100644 --- a/llvm/lib/Target/SystemZ/SystemZSubtarget.cpp +++ b/llvm/lib/Target/SystemZ/SystemZSubtarget.cpp @@ -9,6 +9,7 @@ #include "SystemZSubtarget.h" #include "llvm/IR/GlobalValue.h" +#include "llvm/Support/Host.h" #include "MCTargetDesc/SystemZMCTargetDesc.h" #define GET_SUBTARGETINFO_TARGET_DESC @@ -25,7 +26,11 @@ SystemZSubtarget::SystemZSubtarget(const std::string &TT, TargetTriple(TT) { std::string CPUName = CPU; if (CPUName.empty()) - CPUName = "z10"; + CPUName = "generic"; +#if defined(__linux__) && defined(__s390x__) + if (CPUName == "generic") + CPUName = sys::getHostCPUName(); +#endif // Parse features string. ParseSubtargetFeatures(CPUName, FS); |

