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

    <tr>
        <th>Summary</th>
        <td>
            [AVR] Optimize 8-bit rotation
        </td>
    </tr>

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

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

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

<pre>
    For the following `a.ll`,

```
define i8 @test(i8 %0) {
start:
  %1 = call i8 @llvm.fshr.i8(i8 %0, i8 %0, i8 4)
  ret i8 %1
}

declare i8 @llvm.fshr.i8(i8, i8, i8)
```

Build it with `llc  a.ll -march=avr -mcpu=atmega328`, the following assembly is generated,
```
 .type   test,@function
test:                                   ; @test
; %bb.0:                                ; %start
        bst r24, 0
        ror     r24
        bld     r24, 7
        bst r24, 0
        ror     r24
        bld     r24, 7
        bst r24, 0
        ror     r24
        bld     r24, 7
        bst r24, 0
        ror     r24
        bld     r24, 7
        ret
``` 

which could be optimized to a single `swap r24`.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkVMuunDwMfpqwsQYFQxhYsDgzo9n-0r_oPgEPpApklJgzOn36isu5qlW7L0K52flsf3asY7T9RNQIdRKIhqY4WCkzgSjUJdEzDz40b8eJ8d1Lc_UBeCC4eef8w049iFLq1DlRSoFnIS9CPu1jKfd_3XZ0sxOBrUAUkimywGrZoJICaxDH06YXWQcW-Q4Ci0IGIr9Aq53brzv3PKa3OITUVh9hzvB5WQisX3EC8S7Ndv-Ol4_udtQ6Heh3FjbE17H-ZYjbeJqt68AyPCwPCz3OtQALR3AYdWgHkV_0c4DD2N7nZc0j9TrHaqPwC706RhqNewEboaeJgmbq3pn-7ACk_HInANj4PYtC3uapZeunTWE9z5_gz5_IT2-J2kwtB6iMSeVfIOzaWzL3DGyfiQwBiyVS-VkSfNhmLL5ccd2bAM9w_OcBA_GX_MPHCnwMth2g9bPrwBD4O9vR_qAO2IOGaKfe0VKY8aHvq4VSpknX5F2d1zqhJisrVRXHIlfJ0OiuRimxVoWqtDJH1VaqLLFs69wolCqxDUrMZSkLieqYqTSXNaJRShupCuoyUUgatXXp-qh86BMb40xNmWdSJk4bcnFvQhM9YBXuTSg0y52Dmfu4PEobOb6jsGW3dq-nb_8LdYH_9jihOhjLEDzrpfKTObhmYL7HpavgVeC1tzzMJm39KPC64O3T4R78d2pZ4HX1Igq8rl7-DAAA__8udlpT">