1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 -O0 -run-pass=legalizer %s -o - | FileCheck %s --check-prefix=GFX10 3 4--- | 5 6 define void @value_finder_bug() { ret void } 7 define void @value_finder_bug_before_artifact_combine() { ret void } 8 9 !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "llvm", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2) 10 !1 = !DIFile(filename: "bug-legalization-artifact-combiner-dead-def", directory: "/tmp") 11 !2 = !{} 12 !3 = !{i32 2, !"Dwarf Version", i32 4} 13 !4 = !{i32 2, !"Debug Info Version", i32 3} 14 !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) 15 !6 = !DISubroutineType(types: !2) 16 !7 = !DILocalVariable(name: "in", arg: 1, scope: !5, file: !1, line: 1, type: !8) 17 !8 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 18 !9 = !DILocation(line: 1, column: 1, scope: !5) 19... 20 21--- 22name: value_finder_bug 23body: | 24 bb.0: 25 liveins: $vgpr0, $vgpr1, $vgpr2 26 27 ; GFX10-LABEL: name: value_finder_bug 28 ; GFX10: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0 29 ; GFX10: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 30 ; GFX10: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 31 ; GFX10: [[MV:%[0-9]+]]:_(p4) = G_MERGE_VALUES [[COPY1]](s32), [[COPY2]](s32) 32 ; GFX10: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[MV]](p4) :: (load (<4 x s32>), align 4, addrspace 4) 33 ; GFX10: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD]](<4 x s32>), 96 34 ; GFX10: [[EXTRACT1:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD]](<4 x s32>), 64 35 ; GFX10: G_STORE [[EXTRACT1]](s32), [[COPY]](p5) :: (store (s32), align 8, addrspace 5) 36 ; GFX10: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 4 37 ; GFX10: [[PTR_ADD:%[0-9]+]]:_(p5) = G_PTR_ADD [[COPY]], [[C]](s32) 38 ; GFX10: G_STORE [[EXTRACT]](s32), [[PTR_ADD]](p5) :: (store (s32) into unknown-address + 4, addrspace 5) 39 %0:_(p5) = COPY $vgpr0 40 %1:_(s32) = COPY $vgpr1 41 %2:_(s32) = COPY $vgpr2 42 %3:_(p4) = G_MERGE_VALUES %1(s32), %2(s32) 43 %4:_(<4 x s32>) = G_IMPLICIT_DEF 44 %5:_(<4 x s32>) = G_LOAD %3(p4) :: (load (<4 x s32>), align 4, addrspace 4) 45 %6:_(s32) = G_CONSTANT i32 3 46 %7:_(s32) = G_EXTRACT_VECTOR_ELT %5(<4 x s32>), %6(s32) 47 %8:_(<2 x s32>) = G_SHUFFLE_VECTOR %5(<4 x s32>), %4, shufflemask(2, undef) 48 %9:_(s32) = G_CONSTANT i32 1 49 %10:_(<2 x s32>) = G_INSERT_VECTOR_ELT %8, %7(s32), %9(s32) 50 G_STORE %10(<2 x s32>), %0(p5) :: (store (<2 x s32>), addrspace 5) 51... 52 53--- 54name: value_finder_bug_before_artifact_combine 55body: | 56 bb.0: 57 liveins: $vgpr0, $vgpr1, $vgpr2 58 59 ; GFX10-LABEL: name: value_finder_bug_before_artifact_combine 60 ; GFX10: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0 61 ; GFX10: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 62 ; GFX10: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 63 ; GFX10: [[MV:%[0-9]+]]:_(p4) = G_MERGE_VALUES [[COPY1]](s32), [[COPY2]](s32) 64 ; GFX10: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[MV]](p4) :: (load (<4 x s32>), align 4, addrspace 4) 65 ; GFX10: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD]](<4 x s32>), 96 66 ; GFX10: [[EXTRACT1:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD]](<4 x s32>), 64 67 ; GFX10: G_STORE [[EXTRACT1]](s32), [[COPY]](p5) :: (store (s32), align 8, addrspace 5) 68 ; GFX10: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 4 69 ; GFX10: [[PTR_ADD:%[0-9]+]]:_(p5) = G_PTR_ADD [[COPY]], [[C]](s32) 70 ; GFX10: G_STORE [[EXTRACT]](s32), [[PTR_ADD]](p5) :: (store (s32) into unknown-address + 4, addrspace 5) 71 %0:_(p5) = COPY $vgpr0 72 %1:_(s32) = COPY $vgpr1 73 %2:_(s32) = COPY $vgpr2 74 %3:_(p4) = G_MERGE_VALUES %1(s32), %2(s32) 75 %4:_(<4 x s32>) = G_LOAD %3(p4) :: (load (<4 x s32>), align 4, addrspace 4) 76 %5:_(s32) = G_EXTRACT %4(<4 x s32>), 96 77 %6:_(s32) = G_EXTRACT %4(<4 x s32>), 64 78 %7:_(s32) = G_IMPLICIT_DEF 79 %8:_(<2 x s32>) = G_BUILD_VECTOR %6(s32), %7(s32) 80 %9:_(<2 x s32>) = G_INSERT %8, %5(s32), 32 81 %deaf_def:_(s32), %11:_(s32) = G_UNMERGE_VALUES %9(<2 x s32>) 82 G_STORE %6(s32), %0(p5) :: (store (s32), align 8, addrspace 5) 83 %12:_(s32) = G_CONSTANT i32 4 84 %13:_(p5) = G_PTR_ADD %0, %12(s32) 85 G_STORE %11(s32), %13(p5) :: (store (s32) into unknown-address + 4, addrspace 5) 86 87... 88