From 5223ff81f5a4d7df1d8a00895667d3e6f3826658 Mon Sep 17 00:00:00 2001 From: JF Bastien Date: Fri, 12 Sep 2014 17:54:17 +0000 Subject: [PATCH] Add support for le64. Summary: le64 is a generic little-endian 64-bit processor, mimicking le32. Depends on D5318. Test Plan: make check-all Reviewers: dschuff Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D5319 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217697 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ADT/Triple.h | 1 + lib/Support/Triple.cpp | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/include/llvm/ADT/Triple.h b/include/llvm/ADT/Triple.h index f69ed74ad29..df03e847b93 100644 --- a/include/llvm/ADT/Triple.h +++ b/include/llvm/ADT/Triple.h @@ -72,6 +72,7 @@ public: nvptx, // NVPTX: 32-bit nvptx64, // NVPTX: 64-bit le32, // le32: generic little-endian 32-bit CPU (PNaCl / Emscripten) + le64, // le64: generic little-endian 64-bit CPU (PNaCl / Emscripten) amdil, // amdil: amd IL spir, // SPIR: standard portable IR for OpenCL 32-bit version spir64, // SPIR: standard portable IR for OpenCL 64-bit version diff --git a/lib/Support/Triple.cpp b/lib/Support/Triple.cpp index 8406daf489d..72cc2a8eb9a 100644 --- a/lib/Support/Triple.cpp +++ b/lib/Support/Triple.cpp @@ -45,6 +45,7 @@ const char *Triple::getArchTypeName(ArchType Kind) { case nvptx: return "nvptx"; case nvptx64: return "nvptx64"; case le32: return "le32"; + case le64: return "le64"; case amdil: return "amdil"; case spir: return "spir"; case spir64: return "spir64"; @@ -94,6 +95,7 @@ const char *Triple::getArchTypePrefix(ArchType Kind) { case nvptx64: return "nvptx"; case le32: return "le32"; + case le64: return "le64"; case amdil: return "amdil"; case spir: return "spir"; case spir64: return "spir"; @@ -200,6 +202,7 @@ Triple::ArchType Triple::getArchTypeForLLVMName(StringRef Name) { .Case("nvptx", nvptx) .Case("nvptx64", nvptx64) .Case("le32", le32) + .Case("le64", le64) .Case("amdil", amdil) .Case("spir", spir) .Case("spir64", spir64) @@ -244,6 +247,7 @@ static Triple::ArchType parseArch(StringRef ArchName) { .Case("nvptx", Triple::nvptx) .Case("nvptx64", Triple::nvptx64) .Case("le32", Triple::le32) + .Case("le64", Triple::le64) .Case("amdil", Triple::amdil) .Case("spir", Triple::spir) .Case("spir64", Triple::spir64) @@ -807,6 +811,7 @@ static unsigned getArchPointerBitWidth(llvm::Triple::ArchType Arch) { case llvm::Triple::aarch64: case llvm::Triple::aarch64_be: + case llvm::Triple::le64: case llvm::Triple::mips64: case llvm::Triple::mips64el: case llvm::Triple::nvptx64: @@ -866,6 +871,7 @@ Triple Triple::get32BitArchVariant() const { // Already 32-bit. break; + case Triple::le64: T.setArch(Triple::le32); break; case Triple::mips64: T.setArch(Triple::mips); break; case Triple::mips64el: T.setArch(Triple::mipsel); break; case Triple::nvptx64: T.setArch(Triple::nvptx); break; @@ -886,7 +892,6 @@ Triple Triple::get64BitArchVariant() const { case Triple::armeb: case Triple::hexagon: case Triple::kalimba: - case Triple::le32: case Triple::msp430: case Triple::r600: case Triple::tce: @@ -898,18 +903,20 @@ Triple Triple::get64BitArchVariant() const { case Triple::aarch64: case Triple::aarch64_be: - case Triple::spir64: + case Triple::le64: case Triple::mips64: case Triple::mips64el: case Triple::nvptx64: case Triple::ppc64: case Triple::ppc64le: case Triple::sparcv9: + case Triple::spir64: case Triple::systemz: case Triple::x86_64: // Already 64-bit. break; + case Triple::le32: T.setArch(Triple::le64); break; case Triple::mips: T.setArch(Triple::mips64); break; case Triple::mipsel: T.setArch(Triple::mips64el); break; case Triple::nvptx: T.setArch(Triple::nvptx64); break; -- 2.34.1