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

    <tr>
        <th>Summary</th>
        <td>
            [aarch64] gcc get better result than llvm for abs
        </td>
    </tr>

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

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

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

<pre>
    * test: https://godbolt.org/z/cTcjvPE1z
```
#include <stdlib.h>

int square (unsigned char *pix1, unsigned char *pix2) {
    int sum=0;
    for (int i=0; i< 16; i++)
       sum += abs (pix1[i]-pix2[i]);
    return sum;
}

```

* gcc: uabdl2 + uabal + uaddlv
```
square:
        ldr q31, [x0]
        ldr     q30, [x1]
        uabdl2  v29.8h, v31.16b, v30.16b
        uabal   v29.8h, v31.8b, v30.8b
        uaddlv  s31, v29.8h
        fmov    w0, s31
        ret
```

* llvm:
```
square:
 ldr     q0, [x0]
        ldr     q1, [x1]
        uabd    v0.16b, v0.16b, v1.16b
        ushll2  v1.8h, v0.16b, #0
        ushll   v0.8h, v0.8b, #0
        uaddl2  v2.4s, v0.8h, v1.8h
        uaddl   v0.4s, v0.4h, v1.4h
        add     v0.4s, v0.4s, v2.4s
        addv    s0, v0.4s
 fmov    w0, s0
        ret
```

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyElN9uqzgQxp9muBkV-Q8QuOCCNOWyuxf7AgabQOWE1jZst0-_siHkEPX0REgeeX72fP7sjLB2OF-VKiE9QnqKxOT60ZRzJ7suakb5XwmsQqesA15h79y7BV4Bq4HV51E2o3bxaM7A6i9gdftP-zb__UK_gFSQkfUjFTA-XFs9SYXAn62TemjiHviLz5FquDq0H5MwCoHl0zVIktj2wiCw6n34pMCe8bsEA1YgHI5AKkTEsNN0AX4iwG-T3ejp3OeGNeODZ6TZErJj-IqVR_R7oJ_jJxSN9auDiPQ4QHp6CnWX2K_aChnlJnNdBPg5OJyWA-688HZUeG5b7-gkGqmZr-VDoddISj0_rFsM8uZvKlFLgx88mAPp8ZN4Qfus_31wciPonlir48yKOO89NHMa06xZQhLCHS40PuL5Rud72B8C0S761jX3fHcZZz_-G8R56p4zyn3vmtbzZbHgt9ZspyZ_soX-4IofZ7JZcY_ooye218FCerNkY4Fx8kgu225k_i3onQu3Eif2BvZr9Z2HgVy23MjkRia_kkKGI-3JJQhVdmS4F0vuGKker4v8eFuRLLkseCEiVdJDUlCW56SI-lJ0smi6lKQdFyTNpEgVkW0hW8qKLuEqGkpGWEoyklJOsiSPE06TplGqKzqZ5uoACVEXMejYPwXfeqLB2kmVNGFFRiMtGqVt6GaMvb789QqM-b5mSs8_NdPZQkL0YJ297-AGp0MHFMK0fZZAevL_Tzwrh41yThk0yk7aoevFNTzC0FREY6PJ6PKhLQ6un5q4HS_A6vBgl-Hp3YxvqnXA6iDZAqtX1XPJ_g8AAP__fAp4Ww">