Update llvm to 22.1.8 - #16807
Conversation
1156c4b to
702fab7
Compare
|
I'm getting slightly worse performance in LLVM 20 compared to 19, which already had worse AVX512 performance than LLVM 17 (#16733). Tested on a 8945HS. LLVM 19: LLVM 20: |
|
But there is no |
|
There won't be a prebuilt until we decide to merge this. |
2ace833 to
e46d46d
Compare
|
Rpcs3_default.props doesn't change from llvm 20.1.7 to 20.1.8. |
It's incremental just like optimizations are. We already had another drop coming from 17 to 19 then 19 to 20. Obviously something is wrong and needs to be identified. Otherwise by the time we reach llvm30 we'll have lost a lot of performance without making any significant code changes in our own code. When no code changes product side have been made, regressions are a lot more concerning than when our own code is being modified because then we know the pros vs cons. We never commit our own code changes if they do nothing but hurt performance - the amount of experimental code that gets thrown out could probably create another (horrible) PS3 emulator. In this case we have a change that provides zero pros, just cons, making it not worth the effort. If the cause is identified, we can proceed just to be up to date with the latest version of llvm. Something I am curious about is whether the problem goes away if we use the clang64 windows binaries? |
cab4198 to
b2f4494
Compare
|
What's the best llvmcpu configuration value to test without avx512 support? Is there a reference file or link to verify the spelling of the enumerator and what options are available inside LLVM? |
For my machine it would likely be alderlake. I'll test without avx512 later and post the results. |
|
I think it's time we go ahead and merge this, since we're lagging quite a bit on LLVM versions, and the newer ones have better arm64 support as discussed internally |
|
Codegen should be better on newer llvm versions for arm64 , but need confirmation that comparability doesn't regress |
|
Also needs a version bump in the macOS scripts, |
|
Unfortunately, all llvm22 versions have broken codegen Latest working version that can be used is LLVM 21.1.8 I tried 22.1.0, 22.1.6 and 22.1.8 and they're all broken, the easiest repro is to boot RDR and see vertex explosion on the title screen 3D preview Can't test LLVM release/23.x because our code is not compatible with the new API changes |
|
in rpcs3/Emu/CMakeLists.txt: if(USE_ASAN)
set_source_files_properties(../../Utilities/Thread.cpp PROPERTIES COMPILE_DEFINITIONS USE_ASAN)
endif()
...
# GCC overemits weak type information when using LTO
# This causes an issue with LLVM 22 which is build without RTTI
# Issue is specifically related to vfs::ProxyFileSystem
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set_source_files_properties(
Cell/PPUThread.cpp
Cell/SPULLVMRecompiler.cpp
PROPERTIES COMPILE_OPTIONS -fno-lto
)
endif()
...
if(NOT USE_SYSTEM_OPENAL)
target_compile_definitions(rpcs3_emu PUBLIC AL_LIBTYPE_STATIC)
endif() |


closes #19039