[ARM] Try to lower sign bit SELECT_CC to shift (#186349)
Lower a `x < 0 ? 1 : 0` style SELECT_CC to `x>>(bw-1)`. This will become
more important with an upcoming change, but also appears to be somewhat
useful by itself.
[clang-tidy] Fix an edge case in readability-implicit-bool-conversion (#186234)
Fix a FP for condition expressions wrapped by `ExprWithCleanups`.
Co-authored-by: EugeneZelenko <eugene.zelenko at gmail.com>
Co-authored-by: Zeyi Xu <zeyi2 at nekoarch.cc>
[mlir][linalg] Use inferConvolutionDims for generic convolution downscaling (#180586)
The goal of this PR is to implement a generic, structure-aware
convolution downscaling transformation that works for any
convolution-like operation regardless of its specific layout or naming,
rather than relying on pattern-matching against specific named
operations.
Each pattern we currently have, have hardcoded dimension indices
specific to its layout (e.g., NHWC vs NCHW).
This approach :-
1. Requires maintaining many similar patterns.
2. Is brittle when new layouts are introduced.
3. Cannot handle batchless versions of the conv variants.
This PR thus creates a single downscaleSizeOneWindowedConvolution
function that uses `inferConvolutionDims` to semantically understand the
convolution structure (batch dims, output image dims, filter loop dims,
etc.) rather than hardcoding indices.
[8 lines not shown]
NAS-140206 / 27.0 / Clarify code comments and logging messages related to disk retaste (#18446)
The root cause of the hanging job issue was removing
`multiprocessing.set_start_method('spawn')` when process pool was
removed. This is confirmed by the absence of the bug in 26.0.0-BETA.1
where process pool is still present.
NAS-140061 / 27.0.0-BETA.1 / Replace zfs.pool.wait with truenas_pylibzfs call (#18445)
I added a new `job_silent` parameter because, even after
`truenas_pylibzfs.lzc.wait` returns, the first `disk.wipe` operation
still might fail, and this is expected and handled. However, we don't
want the stacktrace to pollute our logs.
[Clang] Dump noexcept expression in compound requirement AST dumps
When a compound requirement has a noexcept(expr) specification, the
expression is now visited as a child node in AST dumps. The text dumper
also shows "noexcept(expr)" instead of just "noexcept" to indicate the
presence of the expression.
Fix noexcept requirement not being checked when concept is used in another concept
The RecursiveASTVisitor was not traversing the noexcept expression in
compound requirements, causing template parameters used only in noexcept
expressions to be missed during constraint normalization.
This resulted in concepts with dependent noexcept requirements (like
noexcept(noexc) where noexc is a template parameter) not being properly
evaluated when the concept was used inside another concept definition.
Fix by adding traversal of getNoexceptExpr() in
TraverseConceptExprRequirement.
Test: Uncommented and verified the test case in compound-requirement.cpp
that was previously commented out because it didn't work.
[SelectionDAG] Add CTTZ_ELTS[_ZERO_POISON] nodes. NFCI (#185600)
Currently llvm.experimental.cttz.elts are directly lowered from the
intrinsic.
If the type isn't legal then the target tells SelectionDAGBuilder to
expand it into a reduction, but this means we can't split the operation.
E.g. it's possible to split a cttz.elts nxv32i1 into two nxv16i1,
instead of expanding it into a nxv32i64 reduction.
vp.cttz.elts can be split because it has a dedicated SelectionDAG node.
This adds CTTZ_ELTS and CTTZ_ELTS[_ZERO_POISON] nodes and just enough
legalization to get tests passing. A follow up patch will add splitting
and move the expansion into LegalizeDAG.
[Clang] Support noexcept(expr) in C++ concepts compound requirements
This patch implements P3822R0 support for noexcept specifications with constant expressions in C++20 concepts compound requirements.
Previously, only 'noexcept' keyword was supported, which is now
equivalent to 'noexcept(true)'.