OSDN Git Service

android: enable support for AMDGPU targets for radeonsi
authorChih-Wei Huang <cwhuang@linux.org.tw>
Thu, 28 Jul 2016 07:40:43 +0000 (15:40 +0800)
committerChih-Wei Huang <cwhuang@linux.org.tw>
Fri, 9 Dec 2016 07:43:20 +0000 (15:43 +0800)
Inspired by former Psglia work on LLVM 3.5.x and Mauro work on 3.7.0.
Now applied to LLVM 3.8.0 of Android 7.0.

Gallium radeonsi driver requires LLVM. Some required features
(like compiling the R600 Taget itself) are not enabled.

These changes enable AMDGPU targets and fix a problem with "intrinsic"
due to a typo in tablegen command option.

15 files changed:
Android.mk
lib/ExecutionEngine/Android.mk
lib/ExecutionEngine/Interpreter/Android.mk
lib/ExecutionEngine/MCJIT/Android.mk
lib/ExecutionEngine/Orc/Android.mk
lib/ExecutionEngine/RuntimeDyld/Android.mk
lib/IR/Android.mk
lib/Target/AMDGPU/Android.mk [new file with mode: 0644]
lib/Target/AMDGPU/AsmParser/Android.mk [new file with mode: 0644]
lib/Target/AMDGPU/InstPrinter/Android.mk [new file with mode: 0644]
lib/Target/AMDGPU/MCTargetDesc/Android.mk [new file with mode: 0644]
lib/Target/AMDGPU/TargetInfo/Android.mk [new file with mode: 0644]
lib/Target/AMDGPU/Utils/Android.mk [new file with mode: 0644]
llvm-tblgen-rules.mk
shared_llvm.mk

index 84c6cfa..78f1faa 100644 (file)
@@ -96,6 +96,17 @@ subdirs += \
   lib/Target/X86/TargetInfo \
   lib/Target/X86/Utils
 
+ifneq ($(filter radeonsi,$(BOARD_GPU_DRIVERS)),)
+# AMDGPU Code Generation Libraries
+subdirs += \
+  lib/Target/AMDGPU \
+  lib/Target/AMDGPU/AsmParser \
+  lib/Target/AMDGPU/InstPrinter \
+  lib/Target/AMDGPU/MCTargetDesc \
+  lib/Target/AMDGPU/TargetInfo \
+  lib/Target/AMDGPU/Utils
+endif
+
 # LLVM Command Line Tools
 subdirs += \
   tools/bugpoint \
index ffa6d88..dae2faf 100644 (file)
@@ -1,21 +1,33 @@
 LOCAL_PATH:= $(call my-dir)
 
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
+executionengine_SRC_FILES := \
        ExecutionEngineBindings.cpp \
        ExecutionEngine.cpp \
        GDBRegistrationListener.cpp \
        SectionMemoryManager.cpp \
        TargetSelect.cpp
 
-LOCAL_MODULE:= libLLVMExecutionEngine
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
 
+LOCAL_MODULE := libLLVMExecutionEngine
 LOCAL_MODULE_HOST_OS := darwin linux windows
+LOCAL_SRC_FILES := $(executionengine_SRC_FILES)
 
 include $(LLVM_HOST_BUILD_MK)
 include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
 include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libLLVMExecutionEngine
+LOCAL_SRC_FILES := $(executionengine_SRC_FILES)
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_ATTRIBUTES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
index 69e1cf5..35d5ced 100644 (file)
@@ -1,19 +1,34 @@
 LOCAL_PATH:= $(call my-dir)
 
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES :=      \
+interpreter_SRC_FILES := \
   Execution.cpp         \
   ExternalFunctions.cpp \
   Interpreter.cpp       \
 
-LOCAL_MODULE:= libLLVMInterpreter
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(interpreter_SRC_FILES)
+LOCAL_MODULE := libLLVMInterpreter
 
-LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_HOST_OS := darwin linux windows
 
 include $(LLVM_HOST_BUILD_MK)
 include $(LLVM_GEN_ATTRIBUTES_MK)
 include $(LLVM_GEN_INTRINSICS_MK)
 include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(interpreter_SRC_FILES)
