[llvm] r350500 - [gn build] Add build files for llvm/lib/Target/ARM + tests
Nico Weber via llvm-commits
llvm-commits at lists.llvm.org
Sun Jan 6 17:26:12 PST 2019
Author: nico
Date: Sun Jan 6 17:26:12 2019
New Revision: 350500
URL: http://llvm.org/viewvc/llvm-project?rev=350500&view=rev
Log:
[gn build] Add build files for llvm/lib/Target/ARM + tests
The ARM target itself is similar to the X86 target in https://reviews.llvm.org/rL348903
The llvm-exegesis unittests ARM bits are similar to the X86 bits in https://reviews.llvm.org/rL350413
Both are similar to the corresponding AArch64 bits in https://reviews.llvm.org/rL350499 too
After this, everything in my local GN branch is upstreamed to LLVM.
Differential Revision: https://reviews.llvm.org/D56371
Added:
llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/
llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/AsmParser/
llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/AsmParser/BUILD.gn
llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/BUILD.gn
llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/Disassembler/
llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/Disassembler/BUILD.gn
llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/InstPrinter/
llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/InstPrinter/BUILD.gn
llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/MCTargetDesc/
llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/MCTargetDesc/BUILD.gn
llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/TargetInfo/
llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/TargetInfo/BUILD.gn
llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/Utils/
llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/Utils/BUILD.gn
llvm/trunk/utils/gn/secondary/llvm/unittests/tools/llvm-exegesis/ARM/
llvm/trunk/utils/gn/secondary/llvm/unittests/tools/llvm-exegesis/ARM/BUILD.gn
Modified:
llvm/trunk/utils/gn/secondary/llvm/lib/Target/targets.gni
llvm/trunk/utils/gn/secondary/llvm/unittests/BUILD.gn
Added: llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/AsmParser/BUILD.gn
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/AsmParser/BUILD.gn?rev=350500&view=auto
==============================================================================
--- llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/AsmParser/BUILD.gn (added)
+++ llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/AsmParser/BUILD.gn Sun Jan 6 17:26:12 2019
@@ -0,0 +1,24 @@
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("ARMGenAsmMatcher") {
+ visibility = [ ":AsmParser" ]
+ args = [ "-gen-asm-matcher" ]
+ td_file = "../ARM.td"
+}
+
+static_library("AsmParser") {
+ output_name = "LLVMARMAsmParser"
+ deps = [
+ ":ARMGenAsmMatcher",
+ "//llvm/lib/MC",
+ "//llvm/lib/MC/MCParser",
+ "//llvm/lib/Support",
+ "//llvm/lib/Target/ARM/MCTargetDesc",
+ "//llvm/lib/Target/ARM/TargetInfo",
+ "//llvm/lib/Target/ARM/Utils",
+ ]
+ include_dirs = [ ".." ]
+ sources = [
+ "ARMAsmParser.cpp",
+ ]
+}
Added: llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/BUILD.gn
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/BUILD.gn?rev=350500&view=auto
==============================================================================
--- llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/BUILD.gn (added)
+++ llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/BUILD.gn Sun Jan 6 17:26:12 2019
@@ -0,0 +1,121 @@
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("ARMGenCallingConv") {
+ visibility = [ ":LLVMARMCodeGen" ]
+ args = [ "-gen-callingconv" ]
+ td_file = "ARM.td"
+}
+
+tablegen("ARMGenDAGISel") {
+ visibility = [ ":LLVMARMCodeGen" ]
+ args = [ "-gen-dag-isel" ]
+ td_file = "ARM.td"
+}
+
+tablegen("ARMGenFastISel") {
+ visibility = [ ":LLVMARMCodeGen" ]
+ args = [ "-gen-fast-isel" ]
+ td_file = "ARM.td"
+}
+
+tablegen("ARMGenGlobalISel") {
+ visibility = [ ":LLVMARMCodeGen" ]
+ args = [ "-gen-global-isel" ]
+ td_file = "ARM.td"
+}
+
+tablegen("ARMGenMCPseudoLowering") {
+ visibility = [ ":LLVMARMCodeGen" ]
+ args = [ "-gen-pseudo-lowering" ]
+ td_file = "ARM.td"
+}
+
+tablegen("ARMGenRegisterBank") {
+ visibility = [ ":LLVMARMCodeGen" ]
+ args = [ "-gen-register-bank" ]
+ td_file = "ARM.td"
+}
+
+static_library("LLVMARMCodeGen") {
+ deps = [
+ ":ARMGenCallingConv",
+ ":ARMGenDAGISel",
+ ":ARMGenFastISel",
+ ":ARMGenGlobalISel",
+ ":ARMGenMCPseudoLowering",
+ ":ARMGenRegisterBank",
+ "InstPrinter",
+ "MCTargetDesc",
+ "TargetInfo",
+ "Utils",
+ "//llvm/include/llvm/Config:llvm-config",
+ "//llvm/lib/Analysis",
+ "//llvm/lib/CodeGen",
+ "//llvm/lib/CodeGen/AsmPrinter",
+ "//llvm/lib/CodeGen/GlobalISel",
+ "//llvm/lib/CodeGen/SelectionDAG",
+ "//llvm/lib/IR",
+ "//llvm/lib/MC",
+ "//llvm/lib/Support",
+ "//llvm/lib/Target",
+ ]
+ include_dirs = [ "." ]
+ sources = [
+ "A15SDOptimizer.cpp",
+ "ARMAsmPrinter.cpp",
+ "ARMBaseInstrInfo.cpp",
+ "ARMBaseRegisterInfo.cpp",
+ "ARMCallLowering.cpp",
+ "ARMCodeGenPrepare.cpp",
+ "ARMComputeBlockSize.cpp",
+ "ARMConstantIslandPass.cpp",
+ "ARMConstantPoolValue.cpp",
+ "ARMExpandPseudoInsts.cpp",
+ "ARMFastISel.cpp",
+ "ARMFrameLowering.cpp",
+ "ARMHazardRecognizer.cpp",
+ "ARMISelDAGToDAG.cpp",
+ "ARMISelLowering.cpp",
+ "ARMInstrInfo.cpp",
+ "ARMInstructionSelector.cpp",
+ "ARMLegalizerInfo.cpp",
+ "ARMLoadStoreOptimizer.cpp",
+ "ARMMCInstLower.cpp",
+ "ARMMachineFunctionInfo.cpp",
+ "ARMMacroFusion.cpp",
+ "ARMOptimizeBarriersPass.cpp",
+ "ARMParallelDSP.cpp",
+ "ARMRegisterBankInfo.cpp",
+ "ARMRegisterInfo.cpp",
+ "ARMSelectionDAGInfo.cpp",
+ "ARMSubtarget.cpp",
+ "ARMTargetMachine.cpp",
+ "ARMTargetObjectFile.cpp",
+ "ARMTargetTransformInfo.cpp",
+ "MLxExpansionPass.cpp",
+ "Thumb1FrameLowering.cpp",
+ "Thumb1InstrInfo.cpp",
+ "Thumb2ITBlockPass.cpp",
+ "Thumb2InstrInfo.cpp",
+ "Thumb2SizeReduction.cpp",
+ "ThumbRegisterInfo.cpp",
+ ]
+}
+
+# This is a bit different from most build files: Due to this group
+# having the directory's name, "//llvm/lib/Target/AArch64" will refer to this
+# target, which pulls in the code in this directory *and all subdirectories*.
+# For most other directories, "//llvm/lib/Foo" only pulls in the code directly
+# in "llvm/lib/Foo". The forwarding targets in //llvm/lib/Target expect this
+# different behavior.
+group("ARM") {
+ deps = [
+ ":LLVMARMCodeGen",
+ "AsmParser",
+ "Disassembler",
+ "InstPrinter",
+ "MCTargetDesc",
+ "TargetInfo",
+ "Utils",
+ ]
+}
Added: llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/Disassembler/BUILD.gn
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/Disassembler/BUILD.gn?rev=350500&view=auto
==============================================================================
--- llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/Disassembler/BUILD.gn (added)
+++ llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/Disassembler/BUILD.gn Sun Jan 6 17:26:12 2019
@@ -0,0 +1,23 @@
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("ARMGenDisassemblerTables") {
+ visibility = [ ":Disassembler" ]
+ args = [ "-gen-disassembler" ]
+ td_file = "../ARM.td"
+}
+
+static_library("Disassembler") {
+ output_name = "LLVMARMDisassembler"
+ deps = [
+ ":ARMGenDisassemblerTables",
+ "//llvm/lib/MC",
+ "//llvm/lib/MC/MCDisassembler",
+ "//llvm/lib/Support",
+ "//llvm/lib/Target/ARM/MCTargetDesc",
+ "//llvm/lib/Target/ARM/Utils",
+ ]
+ include_dirs = [ ".." ]
+ sources = [
+ "ARMDisassembler.cpp",
+ ]
+}
Added: llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/InstPrinter/BUILD.gn
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/InstPrinter/BUILD.gn?rev=350500&view=auto
==============================================================================
--- llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/InstPrinter/BUILD.gn (added)
+++ llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/InstPrinter/BUILD.gn Sun Jan 6 17:26:12 2019
@@ -0,0 +1,25 @@
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("ARMGenAsmWriter") {
+ visibility = [ ":InstPrinter" ]
+ args = [ "-gen-asm-writer" ]
+ td_file = "../ARM.td"
+}
+
+static_library("InstPrinter") {
+ output_name = "LLVMARMAsmPrinter"
+ deps = [
+ ":ARMGenAsmWriter",
+ "//llvm/lib/MC",
+ "//llvm/lib/Support",
+
+ # MCTargetDesc depends on InstPrinter, so we can't depend on the full
+ # MCTargetDesc target here: it would form a cycle.
+ "//llvm/lib/Target/ARM/MCTargetDesc:tablegen",
+ "//llvm/lib/Target/ARM/Utils",
+ ]
+ include_dirs = [ ".." ]
+ sources = [
+ "ARMInstPrinter.cpp",
+ ]
+}
Added: llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/MCTargetDesc/BUILD.gn
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/MCTargetDesc/BUILD.gn?rev=350500&view=auto
==============================================================================
--- llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/MCTargetDesc/BUILD.gn (added)
+++ llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/MCTargetDesc/BUILD.gn Sun Jan 6 17:26:12 2019
@@ -0,0 +1,70 @@
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("ARMGenInstrInfo") {
+ visibility = [ ":tablegen" ]
+ args = [ "-gen-instr-info" ]
+ td_file = "../ARM.td"
+}
+
+tablegen("ARMGenMCCodeEmitter") {
+ visibility = [ ":tablegen" ]
+ args = [ "-gen-emitter" ]
+ td_file = "../ARM.td"
+}
+
+tablegen("ARMGenRegisterInfo") {
+ visibility = [ ":tablegen" ]
+ args = [ "-gen-register-info" ]
+ td_file = "../ARM.td"
+}
+
+tablegen("ARMGenSubtargetInfo") {
+ visibility = [ ":tablegen" ]
+ args = [ "-gen-subtarget" ]
+ td_file = "../ARM.td"
+}
+
+group("tablegen") {
+ visibility = [
+ ":MCTargetDesc",
+ "../InstPrinter",
+ "../TargetInfo",
+ "../Utils",
+ ]
+ public_deps = [
+ ":ARMGenInstrInfo",
+ ":ARMGenMCCodeEmitter",
+ ":ARMGenRegisterInfo",
+ ":ARMGenSubtargetInfo",
+ ]
+}
+static_library("MCTargetDesc") {
+ output_name = "LLVMARMDesc"
+ public_deps = [
+ ":tablegen",
+ ]
+ deps = [
+ "//llvm/lib/MC",
+ "//llvm/lib/MC/MCDisassembler",
+ "//llvm/lib/Support",
+ "//llvm/lib/Target/ARM/InstPrinter",
+ "//llvm/lib/Target/ARM/TargetInfo",
+ "//llvm/lib/Target/ARM/Utils",
+ ]
+ include_dirs = [ ".." ]
+ sources = [
+ "ARMAsmBackend.cpp",
+ "ARMELFObjectWriter.cpp",
+ "ARMELFStreamer.cpp",
+ "ARMMCAsmInfo.cpp",
+ "ARMMCCodeEmitter.cpp",
+ "ARMMCExpr.cpp",
+ "ARMMCTargetDesc.cpp",
+ "ARMMachORelocationInfo.cpp",
+ "ARMMachObjectWriter.cpp",
+ "ARMTargetStreamer.cpp",
+ "ARMUnwindOpAsm.cpp",
+ "ARMWinCOFFObjectWriter.cpp",
+ "ARMWinCOFFStreamer.cpp",
+ ]
+}
Added: llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/TargetInfo/BUILD.gn
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/TargetInfo/BUILD.gn?rev=350500&view=auto
==============================================================================
--- llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/TargetInfo/BUILD.gn (added)
+++ llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/TargetInfo/BUILD.gn Sun Jan 6 17:26:12 2019
@@ -0,0 +1,14 @@
+static_library("TargetInfo") {
+ output_name = "LLVMARMInfo"
+ deps = [
+ "//llvm/lib/Support",
+
+ # MCTargetDesc depends on TargetInfo, so we can't depend on the full
+ # MCTargetDesc target here: it would form a cycle.
+ "//llvm/lib/Target/ARM/MCTargetDesc:tablegen",
+ ]
+ include_dirs = [ ".." ]
+ sources = [
+ "ARMTargetInfo.cpp",
+ ]
+}
Added: llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/Utils/BUILD.gn
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/Utils/BUILD.gn?rev=350500&view=auto
==============================================================================
--- llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/Utils/BUILD.gn (added)
+++ llvm/trunk/utils/gn/secondary/llvm/lib/Target/ARM/Utils/BUILD.gn Sun Jan 6 17:26:12 2019
@@ -0,0 +1,25 @@
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("ARMGenSystemRegister") {
+ visibility = [ ":Utils" ]
+ args = [ "-gen-searchable-tables" ]
+ td_file = "../ARM.td"
+}
+
+static_library("Utils") {
+ output_name = "LLVMARMUtils"
+ public_deps = [
+ ":ARMGenSystemRegister",
+ ]
+ deps = [
+ "//llvm/lib/Support",
+ "//llvm/lib/Target/ARM/MCTargetDesc:tablegen",
+ ]
+
+ # ARMBaseInfo.h includes a header from MCTargetDesc,
+ # https://reviews.llvm.org/D35209#1075113 :-/
+ include_dirs = [ ".." ]
+ sources = [
+ "ARMBaseInfo.cpp",
+ ]
+}
Modified: llvm/trunk/utils/gn/secondary/llvm/lib/Target/targets.gni
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/gn/secondary/llvm/lib/Target/targets.gni?rev=350500&r1=350499&r2=350500&view=diff
==============================================================================
--- llvm/trunk/utils/gn/secondary/llvm/lib/Target/targets.gni (original)
+++ llvm/trunk/utils/gn/secondary/llvm/lib/Target/targets.gni Sun Jan 6 17:26:12 2019
@@ -8,6 +8,8 @@ declare_args() {
if (llvm_targets_to_build == "host") {
if (host_cpu == "arm64") {
llvm_targets_to_build = [ "AArch64" ]
+ } else if (host_cpu == "arm") {
+ llvm_targets_to_build = [ "ARM" ]
} else if (host_cpu == "x86" || host_cpu == "x64") {
llvm_targets_to_build = [ "X86" ]
} else {
@@ -17,6 +19,7 @@ if (llvm_targets_to_build == "host") {
# FIXME: Port the remaining targets.
llvm_targets_to_build = [
"AArch64",
+ "ARM",
"X86",
]
}
@@ -24,10 +27,13 @@ if (llvm_targets_to_build == "host") {
# Validate that llvm_targets_to_build is set to a list of valid targets,
# and remember which targets are built.
llvm_build_AArch64 = false
+llvm_build_ARM = false
llvm_build_X86 = false
foreach(target, llvm_targets_to_build) {
if (target == "AArch64") {
llvm_build_AArch64 = true
+ } else if (target == "ARM") {
+ llvm_build_ARM = true
} else if (target == "X86") {
llvm_build_X86 = true
} else {
@@ -39,6 +45,8 @@ foreach(target, llvm_targets_to_build) {
# FIXME: This should be based off target_cpu once cross compiles work.
if (host_cpu == "arm64") {
native_target = "AArch64"
+} else if (host_cpu == "arm") {
+ native_target = "ARM"
} else if (host_cpu == "x86" || host_cpu == "x64") {
native_target = "X86"
} else {
Modified: llvm/trunk/utils/gn/secondary/llvm/unittests/BUILD.gn
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/gn/secondary/llvm/unittests/BUILD.gn?rev=350500&r1=350499&r2=350500&view=diff
==============================================================================
--- llvm/trunk/utils/gn/secondary/llvm/unittests/BUILD.gn (original)
+++ llvm/trunk/utils/gn/secondary/llvm/unittests/BUILD.gn Sun Jan 6 17:26:12 2019
@@ -51,11 +51,9 @@ group("unittests") {
"tools/llvm-exegesis/AArch64:LLVMExegesisAArch64Tests",
]
}
-
- # FIXME: Add ARM once the Targets exists.
- #if (llvm_build_ARM) {
- #deps += [ "tools/llvm-exegesis/ARM:LLVMExegesisARMTests" ]
- #}
+ if (llvm_build_ARM) {
+ deps += [ "tools/llvm-exegesis/ARM:LLVMExegesisARMTests" ]
+ }
if (llvm_build_X86) {
deps += [ "tools/llvm-exegesis/X86:LLVMExegesisX86Tests" ]
}
Added: llvm/trunk/utils/gn/secondary/llvm/unittests/tools/llvm-exegesis/ARM/BUILD.gn
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/gn/secondary/llvm/unittests/tools/llvm-exegesis/ARM/BUILD.gn?rev=350500&view=auto
==============================================================================
--- llvm/trunk/utils/gn/secondary/llvm/unittests/tools/llvm-exegesis/ARM/BUILD.gn (added)
+++ llvm/trunk/utils/gn/secondary/llvm/unittests/tools/llvm-exegesis/ARM/BUILD.gn Sun Jan 6 17:26:12 2019
@@ -0,0 +1,25 @@
+import("//llvm/utils/unittest/unittest.gni")
+
+unittest("LLVMExegesisARMTests") {
+ deps = [
+ "//llvm/lib/DebugInfo/Symbolize",
+ "//llvm/lib/MC",
+ "//llvm/lib/MC/MCParser",
+ "//llvm/lib/Object",
+ "//llvm/lib/Support",
+ "//llvm/lib/Target/ARM",
+
+ # Exegesis reaches inside the Target/ARM tablegen internals and must
+ # depend on these Target/ARM-internal build targets.
+ "//llvm/lib/Target/ARM/MCTargetDesc",
+ "//llvm/lib/Target/ARM/Utils",
+ "//llvm/tools/llvm-exegesis/lib",
+ ]
+ include_dirs = [
+ "//llvm/lib/Target/ARM",
+ "//llvm/tools/llvm-exegesis/lib",
+ ]
+ sources = [
+ "AssemblerTest.cpp",
+ ]
+}
More information about the llvm-commits
mailing list