- Jun 25, 2022
-
-
Björn Schäpers authored
If there is a typeish token before the requires, it can't be a requires expression. Fixes https://github.com/llvm/llvm-project/issues/56176 Differential Revision: https://reviews.llvm.org/D128496
-
Petr Hosek authored
list PREPEND is only supported since CMake 3.15. Differential Revision: https://reviews.llvm.org/D128548
-
Min-Yih Hsu authored
Hot fix for -Wpessimizing-move build errors regarding MCA unit test harness introduced in 97579dcc.
-
Jonas Devlieghere authored
This patch adds a new flag to `log enable`, allowing the user to specify a custom log handler. In addition to the default (stream) handler, this allows using the circular log handler (which logs to a fixed size, in-memory circular buffer) as well as the system log handler (which logs to the operating system log). Differential revision: https://reviews.llvm.org/D128323
-
Mircea Trofin authored
We really just need to invalidate loop info and the dominator tree, in addition to the FunctionPropertiesInfo we were invalidating originally. Doing more adds unnecessary compile time overhead.
-
LLVM GN Syncbot authored
-
Nico Weber authored
The CMake code makes a number of imho strange choices. I pointed those out on https://reviews.llvm.org/D127083. The GN build mirrors the CMake build's choices for now.
-
lewuathe authored
Static loop unrolling does not change the operation type. We can rigorously make sure to use affine.store in the check. Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D128237
-
Fabian Parzefall authored
The SplitFunctions pass does not distinguish between various splitting modes anymore. This change updates the command line interface to reflect this behavior by deprecating values passed to the --split-function option. Reviewed By: rafauler Differential Revision: https://reviews.llvm.org/D128558
-
lewuathe authored
We can have validation test for quant.region having incompatible output spec. Reviewed By: stellaraccident Differential Revision: https://reviews.llvm.org/D128245
-
Philip Reames authored
The comments in the existing code appear to pre-exist the standardization of the +v extension. In particular, the specification *does* provide a bound on the maximum value VLEN can take. From what I can tell, the LMUL comment was simply a misunderstanding of what this API returns. This API returns the maximum value that vscale can take at runtime. This is used in the vectorizer to bound the largest scalable VF (e.g. LMUL in RISCV terms) which can be used without violating memory dependence. Differential Revision: https://reviews.llvm.org/D128538
-
Kirill Okhotnikov authored
-
Min-Yih Hsu authored
Hot fix for -Wmismatched-tags build errors regarding mca::SourceMgr changes introduced in 97579dcc.
-
Min-Yih Hsu authored
This patch introduces a new feature that allows InstrBuilder to reuse mca::Instruction recycled from IncrementalSourceMgr. This significantly reduces the memory footprint. Note that we're only recycling instructions that have static InstrDesc and no variadic operands. Differential Revision: https://reviews.llvm.org/D127084
-
Min-Yih Hsu authored
The new resumable mca::Pipeline capability introduced in this patch allows users to save the current state of pipeline and resume from the very checkpoint. It is better (but not require) to use with the new IncrementalSourceMgr, where users can add mca::Instruction incrementally rather than having a fixed number of instructions ahead-of-time. Note that we're using unit tests to test these new features. Because integrating them into the `llvm-mca` tool will make too many churns. Differential Revision: https://reviews.llvm.org/D127083
-
Petr Hosek authored
This is need after 30dfe016. Differential Revision: https://reviews.llvm.org/D128548
-
Wei Yi Tee authored
`equivalentBoolValues` compares equivalence between two booleans. The current implementation does not consider constraints imposed by flow conditions on the booleans and its subvalues. Depends On D128520 Reviewed By: gribozavr2, xazax.hun Differential Revision: https://reviews.llvm.org/D128521
-
Wei Yi Tee authored
Given a set of `Constraints`, `querySolver` adds common background information across queries (`TrueVal` is always true and `FalseVal` is always false) and passes the query to the solver. `checkUnsatisfiable` is a simple wrapper around `querySolver` for checking that the solver returns an unsatisfiable result. Depends On D128519 Reviewed By: gribozavr2, xazax.hun Differential Revision: https://reviews.llvm.org/D128520
-
Kirill Okhotnikov authored
-
Mitch Phillips authored
Just force the aarch64 target compilation (after making sure the test only runs if that target is available). Because global metadata isn't target-specific, just selecting a target here is fine. Should fix https://reviews.llvm.org/D127544#3609312
-
Mitch Phillips authored
Fix-forward for https://reviews.llvm.org/D127544#3609312 IR pass has some target-specific inline asm lowering that check-fails for non-x86 non-aarch64 targets. For now, just run these tests only on those targets.
-
Xing Xue authored
Summary: Patch D123580 changed to use bit fields for strings in long and short mode. As a result, this changes the layout of these strings on AIX because bit fields on AIX are 4 bytes, which breaks the ABI compatibility with earlier strings before the change on AIX. This patch uses the attribute 'packed' and anonymous structure to make string layout compatible. This patch will also make test cases alignof.compile.pass.cpp and sizeof.compile.pass.cpp introduced in D127672 pass on AIX. Reviewed by: philnik, Mordante, hubert.reinterpretcast, libc++ Differential Revision: https://reviews.llvm.org/D128285
-
Wei Yi Tee authored
[clang][dataflow] Move logic for creating implication and iff expressions into `DataflowAnalysisContext` from `DataflowEnvironment`. To keep functionality of creating boolean expressions in a consistent location. Depends On D128357 Reviewed By: gribozavr2, sgatev, xazax.hun Differential Revision: https://reviews.llvm.org/D128519
-
Kirill Okhotnikov authored
This is a implementation of find remainder fmod function from standard libm. The underline algorithm is developed by myself, but probably it was first invented before. Some features of the implementation: 1. The code is written on more-or-less modern C++. 2. One general implementation for both float and double precision numbers. 3. Spitted platform/architecture dependent and independent code and tests. 4. Tests covers 100% of the code for both float and double numbers. Tests cases with NaN/Inf etc is copied from glibc. 5. The new implementation in general 2-4 times faster for “regular” x,y values. It can be 20 times faster for x/y huge value, but can also be 2 times slower for double denormalized range (according to perf tests provided). 6. Two different implementation of division loop are provided. In some platforms division can be very time consuming operation. Depend on platform it can be 3-10 times slower than multiplication. Performance tests: The test is based on core-math project (https://gitlab.inria.fr/core-math/core-math). By Tue Ly suggestion I took hypot function and use it as template for fmod. Preserving all test cases. `./check.sh <--special|--worst> fmodf` passed. `CORE_MATH_PERF_MODE=rdtsc ./perf.sh fmodf` results are ``` GNU libc version: 2.35 GNU libc release: stable 21.166 <-- FPU 51.031 <-- current glibc 37.659 <-- this fmod version. ```
-
Fangrui Song authored
This reverts commit 4817b772. It caused some `^/\n` and had some objection about its readability improvement.
-
Philip Reames authored
getRealMaxVLen returns an upper bound on the value of VLEN. We can use this upper bound (which unless explicitly set at command line is going to result in a e8 MaxVLMax of much greater than 256) instead of explicitly handling the unknown case separately from the bounded by number greater than 256 case. Note as well that this code already implicitly depends on a capped value for VLEN. If infinite VLEN were possible, than 16 bit indices wouldn't be enough.
-
Philip Reames authored
Both of these are only reached if useRVVForFixedLengthVectors is true. Given that, we know that getRealMinVLen() == getMinRVVVectorSizeInBits().
-
Wei Yi Tee authored
A flow condition is represented with an atomic boolean token, and it is bound to a set of constraints: `(FC <=> C1 ^ C2 ^ ...)`. \ This was internally represented as `(FC v !C1 v !C2 v ...) ^ (C1 v !FC) ^ (C2 v !FC) ^ ...` and tracked by 2 maps: - `FlowConditionFirstConjunct` stores the first conjunct `(FC v !C1 v !C2 v ...)` - `FlowConditionRemainingConjuncts` stores the remaining conjuncts `(C1 v !FC) ^ (C2 v !FC) ^ ...` This patch simplifies the tracking of the constraints by using a single `FlowConditionConstraints` map which stores `(C1 ^ C2 ^ ...)`, eliminating the use of two maps. Reviewed By: gribozavr2, sgatev, xazax.hun Differential Revision: https://reviews.llvm.org/D128357
-
Alexander Yermolovich authored
DWARF 5 added two new attributes DW_AT_call_pc and DW_AT_call_return_pc. Adding support for them. Reviewed By: maksfb Differential Revision: https://reviews.llvm.org/D128526
-
Thomas Raoux authored
When creating a scf.for without argument a scf.yield is automatically created. Make sure we don't create a second one. Differential Revision: https://reviews.llvm.org/D128405
-
Philip Reames authored
This doesn't change behavior, it just makes it slightly more obvious what's going on. Note that getRealMinVLen is always >= getMinRVVVectorSizeInBits. The first case is a bit tricky, as you have to know that getMinRVVVectorSizeInBits returns 0 when not set, and thus is equivalent to the else value clause. The new code structure makes it more obvious we return 0 unless using RVV for fixed length vectors.
-
Valentin Clement authored
Lower the `parallel loop` contrsuct and refactor some of the code of parallel and loop lowering to be reused. Also add tests for loop and parallel since they were not upstreamed. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D128510
-
Valentin Clement authored
In merge FSOURCE and TSOURCE must have the same Fortran dynamic types, but this does not imply that FSOURCE and TSOURCE will be lowered to the same MLIR types. For instance, TSOURCE may be a character expression with a compile type constant length (!fir.char<1,4>) while FSOURCE may have dynamic length (!fir.char<1,?>). Cast FSOURCE to TSOURCE MLIR types to handle these cases. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D128507 Co-authored-by:
Jean Perier <jperier@nvidia.com>
-
Mitch Phillips authored
Currently, `__attribute__((no_sanitize('hwaddress')))` is not possible. Add this piece of plumbing, and now that we properly support copying attributes between an old and a new global variable, add a regression test for the GlobalOpt bug that previously lost the attribute. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D127544 -
Mitch Phillips authored
Globals that shouldn't be sanitized are currently communicated to HWASan through the use of the llvm.asan.globals IR metadata. Now that we have an on-GV attribute, use it. Reviewed By: pcc Differential Revision: https://reviews.llvm.org/D127543
-
Valentin Clement authored
Explicitly map host associated symbols in DoConcurrent with shared locality-spec, clauses in OpenMP/OpenACC. The mapping of host-assoc symbols is set to their parent SymbolBox. This is achieved through a new interface function in the AbstractConverter. This was already upstream for OpenMP. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D128518 Co-authored-by:
Kiran Chandramohan <kiran.chandramohan@arm.com>
-
Thomas Raoux authored
Small change to relax the pattern to support any vector containing a single element. Differential Revision: https://reviews.llvm.org/D128545
-
Valentin Clement authored
LBOUND with a non constant DIM argument use the runtime to allow runtime verification of DIM <= RANK. The interface uses a descriptor. This caused undefined behavior because the runtime believed it was seeing an explicit shape arrays with zero extent and returned `1` (the runtime descriptor does not allow making a difference between an explicit shape and an assumed size. Assumed size are not meant to be described by runtime descriptors). Fix the issue by setting the last extent of assumed size to `1` when creating the descriptor to inquire about the LBOUND with the runtime. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D128509 Co-authored-by:
Jean Perier <jperier@nvidia.com>
-
Philip Reames authored
We currently have a costing bug around the etype == ELEN case, so add otherwise duplicate tests to show test diffs as I work on other parts of costing.
-
Venkata Ramanaiah Nalamothu authored
The requirements for "thread until <line number>" are: a) If any code contributed by <line number> or the nearest subsequent of <line number> is executed before leaving the function, stop b) If you end up leaving the function w/o triggering (a), then stop In case of (a), since the <line number> may have multiple entries in the line table and the compiler might have scheduled/moved the relevant code across, and the lldb does not know the control flow, set breakpoints on all the line table entries of best match of <line number> i.e. exact or the nearest subsequent line. Along with the above, currently, CommandObjectThreadUntil is also setting the breakpoints on all the subsequent line numbers after the best match and this latter part is wrong. This issue is discussed at http://lists.llvm.org/pipermail/lldb-dev/2018-August/013979.html. In fact, currently `TestStepUntil.py` is not actually testing step until scenarios and `test_missing_one` test fails without this patch if tests are made to run. Fixed the test as well. Reviewed By: jingham Differential Revision: https://reviews.llvm.org/D50304
-