- Jun 03, 2024
-
-
Matthias Springer authored
Co-authored-by:Markus Böck <markus.boeck02@gmail.com>
-
- May 21, 2024
-
-
Matthias Springer authored
This commit simplifies the design of the `GreedyPatternRewriterDriver` class. This class used to inherit from both `PatternRewriter` and `RewriterBase::Listener` and then attached itself as a listener. In the new design, the class has a `PatternRewriter` field instead of inheriting from `PatternRewriter`, which is generally perferred in object-oriented programming.
-
- May 19, 2024
-
-
David Green authored
-
Yingwei Zheng authored
This patch supports `G_CONSTANT_FOLD_BARRIER` on RISCV to generate the following inst seq without crash: ``` define i64 @xor_and_i64(i64 %x) { entry: %y = and i64 %x, 16383 %z = xor i64 %y, 16368 ret i64 %z } ``` -
LLVM GN Syncbot authored
-
paperchalice authored
In order to test SelectionDAG for target AMDGPU, we need CodeGenPassBuilder.
-
NAKAMURA Takumi authored
`__sanitizer_siginfo` has been introduced in D142117. (llvmorg-16-init-17950-ged9ef9b4) It is incompatible to -pedantic. `clang_rt.ctx_profile` has been introduced in #92456.
-
NAKAMURA Takumi authored
-
Mingming Liu authored
The smaller class member are more focused and easier to maintain. This also paves the way for partial header forward compatibility in https://github.com/llvm/llvm-project/pull/88212 --------- Co-authored-by:
Kazu Hirata <kazu@google.com>
-
Mingming Liu authored
Add 'sort' here since it's helpful when container type changes (for example, https://github.com/llvm/llvm-project/pull/88024 wants to change container type from `unordered_set` to `DenseMap) @MaskRay points out `std::` doesn't randomize the iteration order of `unordered_{set,map}`, and the iteration order for single build is deterministic.
-
Nicolai Hähnle authored
Labels are matched using a regexp of the form '^(pattern):', which requires the addition of a "suffix" concept to NamelessValue. Aside from that, the key challenge is that block labels are values, and we typically capture values including the prefix '%'. However, when labels appear at the start of a basic block, the prefix '%' is not included, so we must capture block label values *without* the prefix '%'. We don't know ahead of time whether an IR value is a label or not. In most cases, they are prefixed by the word "label" (their type), but this isn't the case in phi nodes. We solve this issue by leveraging the two-phase nature of variable generalization: the first pass finds all occurences of a variable and determines whether the '%' prefix can be included or not. The second pass does the actual substitution. This change also unifies the generalization path for assembly with that for IR and analysis, in the hope that any future changes avoid diverging those cases future. I also considered the alternative of trying to detect the phi node case using more regular expression special cases but ultimately decided against that because it seemed more fragile, and perhaps the approach of keeping a tentative prefix that may later be discarded could also be eventually applied to some metadata and attribute cases. Note that an early version of this change was reviewed as https://reviews.llvm.org/D142452, before version numbers were introduced. This is a substantially updated version of that change.
-
David Green authored
This will help in later patches where the checks for operands being instructions is removed, and might help not remove unnecessary poison lanes.
-
David Green authored
As a small addition to #91148, this uses copysign to produce the correct sign for zero when converting frem to div/trunc/mul when we do not know that the input is positive (and we care about sign bits). The copysign lets us get the sign of zero correct. In testing, the only case this produced different results than fmod was: frem -inf, 4.0 -> nan vs -nan
-
Jessica Clarke authored
Fixes: 060df78c
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Florian Hahn authored
The last use of the function has been removed a while ago. Remove the unused function.
-
Alex MacLean authored
Add support for generating `st.param` instructions with direct use of immediates. This eliminates the need for a `mov` instruction prior to the `st.param` resulting in more concise emitted PTX.
-
- May 18, 2024
-
-
Mircea Trofin authored
-
Valentin Clement authored
-
Krzysztof Parzyszek authored
Turns out it was already in Analysis/CFGLoopInfo, so just move it to IR/AsmPrinter.
-
Shengchen Kan authored
``` %1:gr64 = COPY $eflags OP1 may update eflags $eflags = COPY %1 OP2 may use eflags ``` To use eflags as input at 4th instruction, we need to use SETcc to preserve the eflags before 2, and update the source condition of OP2 according to value in GPR %1. In this patch, we support CCMP/CTEST as OP2.
-
Thorsten Schütt authored
-
Vlad Serebrennikov authored
-
Antonio Frighetto authored
Ignore `ImplicitCastExpr` when building `AttrExp` for capability attribute diagnostics. Fixes: https://github.com/llvm/llvm-project/issues/92118.
-
Fangrui Song authored
-
Kareem Ergawy authored
-
Michael Klemm authored
-
Fangrui Song authored
``` .irp foo,1 nop .endr nop ``` expands to an excess EOL between two nop lines. Other loop directives and .macro have the same issue. `Lex()` at "Jump to the macro instantiation and prime the lexer" requires that there is one single \n token in CurTok. Therefore, we cannot consume the trailing \n when parsing the macro(-like) body. (commit c6e787f7 (reverted by 1e5f29af)) Instead, skip the potential \n after jumpToLoc at handleMacroExit.
-
jiajie zhang authored
The purpose of this PR is to remove the 'etime-function.mlir' file that I mistakenly committed in https://github.com/llvm/llvm-project/pull/92571. This file is not necessary in source code control, and its presence may cause confusion or misunderstanding.
-
Aiden Grossman authored
f3524e9a accidentally touched the dependabot config. This patch reverts that change.
-
Mircea Trofin authored
This reverts commit 881f20e9. Passing -ldl -lpthread explicitly
-
Valentin Clement (バレンタイン クレメン) authored
-
Fangrui Song authored
This reverts commit 01f79899. This unusual special case has been discussed on the binutils mailing list. The approach will be revisited: https://sourceware.org/pipermail/binutils/2024-May/134092.html Pull Request: https://github.com/llvm/llvm-project/pull/92584
-
Jonas Devlieghere authored
-
David Blaikie authored
-
Aiden Grossman authored
This reverts commit 487d5af6. This was causing failures on some buildbots. https://lab.llvm.org/buildbot/#/builders/247/builds/18559
-
-
Dan Liew authored
In 0ec3b972 an additional restriction was added when applying the `counted_by` attribute to flexible array members in structs. The restriction prevented the element type being a struct that itself had a flexible array member. E.g.: ``` struct has_unannotated_VLA { int count; char buffer[]; }; struct buffer_of_structs_with_unnannotated_vla { int count; struct has_unannotated_VLA Arr[] __counted_by(count); }; ``` In this example assuming the size of `Arr` is `sizeof(struct has_unannotated_VLA)*count` (which is what the attribute says) is wrong because it doesn't account for the size of `has_unannotated_VLA::buffer`. This is why this kind of code construct was treated as an error. However, it turns out existing Linux kernel code used the attribute on a flexible array member in this way (https://github.com/llvm/llvm-project/pull/90786#issuecomment-2118416515). To unbreak the build this restriction is downgraded to a warning with the plan to make it an error again once the errornous use of the attribute in the Linux kernel is resolved.
-
Jeremy Kun authored
Out of tree we have other dialects that use the ring attribute, but we get compilation errors when generating ops while pulling in all the Polynomial tablegen ops (there's no `-dialect` flag in `mlir-tblgen` for op generation like there is for attributes and types). This PR simply moves the attributes into its own file, so it can be included separately, and this also requires moving the dialect declaration into its own file.
-