- Nov 17, 2021
-
-
Guillaume Chatelet authored
-
Michal Terepeta authored
There seems to be a consensus that we should allow 0D vectors: https://llvm.discourse.group/t/should-we-have-0-d-vectors/3097 This commit is only the first step: it changes the verifier and the parser to allow vectors like `vector<f32>` (but does not allow explicit 0 dimensions, i.e., `vector<0xf32>` is not allowed). Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D114086
-
Balazs Benics authored
The new //deleted// constructor overload makes sure that no implicit conversion from `0` would happen to `ArrayRef<const char*>`. Also adds nodiscard to the `CallDescriptionMap::lookup()`
-
Zarko Todorovski authored
Replace filenames, variable names, check prefixes uses of blacklist with ignore list. Reviewed By: jkorous Differential Revision: https://reviews.llvm.org/D113211
-
Christian Kühnel authored
Cleanup of clang-tidy findings: removing "else" after a return statement to improve readability of the code. This patch was created by applying the clang-tidy fixes automatically. Differential Revision: https://reviews.llvm.org/D113892
-
Haojian Wu authored
The overload shouldSuppressDiagnostic seems unnecessary, and it is only used in clangd. This patch removes it and use the real one (suppression diagnostics are discarded in clangd at the moment). Fixes https://github.com/clangd/clangd/issues/929 Differential Revision: https://reviews.llvm.org/D113999
-
Dmitry Vyukov authored
asan does not use user_id for anything, so don't pass it to ThreadCreate. Passing a random uninitialized field of AsanThread as user_id does not make much sense anyway. Depends on D113921. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D113922
-
Dmitry Vyukov authored
memprof does not use user_id for anything, so don't pass it to ThreadCreate. Passing a random field of MemprofThread as user_id does not make much sense anyway. Depends on D113920. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D113921
-
Dmitry Vyukov authored
They don't seem to do anything useful in lsan. They are needed only if a tools needs to execute some custom logic during detach/join, or if it uses thread registry quarantine. Lsan does none of this. And if a tool cares then it would also need to intercept pthread_tryjoin_np and pthread_timedjoin_np, otherwise it will mess thread states. Fwiw, asan does not intercept these functions either. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D113920
-
Dmitry Vyukov authored
Tsan pass does 2 optimizations based on presence of calls: 1. Don't emit function entry/exit callbacks if there are no calls and no memory accesses. 2. Combine read/write of the same variable if there are no intervening calls. However, all debug info is represented as CallInst as well and thus effectively disables these optimizations. Don't consider debug info calls as calls. Reviewed By: glider, melver Differential Revision: https://reviews.llvm.org/D114079
-
Yitzhak Mandelbaum authored
Differential Revision: https://reviews.llvm.org/D114011
-
Mirko Brkusanin authored
Instructions being tested were accidentally left dead.
-
Mirko Brkusanin authored
If possible fold fneg into instruction above if users cannot fold mods and we know it will decrease instruction count. Follows same logic as SDAG combiner in choosing opportunities to combine. Differential Revision: https://reviews.llvm.org/D112827
-
Aaron Ballman authored
There was some confusion during the discussion of a patch as to whether `any` can be used to blast an attribute with no subject list onto basically everything in a program by not specifying a subrule. This patch adds documentation and tests to make it clear that this situation is not supported and will be diagnosed.
-
David Sherwood authored
When getTypeConversion returns TypeScalarizeScalableVector we were sometimes returning a non-simple type from getTypeLegalizationCost. However, many callers depend upon this being a simple type and will crash if not. This patch changes getTypeLegalizationCost to ensure that we always a return sensible simple VT. If the vector type contains unusual integer types, e.g. <vscale x 2 x i3>, then we just set the type to MVT::i64 as a reasonable default. A test has been added here that demonstrates the vectoriser can correctly calculate the cost of vectorising a "zext i3 to i64" instruction with a VF=vscale x 1: Transforms/LoopVectorize/AArch64/sve-inductions-unusual-types.ll Differential Revision: https://reviews.llvm.org/D113777
-
Jay Foad authored
Differential Revision: https://reviews.llvm.org/D113985
-
Simon Pilgrim authored
If we've only demanded the 0'th element, and it comes from a (one-use) AND, try to convert the zero_extend_vector_inreg into a mask and constant fold it with the AND.
-
Valentin Clement authored
Add !fir.tdesc type conversion. !fir.tdesc is converted to a llvm.ptr<i8>. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D113769 Co-authored-by:
Eric Schweitz <eschweitz@nvidia.com> Co-authored-by:
Jean Perier <jperier@nvidia.com>
-
David Sherwood authored
When asking how many parts are required for a scalable vector type there are occasions when it cannot be computed. For example, <vscale x 1 x i3> is one such vector for AArch64+SVE because at the moment no matter how we promote the i3 type we never end up with a legal vector. This means that getTypeConversion returns TypeScalarizeScalableVector as the LegalizeKind, and then getTypeLegalizationCost returns an invalid cost. This then causes BasicTTImpl::getNumberOfParts to dereference an invalid cost, which triggers an assert. This patch changes getNumberOfParts to return 0 for such cases, since the definition of getNumberOfParts in TargetTransformInfo.h states that we can use a return value of 0 to represent an unknown answer. Currently, LoopVectorize.cpp is the only place where we need to check for 0 as a return value, because all other instances will not currently ask for the number of parts for <vscale x 1 x iX> types. In addition, I have changed the target-independent interface for getNumberOfParts to return 1 and assume there is a single register that can fit the type. The loop vectoriser has lots of tests that are target-independent and they relied upon the 0 value to mean the answer is known and that we are not scalarising the vector. I have added tests here that show we correctly return an invalid cost for VF=vscale x 1 when the loop contains unusual types such as i7: Transforms/LoopVectorize/AArch64/sve-inductions-unusual-types.ll Differential Revision: https://reviews.llvm.org/D113772
-
Jeremy Morse authored
There are various tests that need to be adjusted to test the right thing with instruction referencing -- usually because the internal representation of variables is different, sometimes that location lists change. This patch makes a bunch of tests explicitly not use instruction referencing, so that a check-llvm test with instruction referencing on for x86_64 doesn't fail. I'll then convert the tests to have instr-ref CHECK lines, and similar. Differential Revision: https://reviews.llvm.org/D113194
-
Florian Hahn authored
-
Valentin Clement authored
This patch adds the conversion pattern for `fir.box_tdes`. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D113931 Co-authored-by:
Eric Schweitz <eschweitz@nvidia.com>
-
Florian Hahn authored
Similar other cases in the current function (e.g. when the step is 1 or -1), applying loop guards can lead to tighter upper bounds for the backedge-taken counts. Fixes PR52464. Reviewed By: reames, nikic Differential Revision: https://reviews.llvm.org/D113578
-
SYNOPSYS\georgiev authored
-
Martin Storsjö authored
This reverts commit 7c3d19ab. This commit was reported as causing build problems for the amdgpu buildbot in https://reviews.llvm.org/D113253#3137097.
-
David Sherwood authored
Currently the stepvector intrinsic only supports element types that are integers of size 8 bits or more. This patch adds support for the creation of stepvectors with smaller element types by creating the intrinsic with i8 elements that we then truncate to the requested size. It's not currently possible to write a vectoriser test to exercise this code path so I have added a unit test here: llvm/unittests/IR/IRBuilderTest.cpp Differential Revision: https://reviews.llvm.org/D113767
-
Jay Foad authored
Add test coverage for a problem that was fixed by D113493: when updating live intervals, fix handling of live ranges that were previously tied to an early-clobber def but no longer are.
-
Jay Foad authored
Delegate updating of LiveIntervals to each target's convertToThreeAddress implementation, instead of repairing LiveIntervals after the fact in TwoAddressInstruction::convertInstTo3Addr. Differential Revision: https://reviews.llvm.org/D113493
-
Valentin Clement authored
The information in these perations is used by other operation. At this point they should not have anymore uses. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D113971 Co-authored-by:
Eric Schweitz <eschweitz@nvidia.com>
-
Guillaume Chatelet authored
Differential Revision: https://reviews.llvm.org/D113260
-
Stanislav Mekhanoshin authored
Differential Revision: https://reviews.llvm.org/D114038
-
Roman Lebedev authored
-
Roman Lebedev authored
[X86][Costmodel] `*ext v64i1 to v32i16` can appear after legalization, cost is same as for `*ext v32i1 to v32i16` Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D113914
-
Roman Lebedev authored
[X86][Costmodel] `trunc v32i16 to v64i1` can appear after legalization, cost is same as for `trunc v32i16 to v32i1` Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D113913
-
Eric Tang authored
This change make WidenVecRes_SELECT work for scalable vectors. This patch is split from [D110319](https://reviews.llvm.org/D110319 ) Signed-off-by:Eric Tang <tangxingxin1008@gmail.com> Reviewed By: david-arm Differential Revision: https://reviews.llvm.org/D110388
-
SYNOPSYS\georgiev authored
Testing the breakpoint itself rather than the lldb string. Differential Revision: https://reviews.llvm.org/D111899
-
Martin Storsjö authored
Mention support for MinGW in the docs. Rename the existing windows CI jobs to Clang-cl, as both Clang-cl and MinGW are equally much "Windows", just different toolchain environments. Add an XFAIL for a recently added test that fails in the MinGW DLL configuration (with an explanation of what's causing the failure). Differential Revision: https://reviews.llvm.org/D112215
-
Mircea Trofin authored
The revert, b2fbd45d, incorrectly re-introduced a few lines removed in 7c3d19ab
-
Michael Kruse authored
Patch D113697 added default function arguments to template specializations of `ConvertToBinary`. According to https://en.cppreference.com/w/cpp/language/template_specialization this not allowed: > Default function arguments cannot be specified in explicit specializations of function templates, member function templates, and member functions of class templates when the class is implicitly instantiated. It happens to compile with gcc, clang and msvc 14.30 (Visual Studio 2022), but not msvc 14.29 (Visual Studio 2020). Even for the compilers that syntactically accept it, the default argument will never be used (only the default argument of the template declaration). From https://en.cppreference.com/w/cpp/language/function_template > Note that only non-template and primary template overloads participate in overload resolution. That is, the explicit function template specialization is not added to the overload candidate set. Only aft...
-
Freddy Ye authored
*_mul_*ch is to align with *_mul_*s, *_mul_*d and *_mul_*h. Reviewed By: pengfei Differential Revision: https://reviews.llvm.org/D112777
-