+LOCAL_MODULE := libLLVMInterpreter
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_ATTRIBUTES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
index ed4ade5..3412fa4 100644 (file)
@@ -1,17 +1,30 @@
 LOCAL_PATH:= $(call my-dir)
 
+mcjit_SRC_FILES := \
+  MCJIT.cpp
+
 # For the host
 # =====================================================
 include $(CLEAR_VARS)
 
-LOCAL_SRC_FILES := \
-  MCJIT.cpp
-
-LOCAL_MODULE:= libLLVMMCJIT
+LOCAL_SRC_FILES := $(mcjit_SRC_FILES)
+LOCAL_MODULE := libLLVMMCJIT
 
 LOCAL_MODULE_HOST_OS := darwin linux windows
 
 include $(LLVM_HOST_BUILD_MK)
 include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
 include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(mcjit_SRC_FILES)
+LOCAL_MODULE := libLLVMMCJIT
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_ATTRIBUTES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
index 80a19ef..ade4fd2 100644 (file)
@@ -1,16 +1,17 @@
 LOCAL_PATH:= $(call my-dir)
 
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
+orcjit_SRC_FILES := \
   ExecutionUtils.cpp \
   IndirectionUtils.cpp \
   OrcMCJITReplacement.cpp \
   OrcTargetSupport.cpp
 
-LOCAL_MODULE:= libLLVMOrcJIT
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(orcjit_SRC_FILES)
+LOCAL_MODULE := libLLVMOrcJIT
 
 LOCAL_MODULE_HOST_OS := darwin linux windows
 
@@ -18,3 +19,17 @@ include $(LLVM_HOST_BUILD_MK)
 include $(LLVM_GEN_ATTRIBUTES_MK)
 include $(LLVM_GEN_INTRINSICS_MK)
 include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(orcjit_SRC_FILES)
+LOCAL_MODULE := libLLVMOrcJIT
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_ATTRIBUTES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
index e2345fb..8d4ab5d 100644 (file)
@@ -1,10 +1,6 @@
 LOCAL_PATH:= $(call my-dir)
 
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
+runtimedyld_SRC_FILES := \
   RTDyldMemoryManager.cpp \
   RuntimeDyldChecker.cpp \
   RuntimeDyld.cpp \
@@ -12,9 +8,26 @@ LOCAL_SRC_FILES := \
   RuntimeDyldELF.cpp \
   RuntimeDyldMachO.cpp
 
-LOCAL_MODULE:= libLLVMRuntimeDyld
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(runtimedyld_SRC_FILES)
+LOCAL_MODULE := libLLVMRuntimeDyld
 
 LOCAL_MODULE_HOST_OS := darwin linux windows
 
 include $(LLVM_HOST_BUILD_MK)
 include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(runtimedyld_SRC_FILES)
+LOCAL_MODULE := libLLVMRuntimeDyld
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
index 80df71d..7249976 100644 (file)
@@ -78,6 +78,8 @@ REQUIRES_RTTI := 1
 LOCAL_SRC_FILES := $(vmcore_SRC_FILES)
 
 LOCAL_MODULE:= libLLVMCore
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_EXPORT_C_INCLUDE_DIRS := $(call local-generated-sources-dir)
 
 include $(LLVM_DEVICE_BUILD_MK)
 include $(LLVM_GEN_ATTRIBUTES_MK)
