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

    <tr>
        <th>Summary</th>
        <td>
            [MIPS64] Failure to remove random NOPs in the middle of instructions
        </td>
    </tr>

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

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

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

<pre>
    ```cpp
int f(int a, int b)
{
 return (a ^ b) | ~(a | b);
}
```

When compiled with `-O3 -target mips64el -fomit-frame-pointer`, LLVM outputs:

```x86asm
f(int, int): # @f(int, int)
  and $1, $5, $4
  sll $1, $1, 0
  not $1, $1
  jr $ra
  sll $2, $1, 0
```

whereas GCC manages (with `-O3`):

```x86asm
f(int, int):
  and $4,$4,$5
  jr $31
 nor $2,$0,$4
```

The `sll` instructions seem entirely unnecessary as they are just `nop`s from what I understand, and they don't seem required for any particular reason (using `-target mipsel` instead of `-target mips64el` also gets them removed, so this seems quite specific to 64-bit MIPS)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVEuP2zYQ_jXUZeAFNXofdNj11kGApAnaoj1T4tjigiIVPtb1pb-9oGQnzja9BBA0JD_O4_s0GuG9OhminlVPrHrORAyTdf07MThF-jfxqshlg5WXntV8e8ZlYfyZ8UdlAhwZtskKhntIi4Fht8GsedoW4ChEZ4BhK4BVv6x3gDV7-Gc7avabW_F083y-Lm45r9v1_ddEBkY7L0qThLMKE7Ca7z4VsAvCnSjArBZfl6Rhd7SzCrujEzPtFqtMIJei4R4-fPjzI9gYlhg8Kx7vE3zN-ndbCz9vh1eiV5prtY_AsABW8v9iG28QRgLDMk8Iw7K62vKGe63v8dXyG2hs-B68nr-4tHXiTRD8QZAf6neeyJHw8G6_h1kYcSKfPs2dkKtE3c-q8oZ8yXD_zVTfsyhurIx1NxIMS37z-X8Wf0yUqvVas5qDMj64OAZljQdPNAOZoBzpC0RjaCTvhbuA8BAmuoBwBC_RhxTB2CXFgaOzM5wnEeA9RCPJ-SCMTMwSkdVNWsOwCVsCR1-iciThaB0Ic4FFuKDGqIWDpK9dGz56ZU6rrHe9SV9rJiHBHt_iqXfTDaG9hROFteqUcbavtJbkLYRJbVQ9fIkqEPiFRnVUIwQLdbkbVICP7z__zrDLZF_IruhERn3eYF7lvMQ8m_r6KKu8rOsS-TDIRlQVyopabPNiEG09ZKpHjiVvkGOOHPlDJ9tuFJzKfBzbph5YyWkWSj9o_To_WHfKlPeR-q5r2iLTYiDt19mCaOgMK8gQ06hxffLZDfHkWcm18sF_ixJU0OtQShTqklXPcBBKR0eJ3qYEOGGkneHXT589KJNEgllJqSlpet8SWXS6n0JY1l8dDwwPJxWmODyMdmZ4SGmvZrc4-0JjYHhYi_UMDxuZ1x7_DQAA___gGn5S">