[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