<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/139791>139791</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [AMDGPU][GlobalISel] G_UNMERGE_VALUES combining crash
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          mshelego
      </td>
    </tr>
</table>

<pre>
    Assertion failure is observed in LegalizationArtifactCombiner::tryCombineUnmergeValues() when trying to combine two G_UNMERGE_VALUES instructions with a COPY between them.

Input:
```
---
name: test
body: |
  bb.0:
    %0:_(s32) = COPY $vgpr0
    %1:_(s16), %2:_(s16) = G_UNMERGE_VALUES %0:_(s32)
    %3:_(s16) = COPY %1:_(s16)
    %4:_(s8), %5:_(s8) = G_UNMERGE_VALUES %3:_(s16)
 %6:_(s32) = G_ZEXT %4:_(s8)
    $vgpr0 = COPY %6:_(s32)
...
```
Command:
```
llc -mtriple=amdgcn -run-pass=legalizer input.mir
```
Output:
```
llc: /src/llvm-project/llvm/include/llvm/ADT/ArrayRef.h:454: T& llvm::MutableArrayRef<T>::operator[](size_t) const [with T = llvm::MachineOperand; size_t =    long unsigned int]: Assertion `Index < this->size() && "Invalid index!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.  Program arguments: ./bin/llc -mtriple=amdgcn -run-pass=legalizer test.mir
1.  Running pass 'Function Pass Manager' on module 'test.mir'.
2.  Running pass 'Legalizer' on function '@test'
 #0 0x00007e7610cf3e46 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /src/llvm-project/llvm/lib/Support/Unix/Signals.inc:804:22
 #1 0x00007e7610cf42cf PrintStackTraceSignalHandler(void*) /src/llvm-project/llvm/lib/Support/Unix/Signals.inc:888:1
 #2 0x00007e7610cf160b llvm::sys::RunSignalHandlers() /src/llvm-project/llvm/lib/Support/Signals.cpp:105:20
 #3 0x00007e7610cf36c8 SignalHandler(int, siginfo_t*, void*) /src/llvm-project/llvm/lib/Support/Unix/Signals.inc:418:13
 #4 0x00007e760f045330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
 #5 0x00007e760f09eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #6 0x00007e760f09eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #7 0x00007e760f09eb2c pthread_kill ./nptl/pthread_kill.c:89:10
 #8 0x00007e760f04527e raise ./signal/../sysdeps/posix/raise.c:27:6
 #9 0x00007e760f0288ff abort ./stdlib/abort.c:81:7
