- Mar 21, 2024
-
-
Nathan Lanza authored
-
Fangrui Song authored
unless USE_DEPRECATED_GCC_INSTALL_PREFIX (temporary escape hatch) is set. Setting GCC_INSTALL_PREFIX leads to a warning for Clang 18.1 (#77537) and will be completely removed for Clang 20. Link: discourse.llvm.org/t/add-gcc-install-dir-deprecate-gcc-toolchain-and-remove-gcc-install-prefix/65091 Link: discourse.llvm.org/t/correct-cmake-parameters-for-building-clang-and-lld-for-riscv/72833
-
Nathan Lanza authored
In preparation for the initial ClangIR upstreaming process, move clang behind MLIR in the list of external projects. Otherwise, cmake will attempt to build clang before MLIR.
-
srcarroll authored
The previous implementation was doing an early successful return on `rank <= 1` without adding the original op to transform results. This resulted in errors about number of returns. This patch fixes this by adding the original op to results. Additionally, we first check if op is elementwise and return a slienceable failure early if not.
-
Matt Arsenault authored
-
Matthias Springer authored
One-Shot Bufferize currently does not support loops where a yielded value bufferizes to a buffer that is different from the buffer of the region iter_arg. In such a case, the bufferization fails with an error such as: ``` Yield operand #0 is not equivalent to the corresponding iter bbArg scf.yield %0 : tensor<5xf32> ``` One common reason for non-equivalent buffers is that an op on the path from the region iter_arg to the terminator bufferizes out-of-place. Ops that are analyzed earlier are more likely to bufferize in-place. This commit adds a new heuristic that gives preference to ops that are reachable on the reverse SSA use-def chain from a region terminator and are within the parent region of the terminator. This is expected to work better than the existing heuristics for loops where an iter_arg is written to multiple times within a loop, but only one write is fed into the terminator. Current users of One-Shot Bufferize are not affected by this change. "Bottom-up" is still the default heuristic. Users can switch to the new heuristic manually. This commit also turns the "fuzzer" pass option into a heuristic, cleaning up the code a bit. -
Madhur Amilkanthwar authored
This patch improves codegen for scalar (<128bits) version of llvm.abs intrinsic by using the existing non-XOR based lowering. This takes the generated code closer to SDAG. codegen with GISel for > 128 bit types is not very good with these method so not doing so.
-
Matthias Springer authored
-
paperchalice authored
PR #83567 ports `SelectionDAGISel` to the new pass manager, then each backend should provide `<Target>DagToDagISel()` in new pass manager style. Then each target should provide `<Target>PassRegistry.def` to register backend passes in `registerPassBuilderCallbacks` to reduce duplicate code. This PR adds `AArch64PassRegistry.def` to AArch64 backend and boilerplate code in `registerPassBuilderCallbacks`.
-
-
Freddy Ye authored
-
Vitaly Buka authored
-
Thurston Dang authored
This reverts commit 9d79589e7c8b728a592a4b6b3dee53ac471d7946 because it failed to suppress the warning.
-
Michael Liao authored
-
paperchalice authored
Make this test case work on both new and legacy pass manager. See also #85215
-
Freddy Ye authored
Copied from llvm/test/CodeGen/X86/domain-reassignment.mir
-
hstk30-hw authored
SizeInBytes of empty structure is 0 in C, while 1 in C++. And empty structure argument of the function is ignored in X86_64 backend.As a result, the value of variable arguments in C++ is incorrect. fix #77036 Co-authored-by:Longsheng Mou <moulongsheng@huawei.com>
-
Thurston Dang authored
Some buildbots (e.g., https://lab.llvm.org/buildbot/#/builders/18/builds/16061/steps/10/logs/stdio) have recently started complaining about ``` cast from 'SignalHandlerType' (aka 'void (*)(int, void *, void *)') to 'sa_sigaction_t' (aka 'void (*)(int, siginfo_t *, void *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict] 219 | sigact.sa_sigaction = (sa_sigaction_t)handler; ``` This patch does an intermediate cast to `'(void (*) (void))'` to suppress the warning. N.B. SignalHandlerType has `'void*'` instead of `'siginfo_t*'` because it is typedef'ed in sanitizer_common/sanitizer_common.h, which does not have access to the header (signal.h) that defines siginfo_t; we therefore cannot fix SignalHandlerType.
-
Alexander Yermolovich authored
Test was not actually checking bolt binary, and had extra POSTCHECK-NEXT lines.
-
Joseph Huber authored
Summary: Right now it's difficult to build these utilities standalone becayse they're keyed off of the other GPU handling. if someone wants to *just* build these utilities it's not possible without setting up the runtimes build. Since we can't just build these by default add an option to enable it. We can't just use the handling like LIBC_HDRGEN does because this is only for the GPU build, which isn't fully set up until way later. So this is probably the easiest way to just allow people to build these tools even without a GPU build setup.
-
Kazu Hirata authored
This patch fixes: bolt/lib/Profile/BoltAddressTranslation.cpp:26:12: error: unused variable 'HotFuncAddress' [-Werror,-Wunused-variable]
-
Vitaly Buka authored
-
Jie Fu authored
llvm-project/mlir/lib/Dialect/XeGPU/IR/XeGPUOps.cpp:47:8: error: unused variable 'ty' [-Werror,-Wunused-variable] auto ty = source.getType(); ^ 1 error generated. -
Caroline Tice authored
This is needed for pending LLD work to create a single unified .debug_names index (rather than just appending all the indices from each .o file).
-
Amir Ayupov authored
This increases BAT section size to: - large binary: 34832976 bytes (0.90x original), - medium binary: 3586800 bytes (0.60x original), - small binary: 816 bytes (0.57x original). Test Plan: Updated bolt/test/X86/bolt-address-translation.test Reviewers: rafaelauler, dcci, ayermolo, maksfb Reviewed By: rafaelauler Pull Request: https://github.com/llvm/llvm-project/pull/76907
-
Amir Ayupov authored
Emit a warning and print a suggested workaround. Fixes https://github.com/llvm/llvm-project/issues/77822.
-
Joseph Huber authored
Summary: All of these CPU targets use the same underlying implementation. We should consolidate them into a single target to make it easier to update this to a static library based approach. I have decided to call this the 'host' target so it can be given a single name. We still only build these if the system processor matches and we are on Linux.
-
Chao Chen authored
This PR adds XeGPU 2D block operators. It contains: 1. TensorDescType and TensorDescAttr definitions 2. MemoryScopeAttr and CacheHintAttr definitions which are used by TensorDescAttr. 3. CreateNdDescOp, PrefetchNdOp, LoadNdOp, and StoreNdOp definitions, and their corresponding testcases for illustration. It cherry-picks daebe5c4 with asan fix. --------- Co-authored-by:
Mehdi Amini <joker.eph@gmail.com>
-
Amir Ayupov authored
Use `getAnnotationWithDefault` instead of testing if the annotation is set. If the default value is used, and `CSI.Count` is set to zero, the target is discarded by a check below. Test Plan: NFC Reviewers: maksfb, dcci, rafaelauler, ayermolo Reviewed By: ayermolo Pull Request: https://github.com/llvm/llvm-project/pull/82129
-
Amir Ayupov authored
The function is to be used by YAML profile emission in BAT mode for BinaryFunctions not covered by BAT tables (same as in original binary). Test Plan: NFC Reviewers: rafaelauler, ayermolo, dcci, maksfb Reviewed By: dcci Pull Request: https://github.com/llvm/llvm-project/pull/76909
-
Heejin Ahn authored
This line should be `isScopedEHPersonality` rather than `isFuncletEHPersonality` because this line is used for checking whether we need to add `funclet` op bundles to newly added calls, and Wasm EH needs that too. The new test case is adapted from https://github.com/llvm/llvm-project/blob/main/llvm/test/Transforms/PGOProfile/memop_profile_funclet.ll.
-
John McCall authored
The old logic expects the call to be the last thing we emitted, and since it kicks in before we emit cleanups, and since `swiftasynccall` functions always return void, that's likely to be true. "Likely" isn't very reassuring when we're talking about slapping attributes on random calls, though. And indeed, while I can't find any way to break the logic directly in current main, our previous (ongoing?) experiments with shortening argument temporary lifetimes definitely broke it wide open. So while this commit is prophylactic for now, it's clearly the right thing to do, and it can cherry-picked to other branches to fix problems.
-
Oleksandr "Alex" Zinenko authored
Transform interfaces are implemented, direction or via extensions, in libraries belonging to multiple other dialects. Those dialects don't need to depend on the non-interface part of the transform dialect, which includes the growing number of ops and transitive dependency footprint. Split out the interfaces into a separate library. This in turn requires flipping the dependency from the interface on the dialect that has crept in because both co-existed in one library. The interface shouldn't depend on the transform dialect either. As a consequence of splitting, the capability of the interpreter to automatically walk the payload IR to identify payload ops of a certain kind based on the type used for the entry point symbol argument is disabled. This is a good move by itself as it simplifies the interpreter logic. This functionality can be trivially replaced by a `transform.structured.match` operation.
-
Andrzej Warzyński authored
Adds a generic pattern rewrite for maskable Ops, `MaskableOpRewritePattern`, that will work for both masked and un-masked cases, e.g. for both: * `vector.mask {vector.contract}` (masked), and * `vector.contract` (not masked). This helps to reduce code-duplication and standardise how we implement such patterns. Fixes #78787 -
Paul Kirth authored
Currently, we mistakenly mark the local labels used in RISC-V TLSDESC as TLS symbols, when they should not be. This patch adds tests with the current incorrect behavior, and subsequent patches will address the issue. Reviewers: MaskRay, topperc Reviewed By: MaskRay Pull Request: https://github.com/llvm/llvm-project/pull/85816
-
Kazu Hirata authored
This patch fixes: clang/lib/CodeGen/CGExprComplex.cpp:1037:14: error: unused variable 'ComplexElementTy' [-Werror,-Wunused-variable]
-
Stanislav Mekhanoshin authored
This is to help llvm-obdump to analyze instructions in a future patch.
-
Christudasan Devadasan authored
-
Marc Auberer authored
Fixes #85395
-
Krzysztof Parzyszek authored
The related functions are `gatherDataOperandAddrAndBounds` and `genBoundsOps`. The former is used in OpenACC as well, and it was updated to pass evaluate::Expr instead of parser objects. The difference in the test case comes from unfolded conversions of index expressions, which are explicitly of type integer(kind=8). Delete now unused `findRepeatableClause2` and `findClause2`. Add `AsGenericExpr` that takes std::optional. It already returns optional Expr. Making it accept an optional Expr as input would reduce the number of necessary checks when handling frequent optional values in evaluator. [Clause representation 4/6]
-