|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5 |
|
| #
0174f555 |
| 06-Jun-2022 |
Teresa Johnson <[email protected]> |
[MemProf] Basic metadata support and verification
Add basic support for the MemProf metadata (!memprof and !callsite) which was initially described in "RFC: IR metadata format for MemProf" (https://
[MemProf] Basic metadata support and verification
Add basic support for the MemProf metadata (!memprof and !callsite) which was initially described in "RFC: IR metadata format for MemProf" (https://discourse.llvm.org/t/rfc-ir-metadata-format-for-memprof/59165).
The bulk of the patch is verification support, along with some tests.
There are a couple of changes to the format described in the original RFC:
Initial measurements suggested that a tree format for the stack ids in the contexts would be more efficient, but subsequent evaluation with large applications showed that in fact the cost of the additional metadata nodes required by this deduplication scheme overwhelmed the benefit from sharing stack id nodes. Therefore, the implementation here and in follow on patches utilizes a simpler scheme of lists of stack id integers in the memprof profile contexts and callsite metadata. The follow on matching patch employs context trimming optimizations to reduce the cost.
Secondly, instead of verbosely listing all profiled fields in each profiled context (memory info block or MIB), and deferring the interpretation of the profile data, the profile data is evaluated and converted into string tags specifying the behavior (e.g. "cold") during profile matching. This reduces the verbosity of the profile metadata, and allows additional context trimming optimizations. As a result, the named metadata schema description is also no longer needed.
Differential Revision: https://reviews.llvm.org/D128141
show more ...
|
| #
b3fd3a9a |
| 18-Jul-2022 |
Fangrui Song <[email protected]> |
[IR] Allow absence for Min module flags and make AArch64 BTI/PAC-RET flags backward compatible
D123493 introduced llvm::Module::Min to encode module flags metadata for AArch64 BTI/PAC-RET. llvm::Mod
[IR] Allow absence for Min module flags and make AArch64 BTI/PAC-RET flags backward compatible
D123493 introduced llvm::Module::Min to encode module flags metadata for AArch64 BTI/PAC-RET. llvm::Module::Min does not take effect when the flag is absent in one module. This behavior is misleading and does not address backward compatibility problems (when a bitcode with "branch-target-enforcement"==1 and another without the flag are merged, the merge result is 1 instead of 0).
To address the problems, require Min flags to be non-negative and treat absence as having a value of zero. For an old bitcode without "branch-target-enforcement"/"sign-return-address", its value is as if 0.
Differential Revision: https://reviews.llvm.org/D129911
show more ...
|
| #
d693fd29 |
| 18-Jul-2022 |
Max Kazantsev <[email protected]> |
[Verifier] Make Verifier recognize undef tokens as correct IR
Undef tokens may appear in unreached code as result of RAUW of some optimization, and it should not be considered as bad IR.
Patch by D
[Verifier] Make Verifier recognize undef tokens as correct IR
Undef tokens may appear in unreached code as result of RAUW of some optimization, and it should not be considered as bad IR.
Patch by Dmitry Bakunevich!
Differential Revision: https://reviews.llvm.org/D128904 Reviewed By: mkazantsev
show more ...
|
| #
2a721374 |
| 07-Jul-2022 |
Nikita Popov <[email protected]> |
[IR] Don't use blockaddresses as callbr arguments
Following some recent discussions, this changes the representation of callbrs in IR. The current blockaddress arguments are replaced with `!` label
[IR] Don't use blockaddresses as callbr arguments
Following some recent discussions, this changes the representation of callbrs in IR. The current blockaddress arguments are replaced with `!` label constraints that refer directly to callbr indirect destinations:
; Before: %res = callbr i8* asm "", "=r,r,i"(i8* %x, i8* blockaddress(@test8, %foo)) to label %asm.fallthrough [label %foo] ; After: %res = callbr i8* asm "", "=r,r,!i"(i8* %x) to label %asm.fallthrough [label %foo]
The benefit of this is that we can easily update the successors of a callbr, without having to worry about also updating blockaddress references. This should allow us to remove some limitations:
* Allow unrolling/peeling/rotation of callbr, or any other clone-based optimizations (https://github.com/llvm/llvm-project/issues/41834) * Allow duplicate successors (https://github.com/llvm/llvm-project/issues/45248)
This is just the IR representation change though, I will follow up with patches to remove limtations in various transformation passes that are no longer needed.
Differential Revision: https://reviews.llvm.org/D129288
show more ...
|
| #
a83aa33d |
| 16-Jun-2022 |
Bradley Smith <[email protected]> |
[IR] Move vector.insert/vector.extract out of experimental namespace
These intrinsics are now fundemental for SVE code generation and have been present for a year and a half, hence move them out of
[IR] Move vector.insert/vector.extract out of experimental namespace
These intrinsics are now fundemental for SVE code generation and have been present for a year and a half, hence move them out of the experimental namespace.
Differential Revision: https://reviews.llvm.org/D127976
show more ...
|
| #
a81b64a1 |
| 26-Jun-2022 |
Kazu Hirata <[email protected]> |
[llvm] Use Optional::has_value instead of Optional::hasValue (NFC)
This patch replaces x.hasValue() with x.has_value() where x is not contextually convertible to bool.
|
| #
3b7c3a65 |
| 25-Jun-2022 |
Kazu Hirata <[email protected]> |
Revert "Don't use Optional::hasValue (NFC)"
This reverts commit aa8feeefd3ac6c78ee8f67bf033976fc7d68bc6d.
|
| #
aa8feeef |
| 25-Jun-2022 |
Kazu Hirata <[email protected]> |
Don't use Optional::hasValue (NFC)
|
| #
0916d96d |
| 21-Jun-2022 |
Kazu Hirata <[email protected]> |
Don't use Optional::hasValue (NFC)
|
| #
38637ee4 |
| 07-Jun-2022 |
Guillaume Chatelet <[email protected]> |
[clang] Add support for __builtin_memset_inline
In the same spirit as D73543 and in reply to https://reviews.llvm.org/D126768#3549920 this patch is adding support for `__builtin_memset_inline`.
The
[clang] Add support for __builtin_memset_inline
In the same spirit as D73543 and in reply to https://reviews.llvm.org/D126768#3549920 this patch is adding support for `__builtin_memset_inline`.
The idea is to get support from the compiler to easily write efficient memory function implementations.
This patch could be split in two: - one for the LLVM part adding the `llvm.memset.inline.*` intrinsics. - and another one for the Clang part providing the instrinsic as a builtin.
Differential Revision: https://reviews.llvm.org/D126903
show more ...
|
|
Revision tags: llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1 |
|
| #
42861faa |
| 29-Mar-2022 |
Augie Fackler <[email protected]> |
attributes: introduce allockind attr for describing allocator fn behavior
I chose to encode the allockind information in a string constant because otherwise we would get a bit of an explosion of key
attributes: introduce allockind attr for describing allocator fn behavior
I chose to encode the allockind information in a string constant because otherwise we would get a bit of an explosion of keywords to deal with the possible permutations of allocation function types.
I'm not sure that CodeGen.h is the correct place for this enum, but it seemed to kind of match the UWTableKind enum so I put it in the same place. Constructive suggestions on a better location most certainly encouraged.
Differential Revision: https://reviews.llvm.org/D123088
show more ...
|
| #
18e6b823 |
| 25-May-2022 |
Takafumi Arakaki <[email protected]> |
Allow pointer types for atomicrmw xchg
This adds support for pointer types for `atomic xchg` and let us write instructions such as `atomicrmw xchg i64** %0, i64* %1 seq_cst`. This is similar to the
Allow pointer types for atomicrmw xchg
This adds support for pointer types for `atomic xchg` and let us write instructions such as `atomicrmw xchg i64** %0, i64* %1 seq_cst`. This is similar to the patch for allowing atomicrmw xchg on floating point types: https://reviews.llvm.org/D52416.
Differential Revision: https://reviews.llvm.org/D124728
show more ...
|
| #
9be90748 |
| 21-Apr-2022 |
Vitaly Buka <[email protected]> |
Revert "[asan] Emit .size directive for global object size before redzone" Revert "[docs] Fix underline"
Breaks a lot of asan tests in google.
This reverts commit 365c3e85bced1fb56c2d94adc34bff7a94
Revert "[asan] Emit .size directive for global object size before redzone" Revert "[docs] Fix underline"
Breaks a lot of asan tests in google.
This reverts commit 365c3e85bced1fb56c2d94adc34bff7a94abe4a6. This reverts commit 78a784bea443cdcecf894155ab37893d7a8e8332.
show more ...
|
| #
78a784be |
| 21-Apr-2022 |
Alex Brachet <[email protected]> |
[asan] Emit .size directive for global object size before redzone
This emits an `st_size` that represents the actual useable size of an object before the redzone is added.
Reviewed By: vitalybuka,
[asan] Emit .size directive for global object size before redzone
This emits an `st_size` that represents the actual useable size of an object before the redzone is added.
Reviewed By: vitalybuka, MaskRay, hctim
Differential Revision: https://reviews.llvm.org/D123010
show more ...
|
| #
b0343a38 |
| 13-Apr-2022 |
Daniel Kiss <[email protected]> |
Support the min of module flags when linking, use for AArch64 BTI/PAC-RET
LTO objects might compiled with different `mbranch-protection` flags which will cause an error in the linker. Such a setup i
Support the min of module flags when linking, use for AArch64 BTI/PAC-RET
LTO objects might compiled with different `mbranch-protection` flags which will cause an error in the linker. Such a setup is allowed in the normal build with this change that is possible.
Reviewed By: pcc
Differential Revision: https://reviews.llvm.org/D123493
show more ...
|
| #
c54ad136 |
| 02-Apr-2022 |
Tom Honermann <[email protected]> |
[Lint][Verifier] NFC: Rename 'Assert*' macros to 'Check*'.
The LLVM IR verifier and analysis linter defines and uses several macros in code that performs validation of IR expectations. Previously, t
[Lint][Verifier] NFC: Rename 'Assert*' macros to 'Check*'.
The LLVM IR verifier and analysis linter defines and uses several macros in code that performs validation of IR expectations. Previously, these macros were named with an 'Assert' prefix. These names were misleading since the macro definitions are not conditioned on build kind; they are defined identically in builds that have asserts enabled and those that do not. This was confusing since an LLVM developer might expect these macros to be conditionally enabled as 'assert' is. Further confusion was possible since the LLVM IR verifier is implicitly disabled (in Clang::ConstructJob()) for builds without asserts enabled, but only for Clang driver invocations; not for clang -cc1 invocations. This could make it appear that the macros were not active for builds without asserts enabled, e.g. when investigating behavior using the Clang driver, and thus lead to surprises when running tests that exercise the clang -cc1 interface.
This change renames this set of macros as follows: Assert -> Check AssertDI -> CheckDI AssertTBAA -> CheckTBAA
show more ...
|
| #
a7c0b750 |
| 23-Mar-2022 |
yanming <[email protected]> |
[VP] Add more cast VPintrinsic and docs.
Add vp.fptoui, vp.uitofp, vp.fptrunc, vp.fpext, vp.trunc, vp.zext, vp.sext, vp.ptrtoint, vp.inttoptr intrinsic and docs.
Reviewed By: frasercrmck, craig.top
[VP] Add more cast VPintrinsic and docs.
Add vp.fptoui, vp.uitofp, vp.fptrunc, vp.fpext, vp.trunc, vp.zext, vp.sext, vp.ptrtoint, vp.inttoptr intrinsic and docs.
Reviewed By: frasercrmck, craig.topper
Differential Revision: https://reviews.llvm.org/D122291
show more ...
|
| #
73244e8f |
| 30-Mar-2022 |
Fraser Cormack <[email protected]> |
[VP] Add vp.icmp comparison intrinsic and docs
This patch mostly follows up on D121292 which introduced the vp.fcmp intrinsic.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm
[VP] Add vp.icmp comparison intrinsic and docs
This patch mostly follows up on D121292 which introduced the vp.fcmp intrinsic.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D122729
show more ...
|
|
Revision tags: llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3 |
|
| #
da6131f2 |
| 09-Mar-2022 |
Fraser Cormack <[email protected]> |
[VP] Add vp.fcmp comparison intrinsic and docs
This patch adds the first support for vector-predicated comparison intrinsics, starting with vp.fcmp. It uses metadata to encode its condition code, li
[VP] Add vp.fcmp comparison intrinsic and docs
This patch adds the first support for vector-predicated comparison intrinsics, starting with vp.fcmp. It uses metadata to encode its condition code, like the llvm.experimental.constrained.fcmp intrinsic.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D121292
show more ...
|
| #
1fd118ff |
| 17-Mar-2022 |
Luo, Yuanke <[email protected]> |
Verify parameter alignment attribute
In DAGISel, the parameter alignment only have 4 bits to hold the value. The encode(alignment) would plus the value by 1, so the max aligment that ISel can suppor
Verify parameter alignment attribute
In DAGISel, the parameter alignment only have 4 bits to hold the value. The encode(alignment) would plus the value by 1, so the max aligment that ISel can support is 2^14. This patch verify align attribute for parameter.
Differential Revision: https://reviews.llvm.org/D122130
show more ...
|
| #
321cbf75 |
| 17-Mar-2022 |
Luo, Yuanke <[email protected]> |
[Verifier] Verify parameter alignment.
In DAGISel, the parameter alignment only have 4 bits to hold the value. The encode(alignment) would plus the shift value by 1, so the max aligment ISel can sup
[Verifier] Verify parameter alignment.
In DAGISel, the parameter alignment only have 4 bits to hold the value. The encode(alignment) would plus the shift value by 1, so the max aligment ISel can support is 2^14. This patch verify the parameter and return value for alignment.
Differential Revision: https://reviews.llvm.org/D121898
show more ...
|
| #
2371c5a0 |
| 16-Mar-2022 |
Arthur Eubanks <[email protected]> |
[OpaquePtr][ARM] Use elementtype on ldrex/ldaex/stlex/strex
Includes verifier changes checking the elementtype, clang codegen changes to emit the elementtype, and ISel changes using the elementtype.
[OpaquePtr][ARM] Use elementtype on ldrex/ldaex/stlex/strex
Includes verifier changes checking the elementtype, clang codegen changes to emit the elementtype, and ISel changes using the elementtype.
Basically the same as D120527.
Reviewed By: #opaque-pointers, nikic
Differential Revision: https://reviews.llvm.org/D121847
show more ...
|
|
Revision tags: llvmorg-14.0.0-rc2 |
|
| #
250620f7 |
| 24-Feb-2022 |
Arthur Eubanks <[email protected]> |
[OpaquePtr][AArch64] Use elementtype on ldxr/stxr
Includes verifier changes checking the elementtype, clang codegen changes to emit the elementtype, and ISel changes using the elementtype.
Reviewed
[OpaquePtr][AArch64] Use elementtype on ldxr/stxr
Includes verifier changes checking the elementtype, clang codegen changes to emit the elementtype, and ISel changes using the elementtype.
Reviewed By: #opaque-pointers, nikic
Differential Revision: https://reviews.llvm.org/D120527
show more ...
|
| #
f00cd276 |
| 14-Mar-2022 |
Nikita Popov <[email protected]> |
[Verifier] Verify llvm.access.group metadata
According to LangRef, an access scope must have zero operands and be distinct. The access group may either be a single access scope or a list of access s
[Verifier] Verify llvm.access.group metadata
According to LangRef, an access scope must have zero operands and be distinct. The access group may either be a single access scope or a list of access scopes.
LoopInfo may assert if this is not the case.
show more ...
|
| #
ed98c1b3 |
| 09-Mar-2022 |
serge-sans-paille <[email protected]> |
Cleanup includes: DebugInfo & CodeGen
Discourse thread: https://discourse.llvm.org/t/include-what-you-use-include-cleanup Differential Revision: https://reviews.llvm.org/D121332
|