[clang] Unique OverflowBehaviorTypes with a UniquingSet (NFC) (#223939)
This patch migrates OverflowBehaviorTypes in ASTContext from
llvm::FoldingSet to llvm::UniquingSet.
OverflowBehaviorType keys on a pair of QualType and
OverflowBehaviorKind. Switching to UniquingSet allows us to look up
types with a typed key, eliminating FoldingSetNodeID serialization at
lookup sites and removing OverflowBehaviorType::Profile.
Assisted-by: Antigravity
ntfy: Add ntfy version 2.28.0.
ntfy is an open source, self-hostable push notification service.
It's written in Go, so the package is relatively straightforward.
The Go build command was copied from their Makefile development target to avoid using goreleaser.
Tested on Debian and FreeBSD.
[AMDGPU] Make VOPC_Pseudo inherit from VOP_Pseudo
GFX1250 blocking-cycle modeling misses _e32 VOPC_Pseudo because the
searchable table filters on VOP_Pseudo. Shrink can emit that encoding
before co-exec, so F64/I64/class compares were treated as 1-cycle VALU.
Side effect of this change is that _e32 VOPC_Pseudo records are also
included in the True16 and DP-MACC tables.
[AMDGPU] Model GFX1250 VALU blocking cycles
Some gfx1250 VALU instructions block the VALU pipe for N cycles, and
the CoExec scheduler must model that occupancy. The existing SchedModel
cannot represent this given current modelling constraints (see #202775).
Attach GFX1250BlockingCycles to the VOP instruction definitions and
emit a searchable table so SIInstrInfo::getBlockingCycles() can report
the occupancy. CoExec uses that to classify multi-cycle VALU and to
account for blocking when computing HWUI cycles.
Authored by Jeffrey Byrnes <jeffrey.byrnes at amd.com>
Co-authored-by: Cursor <cursoragent at cursor.com>
[AMDGPU] Form VOPD3 pairs with pair-local literal moves (#223431)
VOPD3 cannot encode literal operands, but its src0 can read scalar
registers. In this PR, we try to allow to form a pair with one distinct
non-inline constant value by moving that value to a free SGPR. If both
components use the same value, one move serves both, but we reject pairs
that need two different values, since that doesn't buy us anything.
Ffunctions without tracked liveness, and functions optimized for size
are also rejected.
With this change, `GCNCreateVOPD` checks every adjacent pair before it
selects a greedy non-overlapping pair. This lets an infeasible pair fall
through to the overlapping next one. We use one reverse liveness walk to
find an SGPR that is free over each pair-local range. Disjoint selected
pairs can reuse the same SGPR. Each accepted pair adds at most one
`S_MOV_B32` for the one instruction removed by fusion.
The post-RA scheduler uses the same matcher policy, so it will not
cluster a two-value pair that the create pass cannot build.
[4 lines not shown]
[MLIR][Affine] Refactor dependence testing to work on relations, not just on operations (#223188)
This change is effectively NFC for all users of affine dependence
analysis in the tree or outside. It performs a minor refactoring of the
API to allow more general usage.
`checkMemrefAccessDependence` takes two `MemRefAccess`es, each wrapping
an operation, so it can only be asked about accesses that already exist.
A transformation deciding whether to make a change has the opposite
question: whether the accesses it is about to create would depend on
each other. Loop fusion is one -- whether the stores of a slice would
still be one-to-one in the loops it is about to be placed under settles
whether their parallelism survives it, and it has to know before it
fuses.
Nothing in the dependence analysis needs the operations. Everything from
the point where the two access relations are in hand -- inverting one,
composing, adding the ordering constraints, testing the result for
emptiness -- is already relation-only. Split that out as
[12 lines not shown]
[RISCV][GISel] Record SExt32 arguments for RISCVOptWInstrs. (#224154)
RISCVOptWinstrs can do a better job if its know what arguments are
already sign extended.
Assisted-by: Claude
[OpenMPIRBuilder] Use generic pointers for outlined teams arguments (#222176)
createFakeIntVal models the thread and bound id arguments of the
function
outlined for a teams region as allocas. When the target's alloca address
space is not zero these were passed on as-is, so the outlined function
took
addrspace(5) pointers while __kmpc_fork_teams calls it with generic
ones.
Cast the alloca to address space zero when it is passed as a pointer,
which
only affects targets with a non-zero alloca address space such as
AMDGPU.
math/gap: update 4.14.0 → 4.16.1
30+ port options were added for all compiled packages.
This is in addition to non-compiled packages that come with
the base GAP.
ChangeLog: https://github.com/gap-system/gap/blob/v4.16.1/CHANGES.md