- Feb 22, 2023
-
-
Nikolas Klauser authored
Reviewed By: Mordante, #libc Spies: arichardson, libcxx-commits Differential Revision: https://reviews.llvm.org/D144259
-
Daniel Woodworth authored
SimplifyCFG currently drops !nontemporal metadata when sinking common instructions. With this change, SimplifyCFG and similar transforms will preserve !nontemporal metadata as long as it is set on both original instructions. Differential Revision: https://reviews.llvm.org/D144298
-
Vladislav Khmelevsky authored
Use proper relocation for aarch64 Differential Revision: https://reviews.llvm.org/D144095
-
LLVM GN Syncbot authored
-
Piyou Chen authored
RISC-V vector instruction has register overlapping constraint for certain instructions, and will cause illegal instruction trap if violated, we use early clobber to model this constraint, but it can't prevent register allocator allocated same or overlapped if the input register is undef value, so convert IMPLICIT_DEF to temporary pseudo could prevent that happen, it's not best way to resolve this. Ideally we should model the constraint right, but before we model the constraint right, it's the approach to prevent that happen. See also: https://github.com/llvm/llvm-project/issues/50157 Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D129735
-
David Green authored
Just like with integers, we can treat zero fp buildvector as legal so that they can be recognized in tablegen patterns using immAllZerosV.
-
Sjoerd Meijer authored
The instruction regexp "^INSv" for the insert gen-reg-to-element was also matching the element-to-element instruction, which only has a latency of 2 and not 5, so we were getting that wrong. Differential Revision: https://reviews.llvm.org/D144508
-
LLVM GN Syncbot authored
-
Manolis Tsamis authored
The vendor-defined XTheadSync (no comparable standard extension exists at the time of writing) extension adds multi-core synchronization instructions. It is supported by the C9xx cores (e.g., found in the wild in the Allwinner D1) by Alibaba T-Head. The current (as of this commit) public documentation for this extension is available at: https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.2.2/xthead-2023-01-30-2.2.2.pdf Support for these instructions has already landed in GNU Binutils: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=547c18d9bb95571261dbd17f4767194037eb82bd Depends on D144496 Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D144501
-
Luke Lau authored
It's less clear with scalable vectors than fixed length vectors that interleaving exposes more ILP, as scalable vectors can be thought of a sort of hardware form of interleaving, especially with larger LMULs. This also addresses the unexpected additional unrolling that occurs when using larger LMULs in the loop vectorizer. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D144485
-
Luke Lau authored
In order to allow targets to disable interleaving for scalable vectors, pass the entire VF's ElementCount to getMaxInterleaveFactor. This is based off of the approach used here: https://repo.hca.bsc.es/gitlab/rferrer/llvm-epi/-/commit/8d36708507b3c378078b9fe364bc548354aaec86 The plan would then be to disable interleaving on scalable VFs on RISC-V in a follow up patch. See https://reviews.llvm.org/D143723#4132349 Reviewed By: reames Differential Revision: https://reviews.llvm.org/D144474
-
Samuel Parker authored
Reverse the operand ordering to ? rhs : lhs. Differential Revision: https://reviews.llvm.org/D144466
-
Manolis Tsamis authored
The vendor-defined XTHeadCmo (there are some similarities with the Zicbom standard extension) extension adds cache management instructions. It is supported by the C9xx cores (e.g., found in the wild in the Allwinner D1) by Alibaba T-Head. The current (as of this commit) public documentation for this extension is available at: https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.2.2/xthead-2023-01-30-2.2.2.pdf Support for these instructions has already landed in GNU Binutils: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=a9ba8bc2d396fb8ae2b892f3bc6be8cdfe4b555c Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D144496
-
Denis Revunov authored
Avoid replacing one adr instruction with two adrp+add by utilizing linker-provided nops when they are present. By doing so we preserve relative offsets of next instructions in a function which reduces chances to break undetected jump tables. This commit makes release-mode lld-linked clang, lld and etc work after BOLT. Reviewed By: rafauler, yota9 Differential Revision: https://reviews.llvm.org/D143887
-
Nikita Popov authored
There doesn't appear to be any reason why this attribute is inferred separately from other ones that use AttributeInferer.
-
Matthias Springer authored
This callback is triggered by `finalizeRootUpdate`. This allows listeners to listen for in-place op modifications without creating a new RewriterBase subclass. Differential Revision: https://reviews.llvm.org/D143380
-
Matthias Springer authored
These functions will be used in a subsequent change. Also some minor refactoring. Differential Revision: https://reviews.llvm.org/D143909
-
Matthias Springer authored
Allow an optional `RewriterBase::Listener` to be attached to greedy pattern rewrites, so that clients can listen for IR modifications. Differential Revision: https://reviews.llvm.org/D143340
-
Michael Platings authored
The functionality in MultilibSet for creating it is tied to its current implementation. Putting that code in a separate class is an enabler for changing the MultilibSet implementation. Differential Revision: https://reviews.llvm.org/D142893
-
Michael Platings authored
Specifying --sysroot prevents libclang_rt from being located in standard library directories. Differential Revision: https://reviews.llvm.org/D144542
-
Ricardo Jesus authored
This partially reverts a regression introduced in 8f25e382 for AArch64 targets. In particular, we restore the logic of `(abs (sub nsw x, y)) -> abds(x, y)` for all targets except X86, which keeps the logic introduced in 8f25e382. See also https://reviews.llvm.org/D142288. Differential Revision: https://reviews.llvm.org/D144379
-
Haojian Wu authored
Fixes https://github.com/llvm/llvm-project/issues/60722. Differential Revision: https://reviews.llvm.org/D144054
-
Michael Liao authored
- That saves the overhead of operand type querying.
-
Liming Liu authored
This patch includes the commit 01adf96e and a fix of unhandled declaration references. When looking up base classes, Clang first checks whether a base class is a template and takes the specialized template based on it. However, the base class might be instantiated, and the above behavior can lose information. This patch fixes the problem by first checking whether a base class is a record declaration, so the instantiated one will be taken. Differential Revision: https://reviews.llvm.org/D143840
-
Nikita Popov authored
Use hasAttrSomewhere() and directly return Argument from the helper.
-
Matthias Springer authored
``` OpBuilder OpBuilder::Listener ^ ^ | | RewriterBase RewriterBase::Listener ``` * Clients can listen to IR modifications with `RewriterBase::Listener`. * `RewriterBase` no longer inherits from `OpBuilder::Listener`. * Only a single listener can be registered at the moment (same as `OpBuilder`). RFC: https://discourse.llvm.org/t/rfc-listeners-for-rewriterbase/68198 Differential Revision: https://reviews.llvm.org/D143339 -
Jean Perier authored
This runtime API can be used to lower any flavor of array constructors, but is mainly intended to be used with: - array constructors for which the extent or length parameters cannot be computed without lowering some ac-value or ac-implied-do-control that cannot be pre-evaluated. - array constructors of a derived type with allocatable component where copy is not trivial or PDTS. Example of use cases: - `[((i+j,i=1, ifoo()), j=1,n)]` where ifoo() is not pure. - `[return_allocatable_array(), return_allocatable_array()]` Differential Revision: https://reviews.llvm.org/D144411
-
Shengchen Kan authored
-
Nikita Popov authored
This reverts commit 2e416cdd. Breaks the GCC build: In file included from /home/npopov/repos/llvm-project/llvm/include/llvm/ADT/FloatingPointMode.h:18, from /home/npopov/repos/llvm-project/llvm/include/llvm/ADT/APFloat.h:20, from /home/npopov/repos/llvm-project/llvm/lib/Support/APFloat.cpp:14: /home/npopov/repos/llvm-project/llvm/include/llvm/ADT/BitmaskEnum.h:66:22: error: extra qualification not allowed [-fpermissive] 66 | template <> struct llvm::is_bitmask_enum<Enum> : std::true_type {}; \ | ^~~~ /home/npopov/repos/llvm-project/llvm/include/llvm/ADT/FloatingPointMode.h:223:1: note: in expansion of macro ‘LLVM_DECLARE_ENUM_AS_BITMASK’ 223 | LLVM_DECLARE_ENUM_AS_BITMASK(FPClassTest, /* LargestValue */ fcPosInf); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/npopov/repos/llvm-project/llvm/include/llvm/ADT/BitmaskEnum.h:67:22: error: extra qualification not allowed [-fpermissive] 67 | template <> struct llvm::largest_bitmask_enum_bit<Enum> { \ | ^~~~ /home/npopov/repos/llvm-project/llvm/include/llvm/ADT/FloatingPointMode.h:223:1: note: in expansion of macro ‘LLVM_DECLARE_ENUM_AS_BITMASK’ 223 | LLVM_DECLARE_ENUM_AS_BITMASK(FPClassTest, /* LargestValue */ fcPosInf); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ [43/4396] Building CXX object lib/Supp...iles/LLVMSupport.dir/CommandLine.cpp.o
-
Michael Platings authored
If clang is part of a toolchain that can locate clang_rt libraries outside its resource directory and these are built with LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON then the tests would fail because the library names don't have the arch suffix. This change makes the arch suffix optional. Differential Revision: https://reviews.llvm.org/D143666
-
Serge Pavlov authored
With this change bitwise operations are allowed for FPClassTest enumeration, it must simplify using this type. Also some functions changed to get argument of type FPClassTest instead of unsigned. Differential Revision: https://reviews.llvm.org/D144241
-
Diego Caballero authored
This patch adds support for masked vector.contract ops that needs to be decomposed using the ContractionOpLowering pattern. It just slices the mask according to the rest of the lowering. Reviewed By: ThomasRaoux Differential Revision: https://reviews.llvm.org/D144427
-
Diego Caballero authored
This patch adds support for folding trivial masked reductions and multi-reductions (e.g., multi-reductions with only parallel dims, reductions of a single element, etc.). To support those foldings in a composable way we also add support for folding different flavors of empty vector.mask opertions. Reviewed By: ThomasRaoux Differential Revision: https://reviews.llvm.org/D144414
-
Quinn Dawkins authored
The pack/unpack propagation patterns currently assume all map results for non-scalar arguments are AffineDimExprs, leading to crashes when the input operand being packed has constant expressions. Differential Revision: https://reviews.llvm.org/D144443
-
Kai Sasaki authored
Foo analysis for testing the data flow analysis does not support the region without any block. Although that analysis is assumed to be used for testing purpose, it is generally better to be explicit about the scope the framework supports. The original issue was reported here. https://github.com/llvm/llvm-project/issues/60580 Reviewed By: springerm Differential Revision: https://reviews.llvm.org/D144359
-
Shengchen Kan authored
Neither the switch in A nor the switch in B is fully covered, so we don't need write an impossible format there.
-
Petr Hosek authored
These have the same purposes but two different implementations. llvm_check_compiler_linker_flag uses CMAKE_REQUIRED_FLAGS which affects flags used both for compilation and linking which is problematic because some flags may be link-only and trigger unused argument warning when set during compilation. llvm_check_linker_flag does not have this issue so we chose it as the prevailaing implementation. Differential Revision: https://reviews.llvm.org/D143052
-
Lang Hames authored
Forwards to ExecutorProcessControl::getTargetTriple, and saves clients the trouble of spelling 'getExecutorProcessControl()' everywhere.
-
Slava Zakharin authored
We used to specify benefit=0 for MathToLibm patterns so that MathToLLVM patterns are more preferable. D144450 removed the benefit parameter, so we have to run MathToLLVM separately now. This resolves Intrinsics/math-codegen failure caused by D144450. Differential Revision: https://reviews.llvm.org/D144523
-
Vitaly Buka authored
Otherwise NFC.
-