- Feb 06, 2021
-
-
Wen-Heng (Jack) Chung authored
In response to review comments in D95964, add a target with f16 instructions. Differential Revision: https://reviews.llvm.org/D96061
-
Arthur Eubanks authored
Matches cmake build
-
Arthur O'Dwyer authored
This reverts commit b6ffece3. The bug is now fixed (it was a stupid cut-and-paste kind of error), and the regression test added. The new patch is also simpler than the old one! Differential Revision: https://reviews.llvm.org/D96084
-
Simon Pilgrim authored
Fixes TableGen parser errors reported by D95874.
-
Sam McCall authored
The new trace event includes what's already in the queue when adding. For tracers that follow contexts, the trace event will span the time that the action spends in the queue. For tracers that follow threads, the trace will be a tiny span on the enqueuing thread. Differential Revision: https://reviews.llvm.org/D96027
-
Jonas Devlieghere authored
The Python code generated by SWIG is compatible with both Python 2 and Python 3. The -py3 option enables Python 2 incompatible features such as function annotations and abstract base classes. Differential revision: https://reviews.llvm.org/D96096
-
Denys Shabalin authored
Those types are not needed any longer since LLVM dialect has migrated to using MLIR's I1, I8, I32 types directly. Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D96127
-
Michael Liao authored
- The failures are all cc1-based tests due to the missing `-aux-triple` options, which is always prepared by the driver in CUDA/HIP compilation. - Add extra check on the missing aux-targetinfo to prevent crashing. [hip][cuda] Enable extended lambda support on Windows. - On Windows, extended lambda has extra issues due to the numbering schemes are different between the host compilation (Microsoft C++ ABI) and the device compilation (Itanium C++ ABI. Additional device side lambda number is required per lambda for the host compilation to correctly mangle the device-side lambda name. - A hybrid numbering context `MSHIPNumberingContext` is introduced to number a lambda for both host- and device-compilations. Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D69322 This reverts commit 4874ff02.
-
Sidharth Baveja authored
Summary: This resolves an issue posted on Bugzilla. https://bugs.llvm.org/show_bug.cgi?id=48764 In this issue, the loop had multiple exit blocks, which resulted in the function getExitBlock to return a nullptr, which resulted in hitting the assert. This patch ensures that loops which only have one exit block as allowed to be unrolled and jammed. Reviewed By: Whitney, Meinersbur, dmgreen Differential Revision: https://reviews.llvm.org/D95806
-
- Feb 05, 2021
-
-
Anton Zabaznov authored
This patch adds possibility to define OpenCL C 3.0 feature macros via command line option or target setting. Reviewed By: Anastasia Differential Revision: https://reviews.llvm.org/D95776
-
Stephen Kelly authored
It can be nullptr in unit tests.
-
Yvan Roux authored
Add x86 targets requirement to fix bots which are not building these targets.
-
Paul Robinson authored
Found by the Rotten Green Tests project. Differential Revision: https://reviews.llvm.org/D95258
-
Sven van Haastregt authored
Add the builtin functions brought by the cl_khr_subgroup_shuffle and cl_khr_subgroup_shuffle_relative extensions to `-fdeclare-opencl-builtins`.
-
Lei Zhang authored
Reviewed By: ThomasRaoux Differential Revision: https://reviews.llvm.org/D96041
-
Lei Zhang authored
This patch introduces a few more straightforward patterns to convert vector ops operating on 1-4 element vectors to their corresponding SPIR-V counterparts. This patch also enables converting vector<1xT> to T. Reviewed By: ThomasRaoux Differential Revision: https://reviews.llvm.org/D96042
-
Akira Hatanaka authored
emitting retainRV or claimRV calls in the IR This reapplies 3fe3946d without the changes made to lib/IR/AutoUpgrade.cpp, which was violating layering. Original commit message: Background: This patch makes changes to the front-end and middle-end that are needed to fix a longstanding problem where llvm breaks ARC's autorelease optimization (see the link below) by separating calls from the marker instructions or retainRV/claimRV calls. The backend changes are in https://reviews.llvm.org/D92569. https://clang.llvm.org/docs/AutomaticReferenceCounting.html#arc-runtime-objc-autoreleasereturnvalue What this patch does to fix the problem: - The front-end adds operand bundle "clang.arc.rv" to calls, which indicates the call is implicitly followed by a marker instruction and an implicit retainRV/claimRV call that consumes the call result. In addition, it emits a call to @llvm.objc.clang.arc.noop.use, which consumes the call result, to prevent the middle-end passes from changing the return type of the called function. This is currently done only when the target is arm64 and the optimization level is higher than -O0. - ARC optimizer temporarily emits retainRV/claimRV calls after the calls with the operand bundle in the IR and removes the inserted calls after processing the function. - ARC contract pass emits retainRV/claimRV calls after the call with the operand bundle. It doesn't remove the operand bundle on the call since the backend needs it to emit the marker instruction. The retainRV and claimRV calls are emitted late in the pipeline to prevent optimization passes from transforming the IR in a way that makes it harder for the ARC middle-end passes to figure out the def-use relationship between the call and the retainRV/claimRV calls (which is the cause of PR31925). - The function inliner removes an autoreleaseRV call in the callee if nothing in the callee prevents it from being paired up with the retainRV/claimRV call in the caller. It then inserts a release call if the call is annotated with claimRV since autoreleaseRV+claimRV is equivalent to a release. If it cannot find an autoreleaseRV call, it tries to transfer the operand bundle to a function call in the callee. This is important since ARC optimizer can remove the autoreleaseRV returning the callee result, which makes it impossible to pair it up with the retainRV/claimRV call in the caller. If that fails, it simply emits a retain call in the IR if the implicit call is a call to retainRV and does nothing if it's a call to claimRV. Future work: - Use the operand bundle on x86-64. - Fix the auto upgrader to convert call+retainRV/claimRV pairs into calls annotated with the operand bundles. rdar://71443534 Differential Revision: https://reviews.llvm.org/D92808
-
Arnold Schwaighofer authored
Dynamic allocas that still exist have been verified to be only used 'locally' not accross a suspend point. rdar://73903220 Differential Revision: https://reviews.llvm.org/D96071
-
Stephen Kelly authored
Use IgnoreUnlessSpelledInSource to make the matcher code smaller and more visibly-related to the code. Differential Revision: https://reviews.llvm.org/D91303
-
Stephen Kelly authored
Reviewers: sammccall Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D80623
-
Lei Zhang authored
This patch adds patterns to use vector.shape_cast to cast away leading 1-dimensions from a few vector operations. It allows exposing more canonical forms of vector.transfer_read, vector.transfer_write, vector_extract_strided_slice, and vector.insert_strided_slice. With this, we can have more opportunity to cancelling extract/insert ops or forwarding write/read ops. Reviewed By: ThomasRaoux Differential Revision: https://reviews.llvm.org/D95873
-
Akira Hatanaka authored
This reverts commit 3fe3946d. The commit violates layering by including a header from Analysis in lib/IR/AutoUpgrade.cpp.
-
Akira Hatanaka authored
emitting retainRV or claimRV calls in the IR Background: This patch makes changes to the front-end and middle-end that are needed to fix a longstanding problem where llvm breaks ARC's autorelease optimization (see the link below) by separating calls from the marker instructions or retainRV/claimRV calls. The backend changes are in https://reviews.llvm.org/D92569. https://clang.llvm.org/docs/AutomaticReferenceCounting.html#arc-runtime-objc-autoreleasereturnvalue What this patch does to fix the problem: - The front-end adds operand bundle "clang.arc.rv" to calls, which indicates the call is implicitly followed by a marker instruction and an implicit retainRV/claimRV call that consumes the call result. In addition, it emits a call to @llvm.objc.clang.arc.noop.use, which consumes the call result, to prevent the middle-end passes from changing the return type of the called function. This is currently done only when the target is arm64 and the optimization level is higher than -O0. - ARC optimizer temporarily emits retainRV/claimRV calls after the calls with the operand bundle in the IR and removes the inserted calls after processing the function. - ARC contract pass emits retainRV/claimRV calls after the call with the operand bundle. It doesn't remove the operand bundle on the call since the backend needs it to emit the marker instruction. The retainRV and claimRV calls are emitted late in the pipeline to prevent optimization passes from transforming the IR in a way that makes it harder for the ARC middle-end passes to figure out the def-use relationship between the call and the retainRV/claimRV calls (which is the cause of PR31925). - The function inliner removes an autoreleaseRV call in the callee if nothing in the callee prevents it from being paired up with the retainRV/claimRV call in the caller. It then inserts a release call if the call is annotated with claimRV since autoreleaseRV+claimRV is equivalent to a release. If it cannot find an autoreleaseRV call, it tries to transfer the operand bundle to a function call in the callee. This is important since ARC optimizer can remove the autoreleaseRV returning the callee result, which makes it impossible to pair it up with the retainRV/claimRV call in the caller. If that fails, it simply emits a retain call in the IR if the implicit call is a call to retainRV and does nothing if it's a call to claimRV. Future work: - Use the operand bundle on x86-64. - Fix the auto upgrader to convert call+retainRV/claimRV pairs into calls annotated with the operand bundles. rdar://71443534 Differential Revision: https://reviews.llvm.org/D92808
-
Nicolas Vasilache authored
-
Alex Zinenko authored
Historically, Linalg To LLVM conversion subsumed numerous other conversions, including (affine) loop lowerings to CFG and conversions from the Standard and Vector dialects to the LLVM dialect. This was due to the insufficient support for partial conversions in the infrastructure that essentially required conversions that involve type change (in this case, !linalg.range to !llvm.struct) to be performed in a single conversion sweep. This is no longer the case so remove the subsumed conversions and run them as separate passes when necessary. Depends On D95317 Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D96008
-
Kadir Cetinkaya authored
Differential Revision: https://reviews.llvm.org/D95942
-
Qiu Chaofan authored
Commit 6bf29dbb enables float128 feature by default for Power9 targets. But float128 may cause build failure in libcxx testing. Revert this commit first to unblock LLVM 12 release.
-
Simon Pilgrim authored
Fix codegen after rG7fe41ac3
-
Vladislav Vinogradov authored
The `AffineMap` class follows the same semantic as Type and Attribute. It is immutable object, so it make sence to mark its methods as const. Also part of its API is already marked as const, this change just make the API consistent. Reviewed By: ftynse, bondhugula Differential Revision: https://reviews.llvm.org/D96026
-
Aaron Ballman authored
The attribute definition claimed the attribute was inheritable (which only applies to declaration attributes) and not a statement attribute. Further, it treats subject appertainment errors as being parse errors rather than semantic errors, which leads to us accepting invalid code. For instance, we currently fail to reject: void foo() { int i = 1000; __attribute__((nomerge, opencl_unroll_hint(8))) if (i) { foo(); } } This addresses the issues by clarifying that opencl_unroll_hint is a statement attribute and handles its appertainment checks in the semantic layer instead of the parsing layer. This changes the output of the diagnostic text to be more consistent with other appertainment errors. -
Nicolas Vasilache authored
-
Nicolas Vasilache authored
Differential Revision: https://reviews.llvm.org/D96116
-
Adrian Kuegel authored
Revert "[LV] Unconditionally branch from middle to scalar preheader if the scalar loop must execute" This reverts commit 3e5ce49e. Tests started failing on PPC, for example: http://lab.llvm.org:8011/#/builders/105/builds/5569
-
Max Kazantsev authored
The test shows how "usub with overflow" opt gets or does not get applied to increment of IV depending on its code placement, while two cases are semantically equivalent.
-
Nicolas Vasilache authored
-
Simon Pilgrim authored
Remove duplicate param
-
Simon Pilgrim authored
-
Simon Pilgrim authored
Remove duplicate param
-
Simon Pilgrim authored
-
Simon Pilgrim authored
void functions shouldn't have a \returns
-