[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