[AArch64][GlobalISel] Do not run the Localizer at -O0 (attempt 2) (#231406)
This was disabled earlier this year (#177359) before being shortly reverted due
to two test failures which have since been fixed. The flaky LLDB issue was
fixed in #210050 and the libcxxabi test in #230518.
CTMark aarch64-O0-g geomean improves -0.97%. Code size regresses 2.70% but as
previously we think this is worth paying at O0 where compile-time and debug are
the biggest concern.
https://llvm-compile-time-tracker.com/compare.php?from=fc90bd3cfb0bab14a2bf7cbd33f5f1e904c7e133&to=071f3542ccb3b3c65032397550e862d7090f425f&stat=instructions:u
Assisted-by: codex
Co-authored-by: David Green (davemgreen)
[ValueTracking] Remove matchMinMaxOfMinMax() (#231539)
matchMinMaxOfMinMax() was effectively dead code: It did recursive
matches for SPF min/max, but in practice the SPF pattern would have been
canonicalized to intrinsics by that point already.
After the canonicalization to intrinsics, this pattern is already
handled by a different InstCombine fold, which handles selects of
min/max with common operands.
Move the codegen test for this functionality to InstCombine, to show
that all variants of the pattern are indeed replaced by intrinsics. The
codegen test was testing non-canonical IR that would never occur in
practice, after the middle-end pipeline has run.
Attributor: Deduce noundef returns if poison-generating attributes hold
Instead of giving up on noundef for returns with poison-generating
attributes, check that the attributes hold for all returned values, like
FunctionAttrs already does.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
Attributor: Don't infer noundef returns with poison-generating attributes
Returning a value that violates an existing return attribute results
in poison. AANoUndef did not account for this and could mark such
returns noundef. Give up on returns with poison-generating attributes.
Unlike FunctionAttrs, this does not try to prove that the attributes
hold for the returned values. This loses 2 of 3 noundef returns that
would have been proven over CTMark with -attributor-enable=full, and
no call site attributes. In the future it should call the the
ValueTracking queries for parity.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
firmware: make all text fields stricter in model
Spaces, control characters and newlines are not expected in these.
If they should be needed in the URL they can be URL encoded by the
user just like | and " before.
dashboard: prevent zoom on fresh health grapp add, fix double-render in firewall widget
Make sure widget resize handling runs once during initial startup
rather than waiting for ResizeObserver
[AArch64] Cost i8 to i64 partial reductions for NEON dot products (#226226)
With +dotprod, NEON lowers an extended i8 to i64 partial add reduction
to a udot/sdot into a zeroed v4i32 followed by an [SU]ADALP into the
v2i64 accumulator (#214636). `getPartialReductionCost` only prices this
shape for SVE, so NEON gets BasicTTIImpl's generic expansion cost
(#189905), which is no cheaper than a regular reduction. Since #191369 a
partial reduction must be strictly cheaper than a regular one, so byte
sums and dot products into `uint64_t`/`int64_t` keep a `<16 x i64>`
accumulator.
This charges one basic cost per legal input vector for each step: the
dot product, as for i8 to i32, and the [SU]ADALP, as for two-way add
reductions. On Neoverse N1 and Cortex-A76 the sequence runs at 1.0
cycles per 16 input bytes (bounded by the [SU]ADALP) against 0.5 for the
i8 to i32 udot, matching the 2:1 cost ratio; the zeroing MOVI adds
nothing.
It covers sums of zero- or sign-extended bytes and products of
[21 lines not shown]
[SDAG] Fix UMULFIXSAT saturation check for Scale > NVTSize. (#231442)
This came up when looking at something else. The check should use HH,
not HL, as the comment above the code describes.
[AArch64] Cleanup call to performSetccAddFolding. NFC (#231786)
This was being called from inside performAddSubLongCombine, not the
higher
level performAddSubCombine.
[lldb] Remove the jSignalsInfo packet (#230456)
The use of the UnixSignals class in lldb-server prevents the
functionality from being moved to the Platform class. This packet allows
the server to program the client with the signals present on that
target, but in practice, lldb has to know that information anyway
because of postmortem debugging (no server to provide the information).
No code changes are necessary because the client already has a fallback
path (which is now promoted to the main line) for handling the case
where the packet is not implemented.
See #229106 for context.
[offload] Cache the per-launch device allocations of libomptarget (#231570)
Claude assisted with this patch.
---------
Co-authored-by: Alex Duran <alejandro.duran at intel.com>
misc/wavedrom: Fix build with rust 1.99.0
Fix the following error:
error: invalid definition of the runtime `free` symbol used by the standard library
--> wavedrom-wasm/src/lib.rs:21:1
|
21 | pub unsafe extern "C" fn free(ptr: *mut u8, size: usize) {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: expected `unsafe extern "C" fn(*mut c_void)` (for the current target)
found `unsafe extern "C" fn(*mut u8, usize)`
= help: either fix the signature or remove any attributes like `#[unsafe(no_mangle)]`, `#[unsafe(export_name = "free")]`, or `#[link_name = "free"]`
= note: `#[deny(invalid_runtime_symbol_definitions)]` on by default
PR: 299016
Approved by: portmgr (build fix blanket)
x11/clipcat: Fix build with rust 1.99.0
Fix the following error:
error: lint `no_mangle_generic_items` has been removed: converted into hard error, generic items must always be mangled
PR: 299016
Approved by: portmgr (build fix blanket)
x11/squeekboard: Fix build with rust 1.99.0
Fix the following error:
=>> Building x11/squeekboard
error: invalid definition of the runtime `close` symbol used by the standard library
--> /wrkdirs/usr/ports/x11/squeekboard/work/squeekboard-v1.43.1/src/vkeyboard.rs:49:9
|
49 | fn close(fd: u32);
| ^^^^^^^^^^^^^^^^^^
|
= note: expected `unsafe extern "C" fn(i32) -> i32` (for the current target)
found `unsafe extern "C" fn(u32)`
= help: either fix the signature or remove any attributes like `#[unsafe(no_mangle)]`, `#[unsafe(export_name = "close")]`, or `#[link_name = "close"]`
= note: `#[deny(invalid_runtime_symbol_definitions)]` on by default
PR: 299016
Approved by: portmgr (build fix blanket)
[AMDGPU] Look up DefaultDepCtrEncoding instead of caching in global state (#227720)
This commit removes the static cache for DefaultDepCtrEncoding in
AMDGPUBaseInfo.cpp and instead looks it up from the table when needed.
This avoids potential issues when querying encoding on different
subtargets. Additionally, we inline `getDefaultCustomOperandEncoding` as
`getDefaultDepCtrEncoding` was the only caller.
---------
Signed-off-by: Steffen Holst Larsen <sholstla at amd.com>