[AMDGPU] Preserve live SCC when shrinking disjoint S_OR_B32 to S_ADDK_I32 (#228025)
Do not shrink a disjoint `s_or_b32` to `s_addk_i32` when SCC is live.
The instructions produce equivalent data results but incompatible SCC
values.
`or` sets SCC when the result is nonzero whereas, `addk` sets SCC when
there's a signed overflow.
This causes silent code after compare folding.
RuntimeLibcalls: Add signext/zeroext attributes to libcall signatures (#237481)
Try to match TargetLibraryInfo's behavior. Integer types narrower than
int are extended according to their signedness.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[RISCV][P-ext] Add isel patterns for RISCVISD::MERGE with vector types. (#237361)
This avoids bitcasts to scalar and matches how AND, OR, and XOR
are handled.
Assisted-by: Claude
[RISCV][GISel] Drop nsw and nuw flags when promoting s32 add, sub, and shl on RV64. (#234782)
Add tests to show that we don't drop the exact flag on right shifts.
Fixes #233432.
[RISCV] Add Defs to PseudoTAIL and PseudoTAILX7. (#237449)
Annonyingly PseudoTAIL can def either X6 or X7 depending on Zicfilp and
the version of the assembler being used.
Part of fixing #235697.
[RISCV][P-Ext] Combine duplicate code for scalar i32 scalar intrinsics. (#237668)
These intrinsics are widened to a .w instruction on RV64 or converted
to a RISCVISD opcode on RV32.
Assisted-by: Claude
x11-fonts/nordwand-mono-ttf: New port, Compact monospace neo-grotesque font
Nordwand Mono is a compact monospace neo-grotesque font designed for
developers (and adventurers)
PR: 299967
[CoroSplit] Use resume-switch weights on the final-suspend destroy branch (#237526)
The destroy null check replaces the removed final-suspend case. Copy
that case's weight and the sum of the remaining successor weights before
removeCase drops them, rather than marking the branch unknown.
mail/stalwart-migrate: Add new port
stalwart-migrate moves a Stalwart Mail Server v0.16.27 data store to
Stalwart v1 and can roll the migration back if needed.
WWW: https://github.com/stalwartlabs/stalwart-migrate
PR: 300418
[BPF] Add func-table: call functions through a table (#235218)
program that keeps its data in arena keeps pointers to functions there
too: vtables, closures, `Box<dyn Trait>`. User space can write to arena.
Thus a value that the program loads from arena is a number (scalar) for
the
verifier, and `callx` does not accept a number.
With `-mattr=+func-table` a pointer to a function is a number from the
start. It is the index of the function in `__bpf_func_table`, which is
read-only data. An indirect call loads the function from the table:
```
source code
----------- ------------------------------------------------------
&f index of f
(*p)(...) __bpf_func_table[first + min(p - first, cnt - 1)](...)
```
[72 lines not shown]
[clang-repl] Remove host assumptions from Interpreter/CUDA tests (#237794)
PR #236206 recently aadded tests in clang/test/Interpreter/CUDA that run
on any Linux host with the NVPTX target and JIT support, but these tests
have some assumptions that aren't true on some of the RISC-V buildbots:
* The stub libcudart.so is linked with the default linker, which fails
on hosts without one. This patch addresses this by linking with
-fuse-ld=lld and adding `REQUIRES: lld`, as clang/test/Driver does.
* The CHECK lines will break on targets such as RISC-V that add signext
to i32 returns and arguments. I've adjusted the CHECK lines to handle
this in a similar way to similar lines in Interpreter/emit-llvm.cpp.
Debugging the buildbot issues and searching the repo for similar
patterns in existing tests was LLM assisted.
RuntimeLibcalls: Add signext/zeroext attributes to libcall signatures
Try to match TargetLibraryInfo's behavior. Integer types narrower than
int are extended according to their signedness.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
CodeGen: Remove stale last-block case when splitting a critical edge (#230930)
Before f264f9ad7df5, a new block at the end of the function began at the
old end index, so the isLastMBB case had to extend live-out intervals
over it. Now the new block always ends at the old end index, so they
already cover it. The extension became a no-op, and the case also
skipped trimming registers not live into the successor, leaving a dead
segment.
block-placement.ll needs a volatile store to keep its nested loop.
common-chain.ll gets shrink-wrapped.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>