- Sep 26, 2022
-
-
James Y Knight authored
This is a follow-on to https://reviews.llvm.org/D134073. It renames a few fields to have consistent names, as well as renaming operands to match the field names. The encoder behavior is unchanged by this cleanup, but a few instructions were previously being disassembled incorrectly, and have been corrected by this change. All of the affected instructions were missing disassembly tests, which are now added. Differential Revision: https://reviews.llvm.org/D134185
-
James Y Knight authored
This is a follow-on to https://reviews.llvm.org/D134073. It renames a couple of fields to match their operands, as well as introducing sub-operand names where required. This change _only_ fixes the 'R600' half of the target, not the 'AMDGPU' half. Fixing the AMDGPU half will be a significantly more difficult change (which I've not yet attempted.) Differential Revision: https://reviews.llvm.org/D134078
-
James Y Knight authored
This is a follow-on to https://reviews.llvm.org/D134073. Lanai was almost clean: the only issue is that 'bit' behaves differently than 'bits<1>', because only the 'bits' type preserves unresolved references via 'keepUnsetBits()' in TableGen/Record.h. Thus, use bits instead. This issue _would_ have caused invalid instruction emission/decoding, except that the PQ bits were being overriden after the fact by code in 'adjustPqBits' in MCTargetDesc/LanaiMCCodeEmitter.cpp, and 'PostOperandDecodeAdjust' in Disassembler/LanaiDisassembler.cpp. Differential Revision: https://reviews.llvm.org/D134075
-
Danil Sidoruk authored
Closes #55996. Differential Revision: https://reviews.llvm.org/D131789
-
Simon Pilgrim authored
-
Nico Weber authored
Based on a patch by Arlo Siemsen (D98438)! Differential Revision: https://reviews.llvm.org/D134544
-
Emilia Dreamer authored
The comment handling the bool case says: "bool is only allowed if it is directly followed by a paren for a cast" This change more closely follows this directive by looking ahead for the paren before consuming the bool keyword itself. Without a following paren, the bool would be part of something else, such as a return type for a function declaration Fixes https://github.com/llvm/llvm-project/issues/57538 Reviewed By: HazardyKnusperkeks, owenpan, MyDeveloperDay Differential Revision: https://reviews.llvm.org/D134325
-
Emilia Dreamer authored
`P1169` "static operator()" (https://wg21.link/P1169) is accepted to C++23 and while clang itself doesn't exactly support it yet, clang-format could quite easily. This simply allows the keyword `static` to be a part of lambdas as specified by the addition to [expr.prim.lambda.general] While adding this, I noticed `consteval` lambdas also aren't handled, so that keyword is now allowed to be a part of lambdas as well Reviewed By: HazardyKnusperkeks, owenpan, MyDeveloperDay Differential Revision: https://reviews.llvm.org/D134587
-
- Sep 25, 2022
-
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
Hui Xie authored
In the implementation of `std::views::take`, it uses `subrange<Iter>` as part of the return type. But in case of input iterator, `subrange<Iter>` can be ill-formed Differential Revision: https://reviews.llvm.org/D133220
-
Amaury Séchet authored
-
Simon Pilgrim authored
-
Simon Pilgrim authored
Icelake PMULLQ throughput regressed cf SkylakeServer as its Pipe0 only Confirmed with Intel SOM, Agner and instlatx64
-
Mark de Wever authored
The new version is a lot simpler and has less option which were not used. This uses the CSV files as generated by D133127 as input data. The current Python script has more features but uses a simple "grep" making the output less accurate: - Conditionally included header are always included. This is an issue since part of our includes are unneeded transitive includes. Based on the language version they may be omitted. The script however always includes them. - Includes in comments are processed as-if they are includes. This is an issue when comments explain how certain data is generated; of course there are digraphs which the script omits. This implementation uses Clang's --trace-includes to generate the includes per header. This means the input of the generation script always has the real list of includes. Libc++ is moving from large monolithic Standard headers to more fine grained headers. For example, algorithm includes every header in `__algorithm`. Adding all these detail headers in the graph makes the output unusable. Instead it only shows the Standard headers. The transitive includes of the detail headers are parsed and "attributed" to the Standard header including them. This gives an accurate include graph without the unneeded clutter. Note that this graph is still big. This changes fixes the cyclic dependency issue with the previous version of the tool so the markers and its documentation is removed. Since the input has no cycles the CI test is removed. Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D134188
-
Petar Avramovic authored
Fix regression from clang opencl test in builtins-fp-atomics-gfx90a.cl test_flat_add_local_f64 caused by D130579 Revert a3becb33. Differential Revision: https://reviews.llvm.org/D134568
-
Mark de Wever authored
This test generates the include graph of the Standard headers of libc++ in a CSV file. This was originally used to generate graphviz dot files. During review it was noticed these files have all information needed to replace the current transitive includes. Therefore the output, with the same information as the .dot file is stored in a .csv file. This removes all the existing transitive include files. The .cvs can be converted by a .dot file by the script in D134188. Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D133127
-
Sanjay Patel authored
This extends e5d15e11 to handle the inverse predicates (there's probably a more elegant way to specify the preds). These patterns correspond to the existing simplify: max (min X, Y), X --> X ...and extra preds for (non)equality. The tests cycle through all 10 icmp preds for each min/max variant with 4 swapped operand patterns each (and the min/max operands are commuted in every other test within those). Some Alive2 examples to verify: https://alive2.llvm.org/ce/z/XMvEKQ https://alive2.llvm.org/ce/z/QpMChr
-
Daniel Bertalan authored
`__thread_vars` contains pointers to `__tlv_bootstrap`, which are fixed up by dyld; however the section's alignment is not specified. This means that the relocations might end up on odd addresses, which is not representable by the soon to be added chained fixups. This is arguably a bug in MC, but this behavior has been there since TLV support was originally added. This patch forces the `__thread_vars` sections to be aligned to the target's pointer size. This is done by ld64 as well. Differential Revision: https://reviews.llvm.org/D134594
-
Han Zhu authored
-
wangliushuai authored
Clang with debug builds will crash when run with empty target feature input. And the warning message is a little bit confusing. This patch adds an empty check and a new diagnostic to illustrate where goes wrong. Reviewed By: MaskRay, aaron.ballman Differential Revision: https://reviews.llvm.org/D133563
-
Philip Reames authored
Very straight forward extension of the existing pattern matching pass to handle scalable types as well as fixed length types. The only extra bit beyond removing a bailout is recognizing stepvector. Differential Revision: https://reviews.llvm.org/D134502
-
Philip Reames authored
The code previously assumed fixed length vectors; make the relevant code conditional. Having the lowering in place is neccessary for an upcoming change to generalize scatter/gather matching to scalable vectors. Differential Revision: https://reviews.llvm.org/D134489
-
David Green authored
Commit c4426980 updated the check lines in this file, but did so in a way that removed a number of the existing checks, as the update_llc_test_checks script does not understand all triples. This fixes it up as needed to keep testing Thumb1 code.
-
Florian Hahn authored
Additional test cases for #57825.
-
Simon Pilgrim authored
Noticed while triaging alignment issues for #57872
-
Simon Pilgrim authored
Noticed while triaging alignment issues for #57872
-
Nathan James authored
Reviewed By: LegalizeAdulthood Differential Revision: https://reviews.llvm.org/D134590
-
- Sep 24, 2022
-
-
Sanjay Patel authored
This is similar to the existing simplify: max (max X, Y), X --> max X, Y ...but the select condition can be one of several predicates as shown in the tests. The tests cycle through all 10 icmp preds for each min/max variant with 4 swapped operand patterns each (and the min/max operands are commuted in every other test within those). Some Alive2 examples to verify: https://alive2.llvm.org/ce/z/lCAQm4 https://alive2.llvm.org/ce/z/kzxVXC
-
Sanjay Patel authored
These are organized as 10 (predicates) * 4 (swapped operands) * 4 (min/max variants) = 160 tests.
-
Jun Zhang authored
Previously we only have an extension that warn void pointer deferencing in C++, but for C we did nothing. C2x 6.5.3.2p4 says The unary * operator denotes indirection. If it points to an object, the result is an lvalue designating the object. However, there is no way to form an lvalue designating an object of an incomplete type as 6.3.2.1p1 says "an lvalue is an expression (with an object type other than void)", so the behavior is undefined. Fixes https://github.com/llvm/llvm-project/issues/53631 Signed-off-by:
Jun Zhang <jun@junz.org> Differential Revision: https://reviews.llvm.org/D134461
-
James Y Knight authored
Summary: The existing undefined-bitfield-to-operand matching behavior is very hard to understand, due to the combination of positional and named matching. This can make it difficult to track down a bug in a target's instruction definitions. Over the last decade, folks have tried to work-around this in various ways, but it's time to finally ditch the positional matching. With https://reviews.llvm.org/D131003, there are no longer cases that _require_ positional matching, and it's time to start removing usage and support for it. Therefore: add a (default-false) option, and set it to true only in those targets that require positional matching today. Subsequent changes will start cleaning up additional in-tree targets. NOTE TO OUT OF TREE TARGET MAINTAINERS: If this change breaks your build, you may restore the previous behavior simply by adding: let useDeprecatedPositionallyEncodedOperands = 1; to your target's InstrInfo tablegen definition. However, this is temporary -- the option will be removed in the future. If your target does not set 'decodePositionallyEncodedOperands', you may thus start migrating to named operands. However, if you _do_ currently set that option, I recommend waiting until a subsequent change lands, which adds decoder support for named sub-operands. Differential Revision: https://reviews.llvm.org/D134073
-
James Y Knight authored
These names can then be matched by name against 'bits' fields in a record, to populate an instruction's encoding. This does _not_ yet change DecoderEmitter to allow by-name matching of sub-operands. Unlike the encoder, the decoder already defaulted to not supporting positional matching, and backends had workarounds in place for the missing decoding support. Additionally, use this new capability to allow the ARM and AArch64 backends not to require any positional operand matching. Differential Revision: https://reviews.llvm.org/D131003
-
Valentin Clement authored
NULL intrinsic with a MOLD argument can be used in a type constructor. This patch handles this use case with a specific lowering that create an unallocated box with the MOLD type. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D134554
-
Joseph Huber authored
This patch adds an additional check for if an options passed to the Clang driver could've been intended for the clang compiler. This is primarily done for the times when a user attempts to pass an option like `-ast-dump` to the driver instead. Reviewed By: MaskRay, aaron.ballman Differential Revision: https://reviews.llvm.org/D134550
-
eopXD authored
Address remaining work that dates back to discussion in D126745 Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D134513
-
Valentin Clement authored
BIND(C) Function returning character must return it by value and not as hidden argument like done currently. This patch update the code to return it by value for both use cases. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D134530
-
Craig Topper authored
-
Craig Topper authored
-
Jakub Kuderski authored
Fixes https://github.com/llvm/llvm-project/issues/57887 Reviewed By: antiagainst Differential Revision: https://reviews.llvm.org/D134580
-