<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/63366>63366</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AArch64][SVE] Why does a minor difference in code affect the emitted code?
</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>
Consider the following two functions `foo` and `bar`.
```c
int foo(int a, const int n)
{
for(int i=0;i<147;i++) a ^= n;
return a;
}
int bar(int a, const int n)
{
for(int i=0;i<149;i++) a ^= n;
return a;
}
```
I would like to know why the code output for `foo` and the code output for `bar` are so different, when compiled with `-Ofast -march=armv8+sve`.
https://godbolt.org/z/KPfbPhPTz
```asm
foo(int, int): // @foo(int, int)
eor w0, w0, w1
ret
bar(int, int): // @bar(int, int)
cnth x9
mov w10, #149 // =0x95
sub w8, w9, #1
mov z0.s, #0 // =0x0
and w8, w8, w10
mov z1.d, z0.d
eor w10, w8, w10
ptrue p0.s, vl1
mov z1.s, p0/m, w0
mov z2.s, w1
.LBB1_1: // =>This Inner Loop Header: Depth=1
subs w10, w10, w9
eor z1.d, z1.d, z2.d
eor z0.d, z0.d, z2.d
b.ne .LBB1_1
eor z0.d, z0.d, z1.d
ptrue p0.s
eorv s0, p0, z0.s
fmov w0, s0
.LBB1_3: // =>This Inner Loop Header: Depth=1
eor w0, w0, w1
subs w8, w8, #1
b.ne .LBB1_3
ret
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVVGPozYQ_jWTl1GQsQMJDzxslo166kldqaf2sTLYBHfBjmyT3ObXV4aETXJJe-odQowx3wzffDO2uXNqq6XMIVlDUsx47xtj87c5t9Yc3Kw04j1_NtopIS36RmJt2tYclN6iPxise115ZbRDSEltDKQEuRbhreQWUhIBKYA8QUrGuxrflfYY4HQVRhzoM1ZGO4_hVQPNTm7L9ThARKyNPeEVsIIAWytgz_FiOYzoergz5AjJC7ACNbALbyt9bzXyaRKWxWkwMQqUfwaj7KcwmjS7nPyEB9O3Alv1JtEbfNPmgIfmfahNZYRE0_tdH9S1NzV5gBjrhNxKdAaFqmtppfZBgEMjNVam26lWCjwo3wSH-W81dx7nHbdVA6zgttuvgK7dXn4UvPF-54A9Ad0A3WyNKE3rI2O3QDdHoJtfX-vytXn9crzJlbtunJm6IxAZTAZs0O1frvFvCAtyz31SPlzS2MEeyJDp-IyvMVb6cWJqjP9H5p771Y8q7Ztgv97Md2Y_kowHfkBZvMimwKwgX7Pk2sP15eixGhLKzm734x5J5E4IchWWXOND-1xEHZ8x-TboMY5E-HgkkXig95jKgxg7b3sZ7InYvj0znyjH45cdAbrpTrW7nxwdkeeqRp_X6_ivOBTuI1VgL18a5fCT1tLiZ2N2-IvkQtoAK-TOhw6Pv9HYTXmczIPumvQ4W_pIl0Gxs3J3kWWkgzR4zuP7wsRTmCttb50HyRw5K_s8tsYVqj4JO64VRy5VZf-9HH5Q9O9Zr0Nhbtr0ovmvBWQP1vq0Fc1EzkTGMj6TeZyu0ixb0ZjNmjyJxSoj6Uok9WoZC1FmbFmWXNYZSauKZjOVU0IZSeNlTFiasCimFV1liahkRqXgMSyI7Lhqo7bdd2FXnCnnepmnjKXprOWlbN35SLZ5AM3LfutgQVrlvPtw88q3w-H99GSrJl1AUkCy_v2PF0gK_LN5R2GkQ46d0sZOm3slUenxLOB1LSs_nA2yU95LMcwD28x62-Y327jyTV9GlemAbgKHk5nvrPlbVh7oZsjDAd0MqfwTAAD__w5wMM8">