[X86] Use "and $0" and "orl $-1" to store 0 and -1 when optimizing for minsize
authorHans Wennborg <hans@hanshq.net>
Fri, 25 Mar 2016 18:11:31 +0000 (18:11 +0000)
committerHans Wennborg <hans@hanshq.net>
Fri, 25 Mar 2016 18:11:31 +0000 (18:11 +0000)
commit5f916d3df42330d647cefa8c36a0ab2ec6cc0f62
tree8e88c9fa82f14a210aae39335195dcdc37b3d7ab
parent9cd77ce1691ff01e36fed4b9ad47e15096b74159
[X86] Use "and $0" and "orl $-1" to store 0 and -1 when optimizing for minsize

64-bit, 32-bit and 16-bit move-immediate instructions are 7, 6, and 5 bytes,
respectively, whereas and/or with 8-bit immediate is only three bytes.

Since these instructions imply an additional memory read (which the CPU could
elide, but we don't think it does), restrict these patterns to minsize functions.

Differential Revision: http://reviews.llvm.org/D18374

llvm-svn: 264440
llvm/lib/Target/X86/X86InstrCompiler.td
llvm/test/CodeGen/X86/store-zero-and-minus-one.ll [new file with mode: 0644]
llvm/test/CodeGen/X86/tail-opts.ll