forked from OSchip/llvm-project
parent
76628def06
commit
c3a0aba120
|
@ -158,9 +158,8 @@ unsigned X86Subtarget::getSpecialAddressLatency() const {
|
||||||
|
|
||||||
/// GetCpuIDAndInfo - Execute the specified cpuid and return the 4 values in the
|
/// GetCpuIDAndInfo - Execute the specified cpuid and return the 4 values in the
|
||||||
/// specified arguments. If we can't run cpuid on the host, return true.
|
/// specified arguments. If we can't run cpuid on the host, return true.
|
||||||
bool
|
static bool GetCpuIDAndInfo(unsigned value, unsigned *rEAX,
|
||||||
X86Subtarget::GetCpuIDAndInfo(unsigned value, unsigned *rEAX,
|
unsigned *rEBX, unsigned *rECX, unsigned *rEDX) {
|
||||||
unsigned *rEBX, unsigned *rECX, unsigned *rEDX) {
|
|
||||||
#if defined(__x86_64__) || defined(_M_AMD64) || defined (_M_X64)
|
#if defined(__x86_64__) || defined(_M_AMD64) || defined (_M_X64)
|
||||||
#if defined(__GNUC__)
|
#if defined(__GNUC__)
|
||||||
// gcc doesn't know cpuid would clobber ebx/rbx. Preseve it manually.
|
// gcc doesn't know cpuid would clobber ebx/rbx. Preseve it manually.
|
||||||
|
@ -240,7 +239,7 @@ void X86Subtarget::AutoDetectSubtargetFeatures() {
|
||||||
if ((EDX >> 23) & 1) X86SSELevel = MMX;
|
if ((EDX >> 23) & 1) X86SSELevel = MMX;
|
||||||
if ((EDX >> 25) & 1) X86SSELevel = SSE1;
|
if ((EDX >> 25) & 1) X86SSELevel = SSE1;
|
||||||
if ((EDX >> 26) & 1) X86SSELevel = SSE2;
|
if ((EDX >> 26) & 1) X86SSELevel = SSE2;
|
||||||
if (ECX & 0x1) X86SSELevel = SSE3;
|
if (ECX & 0x1) X86SSELevel = SSE3;
|
||||||
if ((ECX >> 9) & 1) X86SSELevel = SSSE3;
|
if ((ECX >> 9) & 1) X86SSELevel = SSSE3;
|
||||||
if ((ECX >> 19) & 1) X86SSELevel = SSE41;
|
if ((ECX >> 19) & 1) X86SSELevel = SSE41;
|
||||||
if ((ECX >> 20) & 1) X86SSELevel = SSE42;
|
if ((ECX >> 20) & 1) X86SSELevel = SSE42;
|
||||||
|
@ -265,7 +264,7 @@ void X86Subtarget::AutoDetectSubtargetFeatures() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *X86Subtarget::GetCurrentX86CPU() {
|
static const char *GetCurrentX86CPU() {
|
||||||
unsigned EAX = 0, EBX = 0, ECX = 0, EDX = 0;
|
unsigned EAX = 0, EBX = 0, ECX = 0, EDX = 0;
|
||||||
if (GetCpuIDAndInfo(0x1, &EAX, &EBX, &ECX, &EDX))
|
if (GetCpuIDAndInfo(0x1, &EAX, &EBX, &ECX, &EDX))
|
||||||
return "generic";
|
return "generic";
|
||||||
|
|
|
@ -214,14 +214,6 @@ public:
|
||||||
/// indicating the number of scheduling cycles of backscheduling that
|
/// indicating the number of scheduling cycles of backscheduling that
|
||||||
/// should be attempted.
|
/// should be attempted.
|
||||||
unsigned getSpecialAddressLatency() const;
|
unsigned getSpecialAddressLatency() const;
|
||||||
|
|
||||||
private:
|
|
||||||
/// GetCpuIDAndInfo - Execute the specified cpuid and return the 4 values in
|
|
||||||
/// the specified arguments. If we can't run cpuid on the host, return true.
|
|
||||||
bool GetCpuIDAndInfo(unsigned value, unsigned *rEAX, unsigned *rEBX,
|
|
||||||
unsigned *rECX, unsigned *rEDX);
|
|
||||||
|
|
||||||
const char *GetCurrentX86CPU();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // End llvm namespace
|
} // End llvm namespace
|
||||||
|
|
Loading…
Reference in New Issue