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

    <tr>
        <th>Summary</th>
        <td>
            Crash in TwoAddressInstruction: assertion isReg() && "Wrong MachineOperand accessor"
        </td>
    </tr>

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

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

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

<pre>
    The crash happens when rewriting the VMOVUPDZ256rmk instruction (the code seems to assume the stack argument is a register). The following test reproduces it for me. 

```
# RUN: llc -x mir < %s -mcpu=skylake-avx512 -O1 -run-pass=livevars,twoaddressinstruction | FileCheck %s

---
name: main
tracksRegLiveness: true
stack:
  - { id: 0, offset: 0, size: 768 }
body:             |
  bb.0:
    successors: %bb.1(0x7c000000)
    liveins: $rcx, $ymm0
    %0:gr64_nosp = COPY $rcx
    %1:vr256x = COPY $ymm0

  bb.1:
    successors: %bb.1(0x7c000000)
    %2:vk16wm = COPY $rsp
    %3:vr256x = VMOVUPDZ256rmk %1, killed %2, %stack.0, 8, %0, 0, $noreg
    RET %3

...

# CHECK: main
```

Stack trace:

```
assertion failed at [(...)/include/llvm/CodeGen/MachineOperand.h:385] in bool llvm::MachineOperand::isDead() const: isReg() && 
 "Wrong MachineOperand accessor"
    @     0x5628a05a8d24  __assert_fail
    @     0x56289e805762  llvm::X86InstrInfo::convertToThreeAddress()
    @     0x56289f2420d9  (anonymous namespace)::TwoAddressInstructionPass::tryInstructionTransform()
    @     0x56289f23ea9e  (anonymous namespace)::TwoAddressInstructionPass::runOnMachineFunction()
    @     0x56289ed2c1fd  llvm::MachineFunctionPass::runOnFunction()
(snip)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJylVUtz2zgM_jXyhSONRFmvgw6p3exmdrvJZN3u45KhJMhiLZEakrKd_voFKae2s-nkUI_GIgkQ-AB8gCrZPJebDkitmO5Ix8YRhCaHDgRRcFDccLElBhW-fLr_8vlh_S9NUjXsCBfaqKk2XAri0dxq1LIBogEGTYwkTOtpAHdVG1bvCFNbPBCGcE0YGt9ybUB5tAiIBdDKvpcH5w20QfmoZDPVoAk3KFRkgIB44doLb07_aXh65i2NyePnP7z4hvR9TfwjGbgiXrxCeIkm_lCPkxev9e65Zzvw2f6YRJT49xHx1ST8EfGiuOd72DOlPboyB8maRoHWV7FmK3LLe1h1gDFZ05eYfN-fF4INYKEMjIv5xChMgn6E7e_oQoD1dkPQLMxilyM8mneE-OjpA-GN1QoRDZFtq8F832r-zTnI0hw11_O1CqtpDy9_CPjFZlUF4YULQvRUY4K1VA4MBoMaEVYzPGZ16H5YnrO6TQ7mYtZdqvpogeDqeRjCsxaasV62Kl0-CalHrMGarO4f_nm5dKkZoeZeIaeOV2pnixfYo5_BjgrU-tpF6WG4hqTHK7X4GtIr3jvMGPaO9z00s1k6c8xWMHDFyU9HbhOesiQkcv7s6fHjZvZ2EWYQBFcMR0qvfv24-u2aSa-J7_7_dD1mSQbf0_SmOvIclKNyy7gNgRniJR8wc9Y7pozeclH3UwO46vv9gK8VdvYvIHD1idUdF3A_gmKiCTr0FeeJl6xxIJBKyp64K4ggvrnWnc-4XgNr0Bl6woGBjWVj47YvToceTfE5dTru6F9K4lC4NkbYqfgovyjeMnSUD49JSnMWJixv6JKQp6c56Ccb8Y_UC8jDJEspuYjg7zy9s71_J1o5nyDkPVrayE2nAG7m-TAj_6Hhli5p2BSWXDkTUjwPctLETgg92nLhVWd7c5Ang3fngfPg5pIVG_V8cb7BNGgci8O7zmNgBfyscxyR9-JUg9tJOOk7nqGhddQ25P-MeDHwyvxbdnGtBR_P-xcyL6CM0jQP8ywpokVTxk0RF2xhuOmhXLmPGTLyzags485d8Bb33ifdYlJ92RkzugDoLT5bbrqpCmo5nBvHvnz8kH2F2tjGwm8iIF1uk7yIlouuLJbLKotqyJZRHUJWFQkkWdvUMUuLLIzTRc8q6HXpGpQKOBBnwrI-WS94SUNKoygKozgukihosriN8rxpU0aTusqxIoBzow8sjkCq7UKVDlI1bTUKe_wE67MQk8K3AsC5Q_tsMp1U5VcFvG1B6YVzXjrw_wETjGMz">