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

    <tr>
        <th>Summary</th>
        <td>
            MIPS bit operation can be improved
        </td>
    </tr>

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

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

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

<pre>
    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113179

```
struct xx {
        int a:4;
        int b:24;
        int c:3;
 int d:1;
};

void xx (struct xx *a, long long b) {
        a->d = b;
}
```

with `-mabi=64 -march=mips64r2`,

```
 lw      $2,0($4)
        sll      $3,$5
        ins     $2,$3,31,1
 jr      $31
        sw      $2,0($4)
```
is expected.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEk91unDAQhZ9muLEWmbHBywUXZClSLypV6gNU_gs4MrDFJpvk6StYlE23UYvQAOeMDx8WI0Nw3WhtBfkDIF7eQnj9JQER8iaRS-ynudrFRE3mtepjPAdgNWAL2HZap924pNPcAbZq6d6c9xKwDf10-amWLtWdA9Y6A6zJMpaJEmgDtN5rQfdzewxxXnQkLy8ExMNVIvvhxkgksJoD-8RRwGr83NLAanZzVskAq7N3CURzu9_q8-TMBoHHD0RYS8AT8dPYXYsCLP8GlQdgXwwB1qxUH97x2Qdf68XFnkBBD4NUDlhTcHIY5Kx7YM3gzqHgM65L8PSPvSP-cgUA5Ah4ooBHQM4Byz8Bg_fvjWzNRJ7fb1v4mLT3sQzwlO2dT_MtI7vL_w_HHbcLxL6crY7WpImpmClZKRNbZSLjSAuKedJXWmTCPBquy4IVNi-MoEeZKS5EKbRhLHEVUuSUo6BHpJinTBVCUyEfucmPPH8ETu0gnU-9fx7W3zVxISy2KinDPPFSWR_2GRjthWzmPgVzta45qKULwKl3IYZbSnTR2-rb1-8_iHKRTGc7y-imkWg5EmWJG87z9GxNssz-fnZc7BeV6mkAbNfA_XI4z9OT1RGw3TACYLth_g4AAP__B135sw">