# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 -O0 -run-pass=legalizer %s -o - | FileCheck %s --check-prefix=GFX10

--- |

  define void @value_finder_bug() { ret void }
  define void @value_finder_bug_before_artifact_combine() { ret void }

  !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "llvm", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
  !1 = !DIFile(filename: "bug-legalization-artifact-combiner-dead-def", directory: "/tmp")
  !2 = !{}
  !3 = !{i32 2, !"Dwarf Version", i32 4}
  !4 = !{i32 2, !"Debug Info Version", i32 3}
  !5 = distinct !DISubprogram(name: "value_finder_bug_before_artifact_combine_dbg_use", scope: !1, file: !1, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
  !6 = !DISubroutineType(types: !2)
  !7 = !DILocalVariable(name: "in", arg: 1, scope: !5, file: !1, line: 1, type: !8)
  !8 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
  !9 = !DILocation(line: 1, column: 1, scope: !5)
...

---
name: value_finder_bug
body: |
  bb.0:
    liveins: $vgpr0, $vgpr1, $vgpr2

    ; GFX10-LABEL: name: value_finder_bug
    ; GFX10: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0
    ; GFX10: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
    ; GFX10: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
    ; GFX10: [[MV:%[0-9]+]]:_(p4) = G_MERGE_VALUES [[COPY1]](s32), [[COPY2]](s32)
    ; GFX10: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[MV]](p4) :: (load (<4 x s32>), align 4, addrspace 4)
    ; GFX10: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD]](<4 x s32>), 96
    ; GFX10: [[EXTRACT1:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD]](<4 x s32>), 64
    ; GFX10: G_STORE [[EXTRACT1]](s32), [[COPY]](p5) :: (store (s32), align 8, addrspace 5)
    ; GFX10: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
    ; GFX10: [[PTR_ADD:%[0-9]+]]:_(p5) = G_PTR_ADD [[COPY]], [[C]](s32)
    ; GFX10: G_STORE [[EXTRACT]](s32), [[PTR_ADD]](p5) :: (store (s32) into unknown-address + 4, addrspace 5)
    %0:_(p5) = COPY $vgpr0
    %1:_(s32) = COPY $vgpr1
    %2:_(s32) = COPY $vgpr2
    %3:_(p4) = G_MERGE_VALUES %1(s32), %2(s32)
    %4:_(<4 x s32>) = G_IMPLICIT_DEF
    %5:_(<4 x s32>) = G_LOAD %3(p4) :: (load (<4 x s32>), align 4, addrspace 4)
    %6:_(s32) = G_CONSTANT i32 3
    %7:_(s32) = G_EXTRACT_VECTOR_ELT %5(<4 x s32>), %6(s32)
    %8:_(<2 x s32>) = G_SHUFFLE_VECTOR %5(<4 x s32>), %4, shufflemask(2, undef)
    %9:_(s32) = G_CONSTANT i32 1
    %10:_(<2 x s32>) = G_INSERT_VECTOR_ELT %8, %7(s32), %9(s32)
    G_STORE %10(<2 x s32>), %0(p5) :: (store (<2 x s32>), addrspace 5)
...

---
name: value_finder_bug_before_artifact_combine
body: |
  bb.0:
    liveins: $vgpr0, $vgpr1, $vgpr2

    ; GFX10-LABEL: name: value_finder_bug_before_artifact_combine
    ; GFX10: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0
    ; GFX10: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
    ; GFX10: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
    ; GFX10: [[MV:%[0-9]+]]:_(p4) = G_MERGE_VALUES [[COPY1]](s32), [[COPY2]](s32)
    ; GFX10: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[MV]](p4) :: (load (<4 x s32>), align 4, addrspace 4)
    ; GFX10: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD]](<4 x s32>), 96
    ; GFX10: [[EXTRACT1:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD]](<4 x s32>), 64
    ; GFX10: G_STORE [[EXTRACT1]](s32), [[COPY]](p5) :: (store (s32), align 8, addrspace 5)
    ; GFX10: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
    ; GFX10: [[PTR_ADD:%[0-9]+]]:_(p5) = G_PTR_ADD [[COPY]], [[C]](s32)
    ; GFX10: G_STORE [[EXTRACT]](s32), [[PTR_ADD]](p5) :: (store (s32) into unknown-address + 4, addrspace 5)
    %0:_(p5) = COPY $vgpr0
    %1:_(s32) = COPY $vgpr1
    %2:_(s32) = COPY $vgpr2
    %3:_(p4) = G_MERGE_VALUES %1(s32), %2(s32)
    %4:_(<4 x s32>) = G_LOAD %3(p4) :: (load (<4 x s32>), align 4, addrspace 4)
    %5:_(s32) = G_EXTRACT %4(<4 x s32>), 96
    %6:_(s32) = G_EXTRACT %4(<4 x s32>), 64
    %7:_(s32) = G_IMPLICIT_DEF
    %8:_(<2 x s32>) = G_BUILD_VECTOR %6(s32), %7(s32)
    %9:_(<2 x s32>) = G_INSERT %8, %5(s32), 32
    %deaf_def:_(s32), %11:_(s32) = G_UNMERGE_VALUES %9(<2 x s32>)
    G_STORE %6(s32), %0(p5) :: (store (s32), align 8, addrspace 5)
    %12:_(s32) = G_CONSTANT i32 4
    %13:_(p5) = G_PTR_ADD %0, %12(s32)
    G_STORE %11(s32), %13(p5) :: (store (s32) into unknown-address + 4, addrspace 5)

...
