- Sep 21, 2021
-
-
Andy Wingo authored
Strip a layer of parentheses in TreeTransform::RebuildQualifiedType. Differential Revision: https://reviews.llvm.org/D108359
-
David Green authored
-
Nicolas Vasilache authored
It was previously assumed that tensor.insert_slice should be bufferized first in a greedy fashion to avoid out-of-place bufferization of the large tensor. This heuristic does not hold upon further inspection. This CL removes the special handling of such ops and adds a test that exhibits better behavior and appears in real use cases. The only test adversely affected is an artificial test which results in a returned memref: this pattern is not allowed by comprehensive bufferization in real scenarios anyway and the offending test is deleted. Differential Revision: https://reviews.llvm.org/D110072
-
Nicolas Vasilache authored
Previously, comprehensive bufferize would consider all aliasing reads and writes to the result buffer and matching operand. This resulted in spurious dependences being considered and resulted in too many unnecessary copies. Instead, this revision revisits the gathering of read and write alias sets. This results in fewer alloc and copies. An exhaustive test cases is added that considers all possible permutations of `matmul(extract_slice(fill), extract_slice(fill), ...)`.
-
Tobias Gysi authored
Assert the tile loop nest invariants are satisfied instead of failing silently. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D110137
-
Chris Bieneman authored
This patch replaces reliance on `goto failure` pattern with `llvm::scope_exit`. Reviewed By: bkramer Differential Revision: https://reviews.llvm.org/D109865
-
Ben Shi authored
Optimize (add (mul x, c0), c1) -> (ADDI (MUL (ADDI, c1/c0), c0), c1%c0), if c1/c0 and c1%c0 are simm12, while c1 is not. Optimize (add (mul x, c0), c1) -> (MUL (ADDI, c1/c0), c0), if c1%c0 is zero, and c1/c0 is simm12 while c1 is not. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D108607
-
Justas Janickas authored
Helper function `getDefaultOpenCLPointeeAddrSpace()` introduced to `ASTContext` class. It returns default OpenCL address space depending on language version and enabled features. If generic address space is supported, the helper function returns value `LangAS::opencl_generic`. Otherwise, value `LangAS::opencl_private` is returned. Code refactoring changes performed in several suitable places. Differential Revision: https://reviews.llvm.org/D109874
-
Anna Thomas authored
This patch allows sinking an instruction which can have multiple uses in a single user. We were previously over-restrictive by looking for exactly one use, rather than one user. Also added an API for retrieving a unique undroppable user. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D109700
-
Saiyedul Islam authored
Add documentation of unbundling of heterogeneous device archives to create device specific archives, as introduced by D93525. Also, add documentation for supported text file formats. Reviewed By: yaxunl Differential Revision: https://reviews.llvm.org/D110083
-
OGINO Masanori authored
The updated list is based on the output of cmake -G Ninja -S llvm -B build -DLLVM_ENABLE_PROJECTS='foo'. Differential Revision: https://reviews.llvm.org/D110124
-
Sanjay Patel authored
-
Dmitry Preobrazhensky authored
Differential Revision: https://reviews.llvm.org/D109614
-
hyeongyu kim authored
One of the two inputs of the Shufflevector is often a placeholder. Previously, there were cases where the placeholder was undef, and there were cases where it was poison. I added these constructors to create a placeholder consistently. Changing to use the newly added constructor will be written in a separate patch. Reviewed By: spatel Differential Revision: https://reviews.llvm.org/D110146
-
Nico Weber authored
-
Jonas Paulsson authored
SystemZ adds the EXRL target instructions in the end of each file. This must be done before debug info emission since that may end the text section, and therefore this is now done in emitConstantPools() (instead of in emitEndOfAsmFile). Review: Ulrich Weigand Differential Revision: https://reviews.llvm.org/D109513
-
Florian Hahn authored
-
Nicholas Guy authored
Enables the FuseAddress feature in the Cortex-A55 scheduling model Differential Revision: https://reviews.llvm.org/D109323
-
Simon Pilgrim authored
If getAggregateElement() returns null for any element, early out as otherwise we will assert when creating a new constant vector Fixes PR51824 + ; OSS-Fuzz: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38057
-
Simon Pilgrim authored
Avoid unnecessary copies, reported by MSVC static analyzer.
-
Simon Pilgrim authored
Avoid unnecessary copies, reported by MSVC static analyzer.
-
Simon Pilgrim authored
Reported by MSVC static analyzer.
-
Dmitry Vyukov authored
Currently we set thr->tctx after OnStarted callback taking thread registry mutex again and searching for the context. But OnStarted already runs under the thread registry mutex and has access to the context, so set it in the OnStarted. This makes code simpler and faster. Depends on D110132. Reviewed By: melver Differential Revision: https://reviews.llvm.org/D110133
-
Dmitry Vyukov authored
Thread state functions are split into 2 parts: tsan entry function (e.g. ThreadStart) and thread registry state change callback (e.g. OnStart). Currently these pairs of functions are located far from each other and in reverse order. This makes it hard to read and follow the logic. Reorder the code so that OnFoo directly follows ThreadFoo. No other code changes. Reviewed By: melver Differential Revision: https://reviews.llvm.org/D110132
-
Dmitry Vyukov authored
Some of the DPrintf's currently produce -Wformat warnings if enabled. Fix these format strings. Reviewed By: melver Differential Revision: https://reviews.llvm.org/D110131
-
Jay Foad authored
FMA_W_CHAIN is used when lowering fdiv f32. Prefer to select it to fmac if there are no source modifiers, just like we do for other mad/mac and fma/fmac cases. Differential Revision: https://reviews.llvm.org/D110074
-
Jay Foad authored
v_fmac with source modifiers forces VOP3 encoding, but it is strictly better to use the VOP3-only v_fma instead, because $dst and $src2 are not tied so it gives the register allocator more freedom and avoids a copy in some cases. This is the same strategy we already use for v_mad vs v_mac and v_fma_legacy vs v_fmac_legacy. Differential Revision: https://reviews.llvm.org/D110070
-
David Green authored
-
Max Kazantsev authored
This is what is supposed to be there.
-
Petar Avramovic authored
Add generic helper function that matches constant splat. It has option to match constant splat with undef (some elements can be undef but not all). Add util function and matcher for G_FCONSTANT splat. Differential Revision: https://reviews.llvm.org/D104410
-
Max Kazantsev authored
The logic in howManyLessThans is fishy. It first checks invariance of RHS, and then uses OrigRHS as argument for isLoopEntryGuardedByCond, which is, strictly saying, a different thing. We are seeing a very rare intermittent failure of availability checks, and it looks like this precondition is sometimes broken. Before we can figure out what's going on, adding asserts that all involved values that may possibly to to isLoopEntryGuardedByCond are available at loop entry. If either of these asserts fails (OrigRHS is the most likely suspect), it means that the logic here is flawed.
-
David Stenberg authored
This fixes PR51730, a heap-use-after-free bug in replaceConditionalBranchesOnConstant(). With the attached reproducer we were left with a function looking something like this after replaceAndRecursivelySimplify(): [...] cont2.i: br i1 %.not1.i, label %handler.type_mismatch3.i, label %cont4.i handler.type_mismatch3.i: %3 = phi i1 [ %2, %cont2.thread.i ], [ false, %cont2.i ] unreachable cont4.i: unreachable [...] with both the branch instruction and PHI node being in the worklist. As a result of replacing the branch instruction with an unconditional branch, the PHI node in %handler.type_mismatch3.i would be removed. This then resulted in a heap-use-after-free bug due to accessing that removed PHI node in the next worklist iteration. This is solved by using a value handle worklist. I am a unsure if this is the most idiomatic solution. Another solution could have been to produce a worklist just containing the interesting branch instructions, but I thought that it perhaps was a bit cleaner to keep all worklist filtering in the loop that does the rewrites. Reviewed By: lebedev.ri Differential Revision: https://reviews.llvm.org/D109221 -
Justas Janickas authored
RUN line representing C++ for OpenCL 2021 added to the test. This should have been done as part of earlier commit fb321c2e but was missed during rebasing. Differential Revision: https://reviews.llvm.org/D109492
-
Uday Bondhugula authored
NFC updates to gpu.launch op argument const folder. Differential Revision: https://reviews.llvm.org/D110136
-
Andrzej Warzynski authored
This was extracted from the discussion on https://reviews.llvm.org/D108283 . Co-authored-by:
Kiran Chandramohan <kiran.chandramohan@arm.com> Differential Revision: https://reviews.llvm.org/D109871
-
Sylvestre Ledru authored
When building clang in stage2, when -DCMAKE_BUILD_TYPE=RelWithDebInfo is set, the developer can expect that the stage2 clang is built using the same mode. Especially as the performances are much worst in debug mode. (Principle of least astonishment) Differential Revision: https://reviews.llvm.org/D53014
-
Cullen Rhodes authored
Identified in D109359. Reviewed By: nemanjai Differential Revision: https://reviews.llvm.org/D109715
-
Morten Borup Petersen authored
This pass transforms SCF.ForOp operations to SCF.WhileOp. The For loop condition is placed in the 'before' region of the while operation, and indctuion variable incrementation + the loop body in the 'after' region. The loop carried values of the while op are the induction variable (IV) of the for-loop + any iter_args specified for the for-loop. Any 'yield' ops in the for-loop are rewritten to additionally yield the (incremented) induction variable. This transformation is useful for passes where we want to consider structured control flow solely on the basis of a loop body and the computation of a loop condition. As an example, when doing high-level synthesis in CIRCT, the incrementation of an IV in a for-loop is "just another part" of a circuit datapath, and what we really care about is the distinction between our datapath and our control logic (the condition variable). Differential Revision: https://reviews.llvm.org/D108454
-
Pavel Labath authored
This test relies on being able to unwind from an arbitrary place inside libc. While I am not sure this is the cause of the observed flakyness, it is known that we are not able to unwind correctly from some places in (linux) libc. This patch adds additional synchronization to ensure that the inferior is in the main function (instead of pthread guts) when lldb tries to unwind it. At the very least, it should make the test runs more predictable/repeatable.
-
Kunwar Shaanjeet Singh Grover authored
This patch adds mergeLocalIds andmergeSymbolIds as public functions for FlatAffineConstraints and FlatAffineValueConstraints respectively. mergeLocalIds is also required to support divisions in intersection, subtraction, equality checks, and complement for PresburgerSet. This patch is part of a series of patches aimed at generalizing affine dependence analysis. Reviewed By: bondhugula Differential Revision: https://reviews.llvm.org/D110045
-