[MLIR][Vector] Add fast-math flags to vector.multi_reduction (#233546)
`vector.reduction` and `vector.contract` can carry fast-math flags, but
`vector.multi_reduction` cannot. So a producer cannot say, for example,
that a `maximumf` reduction may assume there are no NaNs and need not
tell -0.0 from +0.0. The linalg vectorizer also drops the flags of the
combiner op when it turns a reduction into a `multi_reduction`.
This patch adds an optional `fastmath` attribute to
`vector.multi_reduction`, with the same syntax as on `vector.reduction`.
It holds `arith` fast-math flags, which have the meaning given in the
LLVM LangRef. Every combining operation of the reduction, including the
one with the accumulator, behaves like the matching `arith` op with
these flags. Only the floating-point kinds use them:
```mlir
%r = vector.multi_reduction <maximumf>, %src, %acc fastmath<nnan,nsz> [1] : vector<16x64xf32> to vector<16xf32>
```
[38 lines not shown]
[AArch64][MachineOutliner] Handle async CFI for outlined calls
When calling outlined functions from a function that needs asynchronous
unwind information, we need to add extra CFI instructions at the call
site in some cases, depending on how LR is saved in the caller. We have
the following cases:
1. LR doesn't need saving at the call site. In this case we don't need
any extra CFI instructions.
2. LR is saved in a free register. In this case we need to add
`.cfi_register w30, wN` and `.cfi_restore w30` around the function
call. This will make sure that an unwinder can recover the correct LR
value.
3. LR is saved to the stack. Since this case modifies the value of SP,
and thus potentially the CFA, we disallow it entirely with
asynchronous unwind info. We could probably allow some special cases,
e.g. when the function doesn't use FP, but then we would have to
reimplement complex functionality from `AArch64FrameLowering`.
py-djangocms-video: updated to 3.2.0
3.2.0
Bump sqlparse from 0.4.4 to 0.5.0 in /tests/requirements
Bump django from 3.2.20 to 3.2.25 in /tests/requirements
feat: modernize test setup to match djangocms-frontend constraints
feat: include 5.1 alpha in test matrix
chore: upgrade GitHub Actions versions
feat: Add referrer policy to iframe in video player template
ci: Replace isort and flake8 with ruff check
ci: add Python 3.15 to CI
fix: Fixed Vimeo video URL embedding
docs: clarify configuration and show published supported versions
feat: Implemented HLS stream source as new plugin type
chore: Prepare release 3.2.0
[M68k] Use UADDO_CARRY/USUBO_CARRY instead of ADDC/ADDE/SUBC/SUBE.
Type legalization now expands wide add/sub using UADDO/USUBO and
UADDO_CARRY/USUBO_CARRY, which are lowered to M68kISD::ADD/SUB and
M68kISD::ADDX/SUBX with the carry passed through CCR.
ADDX/SUBX no longer receive a glue operand, so their verifyTargetNode
waivers can be removed.
This improves the code for i64 uadd/usub.with.overflow. Previously the
overflow bit was computed by redoing the subtraction, and usubo also
saved and restored CCR.
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
[M68k] Only fold carry into ADDX/SUBX from flags that set X. NFCI
combineCarryThroughADD replaces (ADD (SETCC COND_CS, Flags), -1) with
Flags. For SETCC/BRCOND users that is fine because they read C, but
ADDX/SUBX read the X flag. CMP, TST, logical ops, MUL and BTST set C
without changing X, so folding their flags into ADDX/SUBX would use a
stale X.
Only do the fold for ADDX/SUBX when the flags come from M68kISD::ADD,
SUB, ADDX or SUBX, which set X equal to C. I could not find a case that
currently reaches the fold with other flags, so no test changes.
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
TableGen: Keep the instregex prefix for patterns with a top-level ?
instregex discarded a pattern's literal prefix, and ran the regex on
every instruction, if the pattern had a ? outside parentheses, as in
LDPS?Wi. A ? only makes the atom before it optional, and an atom
directly before it is already dropped from the prefix. Only a top-level
| makes the prefix unusable.
AArch64GenSubtargetInfo.inc tablegen run:
Gigainstructions Gigacycles CPU seconds
Before 44.6 18.8 5.7
After 43.1 (-3.4%) 17.8 (-4.9%) 5.4 (-4.6%)
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
TableGen: Match each instregex pattern only once
Scheduling models use the same instregex patterns many times, and every
use matched the pattern against the instruction names again. AArch64
evaluates 12501 patterns, only 4344 of them distinct, for a total of 34
million regex matches. Cache the instructions each pattern matches, so a
repeated pattern costs a lookup.
AArch64GenSubtargetInfo.inc tablegen run:
Gigainstructions Gigacycles CPU seconds
Before 67.9 31.1 9.4
After 44.6 (-34.3%) 18.8 (-39.6%) 5.7 (-39.1%)
All 366 tablegen runs in an LLVM build with all targets:
Gigainstructions Gigacycles CPU seconds
Before 2252 1409 499
After 2188 (-2.8%) 1380 (-2.1%) 489 (-1.9%)
[2 lines not shown]
TableGen: Look up SchedWrites and SchedReads by def in a map (#235484)
Looking up a SchedWrite or SchedRead by def searched the whole list,
which is done for every scheduling resource of every instruction and
processor. Keep a map from def to index instead.
AArch64GenSubtargetInfo.inc tablegen run:
```
Gigainstructions Gigacycles CPU seconds
Before 76.1 38.5 11.6
After 67.9 (-10.9%) 31.1 (-19.3%) 9.4 (-19.1%)
```
All 366 tablegen runs in an LLVM build with all targets:
```
Gigainstructions Gigacycles CPU seconds
Before 2264 1423 504
After 2253 (-0.5%) 1412 (-0.8%) 500 (-0.8%)
```
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[SandboxVec][Doc] Add information about pass args (#236262)
1. Describe the two different types of pass arguments, and
2. Add two columns describing the arguments that each pass accepts
py-gcovr: updated to 8.8
8.8
New features and notable changes:
Change the breadcrumbs of in the source view of the GitHub theme.
Bug fixes and small improvements:
Fix removing coverage for internal functions in C sources.
Fix release pipeline to upload standalone applications for MacOs again.
Internal changes:
Add zizmor to scan pipeline for security issues.
Add dependabot configuration for version updates.
Change exclusion handling to use a data class instead of simple integers.
Add nox session to cleanup duplicate reference data and notify session after import.