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

    <tr>
        <th>Summary</th>
        <td>
            [AArch64] [SVE] ratio of svcntb() to svcnth()
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          k-arrows
      </td>
    </tr>
</table>

<pre>
    Test code:
```console
#include <arm_sve.h>

uint64_t f1()
{
 return svcntb() / svcnth();
}

uint64_t f2()
{
  return (2 * svcntb()) / (2 * svcnth());
}

uint64_t f3()
{
  return (3 * svcntb()) / (3 * svcnth());
}

uint64_t f4()
{
  return (4 * svcntb()) / (4 * svcnth());
}
```

armv8-a clang (trunk) generates:
```console
f1():                                 // @f1()
        rdvl    x8, #1
        cnth    x9
        udiv    x0, x8, x9
        ret
f2():                                 // @f2()
 rdvl    x8, #2
        rdvl    x9, #1
        udiv    x0, x8, x9
        ret
f3():                                 // @f3()
 mov     w0, #2                          // =0x2
        ret
f4(): // @f4()
        rdvl    x8, #4
        rdvl x9, #2
        udiv    x0, x8, x9
        ret
```

Only f3 is optimized as expected.

Godbolt:
https://godbolt.org/z/rze6bKj5s
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVU-T4i4Q_TSdC6WFQGI45KDj5Hf4HfawW3udIoEYZkiwgDh_Pv1WonEmrjvOupYlFK-732t4gvBeb1ulMojXEG8i0YXauuxpJpyzzz4qrHzNfigfUGmlAroCvAG8ggQfvqVtvTXquEqobkvTSYWA3gnXPPi9mtdA74_48NvpNiTsIaBqASQFwo_gcn2YIKdC51rk92UbikMIApIfFupjDl2PaZvLxcnl4mN1IClBQFYTmpFpCtYn8DorvcpKP2Olt7Gyq6zsM1b2Rdbx0D-KEK7ZpzOBSiPabV8suK596otvVaucCMpfcc3JBnSFrn2A5INmhqfmGXEn96YfX1IgdwgIXUzxvsMBP8vrpN4P67jPO2SfxzgVjoLJTYInhvxdKflDJ_xyJ3-nmN6keGJm1NiBED3jUfH1InSDX84bO4li76I-kLIvnSu7gJ-2ivzDVl00-bfWvKKKIu2R3QXd6DclkfBIvexUGZScfwz-z8rCmnByfR3CbvgPDD1uD-jcui2Q_A1I7t5UUvz_GPtIZlRyykWkskWy5GRBSRpHdVYJipeYFFyUXHBBJeZ8KdKkwgnmWLJIZwQTiumC4xSnOJ6ruJI4TqWoSpZQxYBh1Qht5sbsm5470t53KksWMY4jIwpl_PgEuKwPmhXd1gPDRvvg39OCDmZ4LFYrV9YJg3iDIF5__3nfz5wI2iJbTe_uYCd3S9Q5k51tig51V8xL2wDJe67jMNs5-6jKACQf9Hog-SD5VwAAAP__LWevlQ">