[PowerPC] stop folding if result rlwinm mask is wrap while original rlwinm is not.
authorczhengsz <czhengsz@cn.ibm.com>
Thu, 26 Dec 2019 02:52:56 +0000 (21:52 -0500)
committerczhengsz <czhengsz@cn.ibm.com>
Thu, 26 Dec 2019 02:56:18 +0000 (21:56 -0500)
commit1b57749a5334ae3d854c6f8732e741ef9f977219
tree7f8ab9391842b30845996d5880f5ab515be638e5
parent6599d004679e04f0d9e9c5b6c8503e463db79a1f
[PowerPC] stop folding if result rlwinm mask is wrap while original rlwinm is not.

%1:g8rc = RLWINM8 %0:g8rc, 0, 16, 9
%2:g8rc = RLWINM8 killed %1:g8rc, 0, 0, 31
->
%2:g8rc = RLWINM8 %0:g8rc, 0, 16, 9

The above folding is wrong. Before transformation, %2:g8rc is 32 bit value. After
transformation, %2:g8rc becomes a 64 bit value.
This patch fixes above issue.

Reviewed by: steven.zhang

Differential Revision: https://reviews.llvm.org/D71833
llvm/lib/Target/PowerPC/PPCMIPeephole.cpp
llvm/test/CodeGen/PowerPC/fold-rlwinm.mir