forked from OSchip/llvm-project
Introduce an enumeration for the x86 CPUs recognized by Clang. I've
tried to give these nice doxyments, but if I've gotten any of my history wrong, please chime in. llvm-svn: 140684
This commit is contained in:
parent
8bdcf9ea12
commit
3ac7aeaacb
|
@ -1168,6 +1168,130 @@ class X86TargetInfo : public TargetInfo {
|
|||
// FIXME: Make this an enum and parse into the enum when set.
|
||||
std::string CPU;
|
||||
|
||||
/// \brief Enumeration of all of the X86 CPUs supported by Clang.
|
||||
///
|
||||
/// Each enumeration represents a particular CPU supported by Clang. These
|
||||
/// loosely correspond to the options passed to '-march' or '-mtune' flags.
|
||||
enum CPUKind {
|
||||
CK_Generic,
|
||||
|
||||
/// \name i386
|
||||
/// i386-generation processors.
|
||||
//@{
|
||||
CK_i386,
|
||||
//@}
|
||||
|
||||
/// \name i486
|
||||
/// i486-generation processors.
|
||||
//@{
|
||||
CK_i486,
|
||||
CK_WinChipC6,
|
||||
CK_WinChip2,
|
||||
CK_C3,
|
||||
//@}
|
||||
|
||||
/// \name i586
|
||||
/// i586-generation processors, P5 microarchitecture based.
|
||||
//@{
|
||||
CK_i586,
|
||||
CK_Pentium,
|
||||
CK_PentiumMMX,
|
||||
//@}
|
||||
|
||||
/// \name i686
|
||||
/// i686-generation processors, P6 / Pentium M microarchitecture based.
|
||||
//@{
|
||||
CK_i686,
|
||||
CK_PentiumPro,
|
||||
CK_Pentium2,
|
||||
CK_Pentium3,
|
||||
CK_Pentium3M,
|
||||
CK_PentiumM,
|
||||
CK_C3_2,
|
||||
|
||||
/// This enumerator is a bit odd, as GCC no longer accepts -march=yonah.
|
||||
/// Clang however has some logic to suport this.
|
||||
// FIXME: Warn, deprecate, and potentially remove this.
|
||||
CK_Yonah,
|
||||
//@}
|
||||
|
||||
/// \name Netburst
|
||||
/// Netburt microarchitecture based processors.
|
||||
//@{
|
||||
CK_Pentium4,
|
||||
CK_Pentium4M,
|
||||
CK_Prescott,
|
||||
CK_Nocona,
|
||||
//@}
|
||||
|
||||
/// \name Core
|
||||
/// Core microarchitecture based processors.
|
||||
//@{
|
||||
CK_Core2,
|
||||
|
||||
/// This enumerator, like \see CK_Yonah, is a bit odd. It is another
|
||||
/// codename which GCC no longer accepts as an option to -march, but Clang
|
||||
/// has some logic for recognizing it.
|
||||
// FIXME: Warn, deprecate, and potentially remove this.
|
||||
CK_Penryn,
|
||||
//@}
|
||||
|
||||
/// \name Atom
|
||||
/// Atom processors
|
||||
//@{
|
||||
CK_Atom,
|
||||
//@}
|
||||
|
||||
/// \name Nehalem
|
||||
/// Nehalem microarchitecture based processors.
|
||||
//@{
|
||||
CK_Corei7,
|
||||
CK_Corei7AVX,
|
||||
CK_Corei7AVXi,
|
||||
//@}
|
||||
|
||||
/// \name K6
|
||||
/// K6 architecture processors.
|
||||
//@{
|
||||
CK_K6,
|
||||
CK_K6_2,
|
||||
CK_K6_3,
|
||||
//@}
|
||||
|
||||
/// \name K7
|
||||
/// K7 architecture processors.
|
||||
//@{
|
||||
CK_Athlon,
|
||||
CK_AthlonThunderbird,
|
||||
CK_Athlon4,
|
||||
CK_AthlonXP,
|
||||
CK_AthlonMP,
|
||||
//@}
|
||||
|
||||
/// \name K8
|
||||
/// K8 architecture processors.
|
||||
//@{
|
||||
CK_Athlon64,
|
||||
CK_Athlon64SSE3,
|
||||
CK_AthlonFX,
|
||||
CK_K8,
|
||||
CK_K8SSE,
|
||||
CK_Opteron,
|
||||
CK_OpteronSSE3,
|
||||
|
||||
/// This specification is deprecated and will be removed in the future.
|
||||
/// Users should prefer \see CK_K8.
|
||||
// FIXME: Warn on this when the CPU is set to it.
|
||||
CK_x86_64,
|
||||
//@}
|
||||
|
||||
/// \name Geode
|
||||
/// Geode processors.
|
||||
//@{
|
||||
CK_Geode
|
||||
//@}
|
||||
};
|
||||
|
||||
public:
|
||||
X86TargetInfo(const std::string& triple)
|
||||
: TargetInfo(triple), SSELevel(NoSSE), MMX3DNowLevel(NoMMX3DNow),
|
||||
|
|
Loading…
Reference in New Issue