OSDN Git Service

[ValueTracking] Known bits support for unsigned saturating add/sub
authorNikita Popov <nikita.ppv@gmail.com>
Fri, 1 Mar 2019 20:07:04 +0000 (20:07 +0000)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 1 Mar 2019 20:07:04 +0000 (20:07 +0000)
commit141f3969d781c08e4e0c7b026d47c4ceda0b246b
tree1fcfd6dfcacada820857a3941db65600aa6e94a3
parent20c42ab3c6cfc33ab4c85421f8d405d38b29477b
[ValueTracking] Known bits support for unsigned saturating add/sub

We have two sources of known bits:

1. For adds leading ones of either operand are preserved. For sub
leading zeros of LHS and leading ones of RHS become leading zeros in
the result.

2. The saturating math is a select between add/sub and an all-ones/
zero value. As such we can carry out the add/sub known bits
calculation, and only preseve the known one/zero bits respectively.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355223 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Analysis/ValueTracking.cpp
unittests/Analysis/ValueTrackingTest.cpp