1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-01-31 12:41:49 +01:00

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.

llvm-svn: 252865
This commit is contained in:
Dylan McKay 2015-11-12 09:26:44 +00:00
parent 9cd723ec63
commit 5c27eaa521
11 changed files with 145 additions and 0 deletions

View File

@ -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) ;;

4
configure vendored
View File

@ -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
;;

View File

@ -0,0 +1,4 @@
extern "C" void LLVMInitializeAVRTarget() {
}

View File

@ -0,0 +1,10 @@
add_llvm_target(AVRCodeGen
AVRTargetMachine.cpp
)
add_dependencies(LLVMAVRCodeGen intrinsics_gen)
add_subdirectory(TargetInfo)

View File

@ -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

19
lib/Target/AVR/Makefile Normal file
View File

@ -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

View File

@ -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<llvm::Triple::avr> 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() {
}

View File

@ -0,0 +1,7 @@
include_directories( ${CMAKE_CURRENT_BINARY_DIR}/..
${CMAKE_CURRENT_SOURCE_DIR}/.. )
add_llvm_library(LLVMAVRInfo
AVRTargetInfo.cpp
)

View File

@ -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

View File

@ -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

View File

@ -22,6 +22,7 @@ subdirectories =
AMDGPU
ARM
AArch64
AVR
BPF
CppBackend
Hexagon