[PATCH] D17289: [X86] Fix False Data Dependency in popcnt

Steven Noonan via llvm-commits llvm-commits at lists.llvm.org
Sun May 1 10:05:56 PDT 2016


tycho added a comment.

Sorry to gravedig, but this hasn't been updated in months. Has this been worked on at all recently?

Also, the false dependency microarchitecture bug continues to persist through Skylake, and there's no known fix on the horizon. Why not just xor the destination register unconditionally before **any** popcnt instruction, though? It shouldn't be a microarch-specific pass. From what I've seen, it's incredibly common for code to be built targeting a much older subtarget, but run on modern ones. That is, this pass would be skipped with -march=corei7, but -march=corei7 code can/will be run on newer hardware with the bug. From what I've seen on Nehalem and Westmere, there's no additional penalty for clearing the destination register before popcnt. So just do it always.


Repository:
  rL LLVM

http://reviews.llvm.org/D17289





More information about the llvm-commits mailing list