mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +00:00
Add various coarse bit-width architecture predicates to llvm::Triple.
These are very useful for frontends and other utilities reasoning about or selecting between triples. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149353 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -665,3 +665,52 @@ void Triple::setEnvironmentName(StringRef Str) {
|
||||
void Triple::setOSAndEnvironmentName(StringRef Str) {
|
||||
setTriple(getArchName() + "-" + getVendorName() + "-" + Str);
|
||||
}
|
||||
|
||||
static unsigned getArchPointerBitWidth(llvm::Triple::ArchType Arch) {
|
||||
switch (Arch) {
|
||||
case llvm::Triple::UnknownArch:
|
||||
case llvm::Triple::InvalidArch:
|
||||
return 0;
|
||||
|
||||
case llvm::Triple::msp430:
|
||||
return 16;
|
||||
|
||||
case llvm::Triple::amdil:
|
||||
case llvm::Triple::arm:
|
||||
case llvm::Triple::cellspu:
|
||||
case llvm::Triple::hexagon:
|
||||
case llvm::Triple::le32:
|
||||
case llvm::Triple::mblaze:
|
||||
case llvm::Triple::mips:
|
||||
case llvm::Triple::mipsel:
|
||||
case llvm::Triple::ppc:
|
||||
case llvm::Triple::ptx32:
|
||||
case llvm::Triple::sparc:
|
||||
case llvm::Triple::tce:
|
||||
case llvm::Triple::thumb:
|
||||
case llvm::Triple::x86:
|
||||
case llvm::Triple::xcore:
|
||||
return 32;
|
||||
|
||||
case llvm::Triple::mips64:
|
||||
case llvm::Triple::mips64el:
|
||||
case llvm::Triple::ppc64:
|
||||
case llvm::Triple::ptx64:
|
||||
case llvm::Triple::sparcv9:
|
||||
case llvm::Triple::x86_64:
|
||||
return 64;
|
||||
}
|
||||
llvm_unreachable("Invalid architecture value");
|
||||
}
|
||||
|
||||
bool Triple::isArch64Bit() const {
|
||||
return getArchPointerBitWidth(getArch()) == 64;
|
||||
}
|
||||
|
||||
bool Triple::isArch32Bit() const {
|
||||
return getArchPointerBitWidth(getArch()) == 32;
|
||||
}
|
||||
|
||||
bool Triple::isArch16Bit() const {
|
||||
return getArchPointerBitWidth(getArch()) == 16;
|
||||
}
|
||||
|
Reference in New Issue
Block a user