[all-commits] [llvm/llvm-project] 2ce48b: [ConstantFolding] Fix bitcasting vectors with non-...
Kacper Doga via All-commits
all-commits at lists.llvm.org
Tue Apr 7 06:49:02 PDT 2026
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 2ce48b2691a49e91dc8ecd6dfb7eeb533f77a5c1
https://github.com/llvm/llvm-project/commit/2ce48b2691a49e91dc8ecd6dfb7eeb533f77a5c1
Author: Kacper Doga <doga.kacper at gmail.com>
Date: 2026-04-07 (Tue, 07 Apr 2026)
Changed paths:
M llvm/lib/Analysis/ConstantFolding.cpp
M llvm/test/Transforms/InstCombine/X86/x86-sse4a-inseltpoison.ll
M llvm/test/Transforms/InstCombine/X86/x86-sse4a.ll
M llvm/test/Transforms/InstCombine/cast.ll
M llvm/test/Transforms/InstSimplify/bitcast-vector-fold.ll
M llvm/test/Transforms/SCCP/bitcast-vector-refinement.l.ll
Log Message:
-----------
[ConstantFolding] Fix bitcasting vectors with non-integer ratios (#179640)
For both downcast and upcast this patch introduces support for
bitcasting vectors with non-integer ratios [1, 2]. Also this patch
increases the coherence between casts [3].
1. Fixes a crash on downcast where the ratio is not an integer (e.g., <3
x i32> to <4 x i24>). Previously this led to leading to an incorrect
number of result elements and subsequent crashes in RAUW.
Fixes #179626
2. Fixes a miscompilation on upcast where ratio is not an integer (e.g.,
<4 x i24> to <3 x i32>). Previously this led to wrong result.
Fixes #181195
3. Fix incoherent value emitting between down/up cast
a. When upcasting, emit Poison and Undef not only if the source vector
consists of only one of these values. (e.g., `bitcast <4 x i32> <i32
undef, i32 undef, i32 1, i32 undef> to <2 x i64>` returns `<2 x i64>
<i64 undef, i64 1>`
b. When downcasting, when SrcElt is Poison, handle it as Poison and not
Undef. (e.g., `bitcast <1 x i32> <i32 poison> to <2 x i16>` returns `<2
x i16> poison`
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list