1/* { dg-do compile } */
2/* { dg-options "-Os -mcpu=5249" } */
3
4static inline void vect_add(int *x, int *y, int n)
5{
6    asm volatile ("nop;"
7                : [n] "+d" (n), [x] "+a" (x), [y] "+a" (y)
8                : : "%d0", "%d1", "%d2", "%d3", "%a0", "%a1", "%a2", "%a3",
9                    "cc", "memory");
10}
11
12extern void vect_copy (int *, int *, int);
13
14void vorbis_synthesis_blockin(int *blocksizes)
15{
16    int j, *pcm, *p;
17
18    int n=blocksizes[*p]/2;
19    int n0=blocksizes[0]/2;
20    int n1=blocksizes[1]/2;
21
22    for(j=0;j<*p;j++)
23    {
24        vect_add(p, pcm, n1);
25        vect_add(pcm, p, n0);
26        vect_add(p, pcm, n0);
27        vect_add(p, pcm, n0);
28        vect_copy(pcm, p, n);
29    }
30}
31
32