[SystemZ] [HLASM] Fix for constant value (#232063)
Currently, some constant values are not printed in hex. This is to fix
emitHLASMValueImpl for MCExpr::Constant and some test cases.
[DirectX] Lower semantic signature metadata to DXContainer parts and DXIL metadata (#226562)
This pr implements an analysis pass to collect any module semantic
signature metadata, and then uses the analysis to populate the
corresponding DXContainer parts and DXIL metadata.
This follows the existing pattern of how root signature metadata was
collected and then used to construct it's respective parts.
Resolves: https://github.com/llvm/llvm-project/issues/90504
Assisted by: GPT Sol 6.1
[bazel][mlir] Add MathTransformOpsPyGen to MLIR Python bindings BUILD (#232373)
fee08048551c ([mlir][math] Expose math patterns as transforms, #230042)
added \`mlir/python/mlir/dialects/transform/math.py\`, which imports
\`_math_transform_ops_gen\`. The Bazel follow-up (#232225) added the C++
\`MathTransformOps\` targets, but did not update
\`mlir/python/BUILD.bazel\` to generate the Python bindings.
Adding \`MathTransformOpsPyGen\` and include it in
\`TransformOpsPyFiles\` so \`_math_transform_ops_gen.py\` is generated.
[ELF] Move layout-changing transforms before address assignment (#232189)
finalizeAddressDependentContent assigns addresses, then
--randomize-section-padding and CFI jump table relaxation
(--branch-to-branch, implied by -O2) move input sections, so the first
fixed-point iteration computes address-dependent content from stale
addresses. Since #179089, EhFrameHeader::updateAllocSize caches the
.eh_frame_hdr search table; if no iteration changes anything, the loop
exits and the table keys no longer match the FDEs' initial_location.
Neither transform reads addresses, so run them before the first
assignAddresses. SHF_LINK_ORDER sections are now sorted by the relaxed
layout as well.
LLM-aided. Partially fix #226166
[ARM] Fix miscompile in MAC for 64b values (#231702)
AddCombineTo64BitSMLAL16 is invoked from PerformADDECombine where the
combined node N is AddeNode, but it returned SDValue(AddcNode, 0).
Because RV.getNode() != N, DAGCombiner::Run did not stop replacing and
called DAG.ReplaceAllUsesWith(AddeNode, AddcNode), replacing uses of
the high-word carry/overflow flag (AddeNode, 1) with the low-word
addition flag (AddcNode, 1).
Assisted-by: Gemini
Fixes: e9113618cba6 ("[ARM] Custom Lowering for SADDO_CARRY and
SSUBO_CARRY (#154419)")
Skip filterable methods that FT API versions cannot adapt
The FT API versions have no item models for six filterable methods, so
the adapter cannot build their result models. Skip those pairs.
Co-Authored-By: Claude Opus 5 (1M context) <noreply at anthropic.com>
repo: keep the catalogue when an update fails
pkg_repo_binary_update() removed the repository database whenever an
update failed, including when the failure happened before the database
was touched (e.g. the network dropped while fetching the catalogue) or
after the previous database had been restored by
pkg_repo_binary_update_proceed(). Any transient failure therefore threw
away a usable catalogue, and the following commands failed with
"Repository X cannot be opened. 'pkg update' required" until the next
successful update.
Only remove the database when it cannot be opened anymore, so a failed
update keeps the previous catalogue while the next update can still
start fresh from an unusable one.
Fixes: #2763
[flang][OpenMP] Fix verification of REF modifier on LINEAR clause
The OpenMP spec has a bug: the restriction should read
> If linear-modifier is ref, list items must not be polymorphic variables,
> assumed-shape arrays, or variables with the ALLOCATABLE attribute.
Co-authored-by: Markus Mützel
[SLP]Seed split poor-throughput groups before store chains
A store sunk to the join block leaves 7 store-chain elements for 8
udivs. Store chains split these as 4+2+1 and leave a scalar remainder.
Seed groups before the store chains only if the scalars not stored
locally widen the stored remainder. Also treat ops whose vector form is
cheap at full register width as poor-throughput (div by constant is
scalarized at VF=2).
Fixes #230191
Assisted-by: Cursor
Reviewers: RKSimon, bababuck
Pull Request: https://github.com/llvm/llvm-project/pull/231130
[RISCV][P-ext] Use ISD::AVGSUBFLOOR(S/U) for (p)asub(u). (#232124)
This replaces RISCVISD::ASUB(U) with ISD::AVGSUBFLOOR(S/U).
In the future we can also use this for RVV's VASUB with RDN.
Co-Authored-By: Claude Sonnet 5.5
[noreply at anthropic.com](mailto:noreply at anthropic.com)
Co-authored-by: Claude Sonnet 5.5 <noreply at anthropic.com>
[SelectionDAG] Add AVGSUBFLOORS/AVGSUBFLOORU opcodes (#232123)
These represent a halving subtract: trunc(shr(sub(ext(X), ext(Y)), 1)),
rounding towards negative infinity. They correspond to AArch64
shsub/uhsub and RISC-V P extension asub/asubu.
Includes some legalization, known bits, constant folding, and a
DAGCombiner fold from (sr[al] (sub nsw/nuw x, y), 1).
The operation is not legal any target yet. That will be done in follow
ups.
This is the same as #231749 with RISC-V split into a stack so we can
have 2 commits.
Co-Authored-By: Claude Sonnet 5.5
[noreply at anthropic.com](mailto:noreply at anthropic.com)
---------
Co-authored-by: Claude Sonnet 5.5 <noreply at anthropic.com>