- Nov 03, 2020
-
-
LLVM GN Syncbot authored
-
Nico Weber authored
-
Jay Foad authored
-
Lei Zhang authored
Reviewed By: mravishankar Differential Revision: https://reviews.llvm.org/D90655
-
Sanjay Patel authored
Follow-up suggested in D90613.
-
Yaxun (Sam) Liu authored
Currently for explicit template function instantiation in CUDA/HIP device compilation clang emits instantiated kernel with external linkage and instantiated device function with internal linkage. This is fine for -fno-gpu-rdc since there is only one TU. However this causes duplicate symbols for kernels for -fgpu-rdc if the same instantiation happen in multiple TU. Or missing symbols if a device function calls an explicitly instantiated template function in a different TU. To make explicit template function instantiation work for -fgpu-rdc we need to follow the C++ linkage paradigm, i.e. use weak_odr linkage. Differential Revision: https://reviews.llvm.org/D90311
-
Roman Lebedev authored
In particular, it makes it fire for C=0, because negator doesn't want to perform that fold since in general it's not beneficial.
-
Roman Lebedev authored
This relaxes one-use restriction on that `sub` fold, since apparently the addition of Negator broke preexisting `C-(C2-X) --> X+(C-C2)` (with C=0) fold.
-
Roman Lebedev authored
-
Roman Lebedev authored
-
Roman Lebedev authored
-
Florian Hahn authored
Vectors where all elements have the same known constant range are treated as a single constant range in the lattice. When bitcasting such vectors, there is a mis-match between the width of the lattice value (single constant range) and the original operands (vector). Go to overdefined in that case. Fixes PR47991.
-
David Green authored
-
Joachim Protze authored
D88149 updated `omp_get_initial_device` behavior to conform with OpenMP 5.1. omp_get_initial_device() == omp_get_num_devices()
-
Joachim Protze authored
As reported by @ronlieb, the test shows intermittent fails. The test failed, if the dependent task was already finished, when the depending task was to be created. We have other tests to check for the dependences pair.
-
Joachim Protze authored
Since detached tasks are supported by clang and the OpenMP runtime, Archer must expect to receive the corresponding callbacks. This patch adds support to interpret the synchronization semantics of omp_fulfill_event and cleans up the handling of task switches.
-
Hans Wennborg authored
This caused an explosion in ICF times during linking on Windows when libfuzzer instrumentation is enabled. For a small binary we see ICF time go from ~0 to ~10 s. For a large binary it goes from ~1 s to forevert (I gave up after 30 minutes). See comment on the code review. > If we are going to write handler data (that is written as variable > length data following after the unwind info in .xdata), we need to > emit the handler data immediately, but for cases where no such > info is going to be written, skip emitting it right away. (Unwind > info for all remaining functions that hasn't gotten it emitted > directly is emitted at the end.) > > This does slightly change the ordering of sections (triggering a > bunch of updates to DebugInfo/COFF tests), but the change should be > benign. > > This also matches GCC's assembly output, which doesn't output > .seh_handlerdata unless it actually is needed. > > For ARM64, the unwind info can be packed into the runtime function > entry itself (leaving no data in the .xdata section at all), but > that can only be done if there's no follow-on data in the .xdata > section. If emission of the unwind info is triggered via > EmitWinEHHandlerData (or the .seh_handlerdata directive), which > implicitly switches to the .xdata section, there's a chance of the > caller wanting to pass further data there, so the packed format > can't be used in that case. > > Differential Revision: https://reviews.llvm.org/D87448 This reverts commit 36c64af9.
-
Stefan Gränitz authored
Basic implementation for call and jmp branches with 32 bit offset. Branches to local targets produce Branch32 edges that are resolved like a regular PCRel32 relocations. Branches to external (undefined) targets produce Branch32ToStub edges and go through a PLT entry by default. If the target happens to get resolved within the 32 bit range from the callsite, the edge is relaxed during post-allocation optimization. There is a test for each of these cases. Reviewed By: lhames Differential Revision: https://reviews.llvm.org/D90331
-
Hiral Oza authored
Let clang-tidy to read config from specified file. Example: $ clang-tidy --config-file=/some/path/myTidyConfig --list-checks -- ...this will read config from '/some/path/myTidyConfig'. ClangTidyMain.cpp reads ConfigFile into string and then assigned read data to 'Config' i.e. makes like '--config' code flow internally. May speed-up tidy runtime since now it will just look-up <file-path> instead of searching ".clang-tidy" in parent-dir(s). Directly specifying config path helps setting build dependencies. Thanks to @DmitryPolukhin for valuable suggestion. This patch now propose change only in ClangTidyMain.cpp. Reviewed By: DmitryPolukhin Differential Revision: https://reviews.llvm.org/D89936
-
serge-sans-paille authored
-
David Green authored
If an instruction will be lowered to a call there is no advantage of using a low overhead loop as the LR register will need to be spilled and reloaded around the call, and the low overhead will end up being reverted. This teaches our hardware loop lowering that these memory intrinsics will be calls under certain situations. Differential Revision: https://reviews.llvm.org/D90439
-
David Green authored
-
Sander de Smalen authored
This patch adds a bunch of CHECK lines to guard against implicit conversions of TypeSize -> uint64_t occuring in code-paths that previously were safe for scalable vectors.
-
Alexander Bosch authored
BufferizeTests. Summary: Added test operations to replace the LinalgDialect dependency in tests which use the buffer-deallocation, buffer-hoisting, buffer-loop-hoisting, promote-buffers-to-stack, buffer-placement-preparation-allowed-memref-resutls and buffer-placement-preparation pass. Adapted the corresponding tests cases and TestBufferPlacement.cpp. Differential Revision: https://reviews.llvm.org/D90037
-
Mehdi Amini authored
This is an error prone behavior, I frequently have ~20 min debugging sessions when I hit an unexpected implicit nesting. This default makes the C++ API safer for users. Depends On D90669 Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D90671
-
Mehdi Amini authored
This simplifies a few parts of the pass manager, but in particular we don't add as many verifierpass as there are passes in the pipeline, and we can now enable/disable the verifier after the fact on an already built PassManager. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D90669
-
Mehdi Amini authored
This allows to use it on other operation, like a GPUModule for example.
-
Mehdi Amini authored
This header was an initial early attempt at a crude C API for bindings, but it isn't used and redundant with the new API. At this point it only contributes to more confusion. Differential Revision: https://reviews.llvm.org/D90643
-
Stephen Kelly authored
-
Simon Pilgrim authored
The fold currently only handles rotation patterns, but with the maturation of backend funnel shift handling we can now realistically handle all funnel shift patterns. This should allow us to begin resolving PR46896 et al. Differential Revision: https://reviews.llvm.org/D90625
-
Alexander Belyaev authored
https://llvm.discourse.group/t/rfc-standard-memref-cast-ops/1454/15 Differential Revision: https://reviews.llvm.org/D90377
-
Florian Hahn authored
Check if all compares in VL have the same predicate and pass it to getCmpSelInstrCost, to improve cost-modeling on targets that only support compare/select combinations for certain uniform predicates. This leads to additional vectorization in some cases ``` Same hash: 217 (filtered out) Remaining: 19 Metric: SLP.NumVectorInstructions Program base slp2 diff test-suite...marks/SciMark2-C/scimark2.test 11.00 26.00 136.4% test-suite...T2006/445.gobmk/445.gobmk.test 79.00 135.00 70.9% test-suite...ediabench/gsm/toast/toast.test 54.00 71.00 31.5% test-suite...telecomm-gsm/telecomm-gsm.test 54.00 71.00 31.5% test-suite...CI_Purple/SMG2000/smg2000.test 426.00 542.00 27.2% test-suite...ch/g721/g721encode/encode.test 30.00 24.00 -20.0% test-suite...000/186.crafty/186.crafty.test 116.00 138.00 19.0% test-suite...ications/JM/ldecod/ldecod.test 697.00 765.00 9.8% test-suite...6/464.h264ref/464.h264ref.test 822.00 886.00 7.8% test-suite...chmarks/MallocBench/gs/gs.test 154.00 162.00 5.2% test-suite...nsumer-lame/consumer-lame.test 621.00 651.00 4.8% test-suite...lications/ClamAV/clamscan.test 223.00 231.00 3.6% test-suite...marks/7zip/7zip-benchmark.test 680.00 695.00 2.2% test-suite...CFP2000/177.mesa/177.mesa.test 2121.00 2129.00 0.4% test-suite...:: External/Povray/povray.test 2406.00 2412.00 0.2% test-suite...TimberWolfMC/timberwolfmc.test 634.00 634.00 0.0% test-suite...CFP2006/433.milc/433.milc.test 1036.00 1036.00 0.0% test-suite.../Benchmarks/nbench/nbench.test 321.00 321.00 0.0% test-suite...ctions-flt/Reductions-flt.test NaN 5.00 nan% ``` Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D90124
-
-
Nicholas Guy authored
Adds patterns to catch masks preceeding a long multiply, and generating a single umull/smull instruction instead. Differential revision: https://reviews.llvm.org/D89956
-
serge-sans-paille authored
Make it possible for lld users to provide a custom script that would help to find missing libraries. A possible scenario could be: % clang /tmp/a.c -fuse-ld=lld -loauth -Wl,--error-handling-script=/tmp/addLibrary.py unable to find library -loauth looking for relevant packages to provides that library liboauth-0.9.7-4.el7.i686 liboauth-devel-0.9.7-4.el7.i686 liboauth-0.9.7-4.el7.x86_64 liboauth-devel-0.9.7-4.el7.x86_64 pix-1.6.1-3.el7.x86_64 Where addLibrary would be called with the missing library name as first argument (in that case addLibrary.py oauth) Differential Revision: https://reviews.llvm.org/D87758 -
David Green authored
This patch changes the intrinsics cost model to assume that by default target intrinsics are cheap. This didn't seem to be the case for all intrinsics, and is potentially an MVE problem due to our scalarization overheads. Cheap seems to be a good default in general though. Differential Revision: https://reviews.llvm.org/D90597
-
Sander de Smalen authored
This patch adds a linear polynomial base class, called LinearPolyBase, which serves as a base class for StackOffset. It tries to represent a linear polynomial like: c0 * scale0 + c1 * scale1 + ... + cK * scaleK where the scale is implicit, meaning that only the coefficients are encoded. This patch also adds a univariate linear polynomial, which serves as a base class for ElementCount and TypeSize. This tries to represent a linear polynomial where only one dimension can be set at any one time, i.e. a TypeSize is either fixed-sized, or scalable-sized, but cannot be a combination of the two. class LinearPolyBase ^ | +---- class StackOffset (dimensions = 2 (fixed/scalable), type = int64_t) class UnivariateLinearPolyBase | | +---- class LinearPolySize (dimensions = 2 (fixed/scalable)) ^ | +-------- class ElementCount (type = unsigned) | | +-------- class TypeSize (type = uint64_t) Reviewed By: ctetreau, david-arm Differential Revision: https://reviews.llvm.org/D88982 -
Pedro Tammela authored
This patch is a minor suggestion to not rely on the fact that the `LUA_OK` macro is 0. This assumption could change in future versions of the C API. Differential Revision: https://reviews.llvm.org/D90556
-
Tres Popp authored
-
Tres Popp authored
Because cstr operations allow more instruction reordering than asserts, we only lower cstr_broadcastable to std ops with cstr_require. This ensures that the more drastic lowering to asserts can happen specifically with the user's desire. Differential Revision: https://reviews.llvm.org/D89325
-