Removing the intrinsics as they are no longer needed. Clang now lowers the C intrinsics to generic llvm IR.
Also updating the AutoUpgrade pass to deal with the removal of these intrinsics.
Details
- Reviewers
zvi delena igorb m_zuckerman - Commits
- rG4d60243bfde5: [X86][AVX512] Removing llvm x86 intrinsics for _mm_mask_move_{ss|sd} intrinsics.
rGc09b3769aed7: [X86][AVX512] Removing llvm x86 intrinsics for _mm_mask_move_{ss|sd} intrinsics.
rL287087: [X86][AVX512] Removing llvm x86 intrinsics for _mm_mask_move_{ss|sd} intrinsics.
rL286761: [X86][AVX512] Removing llvm x86 intrinsics for _mm_mask_move_{ss|sd} intrinsics.
Diff Detail
Event Timeline
lib/IR/AutoUpgrade.cpp | ||
---|---|---|
681 | All variables should start from a capital letter. |
Two minor comments. But LGTM otherwise.
lib/IR/AutoUpgrade.cpp | ||
---|---|---|
341 | This is the whole name of the intrinsic so startswith is unnecessary. You should be able to combine both checks to a single Name.startswith("avx512.mask.move.s"). |
This change has been reverted due to failure in build.
compilers do not accept nesting levels greater that 127, and the file AutoUpgrade.cpp contains a long sequence of "if else" statements which the compiler considers too deep.
The error I got:
"FAILED: lib/IR/CMakeFiles/LLVMCore.dir/AutoUpgrade.cpp.obj
C:\Buildbot\Slave\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.src\lib\IR\AutoUpgrade.cpp(1529): fatal error C1061: compiler limit: blocks nested too deeply"
A heavy refactor to this piece of code should be considered as an effort to reduce the use of llvm x86 intrinsics is being initiated, and as a result many new cases will be added to the same control flow in the future.
After commit that reduced the number of "if else" statements (r286768) this patch was recommitted as r287087.
This is the whole name of the intrinsic so startswith is unnecessary. You should be able to combine both checks to a single Name.startswith("avx512.mask.move.s").