[PowerPC] On the A2, popcnt[dw] are very slow
authorHal Finkel <hfinkel@anl.gov>
Mon, 28 Mar 2016 17:52:08 +0000 (17:52 +0000)
committerHal Finkel <hfinkel@anl.gov>
Mon, 28 Mar 2016 17:52:08 +0000 (17:52 +0000)
commit7059d416228846346bdf2027be1fb0459f3f0ece
tree9c9583359cbc6ef128738966b7aa30b375e4244e
parentb805f73ad1d75521f86cf2280837a0717f01b76b
[PowerPC] On the A2, popcnt[dw] are very slow

The A2 cores support the popcntw/popcntd instructions, but they're microcoded,
and slower than our default software emulation. Specifically, popcnt[dw] take
approximately 74 cycles, whereas our software emulation takes only 24-28
cycles.

I've added a new target feature to indicate a slow popcnt[dw], instead of just
removing the existing target feature from the a2/a2q processor models, because:
  1. This allows us to return more accurate information via the TTI interface
     (I recognize that this currently makes no practical difference)
  2. Is hopefully easier to understand (it allows the core's features to match
     its manual while still having the desired effect).

llvm-svn: 264600
llvm/lib/Target/PowerPC/PPC.td
llvm/lib/Target/PowerPC/PPCISelLowering.cpp
llvm/lib/Target/PowerPC/PPCSubtarget.cpp
llvm/lib/Target/PowerPC/PPCSubtarget.h
llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
llvm/test/CodeGen/PowerPC/popcnt.ll