[AMDGPU][SIRegisterInfo] Fix maxoffset calculation in buildSpillLoadStore (#179182)
This PR addresses Maxoffset calculation bug in SIRegisterInfo. When
RemSize is non-zero, maxoffset, that needs to be encoded in the offset
field, will be equal to "Offset + Size".
---------
Co-authored-by: Abhinav Garg <abhigarg at amd.com>
[AMDGPU] Add CmpLG and OrN2 operators to LaneMaskConstants (#179493)
Add CmpLG and OrN2 operators to be able to use the LaneMaskConstants in
PhiLoweringHelper from SILowerI1Copies
Firewall - Rules [new]: Add all rules option to interface selectpicker and make it default selection (#9713)
* Firewall - Rules [new]: Add all rules option to interface selectpicker and select it by default
* Interface select default only on null or no match, not on empty string
* To fix URL hash weirdness, it's best to special case __floating and __any in the frontend
* Lower diff in controller by folding null case into is_if
* firewall: tweak the interface selector
Show group name and description. Could be inconvenient when
the description is long, but better for the auto-groups.
That also removes the hint at the end. See note below.
Use fixed width logos for the interface groupings.
Remove muted from the any selection.
TODO/Remarks:
The groupings being shown as muted is a bit inconvenient also
[16 lines not shown]
[X86] Fold vgf2p8affineqb XOR with splat constant into immediate (#179103)
The vgf2p8affineqb instruction performs an affine transformation on each
byte and then XORs the result with an 8-bit immediate operand. When this
instruction is followed by a standalone XOR with a splatted constant,
LLVM currently generates extra instructions instead of folding the
constant into the instruction's immediate.
This PR adds a DAG combine optimization that detects the pattern
vgf2p8affineqb(x, m, imm8) ^ C where C is a splatted 8-bit constant and
transforms it to vgf2p8affineqb(x, m, imm8 ^ C), eliminating the
unnecessary XOR instruction.
- The optimization runs during the combine phase after type legalization
- Handles XOR with the constant on either side (commutative)
- Only applies when the GFNI instruction has a single use to avoid
de-optimization
- Validates that the XOR operand is a splatted 8-bit constant before
folding
- Includes test coverage for positive cases and negative cases
(multi-use, non-splat constant, variable XOR)
[NFC][LLVM] Make `MachineInstrBuilder::constrainAllUses` return `void`
This function always returns `true`; so we can transform it to return
`void` and simplify the code.
Follow up of https://github.com/llvm/llvm-project/pull/179501 .
Firewall - Rules [new]: Add all rules option to interface selectpicker and make it default selection (#9713)
* Firewall - Rules [new]: Add all rules option to interface selectpicker and select it by default
* Interface select default only on null or no match, not on empty string
* To fix URL hash weirdness, it's best to special case __floating and __any in the frontend
* Lower diff in controller by folding null case into is_if
* firewall: tweak the interface selector
Show group name and description. Could be inconvenient when
the description is long, but better for the auto-groups.
That also removes the hint at the end. See note below.
Use fixed width logos for the interface groupings.
Remove muted from the any selection.
TODO/Remarks:
The groupings being shown as muted is a bit inconvenient also
[14 lines not shown]
[SelectionDAG] Use promoted types when creating nodes after type legalization (#178617)
When creating new nodes with illegal types after type legalization, we
should try to use promoted type to avoid creating nodes with illegal
types.
Fixes: https://github.com/llvm/llvm-project/issues/177155
(cherry picked from commit 38e280d8a405bb442d176b8dab18da63d3fc2810)
firewall: tweak the interface selector
Show group name and description. Could be inconvenient when
the description is long, but better for the auto-groups.
That also removes the hint at the end. See note below.
Use fixed width logos for the interface groupings.
Remove muted from the any selection.
TODO/Remarks:
The groupings being shown as muted is a bit inconvenient also
as it muddies the perspective of what this does and how important
it is. Would be nicer to not have it in this particular selector.
When an interface is selected it would be perfect if the grouping
icon would show so people see better what they selected. Coloring
is nice so that would take it to the next level.
[5 lines not shown]
[NFC][LLVM] Make `MachineInstrBuilder::constrainAllUses` return `void`
This function always returns `true`; so we can transform it to return
`void` and simplify the code.
Follow up of https://github.com/llvm/llvm-project/pull/179501 .
[libc] Tweak the runtimes cross-build for GPU (#178548)
Summary:
We should likely use `-DLLVM_DEFAULT_TARGET_TRIPLE` as the general
source of truth, make the handling work with that since we use it for
the output directories. Fix the creation of startup files in this mode
and make sure it can detect the GPU properly.
Fixes: https://github.com/llvm/llvm-project/issues/179375
(cherry picked from commit e07a1182fd58a5b48a2c78bc3ae03872186d4ae0)
[libc++] Simplify the implementation of __{un,re}wrap_range (#178381)
We can use a relatively simple `if constexpr` chain instead of SFINAE
and class template specialization, making the functions much simpler to
understand.
[AArch64][SME] Limit where SME ABI optimizations apply (#179273)
These were added recently with a fairly complex propagation step,
however, these optimizations can cause regressions in some cases.
This patch limits the cross-block optimizations to the simple case
picking a state that matches all incoming blocks. If any block doesn't
match, we fallback to using "ACTIVE", the default state.