mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-25 12:49:50 +00:00
Add computeHostNumPhysicalCores() implementation for Darwin
Differential Revision: https://reviews.llvm.org/D25800 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284656 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cc8ca50286
commit
2bd75068e1
@ -1234,6 +1234,25 @@ static int computeHostNumPhysicalCores() {
|
||||
}
|
||||
return UniqueItems.size();
|
||||
}
|
||||
#elif defined(__APPLE__) && defined(__x86_64__)
|
||||
#include <sys/param.h>
|
||||
#include <sys/sysctl.h>
|
||||
|
||||
// Gets the number of *physical cores* on the machine.
|
||||
static int computeHostNumPhysicalCores() {
|
||||
uint32_t count;
|
||||
size_t len = sizeof(count);
|
||||
sysctlbyname("hw.physicalcpu", &count, &len, NULL, 0);
|
||||
if (count < 1) {
|
||||
int nm[2];
|
||||
nm[0] = CTL_HW;
|
||||
nm[1] = HW_AVAILCPU;
|
||||
sysctl(nm, 2, &count, &len, NULL, 0);
|
||||
if (count < 1)
|
||||
return -1;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
#else
|
||||
// On other systems, return -1 to indicate unknown.
|
||||
static int computeHostNumPhysicalCores() { return -1; }
|
||||
|
@ -31,9 +31,10 @@ protected:
|
||||
Host.setTriple(Triple::normalize(sys::getProcessTriple()));
|
||||
|
||||
// Initially this is only testing detection of the number of
|
||||
// physical cores, which is currently only supported for
|
||||
// x86_64 Linux.
|
||||
// physical cores, which is currently only supported/tested for
|
||||
// x86_64 Linux and Darwin.
|
||||
SupportedArchAndOSs.push_back(std::make_pair(Triple::x86_64, Triple::Linux));
|
||||
SupportedArchAndOSs.push_back(std::make_pair(Triple::x86_64, Triple::Darwin));
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user