[AMDGPU] Keep dst flags when unpacking packed F32 instructions (#234858)
performF32Unpacking copied the new instructions' dst operands by value,
so
its setIsUndef and setIsRenamable calls never reached the instructions.
Take
the operands by reference.
Assisted-by: Claude Opus 5.5
AMDGPU: Don't reserve the implicit buffer pointer with architected flat scratch
Mesa shaders always had s[0:1] reserved for the implicit buffer
pointer, which is only needed to set up the scratch buffer
resource. With architected flat scratch, scratch is initialized by the
hardware and the pointer is unused. The driver stopped passing this
pointer so all user SGPRs were off by 2.
Don't reserve it on targets with architected flat scratch, so the user
SGPRs of Mesa shaders start at s0. Diagnose the use in the unsupported
contexts. This fixes many test failures on my system when running
piglit.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[MIR] Address review: merge error tests, un-lambda count parsing
Merge the three "ops:N" error tests into one with split-file, move the
operand count parsing out of a lambda into MIParser, and shorten the
round-trip test's comment.
Assisted-by: Claude Opus 5.5
AMDGPU: Use S_ADD_I32 to select uniform uaddsat (#235242)
95ff1fa00ed4 selected uniform uaddsat.i32 to an S_ADD_U32 sequence.
S_ADD_U32 defines a carry out, so when the instructions have to be
moved to the VALU it is replaced with V_ADD_CO_U32_e32, which doesn't
exist on gfx10+. This would later assert when encoded. moveToVALU
should probably learn to handle that correctly, or at least assert.
The carry isn't needed, so use S_ADD_I32 like the usubsat pattern,
which is moved to V_ADD_U32_e64 where available.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
[libc++] Add benchmarks for std::reduce and std::transform_reduce (#233374)
The PR adds benchmarks for these algorithms:
- `std::reduce()`
- `std::transform_reduce()`, unary transform
- `std::transform_reduce()`, binary transform
The benchmarks run minimal reduction and transformation operators with
`int`, `float` and `double` parameters.
`std::vector` and `std::list` containers are tested, `std::deque` is not
included to reduce the number of added benchmarks.
Fixes #226211
---------
Co-authored-by: Louis Dionne <ldionne.2 at gmail.com>
[CIR] Fix cir.cast fold crash on a same type integral cast (#234236)
The fold called fold() on the source defining op, which is null for
block arguments
[CIR] Narrow blanket -fopenmp NYI guards to OGCG conditions (#233671)
Ordinary code compiled with -fopenmp hit errorNYI on every assignment,
inc/dec, member access and global reference
AMDGPU: Use S_ADD_I32 to select uniform uaddsat
95ff1fa00ed4 selected uniform uaddsat.i32 to an S_ADD_U32 sequence.
S_ADD_U32 defines a carry out, so when the instructions have to be
moved to the VALU it is replaced with V_ADD_CO_U32_e32, which doesn't
exist on gfx10+. This would later assert when encoded. moveToVALU
should probably learn to handle that correctly, or at least assert.
The carry isn't needed, so use S_ADD_I32 like the usubsat pattern,
which is moved to V_ADD_U32_e64 where available.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
Limit the number of pending L2TP connections. Previously, an
unlimited number of pending connections could exhaust npppd's memory.
From acts1631
ok mvs