18253 zdb: output refcounts from verify_spacemap_refcounts()
Reviewed by: Gordon Ross <Gordon.W.Ross at gmail.com>
Approved by: Dan McDonald <danmcd at edgecast.io>
[AArch64] Reuse NeoverseN1 and N2 scheduling models for A76/A77/A78. (#211209)
We do not have native scheduling models for some of the Cortex-A
generations of CPUs, so they were still using the old Cortex-A57 model.
Whilst not perfectly accurate, the NeoverseN1 and NoeverseN2 scheduling
models should be a better fit for these CPUs. I mostly just tried to
make sure the number of pipelines matches between the neoverse core and
the cortex core. If we need something more accurate then we can start
adding new models for the CPUs.
[AMDGPU] Lower uniform uaddsat.i16 to SALU instructions
Promote uniform i16 uadd.sat to i32 in promoteUniformOpToI32 so it
lowers to SALU (s_add_i32 + s_min_u32) instead of VALU + readfirstlane.
The saturating add on zero-extended operands reduces to
umin(add(lhs, rhs), 0xffff).
Co-authored-by: Cursor <cursoragent at cursor.com>
[AMDGPU] Add tests for uniform uaddsat.i16 (NFC)
Precommit tests covering uniform (SALU) uadd.sat for i16 and vector
i16 (v2i16, v3i16, v4i16) using the amdgpu_ps calling convention so
results are returned in SGPRs. These currently lower to VALU
(v_add_u16 clamp / v_pk_add_u16 clamp + v_readfirstlane).
Co-authored-by: Cursor <cursoragent at cursor.com>
[CIR] Rewire byref args to the incoming pointer (#210836)
The CallConvLowering body rewrite for Indirect arguments treats byval
and
byref the same way: it inserts a cir.load at function entry and reroutes
body
uses to the loaded value. For byref — a non-trivially-copyable type
passed by
pointer — that entry load is a byte-copy, so the callee works on a local
copy
instead of the caller's storage. That breaks types whose representation
embeds
self-referential pointers: libstdc++'s SSO std::string keeps _M_p
pointing at
its own _M_local_buf, and a byte-copy leaves the copy's _M_p aliasing
the
source's buffer.
This mirrors the sret return fix in insertSRetStores. For byref only,
[15 lines not shown]
[bazel] Add os select for plugin process on Initialization target to add windows (#211276)
Another small piece of windows build support for LLDB in bazel.
Internally at Meta, our buck2 rule for this has a split for mac/linux
with PluginProcessPOSIX and windows with PluginProcessWindowsCommon. So
this should be a no-op for existing linux & mac builds while setting up
a bit more for windows.
I have no bazel build set up locally, so will wait on CI to confirm no
regression.
bazel rule creation assisted with claude
[mlir][OpenACC] Forward dynamic boxed reduction extents (#211318)
Example:
```fortran
subroutine reduce(a, x, n)
integer :: n, i
real :: a(:), x(:)
!$acc parallel loop reduction(+:a)
do i = 1, n
a(:) = a(:) + x(i)
end do
end subroutine
```
`ACCCGToGPU` represents each gang/thread-private array as a dynamically
offset `memref.subview`. Converting this subview directly to a FIR
pointer-like type loses the memref offset, causing different private
copies to alias the same storage.
[34 lines not shown]
[DebugInfo] Avoid duplicate DIGlobalVariableExpression during upgrade (#190616)
During bitcode upgrades, if an old DIGlobalVariable is encountered that
contained a DIExpression, a DIGlobalVariableExpression is created for
it. This could happen multiple times. As described in
https://reviews.llvm.org/D26769, it is valid for a DIGlobalVariable to
have multiple DIGlobalVariableExpressions, but the use case for this is
a location that cannot be represented in a single DIExpression, not a
redundant restatement of the same DIExpression.
multimedia/dav1d: Update to 1.5.4
Changelog:
dav1d 1.5.4 'Sonic'
1.5.4 is a minor release of dav1d, focused on optimizations and maintenance:
Support for OS/2, including API exports and assembly
Switch to external checkasm
Add Armv9.3-A GCS (Guarded Control Stack) support
AArch64: optimize ipred_v, ipred_h and ipred_smooth_* 8bpc functions, and reduce .text size
ARM32: optimize prep_neon
RISC-V: ipred_(dc, h, v, pal) optimizations for 8 and 16bpc, generate_grain_y for 8bpc, and optimizations (prep/put_8tap, 6-tap and copy paths)
Portability improvements for non-POSIX systems (signal() fallback)
Schedule tile tasks for all passes at once, improving threading
Precompute the quantization matrix tables at build time
Move loop-invariant computations out of hot loops
webshell: fix silent reader/writer thread death and fd lifecycle
login(1) hangs up and reopens its tty at session start: pty_close()
of the vhangup'd slave sets TTY_OTHER_CLOSED on the master and wakes
its readers, so os.read() returned EIO until pty_open() cleared the
flag on reopen. The reader treated any read error as fatal and
exited; the shell kept running with no output forwarded. Treat
read/write EIO as fatal only when the child is gone; retry with 50ms
backoff.
abort() closed master_fd while the reader/writer threads still used
the fd number, so a recycled number (e.g. the next session's
forkpty) could receive their I/O. abort() now only signals and kills
the child; run() reaps it, joins both threads, then closes
master_fd. A post-fork check covers abort() racing the fork.
Catch BaseException in both threads: Future.result() raises
asyncio.CancelledError, which except Exception missed, killing the
thread with no log.
RuntimeLibcalls: Drop artificial __aeabi_?cmpeq suffixes (#211251)
Avoid defining synthetic LibcallImpls just to match the use
case of the legalizer. __aeabi_?cmpeq returns a boolean for
ordered-equal and was defined twice with __oeq/__une enum
suffixes so the one symbol could serve both OEQ and UNE.
Replace each pair with a single unsuffixed impl providing only
OEQ. The legalizer can directly invert it without the dummy entry.
Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
[mlir-c] Add TypeConverter materialization; use a status enum for the type conversion callback (#208934)
Continues the buildout of the dialect-conversion C bindings (follows
#206146 and #206161).
- Exposes `TypeConverter::addSourceMaterialization` and
`addTargetMaterialization` through the MLIR C API.
- Introduces `MlirTypeConverterConversionStatus`
(`Success`/`Failure`/`Declined`) and switches
`MlirTypeConverterConversionCallback` to return it, replacing the old
`MlirLogicalResult` + `MlirType{NULL}` dual sentinel. The old convention
could not distinguish the C++ decline (`std::nullopt`, try the next
conversion) and hard-failure (`failure()`, stop) states; the enum maps
cleanly to all three. The Python binding and C API test are updated
accordingly.
Assisted by: Claude
[libunwind][test][AIX] Add C API test for unwinding from AIX VAPI (as signal handler) (#209662)
Further to https://github.com/llvm/llvm-project/pull/209306, test a case
where a signal handler is a Virtual API function triggered synchronously
while the VAPI is not active. Resuming an ancestor context of the signal
frame should call the VAPI return glue.
---------
Assisted-by: IBM Bob
[flang][OpenMP] Switch TableGen generation to use llvm::EnumSet
Replace the remaining uses of the common::EnumSet-based OmpClauseSet to
llvm::omp::ClauseSet.
[flang] Provide "clause set" type as parameter to DirectiveStructureChecker
This will remove the hardcoded dependence of DirectiveStructureChecker on
the common::EnumSet class. Both consumers of it will be able to use their
own type for the clause set.
The only complication was the ClauseSetToString member function, whose
implementation depended on the specifics of common::EnumSet, namely the
IterateOverMembers member function. It was moved out of the class, and
turned into a function template to make it possible to provide different
specializations for common::EnumSet and llvm::EnumSet.
[flang][OpenMP] Use llvm::omp::DirectiveSet instead of common::EnumSet
Replace uses of OmpDirectiveSet (defined in terms of common::EnumSet)
with the common llvm::omp::DirectiveSet (defined via llvm::EnumSet).
The llvm::omp::DirectiveSet class will also be used in openmp-parsers,
where OmpDirectiveSet was an instance of llvm::Bitset.
[flang][OpenMP] Use llvm::omp::ClauseSet instead of common::EnumSet
Replace uses of OmpClauseSet (defined in terms of common::EnumSet)
with the common llvm::omp::ClauseSet (defined via llvm::EnumSet).
ibus: add kludge to fix bulk build on NetBSD/amd64 10.0
See PR pkg/60476 for details.
XXX: still fails on builds on hosts with xserver set using official gtk3
binary package
[AMDGPU] Support i16 element types for tbuffer D16 load/store (#201420)
Detect D16 by element bit width rather than matching f16 specifically,
so integer i16 elements take the same packed/unpacked path