Update LLVM build for PPC64
Adds support for PPC64 LLVM build to CMake and gn
Bug: b/135175069
Signed-off-by: Colin Samples <colin.samples+git@gmail.com>
Change-Id: I3123a6e1457d3a5b2528516dadc019617afa4988
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/32810
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 23710c5..c954e62 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -39,6 +39,12 @@
else()
set(ARCH "mipsel")
endif()
+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc*")
+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ set(ARCH "ppc64le")
+ else()
+ message(FATAL_ERROR "Architecture is not supported")
+ endif()
else()
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(ARCH "x86_64")
@@ -918,6 +924,7 @@
${LLVM_DIR}/lib/Support/APSInt.cpp
${LLVM_DIR}/lib/Support/ARMAttributeParser.cpp
${LLVM_DIR}/lib/Support/ARMBuildAttrs.cpp
+ ${LLVM_DIR}/lib/Support/Atomic.cpp
${LLVM_DIR}/lib/Support/BinaryStreamError.cpp
${LLVM_DIR}/lib/Support/BinaryStreamReader.cpp
${LLVM_DIR}/lib/Support/BinaryStreamRef.cpp
@@ -1025,11 +1032,13 @@
${LLVM_DIR}/lib/Transforms/Scalar/EarlyCSE.cpp
${LLVM_DIR}/lib/Transforms/Scalar/GVN.cpp
${LLVM_DIR}/lib/Transforms/Scalar/LICM.cpp
+ ${LLVM_DIR}/lib/Transforms/Scalar/LoopDataPrefetch.cpp
${LLVM_DIR}/lib/Transforms/Scalar/LoopStrengthReduce.cpp
${LLVM_DIR}/lib/Transforms/Scalar/MergeICmps.cpp
${LLVM_DIR}/lib/Transforms/Scalar/PartiallyInlineLibCalls.cpp
${LLVM_DIR}/lib/Transforms/Scalar/Reassociate.cpp
${LLVM_DIR}/lib/Transforms/Scalar/SCCP.cpp
+ ${LLVM_DIR}/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp
${LLVM_DIR}/lib/Transforms/Scalar/SimplifyCFGPass.cpp
${LLVM_DIR}/lib/Transforms/Scalar/SROA.cpp
${LLVM_DIR}/lib/Transforms/Utils/BasicBlockUtils.cpp
@@ -1296,6 +1305,52 @@
${LLVM_DIR}/lib/Target/ARM/ThumbRegisterInfo.cpp
${LLVM_DIR}/lib/Target/ARM/Utils/ARMBaseInfo.cpp
)
+elseif(ARCH STREQUAL "ppc64le")
+ list(APPEND LLVM_LIST
+ ${LLVM_DIR}/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/Disassembler/PPCDisassembler.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCMachObjectWriter.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCAsmPrinter.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCBoolRetToInt.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCBranchCoalescing.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCBranchSelector.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCCCState.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCCTRLoops.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCEarlyReturn.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCExpandISEL.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCFastISel.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCFrameLowering.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCHazardRecognizers.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCInstrInfo.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCISelLowering.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCLoopPreIncPrep.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCMachineFunctionInfo.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCMCInstLower.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCMIPeephole.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCPreEmitPeephole.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCQPXLoadSplat.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCReduceCRLogicals.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCRegisterInfo.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCSubtarget.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCTargetMachine.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCTargetObjectFile.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCTLSDynamicCall.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCTOCRegDeps.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCVSXCopy.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCVSXFMAMutate.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/PPCVSXSwapRemoval.cpp
+ ${LLVM_DIR}/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp
+ )
endif()
if(REACTOR_EMIT_DEBUG_INFO)
@@ -1324,12 +1379,14 @@
${LLVM_DIR}/lib/Target/AArch64
${LLVM_DIR}/lib/Target/ARM
${LLVM_DIR}/lib/Target/Mips
+ ${LLVM_DIR}/lib/Target/PowerPC
${LLVM_DIR}/lib/Target/X86
${LLVM_CONFIG_DIR}/common/include
${LLVM_CONFIG_DIR}/common/lib/IR
${LLVM_CONFIG_DIR}/common/lib/Target/AArch64
${LLVM_CONFIG_DIR}/common/lib/Target/ARM
${LLVM_CONFIG_DIR}/common/lib/Target/Mips
+ ${LLVM_CONFIG_DIR}/common/lib/Target/PowerPC
${LLVM_CONFIG_DIR}/common/lib/Target/X86
${LLVM_CONFIG_DIR}/common/lib/Transforms/InstCombine
)
diff --git a/third_party/llvm-7.0/BUILD.gn b/third_party/llvm-7.0/BUILD.gn
index 25415af..011272a 100644
--- a/third_party/llvm-7.0/BUILD.gn
+++ b/third_party/llvm-7.0/BUILD.gn
@@ -83,12 +83,14 @@
"llvm/lib/Target/AArch64/",
"llvm/lib/Target/ARM/",
"llvm/lib/Target/Mips/",
+ "llvm/lib/Target/PowerPC/",
"llvm/lib/Target/X86/",
"configs/common/include/",
"configs/common/lib/IR/",
"configs/common/lib/Target/AArch64/",
"configs/common/lib/Target/ARM/",
"configs/common/lib/Target/Mips/",
+ "configs/common/lib/Target/PowerPC/",
"configs/common/lib/Target/X86/",
"configs/common/lib/Transforms/InstCombine/",
]
@@ -328,6 +330,8 @@
deps += [":swiftshader_llvm_aarch64"]
} else if (target_cpu == "mipsel" || target_cpu == "mips64el") {
deps += [":swiftshader_llvm_mips"]
+ } else if (target_cpu == "ppc64") {
+ deps += [":swiftshader_llvm_ppc"]
} else {
assert(false, "Unsupported target_cpu")
}
@@ -603,6 +607,58 @@
include_dirs = llvm_include_dirs
}
+swiftshader_source_set("swiftshader_llvm_ppc") {
+ sources = [
+ "llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp",
+ "llvm/lib/Target/PowerPC/Disassembler/PPCDisassembler.cpp",
+ "llvm/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp",
+ "llvm/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp",
+ "llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp",
+ "llvm/lib/Target/PowerPC/MCTargetDesc/PPCMachObjectWriter.cpp",
+ "llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp",
+ "llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp",
+ "llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.cpp",
+ "llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp",
+ "llvm/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.cpp",
+ "llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp",
+ "llvm/lib/Target/PowerPC/PPCBoolRetToInt.cpp",
+ "llvm/lib/Target/PowerPC/PPCBranchCoalescing.cpp",
+ "llvm/lib/Target/PowerPC/PPCBranchSelector.cpp",
+ "llvm/lib/Target/PowerPC/PPCCCState.cpp",
+ "llvm/lib/Target/PowerPC/PPCCTRLoops.cpp",
+ "llvm/lib/Target/PowerPC/PPCEarlyReturn.cpp",
+ "llvm/lib/Target/PowerPC/PPCExpandISEL.cpp",
+ "llvm/lib/Target/PowerPC/PPCFastISel.cpp",
+ "llvm/lib/Target/PowerPC/PPCFrameLowering.cpp",
+ "llvm/lib/Target/PowerPC/PPCHazardRecognizers.cpp",
+ "llvm/lib/Target/PowerPC/PPCInstrInfo.cpp",
+ "llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp",
+ "llvm/lib/Target/PowerPC/PPCISelLowering.cpp",
+ "llvm/lib/Target/PowerPC/PPCLoopPreIncPrep.cpp",
+ "llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.cpp",
+ "llvm/lib/Target/PowerPC/PPCMCInstLower.cpp",
+ "llvm/lib/Target/PowerPC/PPCMIPeephole.cpp",
+ "llvm/lib/Target/PowerPC/PPCPreEmitPeephole.cpp",
+ "llvm/lib/Target/PowerPC/PPCQPXLoadSplat.cpp",
+ "llvm/lib/Target/PowerPC/PPCReduceCRLogicals.cpp",
+ "llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp",
+ "llvm/lib/Target/PowerPC/PPCSubtarget.cpp",
+ "llvm/lib/Target/PowerPC/PPCTargetMachine.cpp",
+ "llvm/lib/Target/PowerPC/PPCTargetObjectFile.cpp",
+ "llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp",
+ "llvm/lib/Target/PowerPC/PPCTLSDynamicCall.cpp",
+ "llvm/lib/Target/PowerPC/PPCTOCRegDeps.cpp",
+ "llvm/lib/Target/PowerPC/PPCVSXCopy.cpp",
+ "llvm/lib/Target/PowerPC/PPCVSXFMAMutate.cpp",
+ "llvm/lib/Target/PowerPC/PPCVSXSwapRemoval.cpp",
+ "llvm/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp",
+ ]
+
+ configs = [ ":swiftshader_llvm_private_config" ]
+
+ include_dirs = llvm_include_dirs
+}
+
swiftshader_source_set("swiftshader_llvm_codegen") {
sources = [
"llvm/lib/CodeGen/AggressiveAntiDepBreaker.cpp",
@@ -899,6 +955,7 @@
"llvm/lib/Support/APSInt.cpp",
"llvm/lib/Support/ARMAttributeParser.cpp",
"llvm/lib/Support/ARMBuildAttrs.cpp",
+ "llvm/lib/Support/Atomic.cpp",
"llvm/lib/Support/BinaryStreamError.cpp",
"llvm/lib/Support/BinaryStreamReader.cpp",
"llvm/lib/Support/BinaryStreamRef.cpp",