Use LLVM 7 (master)

This commit is contained in:
Nekotekina 2018-06-27 21:19:02 +03:00
parent 1ac203a958
commit e009bbac10
6 changed files with 18 additions and 18 deletions

View file

@ -49,7 +49,7 @@ install:
fi; fi;
# Download pre-compiled LLVM libs # Download pre-compiled LLVM libs
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then - if [ "$TRAVIS_OS_NAME" = "linux" ]; then
wget https://github.com/RPCS3/llvm/releases/download/continuous-linux-release_60/llvmlibs-linux.tar.gz; wget https://github.com/RPCS3/llvm/releases/download/continuous-linux-master/llvmlibs-linux.tar.gz;
mkdir llvmlibs; mkdir llvmlibs;
tar -xzf ./llvmlibs-linux.tar.gz -C llvmlibs; tar -xzf ./llvmlibs-linux.tar.gz -C llvmlibs;
fi; fi;

View file

@ -6,7 +6,7 @@ RPCS3
The world's first open-source PlayStation 3 emulator/debugger written in C++ for Windows and Linux. The world's first open-source PlayStation 3 emulator/debugger written in C++ for Windows and Linux.
You can find some basic information in our [**website**](https://rpcs3.net/). You can find some basic information in our [**website**](https://rpcs3.net/).
For discussion about this emulator and PS3 emulation please visit our [**forums**](https://forums.rpcs3.net) and our [**Discord server**](https://discord.me/RPCS3). For discussion about this emulator and PS3 emulation please visit our [**forums**](https://forums.rpcs3.net) and our [**Discord server**](https://discord.me/RPCS3).
[**Support Lead Developers Nekotekina and kd-11 on Patreon**](https://www.patreon.com/Nekotekina) [**Support Lead Developers Nekotekina and kd-11 on Patreon**](https://www.patreon.com/Nekotekina)
@ -51,7 +51,7 @@ To initialize the repository don't forget to execute `git submodule update --ini
### Configuring Qt ### Configuring Qt
*If you're using Visual Studio 2017 without Qt plugin support (or simply dont want to use it):* *If you're using Visual Studio 2017 without Qt plugin support (or simply dont want to use it):*
1) Add `QTDIR` environment variable and set it to e.g `<QtInstallFolder>\5.11.1\msvc2015_64\` 1) Add `QTDIR` environment variable and set it to e.g `<QtInstallFolder>\5.11.1\msvc2015_64\`
Open `rpcs3.sln` Open `rpcs3.sln`
@ -59,12 +59,12 @@ Open `rpcs3.sln`
*If you wish to use the Visual Studio plugin for Qt:* </br> *If you wish to use the Visual Studio plugin for Qt:* </br>
1) Go to the Qt5 menu and edit Qt5 options. Add the path to your Qt installation with compiler e.g. `C:\Qt\5.11.1\msvc2015_64`. 1) Go to the Qt5 menu and edit Qt5 options. Add the path to your Qt installation with compiler e.g. `C:\Qt\5.11.1\msvc2015_64`.
2) While selecting the rpcs3qt project, go to Qt5->Project Setting and select the version you added. 2) While selecting the rpcs3qt project, go to Qt5->Project Setting and select the version you added.
### Building the projects ### Building the projects
The recommended build configuration is Release - LLVM, for all purposes. The recommended build configuration is Release - LLVM, for all purposes.
You may want to download precompiled [LLVM lib](https://github.com/RPCS3/llvm/releases/download/continuous-release_60/llvmlibs.7z) and extract to root rpcs3 folder (which contains `rpcs3.sln`), as well as download and extract [additional libs](https://drive.google.com/uc?export=download&id=1A2eOMmCO714i0U7J0qI4aEMKnuWl8l_R) to `lib\%CONFIGURATION%-x64\` to speed up compilation time (unoptimised/debug libs are currently not available precompiled). You may want to download precompiled [LLVM lib](https://github.com/RPCS3/llvm/releases/download/continuous-master/llvmlibs.7z) and extract to root rpcs3 folder (which contains `rpcs3.sln`), as well as download and extract [additional libs](https://drive.google.com/uc?export=download&id=1A2eOMmCO714i0U7J0qI4aEMKnuWl8l_R) to `lib\%CONFIGURATION%-x64\` to speed up compilation time (unoptimised/debug libs are currently not available precompiled).
If you're not using precompiled libs, build the projects in *__BUILD_BEFORE* folder: right-click on every project > *Build*. If you're not using precompiled libs, build the projects in *__BUILD_BEFORE* folder: right-click on every project > *Build*.
@ -92,22 +92,22 @@ When using GDB, configure it to ignore SIGSEGV signal (`handle SIGSEGV nostop no
## CMake Build Options (Linux & Mac OS) ## CMake Build Options (Linux & Mac OS)
- ```-DUSE_SYSTEM_LIBPNG=ON/OFF``` (default = *OFF*) - ```-DUSE_SYSTEM_LIBPNG=ON/OFF``` (default = *OFF*)
Build against the shared libpng instead of using the builtin one. libpng 1.6+ highly recommended. Try this option if you get version conflict errors or only see black game icons. Build against the shared libpng instead of using the builtin one. libpng 1.6+ highly recommended. Try this option if you get version conflict errors or only see black game icons.
- ```-DUSE_SYSTEM_FFMPEG=ON/OFF``` (default = *OFF*) - ```-DUSE_SYSTEM_FFMPEG=ON/OFF``` (default = *OFF*)
Build against the shared ffmpeg libraries instead of using the builtin patched version. Try this if the builtin version breaks the OpenGL renderer for you. Build against the shared ffmpeg libraries instead of using the builtin patched version. Try this if the builtin version breaks the OpenGL renderer for you.
- ```-DWITHOUT_LLVM=ON/OFF``` (default = *OFF*) - ```-DWITHOUT_LLVM=ON/OFF``` (default = *OFF*)
This forces RPCS3 to build without LLVM, not recommended. This forces RPCS3 to build without LLVM, not recommended.
- ```-DWITH_GDB=ON/OFF``` (default = *OFF*) - ```-DWITH_GDB=ON/OFF``` (default = *OFF*)
This Builds RPCS3 with support for debugging PS3 games using gdb. This Builds RPCS3 with support for debugging PS3 games using gdb.
- ```-DUSE_VULKAN=ON/OFF``` (default = *ON*) - ```-DUSE_VULKAN=ON/OFF``` (default = *ON*)
This builds RPCS3 with Vulkan support. This builds RPCS3 with Vulkan support.
- ```-DUSE_NATIVE_INSTRUCTIONS=ON/OFF``` (default = *ON*) - ```-DUSE_NATIVE_INSTRUCTIONS=ON/OFF``` (default = *ON*)
This builds rpcs3 with -march=native, which is useful for local builds, but not good for packages. This builds rpcs3 with -march=native, which is useful for local builds, but not good for packages.
## License ## License

View file

@ -5,7 +5,7 @@ image: Visual Studio 2015
environment: environment:
QTDIR: C:\Qt\5.11\msvc2015_64 QTDIR: C:\Qt\5.11\msvc2015_64
LLVMLIBS: https://github.com/RPCS3/llvm/releases/download/continuous-release_60/llvmlibs.7z LLVMLIBS: https://github.com/RPCS3/llvm/releases/download/continuous-master/llvmlibs.7z
GLSLANG: https://drive.google.com/uc?export=download&id=1nJK_NEeRzJ_r_u4zWLySwLmMrV8ZO_wL GLSLANG: https://drive.google.com/uc?export=download&id=1nJK_NEeRzJ_r_u4zWLySwLmMrV8ZO_wL
COMPATDB: https://rpcs3.net/compatibility?api=v1&export COMPATDB: https://rpcs3.net/compatibility?api=v1&export
VULKAN_SDK: "C:\\VulkanSDK\\1.1.73.0" VULKAN_SDK: "C:\\VulkanSDK\\1.1.73.0"
@ -127,7 +127,7 @@ artifacts:
name: openssl name: openssl
- path: openssl_win64.7z.sha256 - path: openssl_win64.7z.sha256
name: openssl sha256 hash name: openssl sha256 hash
deploy: deploy:
provider: GitHub provider: GitHub
# Description is a semi-colon seperated list for easy parsing # Description is a semi-colon seperated list for easy parsing

2
llvm

@ -1 +1 @@
Subproject commit 4952addb0c00546fcf8a9d6b0ca7aec3f4243cca Subproject commit 60611c0f232c78be92ae9cece45cc415bfbe193a

View file

@ -192,7 +192,7 @@ find_package(OpenGL REQUIRED)
find_package(OpenAL REQUIRED) find_package(OpenAL REQUIRED)
if(NOT WITHOUT_LLVM) if(NOT WITHOUT_LLVM)
if (EXISTS "${CMAKE_SOURCE_DIR}/llvmlibs") if (EXISTS "${CMAKE_SOURCE_DIR}/llvmlibs")
find_package(LLVM 6.0 CONFIG) find_package(LLVM 7.0 CONFIG)
endif() endif()
if(NOT LLVM_FOUND) if(NOT LLVM_FOUND)
message("LLVM will be built from the submodule.") message("LLVM will be built from the submodule.")
@ -212,7 +212,7 @@ if(NOT WITHOUT_LLVM)
set(LLVM_DIR "${CMAKE_CURRENT_BINARY_DIR}/../llvm_build/lib/cmake/llvm/") set(LLVM_DIR "${CMAKE_CURRENT_BINARY_DIR}/../llvm_build/lib/cmake/llvm/")
# now tries to find LLVM again # now tries to find LLVM again
find_package(LLVM 6.0 CONFIG) find_package(LLVM 7.0 CONFIG)
if(NOT LLVM_FOUND) if(NOT LLVM_FOUND)
message(WARNING "Couldn't build LLVM from the submodule. You might need to run `git submodule update --init`") message(WARNING "Couldn't build LLVM from the submodule. You might need to run `git submodule update --init`")
endif() endif()

View file

@ -2631,7 +2631,7 @@ void PPUTranslator::MTOCRF(ppu_opcode_t op)
const auto index = m_ir->CreateAnd(m_ir->CreateLShr(value, 28 - i * 4), 15); const auto index = m_ir->CreateAnd(m_ir->CreateLShr(value, 28 - i * 4), 15);
const auto src = m_ir->CreateGEP(m_mtocr_table, {m_ir->getInt32(0), m_ir->CreateShl(index, 2)}); const auto src = m_ir->CreateGEP(m_mtocr_table, {m_ir->getInt32(0), m_ir->CreateShl(index, 2)});
const auto dst = m_ir->CreateBitCast(m_ir->CreateStructGEP(nullptr, m_thread, m_cr - m_locals + i * 4), GetType<u8*>()); const auto dst = m_ir->CreateBitCast(m_ir->CreateStructGEP(nullptr, m_thread, m_cr - m_locals + i * 4), GetType<u8*>());
Call(GetType<void>(), "llvm.memcpy.p0i8.p0i8.i32", dst, src, m_ir->getInt32(4), m_ir->getInt32(4), m_ir->getFalse()); Call(GetType<void>(), "llvm.memcpy.p0i8.p0i8.i32", dst, src, m_ir->getInt32(4), m_ir->getFalse());
} }
} }
} }
@ -3338,7 +3338,7 @@ void PPUTranslator::ICBI(ppu_opcode_t op)
void PPUTranslator::DCBZ(ppu_opcode_t op) void PPUTranslator::DCBZ(ppu_opcode_t op)
{ {
const auto ptr = GetMemory(m_ir->CreateAnd(op.ra ? m_ir->CreateAdd(GetGpr(op.ra), GetGpr(op.rb)) : GetGpr(op.rb), -128), GetType<u8>()); const auto ptr = GetMemory(m_ir->CreateAnd(op.ra ? m_ir->CreateAdd(GetGpr(op.ra), GetGpr(op.rb)) : GetGpr(op.rb), -128), GetType<u8>());
Call(GetType<void>(), "llvm.memset.p0i8.i32", ptr, m_ir->getInt8(0), m_ir->getInt32(128), m_ir->getInt32(16), m_ir->getTrue()); Call(GetType<void>(), "llvm.memset.p0i8.i32", ptr, m_ir->getInt8(0), m_ir->getInt32(128), m_ir->getTrue());
} }
void PPUTranslator::LWZ(ppu_opcode_t op) void PPUTranslator::LWZ(ppu_opcode_t op)