- Feb 13, 2024
-
-
Haojian Wu authored
-
Alexey Bataev authored
Added basic support for strided loads support in SLP vectorizer. Supports constant strides only. If the strided load must be reversed, applies -stride to avoid extra reverse shuffle. Reviewers: preames, lukel97 Reviewed By: preames Pull Request: https://github.com/llvm/llvm-project/pull/80310
-
Rolf Morel authored
-
Logikable authored
In the beginning, Clang only emitted atomic IR for operations it knew the underlying microarch had instructions for, meaning it required significant knowledge of the target. Later, the backend acquired the ability to lower IR to libcalls. To avoid duplicating logic and improve logic locality, we'd like to move as much as possible to the backend. There are many ways to describe this change. For example, this change reduces the variables Clang uses to decide whether to emit libcalls or IR, down to only the atomic's size.
-
Felipe de Azevedo Piovezan authored
The DWARF 5 debug_str_offsets section starts with a header, which must be skipped in order to access the underlying `strp`s. However, the verifier supports some pre-standardization version of this section (with the same section name), which does not have a header. In this case, the offsets start on the first byte of the section. More in [1] and [2] about this legacy section. How does The DWARF verifier figure out which version to use? It manually reads the **first** header in debug_info and uses that. This is wrong when multiple debug_str_offset sections have been linked together, in particular it is wrong in the following two cases: 1. A standard DWARF 4 object file (i.e. no debug_str_offsets) linked with a standard DWARF 5 object file. 2. A non-standard DWARF 4 object file (i.e. containing the header-less debug_str_offsets section) linked with a standard DWARF 5 object file. Based on discussions in https://github.com/llvm/llvm-project/pull/81210, the legacy version is only possible with dwo files, and dwo files cannot mix the legacy version with the dwarf 5 version. As such, we change the verifier to only check the debug_info header in the case of dwo files. If it sees a dwarf 4 version, it handles it the legacy way. Note: the modified test was technically testing an unsupported combination of dwarf version + non-dwo sections. To see why, simply note that the test contained no `debug_info.dwo` sections, so the call to DWARFObject::forEachInfoDWOSections was doing nothing. We were finding the error through the "standard version", which shouldn't happen. [1]: https://gcc.gnu.org/wiki/DebugFission [2]: https://gcc.gnu.org/wiki/DebugFissionDWP
-
Vlad Serebrennikov authored
This patch converts `Sema::TemplateDeductionResult` into a scoped enum in namespace scope, making it eligible for forward declaring. This is useful in certain contexts, such as `preferred_type` annotations on bit-fields.
-
Felipe de Azevedo Piovezan authored
This commit brings support for debug_names in DWARFYAML. It parses YAML and generates emits a DWARF5 Accelerator table with the following limitations: 1. All forms must have a fixed length (zero length is also ok). 2. Hard-coded support for DWARF 5 and DWARF32. 3. The generated table does not contain a hash index All of these limitations can be lifted in the future, but for now this is good enough to enable testing.
-
David Truby authored
This patch reworks the way that parallel reduction operations function to better match the expected semantics from the OpenMP specification. Previously specific omp.reduction operations were used inside the region, meaning that the reduction only applied when the correct operation was used, whereas the specification states that any change to the variable inside the region should be taken into account for the reduction. The new semantics create a private reduction variable as a block argument which should be used normally for all operations on that variable in the region; this private variable is then combined with the others into the shared variable. This way no special omp.reduction operations are needed inside the region. This patch only makes the change for the `parallel` operation, the change for the `wsloop` operation will be in a separate patch. --------- Co-authored-by:Kiran Chandramohan <kiran.chandramohan@arm.com>
-
Craig Topper authored
The bug mentioned in the comment has been committed and did change the cfi_offset.
-
Craig Topper authored
When a branch target is too far away we need to emit an indirect branch. We scavenge a register for this since we don't know we need this until after register allocation. Jumps using X1 and X5 as the source are hints to the hardware to pop the return-address stack. We should avoiding using them for jumps that aren't a return or tail call.
-
Usman Nadeem authored
Follow-up for #78374
-
Timm Bäder authored
-
Valentin Clement (バレンタイン クレメン) authored
These hardcoded attribute name are a leftover from the upstreaming period when there was no way to get the attribute name without an instance of the operation. It is since possible to do without them and they should be removed to avoid duplication. This PR cleanup the fir.dt_entry and fir.dispatch ops of these hardcoded attribute name and use their generated getters. Some other PRs will follow to cleanup other operations.
-
Valentin Clement (バレンタイン クレメン) authored
These hardcoded attribute name are a leftover from the upstreaming period when there was no way to get the attribute name without an instance of the operation. It is since possible to do without them and they should be removed to avoid duplication. This PR cleanup the fir.global op of these hardcoded attribute name and use their generated getters. Some other PRs will follow to cleanup other operations.
-
Alexey Bataev authored
This reverts commit 0940f908 to fix issues reported in https://github.com/llvm/llvm-project/pull/80310.
-
Jay Foad authored
-
Andrei Safronov authored
This PR provides implementation of the basic codegen infra such as TargetFrameLowering, MCInstLower, AsmPrinter, RegisterInfo, InstructionInfo, TargetLowering, SelectionDAGISel. Migrated from https://reviews.llvm.org/D145658
-
Vlad Serebrennikov authored
This patch refactors how values are stored inside `IdentifierInfo::ObjcOrBuiltinID` bit-field, and annotates it with `preferred_type`. In order to make the value easier to interpret by debuggers, a new `ObjCKeywordOrInterestingOrBuiltin` enum is added. Previous "layout" of this fields couldn't be represented with this new enum, because it skipped over some arbitrary enumerators, so a new "layout" was invented, which is reflected in `ObjCKeywordOrInterestingOrBuiltin` enum. I believe the new layout is simpler than the new one.
-
Konstantin Zhuravlyov authored
- s_barrier is not present on gfx12
-
Nick Desaulniers authored
-
Benjamin Maxwell authored
The interleave operation constructs a new vector by interleaving the elements from the trailing (or final) dimension of two input vectors, returning a new vector where the trailing dimension is twice the size. Note that for the n-D case this differs from the interleaving possible with `vector.shuffle`, which would only operate on the leading dimension. Another key difference is this operation supports scalable vectors, though currently a general LLVM lowering is limited to the case where only the trailing dimension is scalable. Example: ```mlir %0 = vector.interleave %a, %b : vector<[4]xi32> ; yields vector<[8]xi32> %1 = vector.interleave %c, %d : vector<8xi8> ; yields vector<16xi8> %2 = vector.interleave %e, %f : vector<f16> ; yields vector<2xf16> %3 = vector.interleave %g, %h : vector<2x4x[2]xf64> ; yields vector<2x4x[4]xf64> %4 = vector.interleave %i, %j : vector<6x3xf32> ; yields vector<6x6xf32> ``` Note: This change alone does not add any lowerings. -
Florian Hahn authored
Add extra test coverage for transpose lifting using -matrix-print-after-transpose-opt. The added tests show a mis-compile.
-
Paul T Robinson authored
Use indicative not imperative; fix missing capitalization; spell out some abbreviations; "time-stamp" not "time stamp"; and similar.
-
Timm Bäder authored
I screwed this up in an earlier NFC commit, but the isZero() case needs to set IsNullPtr to true of course.
-
Florian Hahn authored
Factor our forward shape computation for a given instruction. This allows re-use in a follow-up fix.
-
- Feb 12, 2024
-
-
Stephen Tozer authored
This reapplies commit bdde5f9b. The above commit previously failed due to buildbot errors: https://lab.llvm.org/buildbot/#/builders/205/builds/25126 https://lab.llvm.org/buildbot/#/builders/184/builds/10242 These failures should have been respectively resolved by the commits: afa413a1 b5a273a1 As noted in the original commit, this commit may break downstream tests. If this commit is breaking your downstream tests, please see comment 12 in [0], which documents the kind of variation in tests we'd expect to see from this change and what to do about it. [0] https://discourse.llvm.org/t/rfc-instruction-api-changes-needed-to-eliminate-debug-intrinsics-from-ir/68939
-
Jon Roelofs authored
The streaming mode change is incompatible with the ifunc mechanism used to implement FMV: we can't conditionally change it based on the particular callee that is resolved at runtime. Fixes: https://github.com/llvm/llvm-project/issues/80077
-
Nikita Popov authored
-
Haojian Wu authored
-
nikitalita authored
This adds the following values to the CodeView.h enums (and updates the various functions that use them): * CPUType: * Added `Unknown` * This is not currently documented in the online documentation, but this is present in `cvconst.h` in the latest DIA SDK (Visual Studio 2022, 17.7.6) * `Unknown` is the CPUType that is emitted by `aliasobj.exe` in the Compile3Sym records, and can be found in objects that link with `oldnames.lib`  * SourceLanguage (All of these are documented at https://learn.microsoft.com/en-us/visualstudio/debugger/debug-interface-access/cv-cfl-lang?view=vs-2022 and are present in `cvconst.h` in the latest DIA SDK (Visual Studio 2022, 17.7.6)) * Added Go * Added AliasObj * emitted by `aliasobj.exe` in certain records, can be found in PDBs that link with `oldnames.lib` * Changed Swift to the official Microsoft enumeration * Added `OldSwift` * The old Swift enumeration of `S` was changed to `OldSwift` to allow pdb dumping utilities to continue to emit correct source language information for old PDBs ### WARNING The `Swift` change is a potentially breaking change, as the swift compiler will now emit `0x13` for the SourceLanguage type in PDB records instead of `S`. This could potentially break utilities that relied on the old enum value. * CallType * Added Swift * This is not currently documented in the online documentation, but this is present in `cvconst.h` in the latest DIA SDK (Visual Studio 2022, 17.7.6) -
Tarun Prabhu authored
Added the meeting numbers and passcodes for both the technical and community calls, just in case. Removed an obsolete reference to "LLVM flang and current flang". Some minor stylistic edits.
-
Timm Bäder authored
This protected GetPtrField and ArrayDecay ops from dummy pointers which fixes the attached test case for designated initializers in C.
-
Timm Bäder authored
-
Timm Bäder authored
-
Balázs Kéri authored
This checker does not exist (any more?) but appeared in the documentation. No other references to CallAndMessageUnInitRefArg are found in the full clang code.
-
Hirofumi Nakamura authored
This implements the annotation of the values in TableGen. The main changes are, - parseTableGenValue(), the simplified parser method for the syntax of values. - modified consumeToken() to parseTableGenValue in 'if', 'assert' and after '='. - modified parseParens() to call parseTableGenValue inside. - modified parseSquare() to to call parseTableGenValue inside, with skipping separator tokens. - modified parseAngle() to call parseTableGenValue inside, with skipping separator tokens.
-
Haojian Wu authored
The change caused an asan crash when running the `QualifierFixerTest.IsQualifierType` unittest, see details: https://github.com/llvm/llvm-project/pull/80241#issuecomment-1938749844 This reverts commit 7f40c5cc.
-
Joseph Huber authored
Summary: A previous patch introduced `all` as a special architecture. I have decided I do not like this name and have changed it to `generic`.
-
Stephen Tozer authored
In `StackInfoBuilder::visit(Instruction &Inst)`, operations are performed on memory-related instructions, including debug intrinsics that refer to "interesting" allocas. There is a block that also visits DPValues attached to the instruction, but this block is near the end of the function; this has two problems: 1. The DPValues attached to an instruction precede that instruction, so they should always be processed before the instruction itself. 2. More importantly, some of the paths for visiting other instructions contain early returns, which will result in the DPValues not being visited at all. This patch simply moves the DPValue-visiting block to the top of the function, which should resolve both of these problems.
-
Antonio Frighetto authored
Hint further tail call optimization opportunities when the examined returned value is the return value of a known intrinsic or library function, and it appears as first function argument. Fixes: https://github.com/llvm/llvm-project/issues/75455.
-