- Jan 07, 2024
-
-
Matthias Springer authored
Also improve the implementation of `findCommonDominator` (skip duplicate blocks) and extract it from `BufferPlacementTransformationBase` (so that `BufferPlacementTransformationBase` can be retired eventually).
-
Matthias Springer authored
`BufferPlacementTransformationBase::isLoop` checks if there a loop in the region branching graph of an operation. This algorithm is similar to `isRegionReachable` in the `RegionBranchOpInterface`. To avoid duplicate code, `isRegionReachable` is generalized, so that it can be used to detect region loops. A helper function `RegionBranchOpInterface::hasLoop` is added. This change also turns a recursive implementation into an iterative one, which is the preferred implementation strategy in LLVM. Also move the `isLoop` to `BufferOptimizations.cpp`, so that we can gradually retire `BufferPlacementTransformationBase`. (This is so that proper error handling can be added to `BufferViewFlowAnalysis`.)
-
Yingwei Zheng authored
This patch relaxes the one-use constraints for `icmp pred (binop X, Z), (binop Y, Z)`. It will enable more optimizations with pointer arithmetic. One example in `boost::match_results::set_size`: ``` declare void @use(i64) define i1 @src(ptr %a1, ptr %a2, ptr %add.ptr.i66, i64 %sub.ptr.rhs.cast.i) { %sub.ptr.lhs.cast.i = ptrtoint ptr %a1 to i64 %sub.ptr.rhs.cast.i = ptrtoint ptr %a2 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 24 call void @use(i64 %sub.ptr.div.i) %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr.i66 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i = sdiv exact i64 %sub.ptr.sub.i.i, 24 %cmp.i.not.i.i = icmp eq i64 %sub.ptr.div.i.i, %sub.ptr.div.i ret i1 %cmp.i.not.i.i } define i1 @tgt(ptr %a1, ptr %a2, ptr %add.ptr.i66, i64 %sub.ptr.rhs.cast.i) { %sub.ptr.lhs.cast.i = ptrtoint ptr %a1 to i64 %sub.ptr.rhs.cast.i = ptrtoint ptr %a2 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 24 call void @use(i64 %sub.ptr.div.i) %cmp.i.not.i.i = icmp eq i64 %sub.ptr.sub.i.i, %sub.ptr.sub.i ret i1 %cmp.i.not.i.i } ``` -
Bill Wendling authored
This reverts commit 0903d992. This is causing all non-Visual Studio builds fail.
-
Bill Wendling authored
Visual Studio needs the class template stuff. C:\llvm\include\llvm/Analysis/MemoryBuiltins.h(217): error C2990: 'llvm::SizeOffsetType': non-class template has already been declared as a class template C:\llvm\include\llvm/Analysis/MemoryBuiltins.h(193): note: see declaration of 'llvm::SizeOffsetType'
-
Bharathi Ramana Joshi authored
-
Abhinav271828 authored
The ParamPoint datatype has each column representing an affine function. The code for generating functions is modified to reflect this.
-
Abhinav271828 authored
We add some basic type aliases and function definitions relating to cones for Barvinok's algorithm. These include functions to get the dual of a cone and find its index.
-
cor3ntin authored
-
David Green authored
This should have been checking that the transform was valid, but used incorrect conditions letting through invalid combinations of lo/hi extracts. Hopefully fixes #76769
-
Luke Lau authored
-
Fangrui Song authored
-
Alex Beloi authored
see #73359 Declarative assemblyFormat ODS is more concise and requires less boilerplate than filling out CPP interfaces. Changes: * updates the Ops defined in `SPIRVAtomicOps.td` to use assemblyFormat. * Removes print/parse from`AtomcOps.cpp` which is now generated by assemblyFormat * Adds `Trait` to verify that a pointer operand `foo`'s pointee type matches operand `bar`'s type * * Updates error message expected in tests from new Trait * Updates tests to updated format (largely using <operand> in place of "operand")
-
Craig Topper authored
This reverts commit b5de136e. Based on post commit feedback, I need to some other work before this makes sense.
-
Fangrui Song authored
-
Mircea Trofin authored
-
Maksim Levental authored
-
Arthur Eubanks authored
-
Kohei Yamaguchi authored
Closes #76106 --------- Co-authored-by:Lei Zhang <antiagainst@gmail.com>
-
Craig Topper authored
-Rename sub_32_hi to sub_gpr_odd -Add dedicated sub_gpr_even. -Rename sub_32 and sub_16 to sub_fpr32 and sub_fpr16. -Remove start offset from sub_gpr_odd. AArch64 doesn't use non-zero offset for GPR tuples so I don't think we need to. This is preparation for a RV64 GPRPair for Zacas.
-
Thorsten Schütt authored
This reverts commit 16875555.
-
- Jan 06, 2024
-
-
Shengchen Kan authored
BTW, we relax the condition for EVEX compression from ST.hasAVX512() to ST.hasEGPR() || ST.hasAVX512(). It does not have any effect now b/c no APX instruction is in the EVEX compression table so far. This patch is to extract NFC in #77065 into a separate commit.
-
Younan Zhang authored
This fixes the bug introduced by https://github.com/llvm/llvm-project/commit/6db007a0654ed7a6ed5c3aa3b61a937c19a6bc6b. We construct placeholder template arguments for template-template parameters to avoid mismatching argument substitution since they have different depths with their corresponding template arguments. In this case, ```cpp template <template <Concept C> class T> void foo(T<int>); ``` T lies at the depth 0, and C lies at 1. The corresponding argument, of which there is exactly one, int, is at depth 0. If we consider the argument as the outermost one, then we would end up substituting 'int' into the wrong parameter T. We used to perform such placeholder construction during the context walk-up. In the previous patch, we slipped through that inadvertently because we would walk up to the parent, which is precisely a FileContext for template-template parameters, after adding innermost arguments. Besides, this patch moves the sanity check up to the context switch. That way, we avoid dereferencing null pointers if ND is unspecified. Closes https://github.com/llvm/llvm-project/issues/57410. Closes https://github.com/llvm/llvm-project/issues/76604. (The case is slightly different than that in #57410. We should *not* assume the surrounding context to be a file-scope one.)
-
Shengchen Kan authored
Those "_REV" instructions should not appear before encoding optimization, while macro fusion and flag-copy lowering are before encoding optimization.
-
Shengchen Kan authored
1. Simplify getValueFromBitsInit about cast and return type 2. Remove out-of-date comments and allow memory ops in function object `IsMatch` so that we can reuse it for EVEX2Legacy compression. This patch is to extract NFC in #77065 into a separate commit.
-
Florian Hahn authored
With #70253 landed, selects for reduction results are explicitly used by ComputeReductionResult and Selects can be marked as not having side-effects again. This reverts the revert commit 17303290.
-
Qizhi Hu authored
Parameter variable which is forwarded in lambda capture list or in body by reference is reasonable and current version of this check produces false positive on these cases. This patch try to fix the [issue](https://github.com/llvm/llvm-project/issues/68105 ) Co-authored-by:
huqizhi <836744285@qq.com>
-
Abhinav271828 authored
We shift the GeneratingFunction.h header file to the include/ directory and wrap it in a `detail` namespace.
-
Shengchen Kan authored
This patch is to address my review comments in #77065 to simplify the implemention of EVEX2Legacy compression.
-
Thorsten Schütt authored
-
Guray Ozen authored
-
Shubham Sandeep Rastogi authored
-
Haojian Wu authored
-
Shengchen Kan authored
-
Shengchen Kan authored
Remove these two classes and put all the entries in X86 EVEX compression tables that need special handling in .def file. PR #77065 tries to add entries that need special handling for APX in .def file. Compared to setting fields in td files, that method looks cleaner. This patch is to unify the addition of manual entries.
-
Craig Hesling authored
This is important to aid development of Python type annotations in the libclang binding. See https://github.com/llvm/llvm-project/issues/76664 for more details. * Run on all pull requests and direct pushes. * This makes use of the existing llvm-project-tests.yml recipe, which will preload ccache from previous runs. * Building libclang currently takes about 9mins when ccache is warm and about an 1hr 20mins if it is cold using the standard GitHub ubuntu runner. * In the future, this could be broken into the following discrete steps for clarity: 1. Build libclang dependency. ninja -C build libclang 2. Run Python unit tests. ninja -C build check-clang-python * Followup changes will bring testing on older python versions and static type checking. Issue https://github.com/llvm/llvm-project/issues/76601.
-
Craig Hesling authored
Remove the redundant sccache cache key prefix. This prefix is already added by the ccache action, which results in cache keys like "sccache-sccache-ubuntu-...". See the following source lines as proof: https://github.com/hendrikmuhs/ccache-action/blob/2a51777f6f64b7b7bea213601acba8f5f4fdbe03/src/restore.ts#L22-L23
-
Craig Hesling authored
The "Setup ccache" step on macOS-11 builds takes between 15 to 20 mins, whereas this step takes a less than 10 seconds on other runners. The bulk of this time is spent at the "Install sccache" step, where brew emits warnings like "Warning: You are using macOS 11." and "We (and Apple) do not provide support for this old version...". Bumping the version of macOS greatly decreases this cache setup time to about 20 seconds. Furthermore, it seems like it is speeding up general build times, too. It appears that https://github.com/actions/virtual-environments/issues/5900 has been resolved or obsoleted, so I do not believe we need to lock macOS to 11 anymore.
-
hev authored
This patch gets the code model from global variable attribute if it has, otherwise the target's will be used. --------- Signed-off-by:WANG Rui <wangrui@loongson.cn>
-
NAKAMURA Takumi authored
-