[SLP]Split alternate stored values wider than a register
Retry the non-profitable wide store tree with the alternate stored
values split into halves, sharing the common operands.
Fixes #64982
Assisted-by: Cursor
Reviewers:
Pull Request: https://github.com/llvm/llvm-project/pull/233542
RuntimeLibcalls: Generate vector library libcall sets (#232769)
Replace the hand-written VectorLibrary switch with LibcallLibrary
definitions, enabled by the generated setAvailableLibraryLibcalls
function. This only covers the functions that were already handled;
future changes will fill in the cases still missing relative to
TargetLibraryInfo.
Libraries used by a SystemRuntimeLibrary are already enabled by
setTargetRuntimeLibcallSets, so only the remaining libraries can be
enabled by name. In the future I want to retire the
SystemRuntimeLibrary concept and reduce it to a list of libraries.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
pfctl: Report the error of a failed fingerprint flush
pfctl_flush_fingerprints() returns an error number instead of setting
errno, so a failed flush was reported with whatever errno held: "No
error: 0" on a kernel with ALTQ, ENODEV from the ALTQ probe on one
without. Every "pfctl -f" flushes the fingerprints first, so on a
kernel that predates PFNL_CMD_OSFP_FLUSH every ruleset load fails this
way without saying why.
Reviewed by: kp
Fixes: 75c0a8376204 ("pf: convert DIOCOSFPFLUSH DIOCOSFPGET DIOCOSFPADD to netlink")
Sponsored by: Rubicon Communications, LLC ("Netgate")
Firewall: Aliases - squeeze some extra performance out of the dynamic captive portal aliases, the getConfigNode() works but still costs a bit more than I'm willing to spend.
The downside from direct config access is that we need to keep track locations in multiple spots, but since it's highly unlikely these locations will change, it's probably better to save some cpu cycles.
[LoopPredication] Check the latch exit block for unreachable
isLoopProfitableToPredicate is meant to refuse predication on a loop latch
that exits into a deoptimize or an unreachable block. The
unreachable check looked at the latch terminator, which is always a
conditional branch, so it never fired. Check the terminator of the latch
exit block instead.
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
[LoopPredication][NFC] Add test for latch exiting to unreachable
Add a test for predication on a latch check that exits into an
unreachable block. Run pr61022.ll with
-loop-predication-skip-profitability-checks=true, since it tests a crash
rather than profitability.
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
[LoopPredication] Ignore exits to deopt in profitability check
LoopPredication refuses to predicate a loop if any exit is more than
twice as likely as the latch exit, so that a widened check does not fail
when the loop would have left through an earlier exit. It also counts
exits to deopt, including the deopt exits of the guards being predicated.
An exit to deopt cannot cause such a spurious failure: if it is taken,
the loop deoptimizes with or without predication.
If every guard has a fixed, very small failure probability, e.g. weights
{983040, 1}, then with exits to deopt counted, a loop with a guard is
never predicated if it runs more than ~1.97M iterations per entry. The
range check then stays inside the loop and blocks its vectorization.
Skip exits to deopt in the profitability check. BranchProbabilityInfo
already treats them as practically never taken. This deliberately
includes deopt exits that the profile shows as frequently taken, since
they deoptimize with or without predication too. Exits to non-deopt
blocks still compete with the latch exit.
[2 lines not shown]
[LoopPredication][NFC] Add tests for guard profitability in long-running loops
Add tests for profitability of predicating guards whose exits to deopt
are more likely than the latch exit in a long-running loop.
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
[Clang] Fix template template param matching with constant template params of reference type. (#227290)
When matching a template template argument, we synthesized an argument
for each constant template parameters in a way that was not consistent
with Sema::BuildDeclarationNameExpr, causing an assertion failure in
ClassifyExpr.
This fixes a regression introduced by #124137
Assisted-By: Opus 5.5
Firewall: Aliases - fix performance regression introduced in https://github.com/opnsense/core/pull/8368
The captive portal model is quite expensive to construct and for our aliases we only require the data underneath.
This commit organizes a couple of things, first implement an easier handle to load a random model from disk to test:
```
Config::getInstance()->forceReload('/path/to/test/config.xml');
$before = memory_get_usage();
$start = hrtime(true);
$mdl = new \OPNsense\Firewall\Alias(true);
printf(
"Alias: %.2f ms, retained PHP memory: %.2f MiB\n",
(hrtime(true) - $start) / 1e6,
(memory_get_usage() - $before) / 1048576
);
```
[4 lines not shown]
sun4v: Try to use the hypervisor interrupt api version 1 if version 2 fails.
Version 3 systems are working ok - trying to fix the setup when a version < 2
system is used.
Not tested on yet.