#10 0x00007e760f02881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#11 0x00007e760f03b517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
#12 0x00007e76112f41fa llvm::MutableArrayRef<llvm::MachineOperand>::operator[](unsigned long) const /src/llvm-project/llvm/include/llvm/ADT/ArrayRef.h:455:18
#13 0x00007e76112f1d1a llvm::MachineInstr::getOperand(unsigned int) /src/llvm-project/llvm/include/llvm/CodeGen/MachineInstr.h:595:71
#14 0x00007e761191f7ce llvm::MachineInstrBuilder::getReg(unsigned int) const /src/llvm-project/llvm/include/llvm/CodeGen/MachineInstrBuilder.h:96:74
#15 0x00007e76124f6be0 llvm::LegalizationArtifactCombiner::tryCombineUnmergeValues(llvm::GUnmerge&, llvm::SmallVectorImpl<llvm::MachineInstr*>&, llvm:: SmallVectorImpl<llvm::Register>&, llvm::GISelChangeObserver&) /src/llvm-project/llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:1122:30
#16 0x00007e76124f7c7c llvm::LegalizationArtifactCombiner::tryCombineInstruction(llvm::MachineInstr&, llvm::SmallVectorImpl<llvm::MachineInstr*>&, llvm:: GISelObserverWrapper&) /src/llvm-project/llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:1352:40
#17 0x00007e76124ef433 llvm::Legalizer::legalizeMachineFunction(llvm::MachineFunction&, llvm::LegalizerInfo const&, llvm::ArrayRef<llvm::GISelChangeObserver*>, llvm::       LostDebugLocObserver&, llvm::MachineIRBuilder&, llvm::GISelValueTracking*) /src/llvm-project/llvm/lib/CodeGen/GlobalISel/Legalizer.cpp:286:7
#18 0x00007e76124efab2 llvm::Legalizer::runOnMachineFunction(llvm::MachineFunction&) /src/llvm-project/llvm/lib/CodeGen/GlobalISel/Legalizer.cpp:347:44
#19 0x00007e761178ca69 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /src/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:108:30
#20 0x00007e76110917ae llvm::FPPassManager::runOnFunction(llvm::Function&) /src/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1406:20
#21 0x00007e7611091a84 llvm::FPPassManager::runOnModule(llvm::Module&) /src/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1452:13
#22 0x00007e7611091ee5 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /src/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1521:20
#23 0x00007e761108ce39 llvm::legacy::PassManagerImpl::run(llvm::Module&) /src/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:539:13
#24 0x00007e76110927db llvm::legacy::PassManager::run(llvm::Module&) /src/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1649:1
#25 0x0000564a95465998 compileModule(char**, llvm::LLVMContext&) /src/llvm-project/llvm/tools/llc/llc.cpp:755:34
#26 0x0000564a95462f65 main /src/llvm-project/llvm/tools/llc/llc.cpp:400:35
#27 0x00007e760f02a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#28 0x00007e760f02a28b call_init ./csu/../csu/libc-start.c:128:20
#29 0x00007e760f02a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#30 0x0000564a95461a25 _start (./bin/llc+0x14a25)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzEWVtv4ywa_jX0BjUCfL7IhZs23UrtTtV2Zg83EcbEYQfjCHAP369fge3EcTLdzky_b0ejqsbw8PC8B97XpcaISnE-B9EFiC7PaGs3jZ7XZsMlr5qzoinf5rkxXFvRKLimQraaQ2FgUxiun3kJhYK3vKJS_EHdnFxbsabMLpq6EIprEOQgyK1-6we-qprrin-jsuUGkBSQDL5suIJWvwlVQdtA1s2E9qWB16uvf7-7eri-Wn3Lb79ePUKhjNUtc1sZ-CLsBlK4-HL_L1hw-8IdzobXM4BygPIbtW2tI4ByEKP-P8rPz88ByhWtOQhyaLmxAOXupO4RJAuAcgiLYoa6pRBCCEjknlaApCYgjjMILrt9AQmfq61G-5l4mIljQDJAFm6QHAz65UdnO9pljxkcL-93n263WxIO4-meRTQe-yGJ4AgRkCg-Pv_16t9X_3w63mug0AlzQDaenm82m03Ms2jqmqry2G5SMnheWy22koPgktZlxRQ8160631JjQHApO0fkGgpn-lkt9ATjS2tP-oSUzFufLI1mgCylfK7Pt7r5D2e2fwRkKRSTbcn3A_nlk_upNX174OvZBgR56MWAT4DE0M_yAXDXWlpIPswEweIJBFfdu2bLNbWN7mLQiSP-4CvrVGaNMhaC6MJ7-pOXcgRK2UYo_sWtd4JdwG6lnwYhlI2qYKt8iLtAtQ4-yOE-oEGMblTJXyEIFtBuhDkHwZUD6SMTkNidAxByo56pFA6l5K-AYEAIIInPCLx0Jry_vcofr6Bpi1pYSGHRVlDzbaOti-mNtVvjWJMlIMtK2E1bzFhT76WcKC6M8QliCalyu3rhXXBDpqnZwIKy71ZTxt3ej5ay77Bs621nWTSD8F43laY1pLpqa66s2x3OAFkWQvntPu5MLkX0voRnED60SrlU5eZBQJJlq3w-gvdu4I4qWnHtxGkUrJuyldzN2oGQxFEmJ4Buhx37xesBGJAEhMhnKpJ08RggiF4RQijhSYwRWwc8HDuceTPdL_daKOsFenJyAZLuJ2n6smqM1ZzW3tIL7yTe7u_GgRQFIMvHduvMC8jyqxKvbkBUikozE8oFU4pcIBDS88UTviFhazgh1wH8japSOhHS50aUgOSfxihNQZDjnhCZEMIxKk4J-NCqA15mFxs_xWigwrbOSTFyqZignkswNWbMUjhVw9tmAY2ohFo3LkHk7vmTRQqxFynomYUjZmiNwigIEPQK9HCvabyKw3MpVPt6Xqm2e8FmppnFgFygV79kd48E0SFgxgvC4Gq1tRvNabn6LqRciXoruQtaX1L4qFVbKwFZjqfNPF3nZEncg8cfAVeWa0Xlu7CJF2EwT3IKdrzmXaw0G2OlU0FJwqGmwnAPYrwxAFnO_NObKfnWpcFtY7yx_EwPSxIQ5MPBs0NUkqbrNaSFy74ex5adtfxQx8rVDS6ZuNhER8txAVdKrmRDy1XZ1FR0ZhDKn9EN16ZitMPCOHFksh4NH6IFRYSTn_MZv6TzGQd4EKqYrEO8pu9erj--I3905-6uSXdpjq7ezygIXKjjtD9LMDkLLjE9vtNvXJnbjVTcDuxHND-WqI_4LZqSX3N3AY438jyjzPFMcM8zPOCZ4XXC-A94XrRClnxP94FXJ6j-mqCnCfc7et6ZqymTsKc9Ti-YhOu44GhE-3dalT3Kdf-qvzT3Lx5rKuU3zmyjb-qtPOWJnWVJ7lxxuhy-t_6BV8JYR_N44fXNI5eLDVUV_9I1ZtrP-R0HuZZNQaUDBmT5nm7eChgT1-IEqLdDPLFDwhL2i3a42bd8B1Y4FPSTLeEVHbT8h6bb7V8vaeC7xnCQNDmUlK_DIDiWdNBvKF_7ww5F6ikF9-8mKuwgb9S66QL4aM7JrHvSHzuhD1Tu_t02xl7yoq1uG3bgvosTCedhyDYnY8AHq6slvwuXxj9eFb1vJK77uo2k8ejaTKcWoQX5sUV0q76onzXH59IPwqSrmTr-2UGOT1JG4-xY8oHPve-Ldic5eYTf435iw129nI6yCzlofjDKcELHl9Py3i0dOrE_gfLNQy8uexvtNHANUTwU944snpKlafgBsne-dTx0kH7o04j6BONrfUeUTIlyHrm6japGvdVNa6CiNTdb30ZmPaX_H_uI4LHMh4UVShkPxs4sPUzfE-_Busuhp_1n0o2CbKx1ONGaJGXxv9n-JUxxHGZ9n-yYDhVVFIc0i8I4yrIUsqbeCsl3VmYb6jN815KOUuDtt7tFoyx_tR_jZ5tGmu77TPezJ5X4KjroMxeJJ6TIOo6g71J-ET9EyOFHPf6k4yMUMwpXK9elrIyl2q4YlXK164uYaY97tr4hPLXIX_CJ610Hh0inO5K0gH6-UMJON-l-dcjnHrlrw0g6DohpT-gRD85wiv5J5O7e6MXZfXoaxMeURLCDdOni4CObb-dwSEnUt3PDR9ezch6UWZDRMz7HSZjgOM2C6GwzR0mKWII55ihIMhYwRmjCyizJCkQwic7EnCASoQgHBIUER7N1VmRZwtYlKrOIIwJCxGsq5MzZfNbo6sx_TZzjIEsyfCZpwaXxf_IgRPEX6N8CQkB0eabn3m-KtjIgRFIYa_YwVljp_1aS311e3391nWN0MbpwoxPf07u_ZghVdR8uz1ot57_-NbQ_wvOc_DcAAP__m6rMBQ">