[all-commits] [llvm/llvm-project] 0e97b4: [GlobalISel] Combine G_MERGE_VALUES of x and undef...

Thorsten Schütt via All-commits all-commits at lists.llvm.org
Tue Nov 12 14:23:54 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 0e97b4d05a0b09513a4c130ec85a36c808d0074b
      https://github.com/llvm/llvm-project/commit/0e97b4d05a0b09513a4c130ec85a36c808d0074b
  Author: Thorsten Schütt <schuett at gmail.com>
  Date:   2024-11-12 (Tue, 12 Nov 2024)

  Changed paths:
    M llvm/include/llvm/CodeGen/GlobalISel/CombinerHelper.h
    M llvm/include/llvm/Target/GlobalISel/Combine.td
    M llvm/lib/CodeGen/GlobalISel/CMakeLists.txt
    A llvm/lib/CodeGen/GlobalISel/CombinerHelperArtifacts.cpp
    M llvm/test/CodeGen/AArch64/GlobalISel/combine-unmerge.mir
    M llvm/test/CodeGen/AArch64/bswap.ll

  Log Message:
  -----------
  [GlobalISel] Combine G_MERGE_VALUES of x and undef (#113616)

into anyext x

; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[TRUNC]](s32),
[[DEF]](s32)

Please continue padding merge values.

//   %bits_8_15:_(s8) = G_IMPLICIT_DEF
//   %0:_(s16) = G_MERGE_VALUES %bits_0_7:(s8), %bits_8_15:(s8)

%bits_8_15 is defined by undef. Its value is undefined and we can pick
an arbitrary value. For optimization, we pick anyext, which plays well
with the undefinedness.

//   %0:_(s16) = G_ANYEXT %bits_0_7:(s8)

The upper bits of %0 are undefined and the lower bits come from
%bits_0_7.



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