mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-02-04 03:40:11 +00:00
Update LLVM to new llvm-mirror (LLVM 11)
Use clang-cl to build LLVM on Windows.
This commit is contained in:
parent
68f50c7035
commit
5b0476e772
2
.gitmodules
vendored
2
.gitmodules
vendored
@ -8,7 +8,7 @@
|
|||||||
ignore = dirty
|
ignore = dirty
|
||||||
[submodule "llvm"]
|
[submodule "llvm"]
|
||||||
path = llvm
|
path = llvm
|
||||||
url = https://github.com/RPCS3/llvm
|
url = https://github.com/RPCS3/llvm-mirror
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
[submodule "Vulkan/glslang"]
|
[submodule "Vulkan/glslang"]
|
||||||
path = Vulkan/glslang
|
path = Vulkan/glslang
|
||||||
|
@ -11,7 +11,7 @@ cd rpcs3
|
|||||||
git submodule update --quiet --init asmjit 3rdparty/ffmpeg 3rdparty/pugixml 3rdparty/span 3rdparty/libpng 3rdparty/cereal 3rdparty/hidapi 3rdparty/xxHash 3rdparty/yaml-cpp 3rdparty/libusb 3rdparty/FAudio Vulkan/glslang
|
git submodule update --quiet --init asmjit 3rdparty/ffmpeg 3rdparty/pugixml 3rdparty/span 3rdparty/libpng 3rdparty/cereal 3rdparty/hidapi 3rdparty/xxHash 3rdparty/yaml-cpp 3rdparty/libusb 3rdparty/FAudio Vulkan/glslang
|
||||||
|
|
||||||
# Download pre-compiled llvm libs
|
# Download pre-compiled llvm libs
|
||||||
curl -sLO https://github.com/RPCS3/llvm/releases/download/continuous-linux-master/llvmlibs-linux.tar.gz
|
curl -sLO https://github.com/RPCS3/llvm-mirror/releases/download/custom-build/llvmlibs-linux.tar.gz
|
||||||
mkdir llvmlibs
|
mkdir llvmlibs
|
||||||
tar -xzf ./llvmlibs-linux.tar.gz -C llvmlibs
|
tar -xzf ./llvmlibs-linux.tar.gz -C llvmlibs
|
||||||
|
|
||||||
|
10
3rdparty/llvm.cmake
vendored
10
3rdparty/llvm.cmake
vendored
@ -12,7 +12,7 @@ if(WITH_LLVM)
|
|||||||
option(LLVM_INCLUDE_TOOLS OFF)
|
option(LLVM_INCLUDE_TOOLS OFF)
|
||||||
option(LLVM_INCLUDE_UTILS OFF)
|
option(LLVM_INCLUDE_UTILS OFF)
|
||||||
option(WITH_POLLY OFF)
|
option(WITH_POLLY OFF)
|
||||||
option(LLVM_ENABLE_CXX1Z TRUE)
|
option(LLVM_CCACHE_BUILD ON)
|
||||||
|
|
||||||
set(CXX_FLAGS_OLD ${CMAKE_CXX_FLAGS})
|
set(CXX_FLAGS_OLD ${CMAKE_CXX_FLAGS})
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ if(WITH_LLVM)
|
|||||||
set(CMAKE_CXX_FLAGS ${CXX_FLAGS_OLD})
|
set(CMAKE_CXX_FLAGS ${CXX_FLAGS_OLD})
|
||||||
|
|
||||||
# now tries to find LLVM again
|
# now tries to find LLVM again
|
||||||
find_package(LLVM 10.0 CONFIG)
|
find_package(LLVM 11.0 CONFIG)
|
||||||
if(NOT LLVM_FOUND)
|
if(NOT LLVM_FOUND)
|
||||||
message(FATAL_ERROR "Couldn't build LLVM from the submodule. You might need to run `git submodule update --init`")
|
message(FATAL_ERROR "Couldn't build LLVM from the submodule. You might need to run `git submodule update --init`")
|
||||||
endif()
|
endif()
|
||||||
@ -40,11 +40,11 @@ if(WITH_LLVM)
|
|||||||
set(LLVM_DIR ${CMAKE_SOURCE_DIR}/${LLVM_DIR})
|
set(LLVM_DIR ${CMAKE_SOURCE_DIR}/${LLVM_DIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(LLVM 10.0 CONFIG)
|
find_package(LLVM 11.0 CONFIG)
|
||||||
|
|
||||||
if (NOT LLVM_FOUND)
|
if (NOT LLVM_FOUND)
|
||||||
if (LLVM_VERSION AND LLVM_VERSION_MAJOR LESS 9)
|
if (LLVM_VERSION AND LLVM_VERSION_MAJOR LESS 11)
|
||||||
message(FATAL_ERROR "Found LLVM version ${LLVM_VERSION}. Required version 9.0. \
|
message(FATAL_ERROR "Found LLVM version ${LLVM_VERSION}. Required version 11.0. \
|
||||||
Enable BUILD_LLVM_SUBMODULE option to build LLVM from included as a git submodule.")
|
Enable BUILD_LLVM_SUBMODULE option to build LLVM from included as a git submodule.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -918,7 +918,7 @@ public:
|
|||||||
void notifyObjectCompiled(const llvm::Module* module, llvm::MemoryBufferRef obj) override
|
void notifyObjectCompiled(const llvm::Module* module, llvm::MemoryBufferRef obj) override
|
||||||
{
|
{
|
||||||
std::string name = m_path;
|
std::string name = m_path;
|
||||||
name.append(module->getName());
|
name.append(module->getName().data());
|
||||||
//fs::file(name, fs::rewrite).write(obj.getBufferStart(), obj.getBufferSize());
|
//fs::file(name, fs::rewrite).write(obj.getBufferStart(), obj.getBufferSize());
|
||||||
name.append(".gz");
|
name.append(".gz");
|
||||||
|
|
||||||
@ -1026,7 +1026,7 @@ public:
|
|||||||
std::unique_ptr<llvm::MemoryBuffer> getObject(const llvm::Module* module) override
|
std::unique_ptr<llvm::MemoryBuffer> getObject(const llvm::Module* module) override
|
||||||
{
|
{
|
||||||
std::string path = m_path;
|
std::string path = m_path;
|
||||||
path.append(module->getName());
|
path.append(module->getName().data());
|
||||||
|
|
||||||
if (auto buf = load(path))
|
if (auto buf = load(path))
|
||||||
{
|
{
|
||||||
@ -1044,7 +1044,7 @@ std::string jit_compiler::cpu(const std::string& _cpu)
|
|||||||
|
|
||||||
if (m_cpu.empty())
|
if (m_cpu.empty())
|
||||||
{
|
{
|
||||||
m_cpu = llvm::sys::getHostCPUName();
|
m_cpu = llvm::sys::getHostCPUName().operator std::string();
|
||||||
|
|
||||||
if (m_cpu == "sandybridge" ||
|
if (m_cpu == "sandybridge" ||
|
||||||
m_cpu == "ivybridge" ||
|
m_cpu == "ivybridge" ||
|
||||||
|
@ -5,7 +5,7 @@ image: Visual Studio 2019
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
QTDIR: C:\Qt\5.14\msvc2017_64
|
QTDIR: C:\Qt\5.14\msvc2017_64
|
||||||
LLVMLIBS: https://github.com/RPCS3/llvm/releases/download/continuous-master/llvmlibs.7z
|
LLVMLIBS: https://github.com/RPCS3/llvm-mirror/releases/download/custom-build-win/llvmlibs.7z
|
||||||
GLSLANG: https://www.dropbox.com/s/6e8w6t5dxh3ad4l/glslang.7z?dl=1
|
GLSLANG: https://www.dropbox.com/s/6e8w6t5dxh3ad4l/glslang.7z?dl=1
|
||||||
COMPATDB: https://rpcs3.net/compatibility?api=v1&export
|
COMPATDB: https://rpcs3.net/compatibility?api=v1&export
|
||||||
VULKAN_SDK: "C:\\VulkanSDK\\1.1.126.0"
|
VULKAN_SDK: "C:\\VulkanSDK\\1.1.126.0"
|
||||||
|
2
llvm
2
llvm
@ -1 +1 @@
|
|||||||
Subproject commit 1394b1ccc8cfee2846b1a38d409717e821113cf3
|
Subproject commit 0c0b09edb75fcca1cb3c909b58db2caaf95dd631
|
@ -16,6 +16,7 @@
|
|||||||
#include "llvm/IR/Module.h"
|
#include "llvm/IR/Module.h"
|
||||||
#include "llvm/Target/TargetMachine.h"
|
#include "llvm/Target/TargetMachine.h"
|
||||||
#include "llvm/Analysis/ConstantFolding.h"
|
#include "llvm/Analysis/ConstantFolding.h"
|
||||||
|
#include "llvm/IR/IntrinsicsX86.h"
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma warning(pop)
|
#pragma warning(pop)
|
||||||
#else
|
#else
|
||||||
|
@ -537,12 +537,12 @@ Value* PPUTranslator::ReadMemory(Value* addr, Type* type, bool is_be, u32 align)
|
|||||||
{
|
{
|
||||||
// Read, byteswap, bitcast
|
// Read, byteswap, bitcast
|
||||||
const auto int_type = m_ir->getIntNTy(size);
|
const auto int_type = m_ir->getIntNTy(size);
|
||||||
const auto value = m_ir->CreateAlignedLoad(GetMemory(addr, int_type), align, true);
|
const auto value = m_ir->CreateAlignedLoad(GetMemory(addr, int_type), llvm::MaybeAlign{align}, true);
|
||||||
return m_ir->CreateBitCast(Call(int_type, fmt::format("llvm.bswap.i%u", size), value), type);
|
return m_ir->CreateBitCast(Call(int_type, fmt::format("llvm.bswap.i%u", size), value), type);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read normally
|
// Read normally
|
||||||
return m_ir->CreateAlignedLoad(GetMemory(addr, type), align, true);
|
return m_ir->CreateAlignedLoad(GetMemory(addr, type), llvm::MaybeAlign{align}, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PPUTranslator::WriteMemory(Value* addr, Value* value, bool is_be, u32 align)
|
void PPUTranslator::WriteMemory(Value* addr, Value* value, bool is_be, u32 align)
|
||||||
@ -558,7 +558,7 @@ void PPUTranslator::WriteMemory(Value* addr, Value* value, bool is_be, u32 align
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Write
|
// Write
|
||||||
m_ir->CreateAlignedStore(value, GetMemory(addr, value->getType()), align, true);
|
m_ir->CreateAlignedStore(value, GetMemory(addr, value->getType()), llvm::MaybeAlign{align}, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PPUTranslator::CompilationError(const std::string& error)
|
void PPUTranslator::CompilationError(const std::string& error)
|
||||||
|
@ -4346,7 +4346,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Load unaligned code block from LS
|
// Load unaligned code block from LS
|
||||||
llvm::Value* vls = m_ir->CreateAlignedLoad(_ptr<u32[8]>(data_addr, j - starta), 4);
|
llvm::Value* vls = m_ir->CreateAlignedLoad(_ptr<u32[8]>(data_addr, j - starta), llvm::MaybeAlign{4});
|
||||||
|
|
||||||
// Mask if necessary
|
// Mask if necessary
|
||||||
if (holes)
|
if (holes)
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<Lib>
|
<Lib>
|
||||||
<AdditionalLibraryDirectories Condition="'$(Configuration)'=='Debug - LLVM'">..\llvm_build\Debug\lib</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories Condition="'$(Configuration)'=='Debug - LLVM'">..\llvm_build\Debug\lib</AdditionalLibraryDirectories>
|
||||||
<AdditionalLibraryDirectories Condition="'$(Configuration)'=='Release - LLVM'">..\llvm_build\Release\lib</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories Condition="'$(Configuration)'=='Release - LLVM'">..\llvm_build\Release\lib</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>LLVMProfileData.lib;LLVMDebugInfoCodeView.lib;LLVMDebugInfoMSF.lib;LLVMInstrumentation.lib;LLVMMCJIT.lib;LLVMRuntimeDyld.lib;LLVMVectorize.lib;LLVMX86CodeGen.lib;LLVMGlobalISel.lib;LLVMX86Disassembler.lib;LLVMExecutionEngine.lib;LLVMAsmPrinter.lib;LLVMSelectionDAG.lib;LLVMCodeGen.lib;LLVMScalarOpts.lib;LLVMInstCombine.lib;LLVMTransformUtils.lib;LLVMAnalysis.lib;LLVMTarget.lib;LLVMX86Desc.lib;LLVMObject.lib;LLVMMCParser.lib;LLVMBitReader.lib;LLVMCore.lib;LLVMX86Utils.lib;LLVMMC.lib;LLVMX86Info.lib;LLVMSupport.lib;LLVMMCDisassembler.lib;LLVMipo.lib;LLVMBinaryFormat.lib;LLVMPasses.lib;LLVMIRReader.lib;LLVMLinker.lib;LLVMAsmParser.lib;LLVMX86AsmParser.lib;LLVMDemangle.lib;LLVMDebugInfoDWARF.lib;LLVMRemarks.lib;LLVMBitstreamReader.lib;LLVMTextAPI.lib</AdditionalDependencies>
|
<AdditionalDependencies>LLVMProfileData.lib;LLVMDebugInfoCodeView.lib;LLVMDebugInfoMSF.lib;LLVMInstrumentation.lib;LLVMMCJIT.lib;LLVMRuntimeDyld.lib;LLVMVectorize.lib;LLVMX86CodeGen.lib;LLVMGlobalISel.lib;LLVMX86Disassembler.lib;LLVMExecutionEngine.lib;LLVMAsmPrinter.lib;LLVMSelectionDAG.lib;LLVMCodeGen.lib;LLVMScalarOpts.lib;LLVMInstCombine.lib;LLVMTransformUtils.lib;LLVMAnalysis.lib;LLVMTarget.lib;LLVMX86Desc.lib;LLVMObject.lib;LLVMMCParser.lib;LLVMBitReader.lib;LLVMCore.lib;LLVMX86Utils.lib;LLVMMC.lib;LLVMX86Info.lib;LLVMSupport.lib;LLVMMCDisassembler.lib;LLVMipo.lib;LLVMBinaryFormat.lib;LLVMPasses.lib;LLVMIRReader.lib;LLVMLinker.lib;LLVMAsmParser.lib;LLVMX86AsmParser.lib;LLVMDemangle.lib;LLVMDebugInfoDWARF.lib;LLVMRemarks.lib;LLVMBitstreamReader.lib;LLVMTextAPI.lib;LLVMCFGuard.lib</AdditionalDependencies>
|
||||||
</Lib>
|
</Lib>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup />
|
<ItemGroup />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user