mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +00:00
Introduce helpers to compute the 32-bit varaints and 64-bit variants of
some architectures. These are useful for interacting with multiarch or bi-arch GCC (or GCC-based) toolchains. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149895 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -753,3 +753,77 @@ bool Triple::isArch32Bit() const {
|
||||
bool Triple::isArch16Bit() const {
|
||||
return getArchPointerBitWidth(getArch()) == 16;
|
||||
}
|
||||
|
||||
Triple Triple::get32BitArchVariant() const {
|
||||
Triple T(*this);
|
||||
switch (getArch()) {
|
||||
case Triple::UnknownArch:
|
||||
case Triple::InvalidArch:
|
||||
case Triple::msp430:
|
||||
T.setArch(UnknownArch);
|
||||
break;
|
||||
|
||||
case Triple::amdil:
|
||||
case Triple::arm:
|
||||
case Triple::cellspu:
|
||||
case Triple::hexagon:
|
||||
case Triple::le32:
|
||||
case Triple::mblaze:
|
||||
case Triple::mips:
|
||||
case Triple::mipsel:
|
||||
case Triple::ppc:
|
||||
case Triple::ptx32:
|
||||
case Triple::sparc:
|
||||
case Triple::tce:
|
||||
case Triple::thumb:
|
||||
case Triple::x86:
|
||||
case Triple::xcore:
|
||||
// Already 32-bit.
|
||||
break;
|
||||
|
||||
case Triple::mips64: T.setArch(Triple::mips); break;
|
||||
case Triple::mips64el: T.setArch(Triple::mipsel); break;
|
||||
case Triple::ppc64: T.setArch(Triple::ppc); break;
|
||||
case Triple::ptx64: T.setArch(Triple::ptx32); break;
|
||||
case Triple::sparcv9: T.setArch(Triple::sparc); break;
|
||||
case Triple::x86_64: T.setArch(Triple::x86); break;
|
||||
}
|
||||
return T;
|
||||
}
|
||||
|
||||
Triple Triple::get64BitArchVariant() const {
|
||||
Triple T(*this);
|
||||
switch (getArch()) {
|
||||
case Triple::InvalidArch:
|
||||
case Triple::UnknownArch:
|
||||
case Triple::amdil:
|
||||
case Triple::arm:
|
||||
case Triple::cellspu:
|
||||
case Triple::hexagon:
|
||||
case Triple::le32:
|
||||
case Triple::mblaze:
|
||||
case Triple::msp430:
|
||||
case Triple::tce:
|
||||
case Triple::thumb:
|
||||
case Triple::xcore:
|
||||
T.setArch(UnknownArch);
|
||||
break;
|
||||
|
||||
case Triple::mips64:
|
||||
case Triple::mips64el:
|
||||
case Triple::ppc64:
|
||||
case Triple::ptx64:
|
||||
case Triple::sparcv9:
|
||||
case Triple::x86_64:
|
||||
// Already 64-bit.
|
||||
break;
|
||||
|
||||
case Triple::mips: T.setArch(Triple::mips64); break;
|
||||
case Triple::mipsel: T.setArch(Triple::mips64el); break;
|
||||
case Triple::ppc: T.setArch(Triple::ppc64); break;
|
||||
case Triple::ptx32: T.setArch(Triple::ptx64); break;
|
||||
case Triple::sparc: T.setArch(Triple::sparcv9); break;
|
||||
case Triple::x86: T.setArch(Triple::x86_64); break;
|
||||
}
|
||||
return T;
|
||||
}
|
||||
|
Reference in New Issue
Block a user