[PATCH] D116804: [x86] use SETCC_CARRY instead of SBB node for select lowering
Sotiris Apostolakis via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 1 00:17:18 PST 2022
apostolakis added a comment.
We noticed a 15% performance regression for llvm_test_suite/MultiSource/Benchmarks/MallocBench/gs with this patch.
Looking at the assembly, noticed a relatively long dependence chain including the following sequence:
mov (%rbx),%rax
sbb %rax,%rax
or %rdx,%rax
According to Agner Fog's manual (https://www.agner.org/optimize/microarchitecture.pdf), none of the Intel architectures recognize sbb with same operands as dependence breaking.
So, it seems that the false dependence issue already discussed in the previous comments might not be worth the code reduction gained by removing the clearing of the register, at least for Intel architectures.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D116804/new/
https://reviews.llvm.org/D116804
More information about the llvm-commits
mailing list