]> granicus.if.org Git - llvm/commit
[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)
commitcdc303e5ed4d3110e6f70931775a70bb1de44ed6
tree1e06e763587b728ddabadb08186d205f8cc42aed
parent83cc1fca7fff564d7587ca5103055d863c3585bb
[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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298624 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/ARMISelLowering.cpp
test/CodeGen/ARM/no-cmov2bfi.ll [new file with mode: 0644]