[SLP]Keep splat subtree load roots in memory order
The roots have no users and the gathers reuse their lanes by value, but
the group or reordering-pass order added a reorder shuffle and non-free
extracts, so the profitable vector load was dropped.
Fixes the perf regression from #221717.
Reviewers:
Pull Request: https://github.com/llvm/llvm-project/pull/225527
[NFC][compiler-rt][hwasan] Avoid variable length array warning in test (#225497)
Replace the non-constant array size expression for the static buffer
with a fixed size.
Assisted-by: Gemini
[AMDGPU] Fall back for FP8-to-half conversions without native support
The custom v2i8 source action also handles half results on gfx950, which
has native OCP FP8-to-f32 conversions but lacks FP8-to-f16 instructions.
Converting FP8 vectors to half therefore reached lowerFromFP8 and asserted
that FP8F16ConversionInsts was available.
Use generic legalization for half results when the subtarget lacks the
required instructions. Preserve native f32 conversions and native f16
conversions on targets that support them.
Add gfx950 regression coverage for both OCP encodings, including vectors
that widen or split into pairs, and check that native f32 instructions
remain selected.
[MachineOutliner] Preserve debug locations on outlined call sequences (#224189)
Machine Outliner replacement call sequences currently have no DebugLoc.
When one immediately follows another call, its address can be emitted
with DWARF line 0, meaning “unknown source location,” so symbolication
finds the function but not the source line.
Copy the first usable source location from each candidate to its
replacement call sequence, including any target-inserted save and
restore instructions. If none exists, leave the sequence locationless.
This matches the IR Outliner’s policy: preserve each replacement call’s
location while leaving the shared outlined body locationless because it
represents multiple source regions.
libdvdread: add pkg-config to USE_TOOLS
Library failed to link when dvdcss option was set. Fix is to
add pkg-config to USE_TOOLS, as suggested by Taylor Campbell.
[CIR] Fixup 'zero' branch of Null Initialization (#225490)
The zero branch has a test for an NYI based on whether the thing is a
VLA or not. However, classic codegen uses 'dyn_cast_or_null', and we
used 'isa', so a nullptr caused an assert. This patch fixes it.
[SelectionDAG] Fix FP8 conversions to half for subnormals and overflow (#224984)
This PR contains 2 fixes:
* Preserve subnormal values when the source format and destination have
the same exponent bias. Normalizing these inputs previously produced a
nonpositive destination exponent and an invalid floating-point encoding.
* Convert finite values beyond the destination exponent range to
infinity, while preserving the existing NaN handling. This fixes
Float8E5M3FNU to half conversions that previously produced NaNs on
overflow.
Assisted by: Codex (Astra)
[CIR] Fix a problem with cleanup active flag initialization (#225507)
While working on another problem related to conditional cleanups, I came
across a problem with the way CIR was initializing the cleanup active
flag. We were often clearing the flag below the body of a conditional
cleanup region that the flag was meant to guard. As a result, we would
sometimes skip a conditional cleanup becuase the body of the cleanup
region set the active flag to true, but then we cleared the flag
unconditionally before control flow reached the cleanup.
This change fixes that problem and aligns the active flag initialization
placement with classic codegen.
Assisted-by: Cursor / various models