X86TargetLowering::LowerToBT

Chris Sears chris.sears at gmail.com
Sat Jan 24 11:47:55 PST 2015


This is a patch to X86TargetLowering::LowerToBT() which was hashed over on
the Developers list with Intel concurring.

It checks whether the -Oz (optimize for size) flag is set or whether the
containing function's PGO cold attribute is set. If either are true it
emits BT for tests of bits 8-31 instead of TEST. Previously, TEST was
always used for bits 0-31 and BT was always used for bits 32-63.

Since the BT instruction is 16b smaller than TEST for the bits 8-31 case,
32b vs 48b, and not irredeemably slower, it makes sense to use BT in cases
where size matters.

Similar logic is possible for BTC and BTS. However, LowerToBTC and
LowerToBTS would need to be written and used and that's a larger patch.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150124/9f79c1dc/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pat
Type: application/octet-stream
Size: 1314 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150124/9f79c1dc/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tst64.c
Type: text/x-csrc
Size: 1579 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150124/9f79c1dc/attachment.c>


More information about the llvm-commits mailing list