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

    <tr>
        <th>Summary</th>
        <td>
            [TwoAddressInstruction] Assert at inlineasm on x86_64
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:X86
      </td>
    </tr>

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

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

<pre>
    For following IR
```llvm
; ModuleID = 'bugpoint-reduced-simplified.bc'
source_filename = "crc32c_sse42_asm-080866.c"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

define dso_local void @aws_checksums_crc32c_hw() local_unnamed_addr #0 align 32 {
entry:
  br i1 poison, label %while.body, label %cleanup

while.body:                                       ; preds = %while.body, %entry
  %crc.0158 = phi i32 [ %0, %while.body ], [ poison, %entry ]
  %0 = tail call i32 asm "loop_small_${:uid}: CRC32B ($2), $1", "={cx},{cx},r,0,~{dirflag},~{fpsr},~{flags}"(i32 %crc.0158, ptr poison, i32 %crc.0158) #1
  br label %while.body

cleanup:                                          ; preds = %entry
  ret void
}

attributes #0 = { "tune-cpu"="generic" }
attributes #1 = { nounwind readnone }

!llvm.ident = !{!0}

!0 = !{!"clang version 16.0.0 (git@github.com:llvm/llvm-project.git 844f6c5d03d58e7ac0c6b838e4a7834ac575ab9b)"}
```
`llc` fails with
```
        .text
        .file   "crc32c_sse42_asm-080866.c"
llc: /build/llvm-dev/llvm-project/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp:1493: void (anonymous namespace)::TwoAddressInstructionPass::processTiedPairs(llvm::MachineInstr *, (anonymous namespace)::TwoAddressInstructionPass::TiedPairList &, unsigned int &): Assertion `i == DstIdx || !MI->getOperand(i).isReg() || MI->getOperand(i).getReg() != RegA' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /build/llvm-dev/build/default/bin/llc --verify-machineinstrs --simplify-mir
1.      Running pass 'Function Pass Manager' on module '<stdin>'.
2.      Running pass 'Two-Address instruction pass' on function '@aws_checksums_crc32c_hw'
 #0 0x0000562ff1635513 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/build/llvm-dev/build/default/bin/llc+0x5b35513)
 #1 0x0000562ff16333be llvm::sys::RunSignalHandlers() (/build/llvm-dev/build/default/bin/llc+0x5b333be)
 #2 0x0000562ff16358af SignalHandler(int) Signals.cpp:0:0
 #3 0x00007f962b6bc140 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x13140)
 #4 0x00007f962b183ce1 raise (/lib/x86_64-linux-gnu/libc.so.6+0x38ce1)
 #5 0x00007f962b16d537 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22537)
 #6 0x00007f962b16d40f (/lib/x86_64-linux-gnu/libc.so.6+0x2240f)
 #7 0x00007f962b17c662 (/lib/x86_64-linux-gnu/libc.so.6+0x31662)
 #8 0x0000562ff0c054ed (anonymous namespace)::TwoAddressInstructionPass::runOnMachineFunction(llvm::MachineFunction&) TwoAddressInstructionPass.cpp:0:0
 #9 0x0000562ff093ed25 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/build/llvm-dev/build/default/bin/llc+0x4e3ed25)
