[all-commits] [llvm/llvm-project] 1bdd78: [SelectionDAG] Fold extracts of subvector inserts

Krzysztof Drewniak via All-commits all-commits at lists.llvm.org
Fri Jun 5 11:19:05 PDT 2026


  Branch: refs/heads/users/krzysz00/extract-insert-dagcombine
  Home:   https://github.com/llvm/llvm-project
  Commit: 1bdd78ddcd1f2ecdd5305c618e9eab995a3fadd0
      https://github.com/llvm/llvm-project/commit/1bdd78ddcd1f2ecdd5305c618e9eab995a3fadd0
  Author: Krzysztof Drewniak <Krzysztof.Drewniak at amd.com>
  Date:   2026-06-05 (Fri, 05 Jun 2026)

  Changed paths:
    M llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
    A llvm/test/CodeGen/AMDGPU/dagcombine-freeze-extract-subvector-loop.ll
    M llvm/test/CodeGen/X86/vector-interleaved-store-i16-stride-3.ll
    M llvm/test/CodeGen/X86/vector-interleaved-store-i16-stride-6.ll
    M llvm/test/CodeGen/X86/vector-interleaved-store-i64-stride-6.ll
    M llvm/test/CodeGen/X86/vector-interleaved-store-i8-stride-6.ll

  Log Message:
  -----------
  [SelectionDAG] Fold extracts of subvector inserts

Fold extract_subvector(insert_subvector(...)) when the extraction is
outside the inserted subvector or the inserted subvector only amends
the extracted

In particular,
1. vA extract_subvector (vB insert_subvector(vB X, vC Y, C1), C2) =>
vA extract_subvector(X, C2) when [C2, C2 + A) intersect [C1, C1 + C)
is the empty set
2. ... => extract_subvector(Y, C2 - C1) if [C2, C2 + Y) is a subset of
[C1, C1 + C) - an existing simplification
3. ... => vA insert_subvector(vA extract_subvector(vB X, C2), vC Y, C1 - C2)
if [C1, C1 + C) is a subset of [C2, C2 + A) - that is, if you're only
updating the extracted sub-part.

Adds a regresssion tests for an infinite SelectionDAG cycle that is
fixed by a stack of commits that ends with this one.

AI note: an LLM generated the code and the test, I've read them

Co-Authored-By: OpenAI Codex <codex at openai.com>


  Commit: 2ba429cd6cd0494bbcf5bd30496a232305f3cd4c
      https://github.com/llvm/llvm-project/commit/2ba429cd6cd0494bbcf5bd30496a232305f3cd4c
  Author: Krzysztof Drewniak <Krzysztof.Drewniak at amd.com>
  Date:   2026-06-05 (Fri, 05 Jun 2026)

  Changed paths:
    M llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
    M llvm/test/CodeGen/AMDGPU/dagcombine-freeze-extract-subvector-loop.ll

  Log Message:
  -----------
  Style, named test vars


  Commit: 9ee8114f16851ca19c2d4d12dda59ff5dfda820d
      https://github.com/llvm/llvm-project/commit/9ee8114f16851ca19c2d4d12dda59ff5dfda820d
  Author: Krzysztof Drewniak <Krzysztof.Drewniak at amd.com>
  Date:   2026-06-05 (Fri, 05 Jun 2026)

  Changed paths:
    R llvm/test/CodeGen/AMDGPU/dagcombine-freeze-extract-subvector-loop.ll

  Log Message:
  -----------
  Remove regression test that's been put elsewhere


  Commit: f607c7aa11fcca1861abbb30e2f95f96d1eb438b
      https://github.com/llvm/llvm-project/commit/f607c7aa11fcca1861abbb30e2f95f96d1eb438b
  Author: Krzysztof Drewniak <Krzysztof.Drewniak at amd.com>
  Date:   2026-06-05 (Fri, 05 Jun 2026)

  Changed paths:
    M llvm/test/CodeGen/X86/vector-interleaved-store-i16-stride-6.ll
    M llvm/test/CodeGen/X86/vector-interleaved-store-i8-stride-6.ll
    M llvm/test/CodeGen/X86/vector-replicaton-i1-mask.ll

  Log Message:
  -----------
  Tests changes after de-stack


Compare: https://github.com/llvm/llvm-project/compare/2c75c43dfe17...f607c7aa11fc

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