- Nov 16, 2020
-
-
Dmitry Preobrazhensky authored
Partially fixes bug 47518 (https://bugs.llvm.org/show_bug.cgi?id=47518) Reviewers: rampitec Differential Revision: https://reviews.llvm.org/D91407
-
Michał Górny authored
Read and write registers from m_gpr using offsets from RegisterInfo rather than explicit switch-case. This eliminates a lot of redundant code, and avoids mistakes such as type mismatches seen recently (wrt segment registers). The same logic will be extended to other register sets in the future. Make m_gpr an uint8_t std::array to ease accesses. Ideally, we could avoid including <machine/reg.h> entirely in the future and instead get the correct GPR size from Utility/RegisterContextFreeBSD_* somehow. While at it, modify register set logic to use an explicit enum with llvm::Optional<>, making the code cleaner and at the same time enabling compiler warnings for unhandled sets. Since now we're fully relying on 'struct GPR' defined in Utility/RegisterContextFreeBSD_* being entirely in sync with the system structure, add unit tests to verify the field offsets and sizes. Differential Revision: https://reviews.llvm.org/D91216
-
Nicolas Vasilache authored
scf.parallel is currently not a good fit for tiling on tensors. Instead provide a path to parallelism directly through scf.for. For now, this transformation ignores the distribution scheme and always does a block-cyclic mapping (where block is the tile size). Differential revision: https://reviews.llvm.org/D90475
-
Kazushi (Jam) Marukawa authored
Add pfchv intrinsic instructions and a regression test. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D91522
-
Vitaly Buka authored
Make test order agnostic as it can change with platform.
-
Benjamin Kramer authored
-
Florian Hahn authored
This patch updates Clang's IRGen to add !annotation nodes with an "auto-init" annotation to all stores for auto-initialization. As discussed in 'RFC: Combining Annotation Metadata and Remarks' (http://lists.llvm.org/pipermail/llvm-dev/2020-November/146393.html) this allows using optimization remarks to track down where auto-init code was inserted (and not removed by optimizations). There are a few cases in the tests where !annotation gets dropped by optimizations. Those optimizations will be updated in subsequent patches. This patch is based on a patch by Francis Visoiu Mistrih. Reviewed By: thegameg, paquette Differential Revision: https://reviews.llvm.org/D91417
-
Sjoerd Meijer authored
Widen the IV to the widest available and legal integer type, which makes this transformations always safe so that we can skip overflow checks. Motivation is to let this pass trigger on 64-bit targets too, and this is the last patch in a serie to achieve this: D90402 moves pass LoopFlatten to just before IndVarSimplify so that IVs are not already widened, D90421 factors out widening from IndVarSimplify into Utils/SimplifyIndVar so that we can also use it in LoopFlatten. Differential Revision: https://reviews.llvm.org/D90640
-
David Penry authored
This patch adds the SchedMachineModel for Cortex-M7. It also adds test cases for the scheduling information. Details of the pipeline and descriptions are in comments in file ARMScheduleM7.td included in this patch. Differential Revision: https://reviews.llvm.org/D91355
-
Mikhail Goncharov authored
Otherwise it fails in some setups when creation of "out.wasm" is not possible. Differential Revision: https://reviews.llvm.org/D91521
-
Joachim Protze authored
This introduces the new `ARCHER_OPTIONS` flag `ignore_serial=0|1` to disable analysis and logging of memory accesses in the sequential part of the OpenMP application. In the sequential part of an OpenMP program no data race is possible, unless there is non-OpenMP concurrency (such as pthreads, MPI, ...). For the latter reason, this is not active by default. Besides reducing the runtime overhead for the sequential part of the program, this reduces the memory overhead for sequential initialization. In combination with `flush_shadow=1` this can allow analysis of applications, which run close to the limit of available memory, but only access smaller parts of shared memory during each OpenMP parallel region. A problem for this approach is that Archer only gets active, when the OpenMP runtime gets initialized, which might be after serial initialization of the application. In such case, it helps to call for example `omp_get_max_threads()` at the beginning of main. Differential Revision: https://reviews.llvm.org/D90473
-
Fraser Cormack authored
Similar to the X86 and AMDGPU targets, this uses a macro to cut down on repetitive and error-prone code when converting RISCVISD node names to strings in getTargetNodeName. Reviewed By: asb Differential Revision: https://reviews.llvm.org/D91414
-
Kazushi (Jam) Marukawa authored
Change dl to DL in VEFrameLowering.cpp. And clean some comments. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D91490
-
Simon Moll authored
Use the less surprising shorthand OPC instead of OC.
-
Jan Svoboda authored
This enables automatically parsing and generating CC1 arguments for options where two flags control the same field, e.g. -fexperimental-new-pass-manager and -fno-experimental new pass manager. Reviewed By: Bigcheese, dexonsmith Original patch by Daniel Grumberg. Differential Revision: https://reviews.llvm.org/D83071
-
Lang Hames authored
Patch by Elena Kovanova. Thanks Elena! Problem: LLVM already has a feature to profile the JIT-compiled code with VTune. This is done using Intel JIT Profiling API (https://github.com/intel/ittapi). Function information is captured by VTune as soon as the function is JIT-compiled. We tried to use the same approach to report the function information generated by the MCJIT engine – read parsing the debug information for in-memory ELF module and report it using JIT API. As the results, we figured out that it did not work properly for the following cases: inline functions, the functions located in multiple source files, the functions having several bodies (address ranges). Solution: To overcome limitations described above, we have introduced new APIs as a part of Intel ITT APIs to report the entire in-memory ELF module to be further processed as regular ELF binaries with debug information. This patch 1. Switches LLVM to open source version of Intel ITT/JIT APIs (https://github.com/intel/ittapi) to keep it always up to date. 2. Adds support of profiling the code generated by MCJIT engine using Intel VTune profiler Another separate patch will get rid of obsolete Intel ITT APIs stuff, having LLVM already switched to https://github.com/intel/ittapi. Differential Revision: https://reviews.llvm.org/D86435
-
Simon Moll authored
The VE backend represents vector instructions with an explicit 'i32' vector length operand. In the VE ISA, the vector length is always read from the VL hardware register. The LVLGen pass inserts 'lvl' instructions as necessary to set VL to the right value before each vector instruction. Reviewed By: kaz7 Differential Revision: https://reviews.llvm.org/D91416
-
Max Kazantsev authored
The bug should be fixed now.
-
Kazu Hirata authored
This patch teaches the jump threading pass to call BPI->eraseBlock when it folds a conditional branch. Without this patch, BranchProbabilityInfo could end up with stale edge probabilities for the basic block containing the conditional branch -- one edge probability with less than 1.0 and the other for a removed edge. This patch is one of the steps before we can safely re-apply D91017. Differential Revision: https://reviews.llvm.org/D91511
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
QingShan Zhang authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Craig Topper authored
We unconditionally marked i64 as Custom, but did not install a handler in ReplaceNodeResults when i64 isn't legal type. This leads to ReplaceNodeResults asserting. We have two options to fix this. Only mark i64 as Custom on 64-bit targets and let it expand to two i32 bitreverses which each need a VPPERM. Or the other option is to add the Custom handling to ReplaceNodeResults. This is what I went with.
-
Kazu Hirata authored
-
Serguei Katkov authored
In the last change to IRCE the BPI is ignored if BFI is present, however BFI and BPI have a different thresholds. Specifically BPI approach checks only latch exit probability so it is expected if the loop has only one exit block (latch) the behavior with BFI and BPI should be the same, BPI approach by default uses threshold 10, so it considers the loop with estimated number of iterations less then 10 should not be considered for IRCE optimization. BFI approach uses the default value 3 and this is inconsistent. The CL modifies the code to use the same threshold for both approaches.. The test is updated due to it has two side-exits (except latch) and each of them has a probability 1/16, so BFI estimates the number of runtime iteration is about to 7 (1/16 + 1/16 + some for latch) and test fails. Reviewers: mkazantsev, ebrevnov Reviewed By: mkazantsev Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D91230
-
Wang, Pengfei authored
I had manually removed unused prefixes from CodeGen/X86 directory for more than 100 tests. I checked the change history for each of them at the beginning, and then I mainly focused on the format since I found all of the unused prefixes were result from either insensible copy or residuum after functional update. I think it's OK to remove the remaining X86 tests by script now. I wrote a rough script which works for me in most tests. I put it in llvm/utils temporarily for review and hope it may help other components owners. The tests in this patch are all generated by the tool and checked by update tool for the autogenerated tests. I skimmed them and checked about 30 tests and didn't find any unexpected changes. Reviewed By: mtrofin, MaskRay Differential Revision: https://reviews.llvm.org/D91496
-
Richard Smith authored
parameters. It appears that LLVM isn't able to generate a DW_AT_const_value for a constant of class type, but if it could, we'd match GCC's debug info in this case, and in the interim we no longer crash.
-
Sanjay Patel authored
There are 1-2 potential follow-up NFC commits to reduce this further on the way to generalizing this for vectors. The operand replacing path should be dead code because demanded bits handles that more generally (D91415).
-
Sanjay Patel authored
I noticed an add example like the one from D91343, so here's a similar patch. The logic is based on existing code for the single-use demanded bits fold. But I only matched a constant instead of using compute known bits on the operands because that was the motivating patterni that I noticed. I think this will allow removing a special-case (but incomplete) dedicated fold within visitAnd(), but I need to untangle the existing code to be sure. https://rise4fun.com/Alive/V6fP Name: add with low mask Pre: (C1 & (-1 u>> countLeadingZeros(C2))) == 0 %a = add i8 %x, C1 %r = and i8 %a, C2 => %r = and i8 %x, C2 Differential Revision: https://reviews.llvm.org/D91415
-
Sanjay Patel authored
See D91415.
-
Martin Storsjö authored
Differential Revision: https://reviews.llvm.org/D91478
-
Nikita Popov authored
This alias() call did not pass on the AAQueryInfo.
-
Florian Hahn authored
-
faisalv authored
Reviewed here: https://reviews.llvm.org/D91409 by Aaron. Highlights of the review: - avoid an underlying type for enums - avoid enum bit fields (MSVC packing anomalies) and favor static_casts to unsigned bit-fields Patch by Thorsten Schuett <schuett@gmail.com> w some minor fixes in SemaType.cpp where a couple asserts had to be repaired to deal with lack of implicit coversion to int. Thanks Thorsten!
-
Aaron Puchert authored
As Richard Smith pointed out in the review of D90123, both the C and C++ standard call it lvalue and rvalue, so let's stick to the same spelling in Clang.
-
Aaron Puchert authored
When an overloaded member function has a ref-qualifier, like: class X { void f() &&; void f(int) &; }; we would print strange notes when the ref-qualifier doesn't fit the value category: X x; x.f(); X().f(0); would both print a note "no known conversion from 'X' to 'X' for object argument" on their relevant overload instead of pointing out the mismatch in value category. At first I thought the solution is easy: just use the FailureKind member of the BadConversionSequence struct. But it turns out that we weren't properly setting this for function arguments. So I went through TryReferenceInit to make sure we're doing that right, and found a number of notes in the existing tests that improved as well. Fixes PR47791. Reviewed By: rsmith Differential Revision: https://reviews.llvm.org/D90123
-
- Nov 15, 2020
-
-
Marek Kurdej authored
-