- Jul 01, 2022
-
-
Nikita Popov authored
Remove the CreateNeg() method from IRBuilderFolder and base it on CreateSub(0, V) instead, which will call FoldNoWrapBinaryOp(). May not be NFC if InstSimplifyFolder is used.
-
Nikita Popov authored
Drop the IRBuilderFolder method entirely and base this on CreateXor(V, -1) instead, so this will now go through FoldBinOp. May not be NFC if the InstSimplifyBuilder is used.
-
Florian Hahn authored
At the moment, the same VPlan can be used code generation of both the main vector and epilogue vector loop. This can lead to wrong results, if the plan is optimized based on the VF of the main vector loop and then re-used for the epilogue loop. One example where this is problematic is if the scalar loops need to execute at least one iteration, e.g. due to interleave groups. To prevent mis-compiles in the short-term, disable optimizing exit conditions for VPlans when using epilogue vectorization. The proper fix is to avoid re-using the same plan for both loops, which will require support for cloning plans first. Fixes #56319.
-
Pavel Labath authored
As the documentation states, using this is not safe in multithreaded programs, and I have traced it to a rare deadlock in some of the tests. The reason this was introduced was to be able to attach to a program from the very first instruction, where our usual mechanism of synchronization -- waiting for a file to appear -- does not work. However, this is only needed for a single test (TestGdbRemoteAttachWait) so instead of doing this everywhere, I create a bespoke solution for that single test. The solution basically consists of outsourcing the preexec_fn code to a separate (and single-threaded) shim process, which enables attaching and then executes the real program. This pattern could be generalized in case we needed to use it for other tests, but I suspect that we will not be having many tests like this. This effectively reverts commit a997a1d7.
-
Nikita Popov authored
When converting strchr(p, '\0') to p + strlen(p) we know that strlen() must return an offset that is inbounds of the allocated object (otherwise it would be UB), so we can use an inbounds GEP. An equivalent argument can be made for the other cases.
-
Sanjay Patel authored
This was accidentally left out of cc88445a
-
Aaron Ballman authored
This should address the issue found by: https://lab.llvm.org/buildbot/#/builders/171/builds/16835
-
Aaron Ballman authored
This should hopefully address the test failure found in: https://lab.llvm.org/buildbot/#/builders/171/builds/16833
-
Matt Devereau authored
Create an AArch64ISD node instead of emitting machine node DUP_ZZI_Q. This allows a simpler DAG combine for work previously attempted in https://reviews.llvm.org/D128503 Differential Revision: https://reviews.llvm.org/D128902
-
Aaron Ballman authored
This should fix the following test issue on ARM: https://lab.llvm.org/buildbot/#/builders/171/builds/16815
-
Florian Hahn authored
The moved helpers are only used for codegen. It will allow moving the remaining ::execute implementations out of LoopVectorize.cpp. Depends on D127966. Depends on D127965. Reviewed By: Ayal Differential Revision: https://reviews.llvm.org/D127968
-
Guillaume Chatelet authored
This reverts commit 1514acb2.
-
Guillaume Chatelet authored
Removing `-ffreestanding` for the tests should allow us to use `<iostream>` Differential Revision: https://reviews.llvm.org/D128916
-
Kazushi (Jam) Marukawa authored
-
Florian Hahn authored
The original test was over-reduced. It requires an interleave group, so the last vector iteration of the epilogue vector loop doesn't execute.
-
Valentin Clement authored
This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D128976 Co-authored-by:
V Donaldson <vdonaldson@nvidia.com>
-
Daniel Bertalan authored
I introduced this mistake in 573c7e6b. Fixes the failure on this UBSan bot: https://lab.llvm.org/buildbot/#/builders/5/builds/25537
-
Dmitry Preobrazhensky authored
Summary of changes: - Remove dst for global_atomic_add_f32, global_atomic_pk_add_f16. - Make vdata input-only for buffer_atomic_add_f32, buffer_atomic_pk_add_f16. - Other minor improvements.
-
Simon Pilgrim authored
If the LHS op has a single use then using the more general AND op is likely to allow commutation, load folding, generic folds etc. Reverted due to reports from @alexfh about it causing an infinite loop (repro still pending).
-
Dmitry Preobrazhensky authored
Summary of changes: - Update SMEM syntax (see https://reviews.llvm.org/D127314). - Minor improvements.
-
Florian Hahn authored
Test case for PR56319.
-
Nico Weber authored
-
Nico Weber authored
This target will be used in the next commit.
-
Christian Kandeler authored
... with the "usedAsMutableReference" semantic token modifier. It's quite unusual to declare the index parameter of a subscript operator as a non-const reference type, but arguably that makes it even more helpful to be aware of it when working with such code. Reviewed By: nridge Differential Revision: https://reviews.llvm.org/D128892
-
Serge Pavlov authored
On some buildbots test `ast-print-fp-pragmas.c` fails, need to investigate it. This reverts commit 0401fd12. This reverts commit b822efc7.
-
Valentin Clement authored
Fix for broken/degenerate forall case where there is no assignment to an array under the explicit iteration space. While this is a multiple assignment, semantics only raises a warning. The fix is to add a test that the explicit space has any sort of array to be updated, and if not then the do_loop nest will not require a terminator to forward array values to the next iteration. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D128973 Co-authored-by:
Eric Schweitz <eschweitz@nvidia.com>
-
Mikhail Goncharov authored
-
Muhammad Omair Javaid authored
LLDB fails to step in/out/over code with missing debug information. This is only reproducible on AArch64/Windows. I have reported a issue upstream at llvm.org/pr56292 This patch Xfail TestStepNoDebug.py for AArch64/Windows.
-
Chen Zheng authored
-
Serge Pavlov authored
-
Valentin Clement authored
Add source coordinates to BeginWait and BeginWaitAll calls This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D128970 Co-authored-by:
V Donaldson <vdonaldson@nvidia.com>
-
Chen Zheng authored
Handle denormal constant input for fcmp instructions based on the denormal handling mode. Reviewed By: spatel, dcandler Differential Revision: https://reviews.llvm.org/D128647
-
Daniel Bertalan authored
This linker optimization hint transforms a pair of adrp+ldr (immediate) instructions into an ldr (literal) load from a PC-relative address if it is 4-byte aligned and within +/- 1 MiB, as ldr can encode a signed 19-bit offset that gets multiplied by 4. In the wild, only a small number of these hints are applicable because not many loads end up close enough to the data segment. However, the added helper functions will be useful in implementing the rest of the LOH types. Differential Revision: https://reviews.llvm.org/D128942
-
Serge Pavlov authored
AST does not have special nodes for pragmas. Instead a pragma modifies some state variables of Sema, which in turn results in modified attributes of AST nodes. This technique applies to floating point operations as well. Every AST node that can depend on FP options keeps current set of them. This technique works well for options like exception behavior or fast math options. They represent instructions to the compiler how to modify code generation for the affected nodes. However treatment of FP control modes has problems with this technique. Modifying FP control mode (like rounding direction) usually requires operations on hardware, like writing to control registers. It must be done prior to the first operation that depends on the control mode. In particular, such operations are required for implementation of `pragma STDC FENV_ROUND`, compiler should set up necessary rounding direction at the beginning of compound statement where the pragma occurs. As there is no representation for pragmas in AST, the code generation becomes a complicated task in this case. To solve this issue FP options are kept inside CompoundStmt. Unlike to FP options in expressions, these does not affect any operation on FP values, but only inform the codegen about the FP options that act in the body of the statement. As all pragmas that modify FP environment may occurs only at the start of compound statement or at global level, such solution works for all relevant pragmas. The options are kept as a difference from the options in the enclosing compound statement or default options, it helps codegen to set only changed control modes. Differential Revision: https://reviews.llvm.org/D123952
-
Nikita Popov authored
In preparation for the removal in D128719, this stops creating insertvalue constant expressions (well, unless they are directly used in LLVM IR). Differential Revision: https://reviews.llvm.org/D128792
-
Nicolas Vasilache authored
[mlir][SCF] Add a ParallelCombiningOpInterface to decouple scf::PerformConcurrently from its contained operations This allows purging references of scf.ForeachThreadOp and scf.PerformConcurrentlyOp from ParallelInsertSliceOp. This will allowmoving the op closer to tensor::InsertSliceOp with which it should share much more code. In the future, the decoupling will also allow extending the type of ops that can be used in the parallel combinator as well as semantics related to multiple concurrent inserts to the same result. Differential Revision: https://reviews.llvm.org/D128857
-
Nicolas Vasilache authored
This revision avoids a crash in the 0-D case of distributing vector.transfer ops out of vector.warp_execute_on_lane_0. Due to the code complexity and lack of documentation, it took untangling the implementation before realizing that the simple fix was to fail in the 0-D case. The rewrite is still very useful to understand this code better. Differential Revision: https://reviews.llvm.org/D128793
-
Nikita Popov authored
This is a minor refinement of resolvedUndefsIn(), mostly for clarity. If the value of an instruction is undef, then that's already a legal final result -- we can safely rauw such an instruction with undef. We only need to mark unknown values as overdefined, as that's the result we get for an instruction that has not been processed because it has an undef operand. Differential Revision: https://reviews.llvm.org/D128251
-
Piotr Sobczak authored
Add WMMA clang builtins and tests. Extra changes in code are needed to handle function overloads. WavefrontSize 32: __builtin_amdgcn_wmma_f32_16x16x16_f16_w32 __builtin_amdgcn_wmma_f32_16x16x16_bf16_w32 __builtin_amdgcn_wmma_f16_16x16x16_f16_w32 __builtin_amdgcn_wmma_bf16_16x16x16_bf16_w32 __builtin_amdgcn_wmma_i32_16x16x16_iu8_w32 __builtin_amdgcn_wmma_i32_16x16x16_iu4_w32 WavefrontSize 64: __builtin_amdgcn_wmma_f32_16x16x16_f16_w64 __builtin_amdgcn_wmma_f32_16x16x16_bf16_w64 __builtin_amdgcn_wmma_f16_16x16x16_f16_w64 __builtin_amdgcn_wmma_bf16_16x16x16_bf16_w64 __builtin_amdgcn_wmma_i32_16x16x16_iu8_w64 __builtin_amdgcn_wmma_i32_16x16x16_iu4_w64 Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D128952
-
Piotr Sobczak authored
Update intrinsics to use n x f16 and n x i16 instead of 32-bit types. This may avoid the need for a bitcast and is probably less confusing. Depends on making v16f16 and v16i16 types legal. Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D128951
-