From 6e19881b821a9aa4b3afa62fa7a8d93ea1ed8855 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Wed, 23 Oct 2019 13:09:57 +0300 Subject: [PATCH] Update LLVM (10) --- 3rdparty/llvm.cmake | 4 ++-- Utilities/JIT.cpp | 4 ++-- llvm | 2 +- rpcs3/Emu/CPU/CPUTranslator.h | 12 ++++++++++++ rpcs3/Emu/Cell/PPUTranslator.cpp | 6 +++--- rpcs3_llvm.props | 2 +- 6 files changed, 21 insertions(+), 9 deletions(-) diff --git a/3rdparty/llvm.cmake b/3rdparty/llvm.cmake index 87bf254313..a707e77b0e 100644 --- a/3rdparty/llvm.cmake +++ b/3rdparty/llvm.cmake @@ -26,7 +26,7 @@ if(WITH_LLVM) set(CMAKE_CXX_FLAGS ${CXX_FLAGS_OLD}) # now tries to find LLVM again - find_package(LLVM 9.0 CONFIG) + find_package(LLVM 10.0 CONFIG) if(NOT LLVM_FOUND) message(FATAL_ERROR "Couldn't build LLVM from the submodule. You might need to run `git submodule update --init`") endif() @@ -39,7 +39,7 @@ if(WITH_LLVM) set(LLVM_DIR ${CMAKE_SOURCE_DIR}/${LLVM_DIR}) endif() - find_package(LLVM 9.0 CONFIG) + find_package(LLVM 10.0 CONFIG) if (NOT LLVM_FOUND) if (LLVM_VERSION AND LLVM_VERSION_MAJOR LESS 9) diff --git a/Utilities/JIT.cpp b/Utilities/JIT.cpp index 378427182a..f6cfa38e69 100644 --- a/Utilities/JIT.cpp +++ b/Utilities/JIT.cpp @@ -603,12 +603,12 @@ struct EventListener : llvm::JITEventListener for (auto it = obj.section_begin(), end = obj.section_end(); it != end; ++it) { llvm::StringRef name; - it->getName(name); + name = it->getName().get(); if (name == ".pdata") { llvm::StringRef data; - it->getContents(data); + data = it->getContents().get(); std::vector rfs(data.size() / sizeof(RUNTIME_FUNCTION)); diff --git a/llvm b/llvm index b860b5e8f4..e33e0b724a 160000 --- a/llvm +++ b/llvm @@ -1 +1 @@ -Subproject commit b860b5e8f4ee90d6eb567d83ce8ed1a3e71e496f +Subproject commit e33e0b724a3d1040d756c5f415701bd8723e85f1 diff --git a/rpcs3/Emu/CPU/CPUTranslator.h b/rpcs3/Emu/CPU/CPUTranslator.h index 3d42419cf3..f1625ed18a 100644 --- a/rpcs3/Emu/CPU/CPUTranslator.h +++ b/rpcs3/Emu/CPU/CPUTranslator.h @@ -2802,4 +2802,16 @@ public: llvm::Constant* make_const_vector(T, llvm::Type*); }; +// Format llvm::SizeType +template <> +struct fmt_unveil +{ + using type = std::size_t; + + static inline std::size_t get(const llvm::TypeSize& arg) + { + return arg; + } +}; + #endif diff --git a/rpcs3/Emu/Cell/PPUTranslator.cpp b/rpcs3/Emu/Cell/PPUTranslator.cpp index dafa406197..2019dcd584 100644 --- a/rpcs3/Emu/Cell/PPUTranslator.cpp +++ b/rpcs3/Emu/Cell/PPUTranslator.cpp @@ -4004,7 +4004,7 @@ void PPUTranslator::FRSP(ppu_opcode_t op) void PPUTranslator::FCTIW(ppu_opcode_t op) { const auto b = GetFpr(op.frb); - SetFpr(op.frd, m_ir->CreateSelect(m_ir->CreateFCmpOGE(b, ConstantFP::get(GetType(), f64(INT32_MAX))), m_ir->getInt32(INT32_MAX), + SetFpr(op.frd, m_ir->CreateSelect(m_ir->CreateFCmpOGE(b, ConstantFP::get(GetType(), f64(INT32_MAX))), m_ir->getInt32(INT32_MAX), Call(GetType(), "llvm.x86.sse2.cvtsd2si", m_ir->CreateInsertElement(GetUndef(), b, u64{0})))); //SetFPSCR_FR(Call(GetType(), m_pure_attr, "__fctiw_get_fr", b)); @@ -4353,12 +4353,12 @@ void PPUTranslator::SetVr(u32 vr, Value* value) if (type->getScalarType()->isIntegerTy(1)) { // Sign-extend bool values - value = SExt(value, ScaleType(type, 7 - s32(std::log2(size)))); + value = SExt(value, ScaleType(type, 7 - s32(std::log2(+size)))); } else if (size == 256 || size == 512) { // Truncate big vectors - value = Trunc(value, ScaleType(type, 7 - s32(std::log2(size)))); + value = Trunc(value, ScaleType(type, 7 - s32(std::log2(+size)))); } } diff --git a/rpcs3_llvm.props b/rpcs3_llvm.props index 7d2e11f69b..6284ffd1ec 100644 --- a/rpcs3_llvm.props +++ b/rpcs3_llvm.props @@ -10,7 +10,7 @@ ..\llvm_build\Debug\lib ..\llvm_build\Release\lib - 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;LLVMX86AsmPrinter.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 + 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