- Mar 18, 2021
-
-
Mehdi Amini authored
This reverts commit 6b053c98. The build is broken: ld.lld: error: undefined symbol: llvm::VPlan::printDOT(llvm::raw_ostream&) const >>> referenced by LoopVectorize.cpp >>> LoopVectorize.cpp.o:(llvm::LoopVectorizationPlanner::printPlans(llvm::raw_ostream&)) in archive lib/libLLVMVectorize.a
-
Andrei Elovikov authored
I foresee two uses for this: 1) It's easier to use those in debugger. 2) Once we start implementing more VPlan-to-VPlan transformations (especially inner loop massaging stuff), using the vectorized LLVM IR as CHECK targets in LIT test would become too obscure. I can imagine that we'd want to CHECK against VPlan dumps after multiple transformations instead. That would be easier with plain text dumps than with DOT format. Reviewed By: fhahn Differential Revision: https://reviews.llvm.org/D96628
-
Thomas Lively authored
Updates the names (e.g. widen => extend, saturate => sat) and opcodes of all SIMD instructions to match the finalized SIMD spec. Deliberately does not change the public interface in wasm_simd128.h yet; that will require more care. Depends on D98466. Differential Revision: https://reviews.llvm.org/D98676
-
Thomas Lively authored
Removes the instruction definitions, intrinsics, and builtins for qfma/qfms, signselect, and prefetch instructions, which were not included in the final WebAssembly SIMD spec. Depends on D98457. Differential Revision: https://reviews.llvm.org/D98466
-
Kristof Beyls authored
This documents current regular LLVM sync-ups that are happening in the Getting Involved section. I hope this gives a bit more visibility to regular sync-ups that are happening in the LLVM community, documenting another way communication in the community happens. Of course the downside is that this is another location that sync-up metadata needs to be maintained. That being said, the structure as proposed means that no changes are needed once a new sync-up is added, apart from maybe removing the entry once it becomes clear that that particular sync-up series is completely cancelled. Documenting a few pointers on how current sync-ups happen may also encourage others to organize useful sync-ups on specific topics. I've started with adding the sync-ups I'm aware of. There's a good chance I've missed some. If most sync-ups end up having a public google calendar, we could also create and maintain a public google calendar that shows all events happening in the LLVM community, including dev meetings, sync-ups, socials, etc - assuming that would be valuable. Differential Revision: https://reviews.llvm.org/D98797
-
Thomas Lively authored
Now that the WebAssembly SIMD specification is finalized and engines are generally up-to-date, there is no need for a separate target feature for gating SIMD instructions that engines have not implemented. With this change, v128.const is now enabled by default with the simd128 target feature. Differential Revision: https://reviews.llvm.org/D98457
-
Peter Waller authored
Seemingly striaghtforward. Differential Revision: https://reviews.llvm.org/D98434
-
Stanislav Mekhanoshin authored
Differential Revision: https://reviews.llvm.org/D98731
-
Wei Mi authored
value profile annotated after inlining. In https://reviews.llvm.org/D96806 and https://reviews.llvm.org/D97350, we use the magic number -1 in the value profile to avoid repeated indirect call promotion to the same target for an indirect call. Function updateIDTMetaData is used to mark an target as being promoted in the value profile with the magic number. updateIDTMetaData is also used to update the value profile when an indirect call is inlined and new inline instance profile should be applied. For the second case, currently updateIDTMetaData mixes up the existing value profile of the indirect call with the new profile, leading to the problematic senario that a target count is larger than the total count in the value profile. The patch fixes the problem. When updateIDTMetaData is used to update the value profile after inlining, all the values in the existing value profile will be dropped except the values with the magic number counts. Differential Revision: https://reviews.llvm.org/D98835
-
Mircea Trofin authored
This reverts commit 11b70b9e. The bot failure was due to ArgumentPromotion deleting functions without deleting their analyses. This was separately fixed in 4b1c8070.
-
Mircea Trofin authored
Not doing it here can lead to subtle bugs - the analysis results are associated by the Function object's address. Nothing stops the memory allocator from allocating new functions at the same address.
-
Mike Rice authored
Added basic parsing/sema/serialization support to extend the existing 'destroy' clause for use with the 'interop' directive. Differential Revision: https://reviews.llvm.org/D98834
-
Chris Lattner authored
Valgrind is reporting this bogus warning because it doesn't model pthread_sigmask fully accurately. This is a valgrind bug, but silencing it has effectively no cost, so just do it. ==73662== Syscall param __pthread_sigmask(set) points to uninitialised byte(s) ==73662== at 0x101E9D4C2: __pthread_sigmask (in /usr/lib/system/libsystem_kernel.dylib) ==73662== by 0x101EFB5EA: pthread_sigmask (in /usr/lib/system/libsystem_pthread.dylib) ==73662== by 0x1000D9F6D: llvm::sys::Process::SafelyCloseFileDescriptor(int) (in /Users/chrisl/Projects/circt/build/bin/firtool) ==73662== by 0x100072795: llvm::ErrorOr<std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> > > getFileAux<llvm::MemoryBuffer>(llvm::Twine const&, long long, unsigned long long, unsigned long long, bool, bool) (in /Users/chrisl/Projects/circt/build/bin/firtool) ==73662== by 0x100072573: llvm::MemoryBuffer::getFileOrSTDIN(llvm::Twine const&, long long, bool) (in /Users/chrisl/Projects/circt/build/bin/firtool) ==73662== by 0x100282C25: mlir::openInputFile(llvm::StringRef, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) (in /Users/chrisl/Projects/circt/build/bin Differential Revision: https://reviews.llvm.org/D98830
-
Stanislav Mekhanoshin authored
Differential Revision: https://reviews.llvm.org/D98804
-
Jon Chesterfield authored
[amdgpu] Update med3 combine to skip i64 Fixes an assumption that a type which is not i32 will be i16. This asserts when trying to sign/zero extend an i64 to i32. Test case was cut down from an openmp application. Variations on it are hit by other combines before reaching the problematic one, e.g. replacing the immediate values with other function arguments changes the codegen path and misses this combine. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D98872
-
Nigel Perks authored
The pass can be seen on staging buildbot clang-xcore-ubuntu-20-x64. Differential Revision: https://reviews.llvm.org/D98352
-
Simon Pilgrim authored
Extend this to support ComputeNumSignBits of the (used) source vector elements so that we can handle more than just the case where we're sext_in_reg from the source element signbit. Noticed while investigating the poor codegen in D98587.
-
Sid Manning authored
Allow inline assembly code to referece cs0 and cs1.
-
LLVM GN Syncbot authored
-
Andrew Savonichev authored
Delay the issue of a new instruction if that leads to out-of-order commits of writes. This patch fixes the problem described in: https://bugs.llvm.org/show_bug.cgi?id=41796#c3 Differential Revision: https://reviews.llvm.org/D98604
-
Jay Foad authored
-
Simon Pilgrim authored
-
Matt Arsenault authored
Pass through the original argument IR value in order to preserve the aliasing information in the memcpy memory operands.
-
Matt Arsenault authored
byval requires an implicit copy between the caller and callee such that the callee may write into the stack area without it modifying the value in the parent. Previously, this was passing through the raw pointer value which would break if the callee wrote into it. Most of the time, this copy can be optimized out (however we don't have the optimization SelectionDAG does yet). This will trigger more fallbacks for AMDGPU now, since we don't have legalization for memcpy yet (although we should stop using byval anyway).
-
Alexey Bataev authored
If SLP vectorizer tries to extend the scheduling region and runs out of the budget too early, but still extends the region to the new ending instructions (i.e., it was able to extend the region for the first instruction in the bundle, but not for the second), the compiler need to recalculate dependecies in full, just like if the extending was successfull. Without it, the schedule data chunks may end up with the wrong number of (unscheduled) dependecies and it may end up with the incorrect function, where the vectorized instruction does not dominate on the extractelement instruction. Differential Revision: https://reviews.llvm.org/D98531
-
Alexey Lapshin authored
This patch is follow-up for D91028. It implements direct writing into the output stream for wasm. Depends on D91028 Differential Revision: https://reviews.llvm.org/D95478
-
Max Kazantsev authored
-
Max Kazantsev authored
Just makes code simpler.
-
Max Kazantsev authored
Provides API that allows to check predicate for being true or false with one call. Current implementation is naive and just calls isKnownPredicate twice, but further we can rework this logic trying to use one check to prove both facts.
-
Thomas Preud'homme authored
LLVM test CodeGen/AArch64/machine-outliner-retaddr-sign-thunk.ll uses a string substitution block that contains a regex matching block. This seems like as a copy/paste from other similar test where the match also defines a variable, hence the [[]] syntax. In this case however this is a CHECK-NOT variable so nothing should match. No variable definition is thus expected and the square brackets can be dropped. Reviewed By: chill Differential Revision: https://reviews.llvm.org/D98853
-
Sanjay Patel authored
This makes the induction part of the loop vectorizer match the reduction part. We do not need all of the fast-math-flags. For example, there are some that clearly are not in play like arcp or afn. If we want to make FMF constraints consistent across the IR optimizer, we might want to add nsz too, but that's up for debate (users can't expect associative FP math and preservation of sign-of-zero at the same time?). The calling code was fixed to avoid miscompiles with: 1bee5497 Differential Revision: https://reviews.llvm.org/D98708
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
Alexey Lapshin authored
This patch removes creation of the resulting file from the executeObjcopyOnBinary() function. For the most use cases, the executeObjcopyOnBinary receives output file as a parameter - raw_ostream &Out. The splitting .dwo file is implemented differently: file containg .dwo tables is created inside executeObjcopyOnBinary(). When objcopy functionality would be moved into separate library, current implementation will become inconvenient. The goal of that refactoring is to separate concerns: It might be convenient to to do dwo tables splitting but to create resulting file differently. Differential Revision: https://reviews.llvm.org/D98582
-
Simon Pilgrim authored
Add ISD::ABS to the existing unary instructions handling for splat detection This is similar to D83605, but doesn't appear to need to touch any of the wasm refactoring. Differential Revision: https://reviews.llvm.org/D98778
-
Fraser Cormack authored
This patch adds support for masked scatter intrinsics on scalable vector types. It is mostly an extension of the earlier masked gather support introduced in D96263, since the addressing mode legalization is the same. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D96486
-
Nigel Perks authored
The XCore backend does not support object emission. Several tests fail for this reason when XCore is the default target. See staging buildbot builder: clang-xcore-ubuntu-20-x64. So check for backend object emission before running the tests requiring it. Incorporate isConfigurationSupported functionality in isObjectEmissionSupported, to avoid calling them both in the same tests. Differential Revision: https://reviews.llvm.org/D98400
-
Fraser Cormack authored
This patch supports the masked gather intrinsics in RVV. The RVV indexed load/store instructions only support the "unsigned unscaled" addressing mode; indices are implicitly zero-extended or truncated to XLEN and are treated as byte offsets. This ISA supports the intrinsics directly, but not the majority of various forms of the MGATHER SDNode that LLVM combines to. Any signed or scaled indexing is extended to the XLEN value type and scaled accordingly. This is done during DAG combining as widening the index types to XLEN may produce illegal vectors that require splitting, e.g. nxv16i8->nxv16i64. Support for scalable-vector CONCAT_VECTORS was added to avoid spilling via the stack when lowering split legalized index operands. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D96263
-
Wang, Pengfei authored
-
Bing1 Yu authored
-