#10 0x0000562ff0dced47 llvm::FPPassManager::runOnFunction(llvm::Function&) (/build/llvm-dev/build/default/bin/llc+0x52ced47)
#11 0x0000562ff0dd6ed1 llvm::FPPassManager::runOnModule(llvm::Module&) (/build/llvm-dev/build/default/bin/llc+0x52d6ed1)
#12 0x0000562ff0dcf7e5 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/build/llvm-dev/build/default/bin/llc+0x52cf7e5)
#13 0x0000562fef12150f main (/build/llvm-dev/build/default/bin/llc+0x362150f)
#14 0x00007f962b16ed0a __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x23d0a)
#15 0x0000562fef11c08a _start (/build/llvm-dev/build/default/bin/llc+0x361c08a)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy9V0tz4zgO_jX2hWUVRerlgw_uPHZTNV2T6u7D3FwUSdncliUtSXWS_fULULIteZLddKdmUrEtgcSHjwAIkGWrXjb3rSVVW9ftk2n25OHLgt4u6HaR0eG_rn8cRxH_RD63qq_1wy1ZcPiwvOz3XWsav7Ja9VKrlTPHrjaV0SoqJUwYVF3bW6l3lal1I4561GbSSs7kzjmdsJ1wxxUtaJFlESiyQdELu9eeKOFFLV7a3p9U9eq44Fu96lhO4YGz8IWv8fwVn7IkfK3M6aEqUClmxaop8CE76cDYVxBf2_fWdPWZ9nOR7WBi33xv2qdmVZumf17tm_6sNXwrXZlGE-XaXd1KUZMfrVFkkVDx5HbyoOV31x_haXDC4WmBdtckzN31DTpK7YRSFmxySkRt9g3hjCzyT4MB3Xj7AqSHN0JKS0xMIB6ubRbshtSi1DUop08HcHxUQrRnYllr0fTdlPNkJgfEd_1hXnQQfzf658ocCAaiI0s0bGVE47QICt3BEIPLSj_hGB11LiAwchuEMOGyuBNsGL1A04DphakJuLEOyJBZGLa6bbudO4J0t2AJepFve6MW-S2u9ebLDWfIAIKQMAjEYCSJMarhEfLjFrTkM2qwm8mjhQ8NojuQKmOrWuxPs1BUdc7O3mHcBQFgF2H1F6-gtc7byVr_NGGNKRFP4v5aqCdhPUX63TF9LayzKFrYFZjPo5X8dmpOeNgwZe-1G1I3AOToXOb7Rq9k14_uZGyvG20N7nhyRpnrx2f9pu0bqFIKrAvVtLC5rgwvWIz1KjIKyI68Y4w0i-mfp9L5DCxItYAa-ENbZ9qGxFlEI4opsTce9i18H_oyki2WnlAX2T3-rDrb_ktLH8EEUiRJlclUUa7SQudCUpmVBS90IvKCJ0KmeSrKdRkyjF1Inert-bWuJXyTClLZkScw_erEU7Qir5_9lQjLLQbyPYUWrUF2wIrK3tTqtDKlf1wtcnzFHwOLuL9plf6HhjS9__bUbqFaaeceGudtLz048VE4F8kOUy9O1hxtDGWQFQIi-HJse0ew1LlOSI1OgXrGt29iDcPARcLYN2gzj8JYB2iBVBj8LOQBCm9QBDvbYfd-xNzJzm_GQVaxDBH7xkE91oqYZpQhFtmCjy1qEwiRwQTDHLt1_kE9Q7bC_kcy8eeH1YLfQWv5vdNWNAqrACBExn3R-7ERjLPfmgqSyVxIX7ADAlhuHpIGOvAQ2sff7rZf74jryyPkpyDQs2EDda2FvtaSg_ddWCa7h_9Jil_iPI--ca7X4PF7AmRg9bLulSb-oIm0wh1IKeR3b8G7o_mvHgRE9cfu3KpoNGToo233VhwJNNn-CDvWvZ2CJxE0VdHXyKM0TZgiyWoFO9ZUL6vjEHmDMXQgHg8jMGDsYDkeLX-B_orHnQ5ijOeY-74JMScYdPJZNGKvLXoSRMdw5sFZC37jvAK7_A7exvWxNyAhp1ZjUhFzyaowPiJXJ6uI_T_OBeMpaiim9JnCX5qxqooznqYxJ5fcdy9jyj5ayMvg-m82ZPpkg1jxtGuBkBbHMZlh7pBFxU97f8E-0ee0DERwD5yZxldMOS_1a0zBb19hJ4n6n5BPtQ6b-aNk0NaMDLt2WyEqMjOL22rwwiA-VS0aPmcgPgLl1TpjZVbKOKFkt4Mo-9bqnfUj76E4jifFyQkRBzp_wAYWuTaigXHMAWXGN5mZiQsudUysME6_A18ichaQeQGKM-R0jpyplOdElO27mE-QGQPFGXJ2jZzQ6mcxQWWGmc8xc5ll7Cc9EIPKDLOY5gKVNE30R_uR7Zvfm7HvnErJaz3pMob9gvy_jnmVe-sZ8TXXiqXkTRtX7F6ldcXnl7dcogOZs5tx-88qFVVwOUzyCdv7RyR4qrR_E8-UBRoznvGcp8q0it_Bc7gJz4M8ij7KMVCYcWRXvqxyPY18rfdCvoyF_8L2AbrfmfFfwjQQmTHlE6a6ilmcQhE4CtP8uhmeBZSZmav6CA6jAsowbv2dg0u7301svrf6cACZWUnni4klLcBKwP_IcgLOxdDpQL_UG6xV6zTLcrZUG67WfC2W3vhab-Dy-2q1gNvveOYkwkMfh-VpvO_CoWJY8LK39ebXD3lpnhXF8rBhaZbE66JIdZ4wWhZpGfOSF2ksK5kUUi7DDdQhT7hT4BlQw1GVb_8oMrxjpLdLs2GUMbqOGU1YwuOoqta8hOtRpaRaZ-UaTkAaolZH4QrX2v3SbgItOLA6GKzh9O0ug5DneAAPrkF80ftDazflf-7-vQz0N4H7fwG3moZw">