- Dec 24, 2021
-
-
Krzysztof Parzyszek authored
-
Kirill Stoimenov authored
This will allow linking in the callbacks directly instead of using PLT. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D116182
-
Mark de Wever authored
Reviewed By: #libc, Quuxplusone, Mordante Differential Revision: https://reviews.llvm.org/D116175
-
Craig Topper authored
-0.0 requires a constant pool. +0.0 can be made with vmv.v.x x0. Not doing this in getNeutralElement for fear of changing other targets. Differential Revision: https://reviews.llvm.org/D115978
-
Mark de Wever authored
During the review of D115991 @vitaut pointed out the enum shouldn't depend on whether or not _LIBCPP_HAS_NO_INT128 is defined. The current implementation lets the enum's ABI depend on this configuration option without a good cause. Reviewed By: ldionne, #libc Differential Revision: https://reviews.llvm.org/D116120
-
- Dec 23, 2021
-
-
Craig Topper authored
This adds support for strict conversions between fp types and between integer and fp. NOTE: RISCV has static rounding mode instructions, but the constrainted intrinsic metadata is not used to select static rounding modes. Dynamic rounding mode is always used. Differential Revision: https://reviews.llvm.org/D115997
-
Alexandros Lamprineas authored
Converts concat_vectors(Vd, trunc(smin(smax Vm, -2^n), 2^n-1) to sqxtn2(Vd, Vm). Deliberately not handling v2i64 ~> v2i32 as the min/max nodes are not legal (same thing we did for the SQXTN patterns in https://reviews.llvm.org/D103263). Differential Revision: https://reviews.llvm.org/D116105
-
Petar Avramovic authored
Delete inst-select-insert.xfail.mir. G_INSERT instructions in inst-select-insert.xfail.mir are no longer legal after D114198. This breaks build bots, since builds with LLVM_ENABLE_ASSERTIONS=Off don't check for legality and report cannot select while build with LLVM_ENABLE_ASSERTIONS=On reports instruction is not legal.
-
Anastasia Stulova authored
This patch adds a toolchain (TC) for SPIR-V along with the following changes in Driver and base ToolChain and Tool. This is required to provide a mechanism in clang to bypass SPIR-V backend in LLVM for SPIR-V until it lands in LLVM and matures. The SPIR-V code is generated by the SPIRV-LLVM translator tool named 'llvm-spirv' that is sought in 'PATH'. The compilation phases/actions should be bound for SPIR-V in the meantime as following: compile -> tools::Clang backend -> tools::SPIRV::Translator assemble -> tools::SPIRV::Translator However, Driver’s ToolSelector collapses compile-backend-assemble and compile-backend sequences to tools::Clang. To prevent this, added new {use,has}IntegratedBackend properties in ToolChain and Tool to which the ToolSelector reacts on, and which SPIR-V TC overrides. Linking of multiple input files is currently not supported but can be added separately. Differential Revision: https://reviews.llvm.org/D112410 Co-authored-by:Henry Linjamäki <henry.linjamaki@parmance.com>
-
Simon Pilgrim authored
Fix issue in TargetLowering::expandROT where we only attempt to flip a rotation if the other direction has better support - this matches TargetLowering::expandFunnelShift This allows us to enable ISD::ROTR lowering on SSE targets, which particularly simplifies/improves codegen for splat amount and AVX2 per-element shifts.
-
Mehrnoosh Heidarpour authored
Adding following fold opportunity: ((A | B) ^ A) & ((A | B) ^ B) --> 0 Reviewed By: spatel, rampitec Differential Revision: https://reviews.llvm.org/D115755
-
Craig Topper authored
The loop vectorizer can interleave scalar loops even if it doesn't vectorize them. I don't believe we intended to enable this when we enabled interleaving for vector instructions. Disable interleaving for VF=1 like X86 and AMDGPU already do. Test lifted from AMDGPU. Differential Revision: https://reviews.llvm.org/D115975
-
Simon Pilgrim authored
[X86] isVectorShiftByScalarCheap - vXi8 select(shift(x,splat0),shift(x,splat1)) is better than shift(x,select(splat0,splat1)) Even though we don't have vXi8 vector shifts (apart from XOP), it is still better to prefer shift (or funnel-shift/rotate) by scalar where possible. https://llvm.godbolt.org/z/6ss6ffTxv Differential Revision: https://reviews.llvm.org/D116191
-
Nikita Popov authored
This was casting the address to its own element type, which is a no-op.
-
Nikita Popov authored
This does exactly what this code manually implemented.
-
Nikita Popov authored
Add an overload for an Address and a single non-constant offset. This makes it easier to preserve the element type and adjust the alignment appropriately.
-
Petar Avramovic authored
Artifact combiner is not able to access individual elements after using LCMTy style merge/unmerge, extract and insert to change vector number of elements (pad with undef or split to sub-vector instructions). Use unmerge to individual elements instead and then merge elements into requested types. Change argument lowering for vectors and moreElementsVector to use buildPadVectorWithUndefElements and buildDeleteTrailingVectorElements. FewerElementsVector had a few helpers that had different behavior, introduce new helper for most of the opcodes. FewerElementsVector helper is more flexible since it can create leftover instruction smaller then requested type (useful in case target wants to avoid pad with undef and use fewer registers). If target does not want leftover of different type it should call more elements first. Some helpers were performing more elements first to have split without leftover. Opcodes that used this helper use clampMaxNumElementsStrict (does more elements first) in LegalizerInfo to avoid test changes. Fixes failures caused by failing to combine artifacts created during more/fewer elements vector. Differential Revision: https://reviews.llvm.org/D114198
-
Petar Avramovic authored
Precommit for D114198 (Rework more/fewer elements for vectors). Regenerate auto-generated mir tests for vectors (use CHECK-NEXT instead of CHECK). Remove -global-isel-abort=0 where it is no longer needed. Add mir tests for different AMDGPU sub-targets and they way they lower function vector arguments (tests for legalization artifact combiner).
-
Simon Moll authored
Reference VE manual and documentations in CompilerWriterInfo. Reviewed By: kaz7 Differential Revision: https://reviews.llvm.org/D116212
-
Chuanqi Xu authored
In C++20 Modules, imported module which doesn't get exported wouldn't be recorded. This patch would record such modules to avoid possible incorrect visibility problems. Reviewed By: urnathan Differential Revision: https://reviews.llvm.org/D116098
-
Simon Moll authored
Add VE assembly scrubbing and triple support to update_llc_test_checks. Reviewed By: kaz7 Differential Revision: https://reviews.llvm.org/D116104
-
Chuanqi Xu authored
This reverts commit 368318bc. The title is not right. It should be a patch about modules instead of coroutines.
-
Chuanqi Xu authored
In C++20 Modules, imported module which doesn't get exported wouldn't be recorded. This patch would record such modules to avoid possible incorrect visibility problems. Reviewed By: urnathan Differential Revision: https://reviews.llvm.org/D116098
-
Nikolas Klauser authored
Remove unused headers from `<filesystem>` Reviewed By: Quuxplusone, #libc, Mordante Spies: Mordante, libcxx-commits Differential Revision: https://reviews.llvm.org/D116146
-
Nikita Popov authored
sret is special in that it does not use the memory type representation. Manually construct the LValue using ConvertType instead of ConvertTypeForMem here. This fixes matrix-lowering-opt-levels.c on s390x.
-
Nikolas Klauser authored
Add headers in `<filesystem>` tests that were transitively included through `<filesystem>` Reviewed as part of D116146
-
Nikolas Klauser authored
This reverts commit 352945dd.
-
Jay Foad authored
-
Nikita Popov authored
This required fixing two places that were passing the pointer type rather than the expected pointee type to the method.
-
Fangrui Song authored
This may cost 1.3+% of total link time.
-
Fangrui Song authored
Related to D45368 but outSecOff is unneeded because resolveShfLinkOrder uses stable_sort.
-
Muhammad Omair Javaid authored
Revert "Revert "[DwarfDebug] Support emitting function-local declaration for a lexical block" & dependent patches" This has broke following LLDB buildbots: https://lab.llvm.org/buildbot/#/builders/17/builds/14984 https://lab.llvm.org/buildbot/#/builders/96/builds/15928 https://lab.llvm.org/buildbot/#/builders/68/builds/23600 This reverts commit 62a6b9e9.
-
Fangrui Song authored
-
Nikita Popov authored
-
Nikita Popov authored
-
Nikita Popov authored
These intrinsics do not free, synchronize or diverge.
-
Nikita Popov authored
Based on my reading of https://llvm.org/docs/LangRef.html#llvm-init-trampoline-intrinsic, init.trampoline writes to the first argument, while the other two are readnone. These two arguments are only captured and written into the trampoline memory. This also matches what I see in the X86TargetLowering::LowerINIT_TRAMPOLINE() implementation. Differential Revision: https://reviews.llvm.org/D116149
-
Nikita Popov authored
MakeNaturalAlignAddrLValue() expects the pointee type, but the pointer type was passed. As a result, the natural alignment of the pointer (usually 8) was always used in place of the natural alignment of the value type. Differential Revision: https://reviews.llvm.org/D116171
-
Nikita Popov authored
Mangled names are not meaningful for variables with local storage, and may not be well defined (getting the mangled name for VLA crashes the mangler). As such, do not include them in the JSON dump. This allows running update_cc_test_checks on some OpenMP tests again. Fixes https://github.com/llvm/llvm-project/issues/49111. Differential Revision: https://reviews.llvm.org/D116169
-
Fangrui Song authored
This reverts commit e48b1c8a. This reverts commit d019de23. The changes caused memory leaks (non-final classes cannot use unique_ptr).
-