#
6f01cb91 |
| 28-Apr-2023 |
Justin Lebar <justin.lebar@gmail.com> |
Handle `select` in programUndefinedIfPoison.
If both the true and false operands of a `select` are poison, then the `select` is poison.
Differential Revision: https://reviews.llvm.org/D149427
|
#
0125b8d2 |
| 25-Apr-2023 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
ValueTracking: Fix computeKnownFPClass handling for copysign
We need to expand the set of possible classes to the opposite sign for the first operand if we don't know the sign of the second operand.
|
#
f40d186d |
| 17-Apr-2023 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
ValueTracking: Add ordered negative handling for fmul to computeKnownFPClass
Port from the existing handling in cannotBeOrderedLessThanZero
|
#
b0aa6d76 |
| 19-Apr-2023 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
ValueTracking: Fix computeKnownFPClass for fabs
The fabs utility functions have the opposite purpose and probably should not be a general utility.
|
#
83adfc91 |
| 13-Apr-2023 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
ValueTracking: uitofp/sitofp cannot return denormal results
|
#
0d448783 |
| 13-Apr-2023 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
ValueTracking: sitofp cannot return -0
|
#
fc7c706e |
| 12-Apr-2023 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
ValueTracking: Add cannotBeOrderedLessThanZero to KnownFPClass
Eventually we should be able to replace the existing CannotBeOrderedLessThanZero.
|
#
054cac10 |
| 08-Apr-2023 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
ValueTracking: Address todo for nan fmul handling in computeKnownFPClass
If both operands can't be zero or nan, the result can't be nan.
|
#
4d044bfb |
| 08-Apr-2023 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
ValueTracking: Handle no-nan check for computeKnownFPClass for fmul
Copy the logic from isKnownNeverNaN for fadd/fsub. Leave the extension to handle the zero case for a future change.
|
#
94adb39b |
| 12-Apr-2023 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
unittests: Use opaque pointers in a test
|
#
6aca4009 |
| 08-Apr-2023 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
ValueTracking: Handle no-nan check for computeKnownFPClass for fadd/fsub
Copy the logic from isKnownNeverNaN for fadd/fsub.
|
Revision tags: llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4 |
|
#
b39deda3 |
| 24-Feb-2023 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
ValueTracking: Handle nofpclass in computeKnownFPClass
|
Revision tags: llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2 |
|
#
931d4098 |
| 01-Feb-2023 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
ValueTracking: Add start of computeKnownFPClass API
Add a new compute-known-bits like function to compute all the interesting floating point properties at once.
Eventually this should absorb all th
ValueTracking: Add start of computeKnownFPClass API
Add a new compute-known-bits like function to compute all the interesting floating point properties at once.
Eventually this should absorb all the various floating point queries we already have.
show more ...
|
#
bbfb13a5 |
| 06-Mar-2023 |
Nikita Popov <npopov@redhat.com> |
[ConstExpr] Remove select constant expression
This removes the select constant expression, as part of https://discourse.llvm.org/t/rfc-remove-most-constant-expressions/63179. Uses of this expression
[ConstExpr] Remove select constant expression
This removes the select constant expression, as part of https://discourse.llvm.org/t/rfc-remove-most-constant-expressions/63179. Uses of this expressions have already been removed in advance, so this just removes related infrastructure and updates tests.
Differential Revision: https://reviews.llvm.org/D145382
show more ...
|
Revision tags: llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7 |
|
#
8a3efcd4 |
| 19-Dec-2022 |
Florian Hahn <flo@fhahn.com> |
[ValueTracking] Consider single poison operands in propgatesPoison.
This patch updates propgatesPoison to take a Use as argument and propagatesPoison now returns true if the passed in operand causes
[ValueTracking] Consider single poison operands in propgatesPoison.
This patch updates propgatesPoison to take a Use as argument and propagatesPoison now returns true if the passed in operand causes the user to yield poison if the operand is poison
This allows propagating poison if the condition of a select is poison. This helps improve results for programUndefinedIfUndefOrPoison.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D111643
show more ...
|
#
32b38d24 |
| 15-Dec-2022 |
Vasileios Porpodas <vporpodas@google.com> |
[NFC] Rename Instruction::insertAt() to Instruction::insertInto(), to be consistent with BasicBlock::insertInto()
Differential Revision: https://reviews.llvm.org/D140085
|
Revision tags: llvmorg-15.0.6 |
|
#
06911ba6 |
| 28-Nov-2022 |
Vasileios Porpodas <vporpodas@google.com> |
[NFC] Cleanup: Replaces BB->getInstList().insert() with I->insertAt().
This is part of a series of cleanup patches towards making BasicBlock::getInstList() private.
Differential Revision: https://r
[NFC] Cleanup: Replaces BB->getInstList().insert() with I->insertAt().
This is part of a series of cleanup patches towards making BasicBlock::getInstList() private.
Differential Revision: https://reviews.llvm.org/D138877
show more ...
|
#
b6a01caa |
| 03-Dec-2022 |
Kazu Hirata <kazu@google.com> |
[llvm/unittests] Use std::nullopt instead of None (NFC)
This patch mechanically replaces None with std::nullopt where the compiler would warn if None were deprecated. The intent is to reduce the am
[llvm/unittests] Use std::nullopt instead of None (NFC)
This patch mechanically replaces None with std::nullopt where the compiler would warn if None were deprecated. The intent is to reduce the amount of manual work required in migrating from Optional to std::optional.
This is part of an effort to migrate from llvm::Optional to std::optional:
https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
show more ...
|
Revision tags: llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, working, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0 |
|
#
4e44c22c |
| 25-Aug-2022 |
Sanjay Patel <spatel@rotateright.com> |
[ValueTracking][InstCombine] restrict FP min/max matching to avoid miscompile
This is a long-standing FIXME with a non-FMF test that exposes the bug as shown in issue #57357.
It's possible that the
[ValueTracking][InstCombine] restrict FP min/max matching to avoid miscompile
This is a long-standing FIXME with a non-FMF test that exposes the bug as shown in issue #57357.
It's possible that there's still a way to miscompile by mis-identifying/mis-folding FP min/max patterns, but this patch only exposes a couple of seemingly minor regressions while preventing the broken transform.
show more ...
|
Revision tags: llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init |
|
#
a925bef7 |
| 24-Jul-2022 |
Sanjay Patel <spatel@rotateright.com> |
[ValueTracking] allow vector types in isImpliedCondition()
The matching of constants assumed integers, but we can handle splat vector constants seamlessly with m_APInt.
|
#
4da47bee |
| 24-Jul-2022 |
Sanjay Patel <spatel@rotateright.com> |
[ValueTracking] add test for isImpliedCondition with vector types; NFC
|
#
11950efe |
| 04-Jul-2022 |
Nikita Popov <npopov@redhat.com> |
[ConstExpr] Remove div/rem constant expressions
D128820 stopped creating div/rem constant expressions by default; this patch removes support for them entirely.
The getUDiv(), getExactUDiv(), getSDi
[ConstExpr] Remove div/rem constant expressions
D128820 stopped creating div/rem constant expressions by default; this patch removes support for them entirely.
The getUDiv(), getExactUDiv(), getSDiv(), getExactSDiv(), getURem() and getSRem() on ConstantExpr are removed, and ConstantExpr::get() now only accepts binary operators for which ConstantExpr::isSupportedBinOp() returns true. Uses of these methods may be replaced either by corresponding IRBuilder methods, or ConstantFoldBinaryOpOperands (if a constant result is required).
On the C API side, LLVMConstUDiv, LLVMConstExactUDiv, LLVMConstSDiv, LLVMConstExactSDiv, LLVMConstURem and LLVMConstSRem are removed and corresponding LLVMBuild methods should be used.
Importantly, this also means that constant expressions can no longer trap! This patch still keeps the canTrap() method to minimize diff -- I plan to drop it in a separate NFC patch.
Differential Revision: https://reviews.llvm.org/D129148
show more ...
|
Revision tags: llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init |
|
#
a2609be0 |
| 25-Jan-2022 |
Chuanqi Xu <yedeng.yd@linux.alibaba.com> |
[ValueTracking] Checking haveNoCommonBitsSet for (x & y) and ~(x | y)
This one tries to fix: https://github.com/llvm/llvm-project/issues/53357.
Simply, this one would check (x & y) and ~(x | y) in
[ValueTracking] Checking haveNoCommonBitsSet for (x & y) and ~(x | y)
This one tries to fix: https://github.com/llvm/llvm-project/issues/53357.
Simply, this one would check (x & y) and ~(x | y) in haveNoCommonBitsSet. Since they shouldn't have common bits (we could traverse the case by enumerating), and we could convert this one to (x & y) | ~(x | y) . Then the compiler could handle it in InstCombineAndOrXor. Further more, since ((x & y) + (~x & ~y)) would be converted to ((x & y) + ~(x | y)), this patch would fix it too.
https://alive2.llvm.org/ce/z/qsKzRS
Reviewed By: spatel, xbolva00, RKSimon, lebedev.ri
Differential Revision: https://reviews.llvm.org/D118094
show more ...
|
#
e59d6dc0 |
| 14-Feb-2022 |
Chuanqi Xu <yedeng.yd@linux.alibaba.com> |
[NFC] Precommit for PR53357
Due to there are other required changes in https://reviews.llvm.org/D118094, precommit these changes to ease reviewing. Including: - Remove *_thwart tests. - Remove test
[NFC] Precommit for PR53357
Due to there are other required changes in https://reviews.llvm.org/D118094, precommit these changes to ease reviewing. Including: - Remove *_thwart tests. - Remove test for (x & y) + (~x & ~y) - Fix incorrect uniitest committeed before
show more ...
|
#
4ee240b8 |
| 14-Feb-2022 |
Chuanqi Xu <yedeng.yd@linux.alibaba.com> |
[NFC] [ValueTracking] Add unittest for haveNoCommonBitsSet
|