[X86] SimplifyDemandedVectorEltsForTargetNode - add general X86ISD::PSADBW handling (#208309)
Extend the existing SimplifyMultipleUseDemandedVectorElts handling to
generic element folding as well.
lowerShuffleAsZeroOrAnyExtend requires an equivalent VZEXT_MOVL fold to
#207031 to stop us prematurely lowering to ZERO_EXTEND_VECTOR_INREG if
we only need the lowest element from a SCALAR_TO_VECTOR/LOAD
[X86] combine-pmaddwd.ll - add test showing poor codegen when trying to add together VPMADDWD pairs (#208457)
Shows current limitations of combineAddOfPMADDWD - only handles 128-bit
vectors, and the shuffle pattern it generates can be really poor on SSE
targets
[lit] Add configurable slowest-test limit to --time-tests
Bare --time-tests still defaults to 20; --time-tests=N and --time-tests=all optionally control the slowest-test list shown in the histogram.
18219 mdb: cmihdl dcmd actually does use slashes for -c
Reviewed by: Robert Mustacchi <rm at fingolfin.org>
Approved by: Gordon Ross <gordon.w.ross at gmail.com>
[clang] Don't omit null pointer checks with -fms-compatibility (#204658)
MSVC preserves null check after dereference, e.g
```
struct Obj { int value, extra; };
int null_check_is_kept(Obj* p) {
int v = p->value;
if (p == nullptr)
return -1;
return v + p->extra;
}
```
Also MSVC keeps standard library calls (e.g memcpy), where target is
null pointer.
[LSR] VScale doesn't occupy a register if it's a legal offset (#206754)
When we have an AddRec where the step value is n*vscale this value
doesn't occupy a register if the target has an add instruction where
this value is a legal offset.
Services: Kea DHCPv4/6: Switch custom DHCP option config generation to libdhcp_flex_option.so (#10514)
* Services: Kea DHCPv4: emit custom DHCPv4 options via flex-option hook
Route custom DHCPv4 option rows through libdhcp_flex_option instead of
regular option-data. The custom option framework (KeaOptionDataField) already serializes values
to final wire-format hex, but Kea's native option-data path still applies
built-in option definitions and may reinterpret or drop payloads for standard
or container options (e.g. 43 and 125).
Use flex-option supersede expressions to inject the serialized bytes directly
during response construction. Preserve the existing scoping model by translating
subnet scope to an additional class, and reservation scope to either MAC address
or client-id matching. Existing option match rules are kept as client-class
membership checks inside the same expression.
Built-in option_data fields remain unchanged and continue to use native Kea
option-data generation.
* Services: Kea DHCPv6: Add same flex option hook library support as in DHCPv4, with the limitation that it reservations need to be DUID based here.
pool: enforce vdev geometry limits and add force_topology
Enforce equal data-vdev width and cap RAIDZ/mirror width at
15/4 in pool.create and pool.update, mirroring truenas_pylibzfs.
Add force_topology (26 API) to bypass these topology policy
checks and the special/dedup redundancy rule; structural checks
still apply. Reject force_topology on Enterprise-licensed
systems.
epoch: Fix epoch_drain_callbacks()
This function is supposed to wait until all pending callbacks have been
executed. This is useful in some contexts where we tear down some
context (like a VNET jail and its associated UMA zones) synchronously,
and we want to make sure that all pending asynchronous callbacks (which
may free objects to said UMA zones) have run first.
The implementation schedules a callback on each CPU and waits for them
all to run. This assumes that, on a given CPU, callbacks are executed
in the order that they are pushed. This assumption depends on the
implementation of epoch_call_task() and ck_epoch_poll_deferred(), and it
is not true in general.
Callbacks are pushed onto a per-CPU stack in LIFO order.
ck_epoch_poll_deferred() first pulls out the callbacks from epoch - 2,
which are always safe to execute, and in so doing reorders them such
that the oldest callback as at the top of the stack, so in this case,
epoch_call_task() will execute them in order. However,
[22 lines not shown]
inotify: Ensure that "allocfail" is initialized in inotify_log_one()
Fixes: b70997c8c75a ("inotify: Unconditionally generate IN_IGNORED events for files/dirs")
taskqueue: Avoid unbounded epoch read sections
The taskqueue thread loop tries to avoid entering and exiting net epoch
read sections for every task. This reduces the overhead of net epoch
integration, but the implementation wasn't bounding the length of the
read section, so a busy taskqueue thread could hold an epoch open for an
unbounded period. This is easy to achieve with the epair task, for
instance.
Bound the number of tasks that we'll execute without observing the
global epoch, and provide a sysctl to control it. Let the default bound
be eight.
Reviewed by: glebius
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D58031
timefd: Correct the required rights for timerfd_gettime()
Reviewed by: jfree
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D58084
[libc++][NFC] Fix comment about size-based vector (#208463)
The closing #endif comment was using _LIBCPP_ABI_SIZE_BASED_VECTOR,
which was the name of the macro in previous iterations of the size-based
vector patch. We ended up landing on _LIBCPP_ABI_VECTOR_LAYOUT_SIZE_BASED
instead.
[SLP]Add AShr as a main opcode for copyables
Added AShr opcode in analysis and minbitwidth analysis
Reviewers: RKSimon, hiraditya, bababuck
Reviewed By: RKSimon
Pull Request: https://github.com/llvm/llvm-project/pull/207841