- Apr 01, 2022
-
-
Simon Pilgrim authored
As noticed on PR39174, if we're extracting a single non-constant bit index, then try to use BT+SETCC instead to avoid messing around moving the shift amount to the ECX register, using slow x86 shift ops etc. Recommitted with a fix to ensure we zext/trunc the SETCC result to the original type. Differential Revision: https://reviews.llvm.org/D122891
-
Dmitry Vyukov authored
Will be used in future changes. Reviewed By: melver Differential Revision: https://reviews.llvm.org/D122905
-
Dmitry Vyukov authored
Currently LoadedModule provides max_executable_address. Replace it with just max_address. It's only used for printing for human inspection and since modules are non-overlapping, max_address is as good as max_executable_address for matching addresses/PCs against modules (I assume it's used for that). On the hand, max_address is more general and can used to match e.g. data addresses. I want to use it for that purpose in future changes. Reviewed By: melver Differential Revision: https://reviews.llvm.org/D122906
-
zhijian authored
Summary: when run "llvm-ar cr" on AIX OS , it created a gnu archive, it is not desirable in aix OS. instead of creating a gnu archive, the patch will print a unsupport message for llvm-ar big archive write operation in AIX OS. after implement the big archive operation, I will revert the XFAIL: AIX " and "--format=gnu" test cases in the patch. Reviewer : James Henderson, Jinsong Ji Differential Revision: https://reviews.llvm.org/D122746
-
Florian Hahn authored
This reverts commit 14e3650f. The issue causing the revert were fixed independently in a08c90a4 and 14e5f978.
-
Simon Pilgrim authored
Investigating a sanitizer-windows buildbot breakage
-
Simon Pilgrim authored
[X86] lowerShuffleAsRepeatedMaskAndLanePermute - allow 64-bit sublane shuffling on AVX512BW v64i8 shuffles We were only performing this on 256-bit vectors on AVX2 targets Noticed while triaging Issue #54658
-
Simon Pilgrim authored
-
Simon Pilgrim authored
As noticed on PR39174, if we're extracting a single non-constant bit index, then try to use BT+SETCC instead to avoid messing around moving the shift amount to the ECX register, using slow x86 shift ops etc. Differential Revision: https://reviews.llvm.org/D122891
-
Yitzhak Mandelbaum authored
Currently, the framework does not track derived class access to base fields. This patch adds that support and a corresponding test. Differential Revision: https://reviews.llvm.org/D122273
-
Martin Sebor authored
Taken from D122686.
-
Aaron Ballman authored
-
Nikita Popov authored
-
Florian Hahn authored
This was exposed by 14e3650f. The recommit of 14e3650f will hit the problematic code path requiring the workaround. test case that crashes without the workaround.
-
Joseph Huber authored
Summary: Currently there is no option to configure the number of thin-backend threads to use when performing thin-lto on the device, but we should default to use all the threads rather than just one. In the future we should use the same arguments that gold / lld use and parse it here.
-
Matthias Springer authored
Differential Revision: https://reviews.llvm.org/D122901
-
Sanjay Patel authored
This is another family of patterns based on issue #49541
-
Mikhail Goncharov authored
-
Kadir Cetinkaya authored
Differential Revision: https://reviews.llvm.org/D122894
-
Nathan Sidwell authored
Move node matcher compilation test to non-anonymous namespace and avoid using attribute.
-
Jay Foad authored
Previously any load (global, local or constant) feeding into a global load or store would be counted as an indirect access. This patch only counts global loads feeding into a global load or store. The rationale is that the latency for global loads is generally much larger than the other kinds. As a side effect this makes it easier to write small kernels test cases that are not counted as having indirect accesses, despite the fact that arguments to the kernel are accessed with an SMEM load. Differential Revision: https://reviews.llvm.org/D122804
-
Florian Hahn authored
During skeleton construction for the epilogue vector loop, generic helpers use getOrCreateTripCount, which will re-expand the trip count computation. Instead, re-use the TripCount created during main loop vectorization.
-
Nathan Sidwell authored
* Add instantiation tests to ItaniumDemangleTest, to make sure all match functions provide constructor arguments to the provided functor. * Fix the Node constructors that lost const qualification on arguments. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D122665
-
Groverkss authored
This patch modifies the name "integerRelations" and "relation" to refer to the disjuncts in PresburgerRelation to "disjunct(s)". This is done to be consistent with the rest of the interface. Reviewed By: arjunp Differential Revision: https://reviews.llvm.org/D122892
-
Nathan Sidwell authored
In order to add a unit test, we need to expose the node names beyond ItaniumDemangle.h. This breaks them out into a def file. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D122739
-
Gabor Marton authored
Do import the definition of objects from a foreign translation unit if that's type is const and trivial. Differential Revision: https://reviews.llvm.org/D122805
-
Dmitry Preobrazhensky authored
-
Arjun P authored
Previously, when an input set had a duplicate division, the duplicates might be removed by a call to mergeLocalIds due to being detected as being duplicate for the first time. The subtraction implementation cannot handle existing locals being removed, so this would lead to unexpected behaviour. Resolve this by removing all the duplicates up front. Reviewed By: Groverkss Differential Revision: https://reviews.llvm.org/D122826
-
Nikita Popov authored
Not all types that can appear in arguments can be bitcasts -- in particular, bitcasts do not support struct types.
-
Xiang1 Zhang authored
Reviewed By: LuoYuanke Differential Revision: https://reviews.llvm.org/D122890
-
Michał Górny authored
Update the hardware CRC32 logic in scudo to support using `-mcrc32` instead of `-msse4.2`. The CRC32 intrinsics use the former flag in the newer compiler versions, e.g. in clang since 12fa608a. With these versions of clang, passing `-msse4.2` is insufficient to enable the instructions and causes build failures when `-march` does not enable CRC32 implicitly: /var/tmp/portage/sys-libs/compiler-rt-sanitizers-14.0.0/work/compiler-rt/lib/scudo/scudo_crc32.cpp:20:10: error: always_inline function '_mm_crc32_u32' requires target feature 'crc32', but would be inlined into function 'computeHardwareCRC32' that is compiled without support for 'crc32' return CRC32_INTRINSIC(Crc, Data); ^ /var/tmp/portage/sys-libs/compiler-rt-sanitizers-14.0.0/work/compiler-rt/lib/scudo/scudo_crc32.h:27:27: note: expanded from macro 'CRC32_INTRINSIC' # define CRC32_INTRINSIC FIRST_32_SECOND_64(_mm_crc32_u32, _mm_crc32_u64) ^ /var/tmp/portage/sys-libs/compiler-rt-sanitizers-14.0.0/work/compiler-rt/lib/scudo/../sanitizer_common/sanitizer_platform.h:132:36: note: expanded from macro 'FIRST_32_SECOND_64' # define FIRST_32_SECOND_64(a, b) (a) ^ 1 error generated. For backwards compatibility, use `-mcrc32` when available and fall back to `-msse4.2`. The `<smmintrin.h>` header remains in use as it still works and is compatible with GCC, while clang's `<crc32intrin.h>` is not. Use __builtin_ia32*() rather than _mm_crc32*() when using `-mcrc32` to preserve compatibility with GCC. _mm_crc32*() are aliases to __builtin_ia32*() in both compilers but GCC requires `-msse4.2` for the former, while both use `-mcrc32` for the latter. Originally reported in https://bugs.gentoo.org/835870. Differential Revision: https://reviews.llvm.org/D122789
-
Arjun P authored
LexSimplex cannot be made to support symbols for symbolic lexmin; this requires a second class. In preparation for upstreaming support for symbolic lexmin, keep the part of LexSimplex that are specific to non-symbolic lexmin in LexSimplex and move the parts that are required to a common class LexSimplexBase for both to inherit from. Reviewed By: Groverkss Differential Revision: https://reviews.llvm.org/D122828
-
Simon Pilgrim authored
Avoids repeating all the extension/legalization wrappers in every use
-
Nikita Popov authored
If the frame pointer is an argument of the original pointer (which happens with opaque pointers), then we currently first replace the argument with undef, which will prevent later replacement of the old frame pointer with the new one. Fix this by replacing arguments with some dummy instructions first, and then replacing those with undef later. This gives us a chance to replace the frame pointer before it becomes undef. Fixes https://github.com/llvm/llvm-project/issues/54523. Differential Revision: https://reviews.llvm.org/D122375
-
Nikita Popov authored
-
Simon Pilgrim authored
Revert rGff2d1bb2 "[X86] Add getBT helper node for attempting to create a X86ISD::BT node" Typo means that this doesn't return a value in all cases.
-
Martin Sebor authored
-
Simon Pilgrim authored
Avoids repeating all the extension/legalization wrapper in every use
-
Alexandros Lamprineas authored
This isn't expected to reduce compilation times as 'max-iters' is set to one by default, but it helps with recursive functions that require higher iteration counts. Differential Revision: https://reviews.llvm.org/D122819
-
Simon Pilgrim authored
[X86] lowerV8I16Shuffle - use explicit SmallVector<SDValue, 4> width to avoid MSVC AVX alignment bug As discussed on Issue #54645 - building llc with /AVX can result in incorrectly aligned structs
-