NAS-143717 / 27.0.0-BETA.1 / Convert the zfs.resource services to the typesafe pattern (#19698)
## Context
`zfs.resource`, `zfs.resource.snapshot` and `zfs.resource.pool` were
already half-converted: public methods carried
`@api_method(check_annotations=True)` against models in `api/v27_0_0/`,
and most in-process consumers already went through `call2`. What was
missing was the structural half - the service classes still held the
implementation. `resource_crud.py` and `snapshot_crud.py` were 800+
lines each, mixing a 117-line create pipeline, destroy validation, path
helpers and per-method exception translation in with the API surface.
## Solution
**Lean shims delegating to module functions.** The three services keep
only their `Config`, decorators and docstrings, and hand off to plain
functions taking a `ServiceContext` - the same shape `ports`, `hardware`
and `boot` already use. The logic lands in
`resource_{query,create,destroy,ops}.py`, `snapshot_ops.py` and
`prefetch_ops.py`. `create_rules.py`'s three pool-inspecting helpers now
[26 lines not shown]
[SCEV] Return a SCEVUse from getMulExpr and propagate use flags. (#221486)
Same as https://github.com/llvm/llvm-project/pull/220007 but for
getMulExpr:
add option to pass SCEVUse-specific flags to getMulExpr and propagate
them through, if valid conservatively. That is, the final expression
multiples the same operands (potentially in different order). For
example, it is not valid to propagate the use flags if other
(sub-)expressions have been inlined.
It also includes a few mechanical changes, to update users that still
expected const SCEV *.
PR: https://github.com/llvm/llvm-project/pull/221486
linuxkpi: Compile `x86_match_cpu()` on amd64 and i386 only
This fixes the build on other architectures where `struct x86_cpu_id` is
unavailable.
Sponsored by: The FreeBSD Foundation
[AArch64] Improve scalar fixed-point int-to-fp codegen (#220299)
[AArch64] Improve scalar fixed-point int-to-fp codegen
Select the scalar FPR shifted conversion forms when the integer input
is already in an FPR, and keep the GPR forms for integer inputs in
GPRs.
Add coverage for intrinsic and sitofp/uitofp fixed-point conversions.
Select scalar FP/SIMD-register conversion forms when a fixed-point
int-to-fp conversion uses a value extracted from a SIMD vector.
This avoids moving the reduction result through a GPR before
converting to floating point.
[NFC][analyzer] Do not spell out unreachable statement kinds in `shouldJustCallCheckers` (#223473)
The function `shouldJustCallCheckers` introduced recently in
e829049823905405779c6b908437b200e7ed1b2e returns true by default and
returns false for statement kinds where it is inappropriate to call the
PreStmt and PostStmt checkers in the "normal" pattern.
Unreachable statement kinds (e.g. control flow statements that never
appear as non-terminator statements in a CFGBlock) were covered by
explicit cases in `shouldJustCallCheckers`, but this was needless
complexity, so this commit removes it. These statement kinds run into
`llvm_unreachable` in `ExprEngine::Visit`, so the behavior of
`shouldJustCallCheckers` is completely inconsequential.
[AArch64][CostModel] Update SVE inserelement/extractelement costs (#220627)
This updates the costs for inserting/extracting elements into/from
fixed-length SVE vectors when the lane exceeds the index for the
NEON mov lane (dup/ins) instructions.
[IR] Do not track metadata uses of ConstantData (#223303)
A ConstantData is never RAUW'd or deleted (#137313 removed its use list
for that reason), so the use list of its ConstantAsMetadata node is
written but never read. Stop tracking these uses.
In a module with debug info the PoisonValue node had the largest use
lists: a debug record is retargeted to poison when the instruction it
describes is deleted (`Instruction::~Instruction`) or its location is
killed.
Aided by Opus 5