From: Dylan McKay Date: Thu, 12 Nov 2015 09:26:44 +0000 (+0000) Subject: Add AVR backend skeleton X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=0b9fa0c2e341a046350914143079f03d60886f84 Add AVR backend skeleton This adds part of the target info code, and adds modifications to the build scripts so that AVR is recognized a supported, experimental backend. It does not include any AVR-specific code, just the bare sources required for a backend to exist. From D14039. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252865 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/autoconf/configure.ac b/autoconf/configure.ac index a3cb05c44dc..3b22eb9c6d5 100644 --- a/autoconf/configure.ac +++ b/autoconf/configure.ac @@ -431,6 +431,7 @@ AC_CACHE_CHECK([target architecture],[llvm_cv_target_arch], arm64*-*) llvm_cv_target_arch="AArch64" ;; arm*-*) llvm_cv_target_arch="ARM" ;; aarch64*-*) llvm_cv_target_arch="AArch64" ;; + avr-*) llvm_cv_target_arch="AVR" ;; mips-* | mips64-*) llvm_cv_target_arch="Mips" ;; mipsel-* | mips64el-*) llvm_cv_target_arch="Mips" ;; xcore-*) llvm_cv_target_arch="XCore" ;; @@ -468,6 +469,7 @@ case $host in arm64*-*) host_arch="AArch64" ;; arm*-*) host_arch="ARM" ;; aarch64*-*) host_arch="AArch64" ;; + avr-*) host_arch="AVR" ;; mips-* | mips64-*) host_arch="Mips" ;; mipsel-* | mips64el-*) host_arch="Mips" ;; xcore-*) host_arch="XCore" ;; @@ -801,6 +803,7 @@ else PowerPC) AC_SUBST(TARGET_HAS_JIT,1) ;; x86_64) AC_SUBST(TARGET_HAS_JIT,1) ;; ARM) AC_SUBST(TARGET_HAS_JIT,1) ;; + AVR) AC_SUBST(TARGET_HAS_JIT,0) ;; Mips) AC_SUBST(TARGET_HAS_JIT,1) ;; XCore) AC_SUBST(TARGET_HAS_JIT,0) ;; MSP430) AC_SUBST(TARGET_HAS_JIT,0) ;; diff --git a/configure b/configure index 00f31ce99a9..8237e880cc8 100755 --- a/configure +++ b/configure @@ -4188,6 +4188,7 @@ else arm64*-*) llvm_cv_target_arch="AArch64" ;; arm*-*) llvm_cv_target_arch="ARM" ;; aarch64*-*) llvm_cv_target_arch="AArch64" ;; + avr-*) llvm_cv_target_arch="AVR" ;; mips-* | mips64-*) llvm_cv_target_arch="Mips" ;; mipsel-* | mips64el-*) llvm_cv_target_arch="Mips" ;; xcore-*) llvm_cv_target_arch="XCore" ;; @@ -4226,6 +4227,7 @@ case $host in arm64*-*) host_arch="AArch64" ;; arm*-*) host_arch="ARM" ;; aarch64*-*) host_arch="AArch64" ;; + avr-*) host_arch="AVR" ;; mips-* | mips64-*) host_arch="Mips" ;; mipsel-* | mips64el-*) host_arch="Mips" ;; xcore-*) host_arch="XCore" ;; @@ -5147,6 +5149,8 @@ else x86_64) TARGET_HAS_JIT=1 ;; ARM) TARGET_HAS_JIT=1 + ;; + AVR) TARGET_HAS_JIT=0 ;; Mips) TARGET_HAS_JIT=1 ;; diff --git a/lib/Target/AVR/AVRTargetMachine.cpp b/lib/Target/AVR/AVRTargetMachine.cpp new file mode 100644 index 00000000000..a91dce8a63f --- /dev/null +++ b/lib/Target/AVR/AVRTargetMachine.cpp @@ -0,0 +1,4 @@ + +extern "C" void LLVMInitializeAVRTarget() { + +} diff --git a/lib/Target/AVR/CMakeLists.txt b/lib/Target/AVR/CMakeLists.txt new file mode 100644 index 00000000000..e588c426273 --- /dev/null +++ b/lib/Target/AVR/CMakeLists.txt @@ -0,0 +1,10 @@ + + +add_llvm_target(AVRCodeGen + AVRTargetMachine.cpp + ) + +add_dependencies(LLVMAVRCodeGen intrinsics_gen) + +add_subdirectory(TargetInfo) + diff --git a/lib/Target/AVR/LLVMBuild.txt b/lib/Target/AVR/LLVMBuild.txt new file mode 100644 index 00000000000..386c594b20e --- /dev/null +++ b/lib/Target/AVR/LLVMBuild.txt @@ -0,0 +1,33 @@ +;===- ./lib/Target/AVR/LLVMBuild.txt ---------------------------*- Conf -*--===; +; +; The LLVM Compiler Infrastructure +; +; This file is distributed under the University of Illinois Open Source +; License. See LICENSE.TXT for details. +; +;===------------------------------------------------------------------------===; +; +; This is an LLVMBuild description file for the components in this subdirectory. +; +; For more information on the LLVMBuild system, please see: +; +; http://llvm.org/docs/LLVMBuild.html +; +;===------------------------------------------------------------------------===; + +[common] +subdirectories = TargetInfo + +[component_0] +type = TargetGroup +name = AVR +parent = Target +has_asmprinter = 0 +has_asmparser = 0 + +[component_1] +type = Library +name = AVRCodeGen +parent = AVR +required_libraries = AsmPrinter CodeGen Core MC AVRInfo SelectionDAG Support Target +add_to_library_groups = AVR diff --git a/lib/Target/AVR/Makefile b/lib/Target/AVR/Makefile new file mode 100644 index 00000000000..e40ba5a0acc --- /dev/null +++ b/lib/Target/AVR/Makefile @@ -0,0 +1,19 @@ +##===- lib/Target/AVR/Makefile -----------------------------*- Makefile -*-===## +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +##===----------------------------------------------------------------------===## + +LEVEL = ../../.. +LIBRARYNAME = LLVMAVRCodeGen +TARGET = AVR + +# Make sure that tblgen is run, first thing. +BUILT_SOURCES = + +DIRS = TargetInfo + +include $(LEVEL)/Makefile.common diff --git a/lib/Target/AVR/TargetInfo/AVRTargetInfo.cpp b/lib/Target/AVR/TargetInfo/AVRTargetInfo.cpp new file mode 100644 index 00000000000..c0e0d20029c --- /dev/null +++ b/lib/Target/AVR/TargetInfo/AVRTargetInfo.cpp @@ -0,0 +1,25 @@ +//===-- AVRTargetInfo.cpp - AVR Target Implementation ---------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "llvm/IR/Module.h" +#include "llvm/Support/TargetRegistry.h" + +namespace llvm { +Target TheAVRTarget; +} + +extern "C" void LLVMInitializeAVRTargetInfo() { + llvm::RegisterTarget X( + llvm::TheAVRTarget, "avr", "Atmel AVR Microcontroller"); +} + +// FIXME: Temporary stub - this function must be defined for linking +// to succeed. Remove once this function is properly implemented. +extern "C" void LLVMInitializeAVRTargetMC() { +} diff --git a/lib/Target/AVR/TargetInfo/CMakeLists.txt b/lib/Target/AVR/TargetInfo/CMakeLists.txt new file mode 100644 index 00000000000..f2709003770 --- /dev/null +++ b/lib/Target/AVR/TargetInfo/CMakeLists.txt @@ -0,0 +1,7 @@ +include_directories( ${CMAKE_CURRENT_BINARY_DIR}/.. + ${CMAKE_CURRENT_SOURCE_DIR}/.. ) + +add_llvm_library(LLVMAVRInfo + AVRTargetInfo.cpp +) + diff --git a/lib/Target/AVR/TargetInfo/LLVMBuild.txt b/lib/Target/AVR/TargetInfo/LLVMBuild.txt new file mode 100644 index 00000000000..bc6e0ad2ee1 --- /dev/null +++ b/lib/Target/AVR/TargetInfo/LLVMBuild.txt @@ -0,0 +1,23 @@ +;===- ./lib/Target/AVR/TargetInfo/LLVMBuild.txt ----------------*- Conf -*--===; +; +; The LLVM Compiler Infrastructure +; +; This file is distributed under the University of Illinois Open Source +; License. See LICENSE.TXT for details. +; +;===------------------------------------------------------------------------===; +; +; This is an LLVMBuild description file for the components in this subdirectory. +; +; For more information on the LLVMBuild system, please see: +; +; http://llvm.org/docs/LLVMBuild.html +; +;===------------------------------------------------------------------------===; + +[component_0] +type = Library +name = AVRInfo +parent = AVR +required_libraries = MC Support +add_to_library_groups = AVR \ No newline at end of file diff --git a/lib/Target/AVR/TargetInfo/Makefile b/lib/Target/AVR/TargetInfo/Makefile new file mode 100644 index 00000000000..92b483dd028 --- /dev/null +++ b/lib/Target/AVR/TargetInfo/Makefile @@ -0,0 +1,16 @@ +##===- lib/Target/AVR/TargetInfo/Makefile ------------------*- Makefile -*-===## +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +##===----------------------------------------------------------------------===## + +LEVEL = ../../../.. +LIBRARYNAME = LLVMAVRInfo + +# Hack: we need to include 'main' target directory to grab private headers +CPP.Flags += -I$(PROJ_OBJ_DIR)/.. -I$(PROJ_SRC_DIR)/.. + +include $(LEVEL)/Makefile.common diff --git a/lib/Target/LLVMBuild.txt b/lib/Target/LLVMBuild.txt index f05d7a46525..eb794ebc721 100644 --- a/lib/Target/LLVMBuild.txt +++ b/lib/Target/LLVMBuild.txt @@ -22,6 +22,7 @@ subdirectories = AMDGPU ARM AArch64 + AVR BPF CppBackend Hexagon