Changes from Git (git http://labmaster3.local/git/llvm-project.git)


  1. [PowerPC] Exploit the rlwinm instructions for "and" with constant (details)
Commit 874a8004f93538a0c9b335a7e1e34d80b57ebccd by qshanz
[PowerPC] Exploit the rlwinm instructions for "and" with constant
For now, PowerPC will using several instructions to get the constant and
"and" it with the following case:
define i32 @test1(i32 %a) {
%and = and i32 %a, -2
ret i32 %and
However, we could exploit it with the rotate mask instructions.
              MB  ME
0         32         64 Notice that, we can only do it if the MB is
larger than 32 and MB <= ME as RLWINM will replace the content of [0 -
32) with [32 - 64) even we didn't rotate it.
Differential Revision:
The file was modifiedllvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h
The file was modifiedllvm/test/CodeGen/PowerPC/popcnt-zext.ll
The file was modifiedllvm/test/CodeGen/PowerPC/and-mask.ll
The file was modifiedllvm/test/CodeGen/PowerPC/opt-cmp-inst-cr0-live.ll
The file was modifiedllvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp