- Apr 05, 2024
-
-
Andrzej Warzynski authored
This reverts commit 7b525529. Broken bot: * https://lab.llvm.org/buildbot/#/builders/179/builds/9794
-
- Apr 04, 2024
-
-
Simon Pilgrim authored
Matches Zn4FP# (which is mostly a copy) and avoids an issue in llvm-exegesis which is terrible at choosing the right portname when they have aliases.
-
Mark de Wever authored
This version update allows testing of `std::format` and the chrono timezone parsing in oss-fuzz.
-
Jay Foad authored
The current APInt::multiplicativeInverse takes a modulus which can be any value, but all in-tree callers use a power of two. Moreover, most callers want to use two to the power of the width of an existing APInt, which is awkward because 2^N is not representable as an N-bit APInt. Add a new overload of multiplicativeInverse which implicitly uses 2^BitWidth as the modulus.
-
Craig Topper authored
Should fix the cases noted in #86857
-
Piotr Sobczak authored
Similarly to the generic case below, preserve the NUW flag when reassociating adds with constants.
-
Cyndy Ishida authored
-
Simon Pilgrim authored
-
Simon Pilgrim authored
Makes it easier to algorithmically recreate the instruction name in various analysis scripts I'm working on
-
Simon Pilgrim authored
We were only using the Port23 memory ports and were missing the 2*Port1 uops entirely. Confirmed by Agner + uops.info/uica
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
YunQiang Su authored
TargetInfo has HasUnalignedAccess support now. For MIPSr6, we should set it according strict-align. For pre-R6, we always set strict-align and HasUnalignedAccess to false.
-
jeanPerier authored
See F'2023 section 11.4: "If the stop-code in an ERROR STOP statement is of type character or does not appear, it is recommended that a processor-dependent nonzero value be supplied as the process exit status" Fixes https://github.com/llvm/llvm-project/issues/66581.
-
Phoebe Wang authored
Intrinsics like @llvm.seh.scope.begin and @llvm.seh.scope.end which do not throw do not need funclets in catchpads or cleanuppads. Fixes #69428 Co-authored-by:
Robert Cox <robert.cox@intel.com> --------- Co-authored-by:
Robert Cox <robert.cox@intel.com>
-
Mikael Holmen authored
Without the change gcc warned like ../../clang/lib/CodeGen/CGBlocks.cpp:965:21: warning: unused variable 'refType' [-Wunused-variable] 965 | } else if (auto refType = type->getAs<ReferenceType>()) { | ^~~~~~~ -
Christian Ulmann authored
This reverts commit d6e45821 as it violates an assumption of Mem2Reg's block argument creation. Mem2Reg strongly assumes that all involved values have the same type as the alloca, which was relaxed by this PR. Therefore, branches got created that jumped to basic blocks with differently typed block arguments.
-
Jacek Caban authored
It's similar to #87370, but for lld-link.
-
Andrzej Warzyński authored
Integration tests for ArmSME require an emulator (there's no hardware available). Make sure that CMake complains if `MLIR_RUN_ARM_SME_TESTS` is set while `ARM_EMULATOR_EXECUTABLE` is empty. I'm also adding a note in the docs for future reference.
-
Yitzhak Mandelbaum authored
The previous API relied on pointer equality of inputs and outputs to signal whether a change occured. This was too subtle and led to bugs in practice. It was also very limiting: the override could not return an equivalent (but not identical) value.
-
Mehdi Amini authored
Reverts llvm/llvm-project#87543 The pre-merge Windows build is broken.
-
Jacek Caban authored
Adds support for ARM64EC, which should use the same search paths as ARM64. It's similar to #87370 and #87495. The test is based on the existing x86 test. Generally ARM64EC libraries are shipped together with native ARM64 libraries (using ECSYMBOLS section mechanism). getMachineArchType uses Triple::thumb, while the existing implementation uses Triple::arm. It's ultimately passed to MSVCPaths.cpp functions, so modify them to accept both forms.
-
OverMighty authored
Fixes #86502. cc @lntue
-
Victor Campos authored
Following https://github.com/llvm/llvm-project/pull/68313 this patch extends the idea to M-profile PACBTI. The Machine Scheduler can reorder instructions within a scheduling region depending on the scheduling policy set. If a BTI-clearing instruction happens to partake in one such region, it might be moved around, therefore ending up where it shouldn't. The solution is to mark all BTI-clearing instructions as scheduling region boundaries. This essentially means that they must not be part of any scheduling region, and as consequence never get moved: - PAC - PACBTI - BTI - SG Note that PAC isn't BTI-clearing, but it's replaced by PACBTI late in the compilation pipeline. As far as I know, currently it isn't possible to organically obtain code that's susceptible to the bug: - Instructions that write to SP are region boundaries. PAC seems to always be followed by the pushing of r12 to the stack, so essentially PAC is always by itself in a scheduling region. - CALL_BTI is expanded into a machine instruction bundle. Bundles are unpacked only after the last machine scheduler run. Thus setjmp and BTI can be separated only if someone deliberately run the scheduler once more. - The BTI insertion pass is run late in the pipeline, only after the last machine scheduling has run. So once again it can be reordered only if someone deliberately runs the scheduler again. Nevertheless, one can reasonably argue that we should prevent the bug in spite of the compiler not being able to produce the required conditions for it. If things change, the compiler will be robust against this issue. The tests written for this are contrived: bogus MIR instructions have been added adjacent to the BTI-clearing instructions in order to have them inside non-trivial scheduling regions.
-
Simon Pilgrim authored
We were using raw instruction count which overestimated the costs for #67803
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
Guillaume Chatelet authored
Introduced in #87613.
-
Florian Hahn authored
Recursively remove dead recipes after simplifying vector loop exit branch.
-
Luke Lau authored
These cannot be picked up by TableGen patterns alone and need to be handled by combineBinOp_VLToVWBinOp_VL
-
Philip Lassen authored
Before the change `test-loop-fusion` and `affine-super-vectorizer-test` options were in their own category. This was because they used the standard llvm command line parsing with `llvm::cl::opt`. This PR moves them over to the mlir `Pass::Option` class. Before the change ``` $ mlir-opt --help ... General options: ... Compiler passes to run Passes: ... Pass Pipelines: ... Generic Options: .... affine-super-vectorizer-test options: --backward-slicing ... --vectorize-affine-loop-nest test-loop-fusion options: --test-loop-fusion-dependence-check ... --test-loop-fusion-transformation ``` After the change ``` $ mlir-opt --help ... General options: ... Compiler passes to run Passes: ... --affine-super-vectorizer-test --backward-slicing ... --vectorize-affine-loop-nest ... --test-loop-fusion options: --test-loop-fusion-dependence-check ... --test-loop-fusion-transformation ... Pass Pipelines: ... Generic Options: ... ``` --------- Signed-off-by:philass <plassen@groq.com>
-
Zahira Ammarguellat authored
Complex division on Windows with `-fcomplex-arithmetic=promoted` and `-ffp-model=strict` is crashing. This patch fixes the issue. See https://godbolt.org/z/15Gh7nvdM
-
Simon Pilgrim authored
[VectorCombine][X86] foldShuffleOfCastops - fold shuffle(cast(x),cast(y)) -> cast(shuffle(x,y)) iff cost efficient (#87510) Based off the existing foldShuffleOfBinops fold Fixes #67803
-
Tom Eccles authored
Currently, by-ref reductions will allocate the per-thread reduction variable in the initialization region. Adding a cleanup region allows that allocation to be undone. This will allow flang to support reduction of arrays stored on the heap. This conflation of allocation and initialization in the initialization should be fixed in the future to better match the OpenMP standard, but that is beyond the scope of this patch.
-
Tom Eccles authored
Patch 1: https://github.com/llvm/llvm-project/pull/86978 Patch 2: https://github.com/llvm/llvm-project/pull/86979
-
Simon Pilgrim authored
Reverse the fold with handling inside canCreateUndefOrPoison for cases where we know that the extract index is in bounds. This exposed a number or regressions, and required some initial freeze handling of SCALAR_TO_VECTOR, which will require us to properly improve demandedelts support to handle its undef upper elements. There is still one outstanding regression to be addressed in the future - how do we want to handle folds involving frozen loads? Fixes #86968
-
Andrew V. Teylu authored
This PR fixes the following issue when working with `clang-repl`: ``` fatal error: error in backend: Inline asm not supported by this streamer because we don't have an asm parser for this target ``` When working with the following input (named "unit.cpp"): ```cpp __asm(".globl _ZSt21ios_base_library_initv"); int x; ``` and then in `clang-repl`: ``` #include "unit.cpp" x = 10; ``` Signed-off-by:Andrew V. Teylu <andrew.teylu@vector.com>
-
jeanPerier authored
Remove the TODO, the patch that ensured that the descriptor upper bound is set to -1 was https://github.com/llvm/llvm-project/pull/79156.
-
Simon Pilgrim authored
Stop clang-format from trying to put all the case on separate lines.
-