#
55e2cd16 |
| 28-Jan-2023 |
Kazu Hirata <kazu@google.com> |
Use llvm::count{lr}_{zero,one} (NFC)
|
Revision tags: llvmorg-16.0.0-rc1 |
|
#
49f7d2c4 |
| 26-Jan-2023 |
Kazu Hirata <kazu@google.com> |
[Support] Use llvm::countr_zero and llvm::Log2_64 in APInt.cpp (NFC)
partMSB and partLSB never get 0 as the argument. That is, we don't rely on find{First,Last}Set's ability to return std::numeric_
[Support] Use llvm::countr_zero and llvm::Log2_64 in APInt.cpp (NFC)
partMSB and partLSB never get 0 as the argument. That is, we don't rely on find{First,Last}Set's ability to return std::numeric_limits<T>::max() on input 0.
This patch replaces partLSB and partMSB with llvm::countr_zero and llvm::Log2_64, respectively.
FWIW, nobody in LLVM (except unit test MathExtrasTest.cpp) relies on find{First,Last}Set's ability to return std::numeric_limits<T>::max() on input 0.
show more ...
|
Revision tags: llvmorg-17-init |
|
#
caa99a01 |
| 22-Jan-2023 |
Kazu Hirata <kazu@google.com> |
Use llvm::popcount instead of llvm::countPopulation(NFC)
|
#
1b2d34e2 |
| 15-Jan-2023 |
Kazu Hirata <kazu@google.com> |
[Support] clang-format partMSBpartMSB and partLSB (NFC)
|
#
9ce7b40a |
| 15-Jan-2023 |
Kazu Hirata <kazu@google.com> |
Use the default parameters of countTrailingZeros and find{First,Last}Set (NFC)
This patch uses the default parameters of countTrailingZeros, findFirstSet, and findLastSet, which are ZB_Width, ZB_Max
Use the default parameters of countTrailingZeros and find{First,Last}Set (NFC)
This patch uses the default parameters of countTrailingZeros, findFirstSet, and findLastSet, which are ZB_Width, ZB_Max, and ZB_Max, respectively.
show more ...
|
Revision tags: llvmorg-15.0.7 |
|
#
38818b60 |
| 04-Jan-2023 |
serge-sans-paille <sguelton@mozilla.com> |
Move from llvm::makeArrayRef to ArrayRef deduction guides - llvm/ part
Use deduction guides instead of helper functions.
The only non-automatic changes have been:
1. ArrayRef(some_uint8_pointer, 0
Move from llvm::makeArrayRef to ArrayRef deduction guides - llvm/ part
Use deduction guides instead of helper functions.
The only non-automatic changes have been:
1. ArrayRef(some_uint8_pointer, 0) needs to be changed into ArrayRef(some_uint8_pointer, (size_t)0) to avoid an ambiguous call with ArrayRef((uint8_t*), (uint8_t*)) 2. CVSymbol sym(makeArrayRef(symStorage)); needed to be rewritten as CVSymbol sym{ArrayRef(symStorage)}; otherwise the compiler is confused and thinks we have a (bad) function prototype. There was a few similar situation across the codebase. 3. ADL doesn't seem to work the same for deduction-guides and functions, so at some point the llvm namespace must be explicitly stated. 4. The "reference mode" of makeArrayRef(ArrayRef<T> &) that acts as no-op is not supported (a constructor cannot achieve that).
Per reviewers' comment, some useless makeArrayRef have been removed in the process.
This is a follow-up to https://reviews.llvm.org/D140896 that introduced the deduction guides.
Differential Revision: https://reviews.llvm.org/D140955
show more ...
|
#
6eb0b0a0 |
| 15-Dec-2022 |
Kazu Hirata <kazu@google.com> |
Don't include Optional.h
These files no longer use llvm::Optional.
|
#
29041bc0 |
| 10-Dec-2022 |
Krzysztof Parzyszek <kparzysz@quicinc.com> |
[APInt] Convert GetMostSignificantDifferentBit to std::optional
|
#
ea6ed399 |
| 08-Dec-2022 |
Krzysztof Parzyszek <kparzysz@quicinc.com> |
[SCEV] Convert Optional to std::optional
|
#
aadaafac |
| 03-Dec-2022 |
Kazu Hirata <kazu@google.com> |
[llvm] 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 ma
[llvm] 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.6, llvmorg-15.0.5, llvmorg-15.0.4 |
|
#
e35d50b7 |
| 23-Oct-2022 |
Simon Pilgrim <llvm-dev@redking.me.uk> |
[ADT] APInt.cpp - remove <cstring> duplicate. NFC.
This is already included in APInt.h
|
Revision tags: llvmorg-15.0.3, working, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init |
|
#
72a23cef |
| 01-Jul-2022 |
Xiang1 Zhang <xiang1.zhang@intel.com> |
[ISel] Match all bits when merge undefs for DAG combine
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D128570
|
#
64f44a90 |
| 01-Jul-2022 |
Xiang1 Zhang <xiang1.zhang@intel.com> |
Revert "[ISel] Match all bits when merge undef(s) for DAG combine"
This reverts commit 5fe5aa284efed1ee1492e1f266351b35f0a8bb69.
|
#
5fe5aa28 |
| 30-Jun-2022 |
Xiang1 Zhang <xiang1.zhang@intel.com> |
[ISel] Match all bits when merge undef(s) for DAG combine
|
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, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1 |
|
#
1feed669 |
| 06-Oct-2021 |
Jay Foad <jay.foad@amd.com> |
[APInt] Remove truncOrSelf, zextOrSelf and sextOrSelf
Differential Revision: https://reviews.llvm.org/D125559
|
#
6bec3e93 |
| 06-Oct-2021 |
Jay Foad <jay.foad@amd.com> |
[APInt] Remove all uses of zextOrSelf, sextOrSelf and truncOrSelf
Most clients only used these methods because they wanted to be able to extend or truncate to the same bit width (which is a no-op).
[APInt] Remove all uses of zextOrSelf, sextOrSelf and truncOrSelf
Most clients only used these methods because they wanted to be able to extend or truncate to the same bit width (which is a no-op). Now that the standard zext, sext and trunc allow this, there is no reason to use the OrSelf versions.
The OrSelf versions additionally have the strange behaviour of allowing extending to a *smaller* width, or truncating to a *larger* width, which are also treated as no-ops. A small amount of client code relied on this (ConstantRange::castOp and MicrosoftCXXNameMangler::mangleNumber) and needed rewriting.
Differential Revision: https://reviews.llvm.org/D125557
show more ...
|
#
169ae6db |
| 06-Oct-2021 |
Jay Foad <jay.foad@amd.com> |
[APInt] Allow extending and truncating to the same width
Allow zext, sext, trunc, truncUSat and truncSSat to extend or truncate to the same bit width, which is a no-op.
Disallowing this forced clie
[APInt] Allow extending and truncating to the same width
Allow zext, sext, trunc, truncUSat and truncSSat to extend or truncate to the same bit width, which is a no-op.
Disallowing this forced clients to use workarounds like using zextOrTrunc (even though they never wanted truncation) or zextOrSelf (even though they did not want its strange behaviour of allowing a *smaller* bit width, which is also treated as a no-op).
Differential Revision: https://reviews.llvm.org/D125556
show more ...
|
#
8cba7217 |
| 14-Mar-2022 |
Aaron Ballman <aaron@aaronballman.com> |
Implement literal suffixes for _BitInt
WG14 adopted N2775 (http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2775.pdf) at our Feb 2022 meeting. This paper adds a literal suffix for bit-precise types
Implement literal suffixes for _BitInt
WG14 adopted N2775 (http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2775.pdf) at our Feb 2022 meeting. This paper adds a literal suffix for bit-precise types that automatically sizes the bit-precise type to be the smallest possible legal _BitInt type that can represent the literal value. The suffix chosen is wb (for a signed bit-precise type) which can be combined with the u suffix (for an unsigned bit-precise type).
The preprocessor continues to operate as-if all integer types were intmax_t/uintmax_t, including bit-precise integer types. It is a constraint violation if the bit-precise literal is too large to fit within that type in the context of the preprocessor (when still using a pp-number preprocessing token), but it is not a constraint violation in other circumstances. This allows you to make bit-precise integer literals that are wider than what the preprocessor currently supports in order to initialize variables, etc.
show more ...
|
#
75e164f6 |
| 20-Jan-2022 |
serge-sans-paille <sguelton@redhat.com> |
[llvm] Cleanup header dependencies in ADT and Support
The cleanup was manual, but assisted by "include-what-you-use". It consists in
1. Removing unused forward declaration. No impact expected. 2. R
[llvm] Cleanup header dependencies in ADT and Support
The cleanup was manual, but assisted by "include-what-you-use". It consists in
1. Removing unused forward declaration. No impact expected. 2. Removing unused headers in .cpp files. No impact expected. 3. Removing unused headers in .h files. This removes implicit dependencies and is generally considered a good thing, but this may break downstream builds. I've updated llvm, clang, lld, lldb and mlir deps, and included a list of the modification in the second part of the commit. 4. Replacing header inclusion by forward declaration. This has the same impact as 3.
Notable changes:
- llvm/Support/TargetParser.h no longer includes llvm/Support/AArch64TargetParser.h nor llvm/Support/ARMTargetParser.h - llvm/Support/TypeSize.h no longer includes llvm/Support/WithColor.h - llvm/Support/YAMLTraits.h no longer includes llvm/Support/Regex.h - llvm/ADT/SmallVector.h no longer includes llvm/Support/MemAlloc.h nor llvm/Support/ErrorHandling.h
You may need to add some of these headers in your compilation units, if needs be.
As an hint to the impact of the cleanup, running
clang++ -E -Iinclude -I../llvm/include ../llvm/lib/Support/*.cpp -std=c++14 -fno-rtti -fno-exceptions | wc -l
before: 8000919 lines after: 7917500 lines
Reduced dependencies also helps incremental rebuilds and is more ccache friendly, something not shown by the above metric :-)
Discourse thread on the topic: https://llvm.discourse.group/t/include-what-you-use-include-cleanup/5831
show more ...
|
#
4c484f11 |
| 16-Nov-2021 |
River Riddle <riddleriver@gmail.com> |
[llvm] Add a SFINAE template parameter to DenseMapInfo
This allows for using SFINAE partial specialization for DenseMapInfo. In MLIR, this is particularly useful as it will allow for defining partia
[llvm] Add a SFINAE template parameter to DenseMapInfo
This allows for using SFINAE partial specialization for DenseMapInfo. In MLIR, this is particularly useful as it will allow for defining partial specializations that support all Attribute, Op, and Type classes without needing to specialize DenseMapInfo for each individual class.
Differential Revision: https://reviews.llvm.org/D113641
show more ...
|
#
492a4a42 |
| 16-Oct-2021 |
Nikita Popov <nikita.ppv@gmail.com> |
[APInt] Fix 1-bit edge case in smul_ov()
The sdiv used to check for overflow can itself overflow if the LHS is signed min and the RHS is -1. The code tried to account for this by also checking the c
[APInt] Fix 1-bit edge case in smul_ov()
The sdiv used to check for overflow can itself overflow if the LHS is signed min and the RHS is -1. The code tried to account for this by also checking the commuted version. However, for 1-bit values, signed min and -1 are the same value, so both divisions overflow. As such, the overflow for -1 * -1 was not detected (which results in -1 rather than 1 for 1-bit values). Fix this by explicitly checking for this case instead.
Noticed while adding exhaustive test coverage for smul_ov(), which is also part of this commit.
show more ...
|
#
ad37a45a |
| 06-Oct-2021 |
Chris Lattner <clattner@nondot.org> |
[APInt] Fix isAllOnes and extractBits for zero width values.
isAllOnes() should return true for zero bit values because there are no zeros in it.
Thanks to Jay Foad for pointing this out.
Differen
[APInt] Fix isAllOnes and extractBits for zero width values.
isAllOnes() should return true for zero bit values because there are no zeros in it.
Thanks to Jay Foad for pointing this out.
Differential Revision: https://reviews.llvm.org/D111241
show more ...
|
#
64eaffb6 |
| 05-Oct-2021 |
Nikita Popov <nikita.ppv@gmail.com> |
[APInt] Fix type limits warning (NFC)
Unsigned number is always >= 0.
|
#
cc697fc2 |
| 05-Oct-2021 |
Chris Lattner <clattner@nondot.org> |
[APInt] Make insertBits and concat work with zero width APInts.
These should both clearly work with our current model for zero width integers, but don't until now!
Differential Revision: https://re
[APInt] Make insertBits and concat work with zero width APInts.
These should both clearly work with our current model for zero width integers, but don't until now!
Differential Revision: https://reviews.llvm.org/D111113
show more ...
|
#
a9bceb2b |
| 30-Sep-2021 |
Jay Foad <jay.foad@amd.com> |
[APInt] Stop using soft-deprecated constructors and methods in llvm. NFC.
Stop using APInt constructors and methods that were soft-deprecated in D109483. This fixes all the uses I found in llvm, exc
[APInt] Stop using soft-deprecated constructors and methods in llvm. NFC.
Stop using APInt constructors and methods that were soft-deprecated in D109483. This fixes all the uses I found in llvm, except for the APInt unit tests which should still test the deprecated methods.
Differential Revision: https://reviews.llvm.org/D110807
show more ...
|