[ARM] Fix computeKnownBits for ARMISD::CMOV
authorPirama Arumuga Nainar <pirama@google.com>
Thu, 23 Mar 2017 16:47:47 +0000 (16:47 +0000)
committerPirama Arumuga Nainar <pirama@google.com>
Thu, 23 Mar 2017 16:47:47 +0000 (16:47 +0000)
commitbc2648271761ddb675ed5d6779b2dc3433798f07
tree86de8a85d36d9afa1bec2474c9f9c9dd4bf6111c
parent997a15c3c3cab3c357f63a89ab774a84289b3e09
[ARM] Fix computeKnownBits for ARMISD::CMOV

Summary:
The true and false operands for the CMOV are operands 0 and 1.
ARMISelLowering.cpp::computeKnownBits was looking at operands 1 and 2
instead.  This can cause CMOV instructions to be incorrectly folded into
BFI if value set by the CMOV is another CMOV, whose known bits are
computed incorrectly.

This patch fixes the issue and adds a test case.

Reviewers: kristof.beyls, jmolloy

Subscribers: llvm-commits, aemerson, srhines, rengolin

Differential Revision: https://reviews.llvm.org/D31265

llvm-svn: 298624
llvm/lib/Target/ARM/ARMISelLowering.cpp
llvm/test/CodeGen/ARM/no-cmov2bfi.ll [new file with mode: 0644]