[clang][OpenMP] Add no-loop SPMD kernel promotion
A target teams distribute parallel for that is guaranteed a thread for
every iteration does not need the loop around its body. Flang already
drops it and runs the region as a no-loop kernel.
Enable the same optimization for Clang through mirroring Flang's MLIR
promotion using OpenMPIRBuilder. The kernel is tagged SPMD_NO_LOOP, so
the runtime sizes the grid to the iteration space, and the body is
emitted without a loop around it. The canonical loop it consumes is
reconstructed in the no-loop branch rather than taken from an
OMPCanonicalLoop node, so the promotion does not require
-fopenmp-enable-irbuilder.
Restrict offload entry creation to module level finalize, preventing
asserts on missing offload entries from nested CodeGenFunction
finalizing before module completion.
[ORC] Represent ORC interface names as SymbolNameSpecs (#224188)
Declare the bootstrap and controller-interface name constants (the SPSCI
descriptors, dispatch and alloc-action names, ProxySpec::Name) as
SymbolNameSpecs, pairing each name with its mangling kind at the point
of declaration. recordAddr and recordProxy now take a SymbolNameSpec and
mangle-and-intern it internally; executor-side registrations and the
remaining intern sites mangle the name too, so both sides still agree on
the symbol.
All names are Verbatim, so this is name-neutral (mangling is a no-op);
flipping any of them to a mangled kind (e.g. C) is a follow-up.
[ORC] Add ConnectionSpec::str() to reconstruct original spec (#224215)
Rebuilds the original connection string from the parsed transport,
action, and descriptor fields.
[AMDGPU] Use s_fmamk_f32 when the folded addend is inlinable (#218955)
When folding a constant into src2 of s_fmac_f32, the AK form
(s_fmaak_f32) was always selected, which puts the folded addend in the
literal slot. If that addend is an inline constant while one of the
multiplicands is not, this wastes the literal slot and still requires an
extra s_mov_b32 for the multiplicand.
Choose the instruction variant based on which operand actually needs the
literal instead. If the folded addend is inlinable and a multiplicand is
not, use the MK form (s_fmamk_f32), placing the non-inlinable
multiplicand in the literal slot and encoding the addend inline.
tools: Compute the module DataLayout from the triple, not the TargetMachine
TargetMachine::createDataLayout is an unreliable cache given the existence
of module flags which change the datalayout, so this should be removed. Migrate
tool users to directly compute the datalayout.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
[BOLT] Gadget scanner: prevent false positives due to jump tables
As part of PAuth hardening, AArch64 LLVM backend can use a special
BR_JumpTable pseudo (enabled by -faarch64-jump-table-hardening
Clang option) which is expanded in the AsmPrinter into a contiguous
sequence without unsafe instructions in the middle.
This commit adds another target-specific callback to MCPlusBuilder
to make it possible to inhibit false positives for known-safe jump
table dispatch sequences. Without special handling, the branch
instruction is likely to be reported as a non-protected call (as its
destination is not produced by an auth instruction, PC-relative address
materialization, etc.) and possibly as a tail call being performed with
unsafe link register (as the detection whether the branch instruction
is a tail call is an heuristic).
For now, only the specific instruction sequence used by the AArch64
LLVM backend is matched.
[lldb][test] Remove Arm xfail from a test in TestFrameProviderStepping.py (#224256)
Added by #223834.
I suspect this got carried over from other tests where the code has to
deal with the Arm/Thumb bit in the PC. Since this test doesn't get that
far it's not a problem, so this test is unexpectedly passing.
[flang] Skip `fakeflang` tests on standalone build (#224241)
Given that `fakeflang` tool is not built with `FLANG_STANDALONE_BUILD`,
mark the respective test as unsupported as well.
Signed-off-by: Michał Górny <mgorny at gentoo.org>
[InstCombine] Drop poison-generating annotations when rewriting rotate operands (#224228)
`SimplifyDemandedUseBits()` rewrites an operand of a rotate to the
constant formed from its known bits, which preserves only the demanded
bits of the result. A `range` attribute or `!range` metadata on the call
may no longer hold afterwards, turning a defined result into poison:
https://alive2.llvm.org/ce/z/Lk8Eop
#173864 extended annotation dropping in the funnel shift path directly
above to cover metadata; the rotate path never had it.
Drop the annotations in both rotate operand rewrite paths.
Fixes #222092.
Revert "[DAG] Optimize masked store of constant lane mask to standard store (#223665)" (#224250)
This reverts commit bdb0f5737844a53ae626a0c85aa7ebc593f38626 due to
illegal types undef avx512.
[libc++] Move _LIBCPP_GET_C_LOCALE to the locale base API (#222924)
How to retrieve the C locale is fundamentally a property of the
underlying libc, so it should really be part of the locale base API.
www/py-webdavclient3: new port
WebDAV client library based on requests, providing a Webdav API
(check, free, info, list, mkdir, clean, copy, move, download,
upload, publish, unpublish) and a higher-level Resource API.
[libc++] Fix performance regression in std::num_put (#223334)
`__pad_and_output` calls `std::copy` and `std::fill_n` unconditionally,
even though the calls are quite likely to do nothing. Adding conditions
also allows the compiler to do jump-threading.
Fixes #178685
unittests: Compute DataLayout from the triple, not the TargetMachine
Eventually createDataLayout should be removed, so migrate these uses.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
[NVPTX] Add support for f32x2 mixed-precision add/sub (#221957)
This change adds support for mixed precision addition and
subtraction of `f16x2` and `bf16x2` with `f32x2`, where the
following upconverting patterns:
```
%e = fpext <2 x half> %h to <2 x float>
%res = fp-operation(%e, ...)
...
%e = fpext <2 x bfloat> %b to <2 x float>
%res = fp-operation(%e, ...)
where the fp-operation can be any of:
- fadd
- fsub
- llvm.nvvm.fadd.v2f32
```
are lowered to `add/sub.{rnd}.f32x2.{f16x2/bf16x2}.f32x2`, and the
following downconverting pattern:
[22 lines not shown]