- Jun 01, 2021
-
-
Roman Lebedev authored
... but lane-crossing shuffles are slow.
-
Roman Lebedev authored
Currently, X86 backend only has a global one-size-fits-all `FeatureFastVariableShuffle` feature, which controls profitability of both the cross-lane and per-lane variable shuffles. I guess, this has been fine so far. But at least on AMD Zen 3, while per-line variable shuffles (e.g. `VPSHUFB`) are as fast as as shuffles with fixed/immediate mask, while lane-crossing shuffles, e.g. `VPERMPS` is performing worse. So to get the benefits of variable-mask shuffles, but not the drawbacks of lane-crossing shuffles, as suggested by @RKSimon, split the feature flag into two. Differential Revision: https://reviews.llvm.org/D103274
-
Martin Storsjö authored
The pipes.quote function quotes using single quotes, the same goes for the newer shlex.quote (which is the preferred form in Python 3). This isn't suitable for quoting in command lines on Windows (and the documentation for shlex.quote even says it's only usable for Unix shells). In general, the python subprocess.list2cmdline function should do proper quoting for the platform's current shell. However, it doesn't quote the ';' char, which we pass within some arguments to run.py. Therefore use the custom reimplementation from lit.TestRunner which is amended to quote ';' too. The fact that arguemnts were quoted with single quotes didn't matter for command lines that were executed by either bash or the lit internal shell, but if executing things directly using subprocess.call, as in _supportsVerify, the quoted path to %{cxx} fails to be resolved by the Windows shell. This unlocks 114 tests that previously were skipped on Windows. Differential Revision: https://reviews.llvm.org/D103310 -
Nathan Ridge authored
Differential Revision: https://reviews.llvm.org/D102148
-
Serge Pavlov authored
The test CodeGen/PowerPC/vector-constrained-fp-intrinsics.ll checks code generation for constrained floating point intrinsics. Many test cases in it were implemented using operations on constants. Constant folding of constrained intrinsics would make these test cases almost useless, because they would check only constant loading. To keep the tests useful, operations on constants were replaced with operations on function parameters. Differential Revision: https://reviews.llvm.org/D103259
-
Max Kazantsev authored
-
Lewuathe authored
A single backslash is not properly escaped in the web documentation. We can make sure to escape for rendering subscripts. Additionally, it also fixed the mal-formed equations in //"Affine to fixed point"// and //"Fixed point to affine"// sections. With this fix, the page is rendered as follows. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D101252
-
Nathan Chancellor authored
This reverts commit 4f2fd381. The Linux kernel fails to build after this commit. See https://reviews.llvm.org/D99481 for a reproducer. Signed-off-by:
Nathan Chancellor <nathan@kernel.org>
-
Arthur Eubanks authored
-
Albion Fung authored
The code gen for f32 to i32 bitcast is not currently the most efficient; this patch removes some unneccessary instructions gerneated. Differential revision: https://reviews.llvm.org/D100782
-
Bjorn Pettersson authored
The tightened checks from commit 722c39fe did not work fully for buildbots using symlinks in repo paths. This patch is not fully reverting 722c39fe, as we still match that there is a "/lib" somewhere in the path before "/clang/". So this is once again a bit fragile in case someone would put their repo in a base directory, for example, named "/scratch/lib/foo/clang/llvm-project/". But it is atleast a bit better than the original checks (avoiding the problem that commit 722c39fe was solving).
-
Congzhe Cao authored
This patch fixes pr43326 and pr48212. Currently when we move reduction phis to the right place, loop interchange assumes the first phi in loop headers is an induction phi, skips the first phi and assumes the rest of phis are candidate reduction phis to move. However, it may not always be the case. This patch loops over all phis in loop headers and considers a phi node as a candidate reduction phi to move only when it is indeed a reduction phi across outer and inner loop. Reviewed By: Whitney Differential Revision: https://reviews.llvm.org/D102743
-
Florian Hahn authored
Also remove mustprogress function attribute from one of the tests Extends test coverage for D103382.
-
Martin Storsjö authored
Avoid including a header that is known not to work with clang in MSVC mode when compiling as C. (Alternatively, this could be something like "XFAIL: clang && msvc", but I think it's more useful to actually check the rest of the test instead of expecting the whole test to fail.) Differential Revision: https://reviews.llvm.org/D103400
-
Martin Storsjö authored
This was added inconsistently in 19fd9039; Windows doesn't have the aligned_alloc function (neither MSVC nor MinGW toolchains) and we don't define _LIBCPP_HAS_ALIGNED_ALLOC while building libcxx. Differential Revision: https://reviews.llvm.org/D103399
-
Martin Storsjö authored
This define was out of sync with the corresponding define in tests, it was added inconsistently in 171c77b7. Modern MSVC environments do have these typedefs and functions. Differential Revision: https://reviews.llvm.org/D103398
-
Martin Storsjö authored
While the code uses the type name `std::mbstate_t`, the warning message mentions the original underlying type, which is a C library internal type name. On Windows this type is called `_Mbstatet` instead of `__mbstate_t`. Use expect-warning-re to avoid spelling out the literal name of the type. Due to issues with the detection of the clang-verify feature, these tests have been skipped in the Windows CI configuration so far. Differential Revision: https://reviews.llvm.org/D103309
-
Florian Hahn authored
Update isFirstOrderRecurrence to explore all uses of a recurrence phi and check if we can sink them. If there are multiple users to sink, they are all mapped to the previous instruction. Fixes PR44286 (and another PR or two). Reviewed By: Ayal Differential Revision: https://reviews.llvm.org/D84951
-
Andi Drebes authored
Prefix all operations from the ODS of the `Math` dialect with `Math_` in order to avoid name clashes when including `MathOps.td` in other TableGen files (e.g., for `FloatUnaryOp`, which also exists in `Standard`). Reviewed By: jpienaar, mehdi_amini Differential Revision: https://reviews.llvm.org/D103248
-
Qiu Chaofan authored
Reviewed By: nemanjai Differential Revision: https://reviews.llvm.org/D103386
-
Nico Weber authored
-
Christopher Di Bella authored
Differential Revision: https://reviews.llvm.org/D103329
-
Andi Drebes authored
The `::mlir` namespace for operations from standard is currently defined by enclosing the header file generated from the ODS in `Ops.td` in a namespace in `Ops.h`. However, when referencing operations from `Ops.td` in other TableGen files, this causes the generated C++ code to refer to classes from the global namespace instead of `::mlir`. By defining the namespace through the `cppNamespace` field for `StandardOps_Dialect` directly in `Ops.td` instead, the ODS becomes reusable in other TableGen files through simple inclusion. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D103234
-
Arthur Eubanks authored
These depend on pointee types.
-
Abbas Sabra authored
https://docs.microsoft.com/en-us/cpp/extensions/abstract-cpp-component-extensions?view=msvc-160 Note: like the already supported "sealed" keyword, the "abstract" keyword is supported by MSVC by default. This re-commits 818338ad with added initialization of Parser::Ident_abstract. Differential revision: https://reviews.llvm.org/D102517
-
Harald van Dijk authored
Fixes bug https://llvm.org/PR48939. Differential Revision: https://reviews.llvm.org/D102359
-
Arthur Eubanks authored
These were found with D103412.
-
Andrea Di Biagio authored
This is based on the assumption that most simulated instructions don't define more than one or two registers. This is true for example on x86, where most instruction definitions don't declare more than one register write. The default code region size has been increased from 8 to 16. This is based on the assumption that, for small microbenchmarks, the typical code snippet size is often less than 16 instructions. mca::Instruction now uses bitfields to pack flags. No functional change intended.
-
Arthur Eubanks authored
Needs REQUIRES.
-
- May 31, 2021
-
-
Louis Dionne authored
Make sure we provide the correct It::difference_type member and update the tests and synopses to be accurate. Supersedes D102657 and D103101 (thanks to the original authors). Differential Revision: https://reviews.llvm.org/D103273
-
Arthur Eubanks authored
It breaks up the function pass manager in the codegen pipeline. With empty parameters, it looks at the -mllvm flag -rewrite-map-file. This is likely not in use. Add a check that we only have one function pass manager in the codegen pipeline. Some tests relied on the fact that we had a module pass somewhere in the codegen pipeline. addr-label.ll crashes on ARM due to this change. This is because a ARMConstantPoolConstant containing a BasicBlock to represent a blockaddress may hold an invalid pointer to a BasicBlock if the blockaddress is invalidated by its BasicBlock getting removed. In that case all referencing blockaddresses are RAUW a constant int. Making ARMConstantPoolConstant::CVal a WeakVH fixes the crash, but I'm not sure that's the right fix. As a workaround, create a barrier right before ISel so that IR optimizations can't happen while a ARMConstantPoolConstant has been created. Reviewed By: rnk, MaskRay, compnerd Differential Revision: https://reviews.llvm.org/D99707
-
Arthur O'Dwyer authored
Give each of the relevant functional operators a `__result_type` instead, so that we can keep using those typedefs in <valarray> even when the public binder typedefs are removed in C++20. Differential Revision: https://reviews.llvm.org/D103371
-
Anirudh Prasad authored
- This patch is the second (and hopefully final) part of providing HLASM syntax for inline asm statements for z/OS to LLVM (continuing on from https://reviews.llvm.org/D98276) - This second part deals with providing label support - As mentioned in https://reviews.llvm.org/D98276, if the first token is not a space we process the first token as a label, and the remaining tokens as a possible machine instruction - To achieve this, a new `parseAsHLASMLabel` function is introduced. This function processes the first token, validates whether it is an "acceptable" label according to HLASM standards, and then emits it - After handling and emitting the label, call the `parseAsMachineInstruction` instruction to process the remaining tokens as a machine instruction. Reviewed By: uweigand Differential Revision: https://reviews.llvm.org/D103320
-
Daniil Fukalov authored
1. Removed redundant includes, 2. Removed never defined and used `releaseMemory()`. 3. Fixed member functions names first letter case. 4. Renamed duplicate (in nested struct `NonLocalPointerInfo`) name `NonLocalDeps` to `NonLocalDepsMap`. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D102358
-
Tobias Gysi authored
Replace the uses of deprecated Structured Op Interface methods in LinalgInterfaces.cpp. This patch is based on https://reviews.llvm.org/D103394. Differential Revision: https://reviews.llvm.org/D103404
-
Mikhail Goncharov authored
This reverts commit 818338ad. Tests fail under sanitizer: https://lab.llvm.org/buildbot/#/builders/5/builds/8150
-
Tobias Gysi authored
Adding methods to access operand properties via OpOperands and mark outdated methods as deprecated. Differential Revision: https://reviews.llvm.org/D103394
-
Sanjay Patel authored
I accidentaly pushed a draft of D103280 that was discussed during the review, but it was not supposed to be the final version. Rather than revert and recommit, I'm updating the existing code. This way we have a record of the codegen diff that would result if we decide to remove this predicate in the future.
-
Nico Weber authored
-
Frederik Gossen authored
Differential Revision: https://reviews.llvm.org/D103403
-