diff --git a/lib/Target/AMDGPU/Android.mk b/lib/Target/AMDGPU/Android.mk
new file mode 100644 (file)
index 0000000..10ea132
--- /dev/null
@@ -0,0 +1,101 @@
+LOCAL_PATH := $(call my-dir)
+
+amdgpu_codegen_TBLGEN_TABLES := \
+  AMDGPUGenRegisterInfo.inc \
+  AMDGPUGenInstrInfo.inc \
+  AMDGPUGenDAGISel.inc  \
+  AMDGPUGenSubtargetInfo.inc \
+  AMDGPUGenMCCodeEmitter.inc \
+  AMDGPUGenCallingConv.inc \
+  AMDGPUGenIntrinsics.inc \
+  AMDGPUGenDFAPacketizer.inc \
+  AMDGPUGenAsmWriter.inc \
+  AMDGPUGenAsmMatcher.inc
+
+amdgpu_codegen_SRC_FILES := \
+  AMDILCFGStructurizer.cpp \
+  AMDGPUAlwaysInlinePass.cpp \
+  AMDGPUAnnotateKernelFeatures.cpp \
+  AMDGPUAnnotateUniformValues.cpp \
+  AMDGPUAsmPrinter.cpp \
+  AMDGPUDiagnosticInfoUnsupported.cpp \
+  AMDGPUFrameLowering.cpp \
+  AMDGPUTargetObjectFile.cpp \
+  AMDGPUIntrinsicInfo.cpp \
+  AMDGPUISelDAGToDAG.cpp \
+  AMDGPUMCInstLower.cpp \
+  AMDGPUMachineFunction.cpp \
+  AMDGPUOpenCLImageTypeLoweringPass.cpp \
+  AMDGPUSubtarget.cpp \
+  AMDGPUTargetMachine.cpp \
+  AMDGPUTargetTransformInfo.cpp \
+  AMDGPUISelLowering.cpp \
+  AMDGPUInstrInfo.cpp \
+  AMDGPUPromoteAlloca.cpp \
+  AMDGPURegisterInfo.cpp \
+  R600ClauseMergePass.cpp \
+  R600ControlFlowFinalizer.cpp \
+  R600EmitClauseMarkers.cpp \
+  R600ExpandSpecialInstrs.cpp \
+  R600InstrInfo.cpp \
+  R600ISelLowering.cpp \
+  R600MachineFunctionInfo.cpp \
+  R600MachineScheduler.cpp \
+  R600OptimizeVectorRegisters.cpp \
+  R600Packetizer.cpp \
+  R600RegisterInfo.cpp \
+  R600TextureIntrinsicsReplacer.cpp \
+  SIAnnotateControlFlow.cpp \
+  SIFixControlFlowLiveIntervals.cpp \
+  SIFixSGPRCopies.cpp \
+  SIFixSGPRLiveRanges.cpp \
+  SIFoldOperands.cpp \
+  SIFrameLowering.cpp \
+  SIInsertWaits.cpp \
+  SIInstrInfo.cpp \
+  SIISelLowering.cpp \
+  SILoadStoreOptimizer.cpp \
+  SILowerControlFlow.cpp \
+  SILowerI1Copies.cpp \
+  SIMachineFunctionInfo.cpp \
+  SIRegisterInfo.cpp \
+  SIShrinkInstructions.cpp \
+  SITypeRewriter.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(amdgpu_codegen_TBLGEN_TABLES)
+
+LOCAL_SRC_FILES := $(amdgpu_codegen_SRC_FILES)
+
+LOCAL_MODULE := libLLVMAMDGPUCodeGen
+
+LOCAL_MODULE_HOST_OS := darwin linux windows
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_ATTRIBUTES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device only
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(amdgpu_codegen_TBLGEN_TABLES)
+
+LOCAL_SRC_FILES := $(amdgpu_codegen_SRC_FILES)
+
+LOCAL_MODULE := libLLVMAMDGPUCodeGen
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_ATTRIBUTES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/AMDGPU/AsmParser/Android.mk b/lib/Target/AMDGPU/AsmParser/Android.mk
new file mode 100644 (file)
index 0000000..7c0d868
--- /dev/null
@@ -0,0 +1,51 @@
+LOCAL_PATH := $(call my-dir)
+
+amdgpu_asmparser_SRC_FILES := \
+  AMDGPUAsmParser.cpp
+
+amdgpu_asmparser_TBLGEN_TABLES := \
+  AMDGPUGenAsmMatcher.inc
+
+amdgpu_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+amdgpu_asm_parser_C_INCLUDES :=        $(LOCAL_PATH)/..
+
+#===---------------------------------------------------------------===
+# libAMDGPUAsmParser (host)
+#===---------------------------------------------------------------===
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE := libLLVMAMDGPUAsmParser
+LOCAL_MODULE_HOST_OS := darwin linux windows
+LOCAL_SRC_FILES := $(amdgpu_asm_parser_SRC_FILES)
+LOCAL_C_INCLUDES := $(amdgpu_asm_parser_C_INCLUDES)
+TBLGEN_TABLES := $(amdgpu_asm_parser_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(amdgpu_asm_parser_TBLGEN_TD_DIR)
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_ATTRIBUTES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+
+#===---------------------------------------------------------------===
+# libAMDGPUAsmParser (target)
+#===---------------------------------------------------------------===
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE := libLLVMAMDGPUAsmParser
+LOCAL_SRC_FILES := $(amdgpu_asm_parser_SRC_FILES)
+LOCAL_C_INCLUDES := $(amdgpu_asm_parser_C_INCLUDES)
+TBLGEN_TABLES := $(amdgpu_asm_parser_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(amdgpu_asm_parser_TBLGEN_TD_DIR)
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_ATTRIBUTES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/AMDGPU/InstPrinter/Android.mk b/lib/Target/AMDGPU/InstPrinter/Android.mk
new file mode 100644 (file)
index 0000000..a600901
--- /dev/null
@@ -0,0 +1,47 @@
+LOCAL_PATH := $(call my-dir)
+
+amdgpu_instprinter_TBLGEN_TABLES := \
+  AMDGPUGenAsmWriter.inc \
+  AMDGPUGenInstrInfo.inc \
+  AMDGPUGenRegisterInfo.inc \
+  AMDGPUGenSubtargetInfo.inc
+
+amdgpu_instprinter_SRC_FILES := \
+  AMDGPUInstPrinter.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE := libLLVMAMDGPUAsmPrinter
+LOCAL_MODULE_HOST_OS := darwin linux windows
+
+LOCAL_SRC_FILES := $(amdgpu_instprinter_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
+
+TBLGEN_TABLES := $(amdgpu_instprinter_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device only
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE := libLLVMAMDGPUAsmPrinter
+
+LOCAL_SRC_FILES := $(amdgpu_instprinter_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
+
+TBLGEN_TABLES := $(amdgpu_instprinter_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/AMDGPU/MCTargetDesc/Android.mk b/lib/Target/AMDGPU/MCTargetDesc/Android.mk
new file mode 100644 (file)
index 0000000..e914743
--- /dev/null
@@ -0,0 +1,59 @@
+LOCAL_PATH := $(call my-dir)
+
+amdgpu_mc_desc_TBLGEN_TABLES := \
+  AMDGPUGenRegisterInfo.inc \
+  AMDGPUGenInstrInfo.inc \
+  AMDGPUGenMCCodeEmitter.inc \
+  AMDGPUGenSubtargetInfo.inc
+
+amdgpu_mc_desc_SRC_FILES := \
+  AMDGPUAsmBackend.cpp \
+  AMDGPUELFObjectWriter.cpp \
+  AMDGPUELFStreamer.cpp \
+  AMDGPUMCCodeEmitter.cpp \
+  AMDGPUMCTargetDesc.cpp \
+  AMDGPUMCAsmInfo.cpp \
+  AMDGPUTargetStreamer.cpp \
+  R600MCCodeEmitter.cpp \
+  SIMCCodeEmitter.cpp \
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE := libLLVMAMDGPUDesc
+LOCAL_MODULE_HOST_OS := darwin linux windows
+
+LOCAL_SRC_FILES := $(amdgpu_mc_desc_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+TBLGEN_TABLES := $(amdgpu_mc_desc_TBLGEN_TABLES)
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_ATTRIBUTES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device only
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE := libLLVMAMDGPUDesc
+
+LOCAL_SRC_FILES := $(amdgpu_mc_desc_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+TBLGEN_TABLES := $(amdgpu_mc_desc_TBLGEN_TABLES)
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_ATTRIBUTES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/AMDGPU/TargetInfo/Android.mk b/lib/Target/AMDGPU/TargetInfo/Android.mk
new file mode 100644 (file)
index 0000000..097b526
--- /dev/null
@@ -0,0 +1,51 @@
+LOCAL_PATH := $(call my-dir)
+
+amdgpu_target_info_TBLGEN_TABLES := \
+  AMDGPUGenInstrInfo.inc \
+  AMDGPUGenIntrinsics.inc \
+  AMDGPUGenRegisterInfo.inc \
+  AMDGPUGenSubtargetInfo.inc
+
+amdgpu_target_info_SRC_FILES := \
+  AMDGPUTargetInfo.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE := libLLVMAMDGPUInfo
+LOCAL_MODULE_HOST_OS := darwin linux windows
+
+TBLGEN_TABLES := $(amdgpu_target_info_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(amdgpu_target_info_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_ATTRIBUTES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE := libLLVMAMDGPUInfo
+
+TBLGEN_TABLES := $(amdgpu_target_info_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(amdgpu_target_info_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_ATTRIBUTES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/AMDGPU/Utils/Android.mk b/lib/Target/AMDGPU/Utils/Android.mk
new file mode 100644 (file)
index 0000000..6a5aad1
--- /dev/null
@@ -0,0 +1,48 @@
+LOCAL_PATH := $(call my-dir)
+
+amdgpu_utils_TBLGEN_TABLES := \
+  AMDGPUGenRegisterInfo.inc \
+  AMDGPUGenSubtargetInfo.inc
+
+amdgpu_utils_SRC_FILES := \
+  AMDGPUBaseInfo.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(amdgpu_utils_SRC_FILES)
+
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
+
+LOCAL_MODULE := libLLVMAMDGPUUtils
+
+LOCAL_MODULE_HOST_OS := darwin linux windows
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+TBLGEN_TABLES := $(amdgpu_utils_TBLGEN_TABLES)
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_ATTRIBUTES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(amdgpu_utils_SRC_FILES)
+
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
+
+LOCAL_MODULE := libLLVMAMDGPUUtils
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+TBLGEN_TABLES := $(amdgpu_utils_TBLGEN_TABLES)
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_ATTRIBUTES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
index 8526afd..c7e831f 100644 (file)
@@ -193,7 +193,14 @@ ifneq ($(filter %GenIntrinsics.inc,$(tblgen_gen_tables)),)
 $(generated_sources)/%GenIntrinsics.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
 $(generated_sources)/%GenIntrinsics.inc: $(tblgen_source_dir)/%.td \
                                      $(tblgen_td_deps) $(LLVM_TBLGEN)
-       $(call transform-td-to-out,tgt_intrinsics)
+       $(call transform-td-to-out,tgt-intrinsic)
+endif
+
+ifneq ($(filter %GenDFAPacketizer.inc,$(tblgen_gen_tables)),)
+$(generated_sources)/%GenDFAPacketizer.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenDFAPacketizer.inc: $(tblgen_source_dir)/%.td \
+                                     $(tblgen_td_deps) | $(LLVM_TBLGEN)
+       $(call transform-td-to-out,dfa-packetizer)
 endif
 
 ifneq ($(findstring ARMGenDecoderTables.inc,$(tblgen_gen_tables)),)
index 4a4ba5a..b153b98 100644 (file)
@@ -27,6 +27,19 @@ llvm_x86_static_libraries := \
   libLLVMX86Utils \
   libLLVMX86Disassembler
 
+ifneq ($(filter radeonsi,$(BOARD_GPU_DRIVERS)),)
+llvm_x86_static_libraries += \
+  libLLVMAMDGPUCodeGen \
+  libLLVMAMDGPUInfo \
+  libLLVMAMDGPUDesc \
+  libLLVMAMDGPUAsmParser \
+  libLLVMAMDGPUAsmPrinter \
+  libLLVMAMDGPUUtils \
+  libLLVMExecutionEngine \
+  libLLVMMCJIT \
+  libLLVMRuntimeDyld
+endif
+
 llvm_mips_static_libraries := \
   libLLVMMipsCodeGen \
   libLLVMMipsInfo \