mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
SubArch support in MCJIT unittest
llvm-svn: 182220
This commit is contained in:
parent
d432ed013f
commit
56e43f179a
@ -35,6 +35,13 @@ protected:
|
|||||||
SupportedArchs.push_back(Triple::x86);
|
SupportedArchs.push_back(Triple::x86);
|
||||||
SupportedArchs.push_back(Triple::x86_64);
|
SupportedArchs.push_back(Triple::x86_64);
|
||||||
|
|
||||||
|
// Some architectures have sub-architectures in which tests will fail, like
|
||||||
|
// ARM. These two vectors will define if they do have sub-archs (to avoid
|
||||||
|
// extra work for those who don't), and if so, if they are listed to work
|
||||||
|
HasSubArchs.push_back(Triple::arm);
|
||||||
|
SupportedSubArchs.push_back("armv6");
|
||||||
|
SupportedSubArchs.push_back("armv7");
|
||||||
|
|
||||||
// The operating systems below are known to be sufficiently incompatible
|
// The operating systems below are known to be sufficiently incompatible
|
||||||
// that they will fail the MCJIT C API tests.
|
// that they will fail the MCJIT C API tests.
|
||||||
UnsupportedOSs.push_back(Triple::Cygwin);
|
UnsupportedOSs.push_back(Triple::Cygwin);
|
||||||
|
@ -49,11 +49,23 @@ protected:
|
|||||||
/// Returns true if the host architecture is known to support MCJIT
|
/// Returns true if the host architecture is known to support MCJIT
|
||||||
bool ArchSupportsMCJIT() {
|
bool ArchSupportsMCJIT() {
|
||||||
Triple Host(HostTriple);
|
Triple Host(HostTriple);
|
||||||
|
// If ARCH is not supported, bail
|
||||||
if (std::find(SupportedArchs.begin(), SupportedArchs.end(), Host.getArch())
|
if (std::find(SupportedArchs.begin(), SupportedArchs.end(), Host.getArch())
|
||||||
== SupportedArchs.end()) {
|
== SupportedArchs.end())
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
return true;
|
// If ARCH is supported and has no specific sub-arch support
|
||||||
|
if (std::find(HasSubArchs.begin(), HasSubArchs.end(), Host.getArch())
|
||||||
|
== HasSubArchs.end())
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// If ARCH has sub-arch support, find it
|
||||||
|
SmallVectorImpl<std::string>::const_iterator I = SupportedSubArchs.begin();
|
||||||
|
for(; I != SupportedSubArchs.end(); ++I)
|
||||||
|
if (Host.getArchName().startswith(I->c_str()))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns true if the host OS is known to support MCJIT
|
/// Returns true if the host OS is known to support MCJIT
|
||||||
@ -68,6 +80,8 @@ protected:
|
|||||||
|
|
||||||
std::string HostTriple;
|
std::string HostTriple;
|
||||||
SmallVector<Triple::ArchType, 4> SupportedArchs;
|
SmallVector<Triple::ArchType, 4> SupportedArchs;
|
||||||
|
SmallVector<Triple::ArchType, 1> HasSubArchs;
|
||||||
|
SmallVector<std::string, 2> SupportedSubArchs; // We need to own the memory
|
||||||
SmallVector<Triple::OSType, 4> UnsupportedOSs;
|
SmallVector<Triple::OSType, 4> UnsupportedOSs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -50,6 +50,13 @@ protected:
|
|||||||
SupportedArchs.push_back(Triple::x86);
|
SupportedArchs.push_back(Triple::x86);
|
||||||
SupportedArchs.push_back(Triple::x86_64);
|
SupportedArchs.push_back(Triple::x86_64);
|
||||||
|
|
||||||
|
// Some architectures have sub-architectures in which tests will fail, like
|
||||||
|
// ARM. These two vectors will define if they do have sub-archs (to avoid
|
||||||
|
// extra work for those who don't), and if so, if they are listed to work
|
||||||
|
HasSubArchs.push_back(Triple::arm);
|
||||||
|
SupportedSubArchs.push_back("armv6");
|
||||||
|
SupportedSubArchs.push_back("armv7");
|
||||||
|
|
||||||
// The operating systems below are known to be incompatible with MCJIT as
|
// The operating systems below are known to be incompatible with MCJIT as
|
||||||
// they are copied from the test/ExecutionEngine/MCJIT/lit.local.cfg and
|
// they are copied from the test/ExecutionEngine/MCJIT/lit.local.cfg and
|
||||||
// should be kept in sync.
|
// should be kept in sync.
|
||||||
|
Loading…
Reference in New Issue
Block a user