- Feb 05, 2024
-
-
Cullen Rhodes authored
In mixed matmul lowering (e.g., i8 to i32) we're seeing the following sequence: %0 = arith.extsi %src : vector<4x[8]xi8> to vector<4x[8]xi32> %1 = vector.extract %0[0] : vector<[8]xi32> from vector<4x[8]xi32> %lhs = vector.scalable.extract %1[0] : vector<[4]xi32> from vector<[8]xi32> ... (same for rhs) %2 = vector.outerproduct %lhs, %rhs, %acc vector<[4]xi32>, vector<[4]xi32> // x4 chained by accumulator This chain of 4 outer products can be fused into a single 4-way widening variant but the pass doesn't match on the IR, as it expects the source of the inputs to be an extend and it can't look through the extracts. This patch fixes this with two rewrites that swaps extract(extend) into extend(extract). Related to #78975, #79288.
-
Cullen Rhodes authored
The "Refer to" and table shouldn't be in the example code sequence.
-
Schrodinger ZHU Yifan authored
-
Hui authored
Fixes #77659 Fixes #46357 Picked up from https://reviews.llvm.org/D114119
-
Mats Petersson authored
This adds the support to add the target-feature to outline atomic operations (calling the runtime library instead).
-
Simon Pilgrim authored
[X86] addConstantComments - split VPERMILPS/VPERMILPD handling to reduce repeated switch cases etc. NFC.
-
Simon Pilgrim authored
-
Shih-Po Hung authored
This is to add test coverage for crash report in #80340
-
Matt Arsenault authored
This enables IR expansion for i128 divisions. The vector case is still broken because ExpandLargeDivRem doesn't try to handle them. Fixes: SWDEV-426193
-
Pierre van Houtryve authored
Fixes #80366
-
Nikita Popov authored
-
Petar Avramovic authored
Implement PhiLoweringHelper for GlobalISel in DivergenceLoweringHelper. Use machine uniformity analysis to find divergent i1 phis and select them as lane mask phis in same way SILowerI1Copies select VReg_1 phis. Note that divergent i1 phis include phis created by LCSSA and all cases of uses outside of cycle are actually covered by "lowering LCSSA phis". GlobalISel lane masks are registers with sgpr register class and S1 LLT. TODO: General goal is that instructions created in this pass are fully instruction-selected so that selection of lane mask phis is not split across multiple passes. patch 3 from: https://github.com/llvm/llvm-project/pull/73337
-
Christudasan Devadasan authored
The SGPR registers used for preserving EXEC mask while lowering the whole-wave register spills and copies should be preserved at the prolog and epilog if they are in the CSR range. It isn't happening when there is only wwm-copy lowered and there are no wwm-spills. This patch addresses that problem.
-
Nikita Popov authored
-
Nikita Popov authored
-
lntue authored
-
lntue authored
-
Timm Bäder authored
-
Sergio Afonso authored
This patch adds support for forwarding the target-cpu and target-features attributes to functions outlined in the OpenMPIRBuilder. This, in turn, results in the addition of these attributes for functions created during the translation of the `omp.parallel`, `omp.task` and `omp.teams` operations, and for the `omp.wsloop` operation when doing codegen for an OpenMP target device.
-
Simon Pilgrim authored
[X86] X86FixupVectorConstants - load+zero vector constants that can be stored in a truncated form (#80428) Further develops the vsextload support added in #79815 / b5d35fea - reduces the size of the vector constant by storing it in the constant pool in a truncated form, and zero-extend it as part of the load.
-
Timm Bäder authored
-
Nikita Popov authored
-
Nikita Popov authored
-
Yi Wu authored
Fix: https://github.com/llvm/llvm-project/issues/78568 --------- Co-authored-by:
jeanPerier <jean.perier.polytechnique@gmail.com>
-
Nikita Popov authored
-
David Green authored
This is a separate, but related issue to #69152 that was attempting to improve AA with scalable dependency distances. This patch attempts to improve when there are scalable accesses with a constant offset between them. We happen to get a report of such a thing recently, where so long as the vscale_range is known, the maximum size of the access can be assessed and better aliasing results can be returned. The Upper range of the vscale_range, along with known part of the typesize are used to prove that Off >= CR.upper * LSize. It does not try to produce PartialAlias results at the moment from the lower vscale_range. It also enables the added benefit of allowing better alias analysis when the RHS of the two values is scalable, but the LHS is normal and can be treated like any other aliasing query.
-
Alex Bradbury authored
-
Matthias Springer authored
Even when `private-function-dynamic-ownership` is set, ownership should never be passed to the callee. This can lead to double deallocs (#77096) or use-after-free in the caller because ownership is currently passed regardless of whether there are any further uses of the buffer in the caller or not. Note: This is consistent with the fact that ownership is never passed to nested regions. This commit fixes #77096.
-
Nikita Popov authored
-
Alex Bradbury authored
Also reflow the line for Zabha, as we normally line-wrap this file.
-
Orlando Cazalet-Hyams authored
Hoist DPValues attached to each instruction being considered for hoisting if they are identical in lock-step. This includes the final instructions which are considered but not hoisted, because the corresponding dbg.values would appear before those instruction and thus hoisted if identical. Identical debug records hoisted: llvm/test/Transforms/SimplifyCFG/hoist-dbgvalue.ll Non-identical debug records not hoisted: llvm/test/Transforms/SimplifyCFG/X86/pr39187-g.ll Debug records attached to first not-hoisted instructions are hoisted: llvm/test/Transforms/SimplifyCFG/hoist-dbgvalue-inlined.ll
-
Nikita Popov authored
-
Anatoly Trosinenko authored
Align the values of the immediate operand of BRK instruction with those used by the existing arm64e implementation. Make AuthCheckMethod::DummyLoad use the requested register instead of LR.
-
Alex Bradbury authored
Zicond's graduation to non-experimental was backported to 18.x in #80018, so remove the release note.
-
Guillaume Chatelet authored
It is needed to provide correct rounding when building FPRep from greater precision representations.
-
Dmitry Polukhin authored
clang-apply-replacements used to apply format even without --format is specified. This because, methods like createReplacementsForHeaders only takes the Spec.Style and would re-order the headers even when it was not requested. The fix is to set up Spec.Style only if --format is provided. Also added note to ReleaseNotes.rst Based on https://github.com/llvm/llvm-project/pull/70801 --------- Co-authored-by:
Kugan <34810920+kuganv@users.noreply.github.com> Co-authored-by:
Aaron Ballman <aaron@aaronballman.com>
-
Jay Foad authored
This will allow future patches to use indexing and methods like drop_front on the result.
-
Guray Ozen authored
This PR improves the verifier for the `nvgpu.tensormap.descriptor` type. The descriptor contains information for TMA, and the compile-time check ensures its restrictions, such as the last memory dimension being 128-byte. This prevents runtime crashes. See cuda driver for more explanation: https://docs.nvidia.com/cuda/cuda-driver-api/group__CUDA__TENSOR__MEMORY.html#group__CUDA__TENSOR__MEMORY_1ga7c7d2aaac9e49294304e755e6f341d7
-
Guillaume Chatelet authored
-
Nikita Popov authored
The code ended up treating a use in a call argument as if it were a call. Make sure this is actually the callee use.
-