"wfmaxsb %%v0,%%v0,%%v16,0\n\t"
"ler %[amax],%%f0"
: [amax] "=f"(amax),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v16", "v17", "v18", "v19", "v20",
"v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31");
"wfminsb %%v0,%%v0,%%v16,0\n\t"
"ler %[amin],%%f0"
: [amin] "=f"(amin),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v16", "v17", "v18", "v19", "v20",
"v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31");
"vfasb %%v24,%%v24,%%v25\n\t"
"vstef %%v24,%[asum],0"
: [asum] "=Q"(asum),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x)
: "cc", "r1", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"vst %%v19,112(%%r1,%[y])\n\t"
"agfi %%r1,128\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x),
- "m"(*(const struct { FLOAT x[2]; } *) alpha),[alpha] "a"(alpha)
+ : "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
+ "m"(*(const FLOAT (*)[2]) alpha),[alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v8", "v9", "v10", "v11", "v12", "v13",
"v14", "v15", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"la %[x],256(%[x])\n\t"
"la %[y],256(%[y])\n\t"
"brctg %[n],0b"
- : "=m"(*(struct { FLOAT x[n * 2]; } *) y),[x] "+&a"(x),[y] "+&a"(y),
+ : "=m"(*(FLOAT (*)[n * 2]) y),[x] "+&a"(x),[y] "+&a"(y),
[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n * 2]; } *) x)
+ : "m"(*(const FLOAT (*)[n * 2]) x)
: "cc");
}
"vstef %%v24,4(%[d]),1\n\t"
"vstef %%v25,8(%[d]),1\n\t"
"vstef %%v25,12(%[d]),0"
- : "=m"(*(struct { FLOAT x[4]; } *) d),[n] "+&r"(n)
- : [d] "a"(d), "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x),
- "m"(*(const struct { FLOAT x[n * 2]; } *) y),[y] "a"(y)
+ : "=m"(*(FLOAT (*)[4]) d),[n] "+&r"(n)
+ : [d] "a"(d), "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
+ "m"(*(const FLOAT (*)[n * 2]) y),[y] "a"(y)
: "cc", "r1", "v0", "v1", "v2", "v3", "v16", "v17", "v18", "v19", "v20",
"v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31");
"vst %%v0,0(%%r1,%[y])\n\t"
"agfi %%r1,16\n\t"
"brctg %[n],0b\n\t"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap0),[ap0] "a"(ap0),
- "m"(*(const struct { FLOAT x[n * 2]; } *) ap1),[ap1] "a"(ap1),
- "m"(*(const struct { FLOAT x[n * 2]; } *) ap2),[ap2] "a"(ap2),
- "m"(*(const struct { FLOAT x[n * 2]; } *) ap3),[ap3] "a"(ap3),
- "m"(*(const struct { FLOAT x[8]; } *) x),[x] "a"(x)
+ : "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap0),[ap0] "a"(ap0),
+ "m"(*(const FLOAT (*)[n * 2]) ap1),[ap1] "a"(ap1),
+ "m"(*(const FLOAT (*)[n * 2]) ap2),[ap2] "a"(ap2),
+ "m"(*(const FLOAT (*)[n * 2]) ap3),[ap3] "a"(ap3),
+ "m"(*(const FLOAT (*)[8]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v16", "v17", "v18", "v19", "v20",
"v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31");
"vst %%v0,0(%%r1,%[y])\n\t"
"agfi %%r1,16\n\t"
"brctg %[n],0b\n\t"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap0),[ap0] "a"(ap0),
- "m"(*(const struct { FLOAT x[n * 2]; } *) ap1),[ap1] "a"(ap1),
- "m"(*(const struct { FLOAT x[4]; } *) x),[x] "a"(x)
+ : "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap0),[ap0] "a"(ap0),
+ "m"(*(const FLOAT (*)[n * 2]) ap1),[ap1] "a"(ap1),
+ "m"(*(const FLOAT (*)[4]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v16", "v17", "v18", "v19", "v20",
"v21", "v22", "v23");
}
"vst %%v0,0(%%r1,%[y])\n\t"
"agfi %%r1,16\n\t"
"brctg %[n],0b\n\t"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap),[ap] "a"(ap),
- "m"(*(const struct { FLOAT x[2]; } *) x),[x] "a"(x)
+ : "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap),[ap] "a"(ap),
+ "m"(*(const FLOAT (*)[2]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v16", "v17", "v18", "v19");
}
"vst %%v23,16(%%r1,%[dest])\n\t"
"agfi %%r1,32\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) dest),[n] "+&r"(n)
- : [dest] "a"(dest), "m"(*(const struct { FLOAT x[n * 2]; } *) src),
+ : "+m"(*(FLOAT (*)[n * 2]) dest),[n] "+&r"(n)
+ : [dest] "a"(dest), "m"(*(const FLOAT (*)[n * 2]) src),
[src] "a"(src),[alpha_r] "Q"(alpha_r),[alpha_i] "Q"(alpha_i)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23");
"vfmasb %%v23,%%v19,%%v21,%%v23\n\t"
"vst %%v22,0(%[y])\n\t"
"vst %%v23,16(%[y])"
- : "+m"(*(struct { FLOAT x[8]; } *) y),[n] "+&r"(n)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap0),[ap0] "a"(ap0),
- "m"(*(const struct { FLOAT x[n * 2]; } *) ap1),[ap1] "a"(ap1),
- "m"(*(const struct { FLOAT x[n * 2]; } *) ap2),[ap2] "a"(ap2),
- "m"(*(const struct { FLOAT x[n * 2]; } *) ap3),[ap3] "a"(ap3),
- "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x),
- "m"(*(const struct { FLOAT x[2]; } *) alpha),[alpha] "a"(alpha)
+ : "+m"(*(FLOAT (*)[8]) y),[n] "+&r"(n)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap0),[ap0] "a"(ap0),
+ "m"(*(const FLOAT (*)[n * 2]) ap1),[ap1] "a"(ap1),
+ "m"(*(const FLOAT (*)[n * 2]) ap2),[ap2] "a"(ap2),
+ "m"(*(const FLOAT (*)[n * 2]) ap3),[ap3] "a"(ap3),
+ "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
+ "m"(*(const FLOAT (*)[2]) alpha),[alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v2", "v3", "v16", "v17", "v18", "v19", "v20",
"v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31");
"vfmasb %%v20,%%v16,%%v18,%%v20\n\t"
"vfmasb %%v20,%%v17,%%v19,%%v20\n\t"
"vst %%v20,0(%[y])"
- : "+m"(*(struct { FLOAT x[4]; } *) y),[n] "+&r"(n)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap0),[ap0] "a"(ap0),
- "m"(*(const struct { FLOAT x[n * 2]; } *) ap1),[ap1] "a"(ap1),
- "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x),
- "m"(*(const struct { FLOAT x[2]; } *) alpha),[alpha] "a"(alpha)
+ : "+m"(*(FLOAT (*)[4]) y),[n] "+&r"(n)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap0),[ap0] "a"(ap0),
+ "m"(*(const FLOAT (*)[n * 2]) ap1),[ap1] "a"(ap1),
+ "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
+ "m"(*(const FLOAT (*)[2]) alpha),[alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v2", "v3", "v16", "v17", "v18", "v19", "v20",
"v21", "v22", "v23");
}
"vfmasb %%v0,%%v16,%%v18,%%v0\n\t"
"vfmasb %%v0,%%v17,%%v19,%%v0\n\t"
"vsteg %%v0,0(%[y]),0"
- : "+m"(*(struct { FLOAT x[2]; } *) y),[n] "+&r"(n)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap),[ap] "a"(ap),
- "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x),
- "m"(*(const struct { FLOAT x[2]; } *) alpha),[alpha] "a"(alpha)
+ : "+m"(*(FLOAT (*)[2]) y),[n] "+&r"(n)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap),[ap] "a"(ap),
+ "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
+ "m"(*(const FLOAT (*)[2]) alpha),[alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v2", "v3", "v16", "v17", "v18", "v19");
}
"vst %%v23, 240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) x),
- "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n)
+ : "+m"(*(FLOAT (*)[n * 2]) x),
+ "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
: [x] "a"(x),[y] "a"(y),[c] "Q"(*c),[s] "Q"(*s)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"vst %%v23,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) x),[n] "+&r"(n)
- : [x] "a"(x), "m"(*(const struct { FLOAT x[2]; } *) alpha),
+ : "+m"(*(FLOAT (*)[n * 2]) x),[n] "+&r"(n)
+ : [x] "a"(x), "m"(*(const FLOAT (*)[2]) alpha),
[alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"vst %%v23,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) x),[n] "+&r"(n)
- : [x] "a"(x), "m"(*(const struct { FLOAT x[2]; } *) alpha),
+ : "+m"(*(FLOAT (*)[n * 2]) x),[n] "+&r"(n)
+ : [x] "a"(x), "m"(*(const FLOAT (*)[2]) alpha),
[alpha] "a"(alpha)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23");
"vst %%v23,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) x),[n] "+&r"(n)
- : [x] "a"(x), "m"(*(const struct { FLOAT x[2]; } *) alpha),
+ : "+m"(*(FLOAT (*)[n * 2]) x),[n] "+&r"(n)
+ : [x] "a"(x), "m"(*(const FLOAT (*)[2]) alpha),
[alpha] "a"(alpha)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23");
"vst %%v0,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t"
"brctg %[n],0b"
- : "=m"(*(struct { FLOAT x[n * 2]; } *) x),[n] "+&r"(n)
+ : "=m"(*(FLOAT (*)[n * 2]) x),[n] "+&r"(n)
: [x] "a"(x)
: "cc", "r1", "v0");
}
"vfasb %%v24,%%v24,%%v25\n\t"
"vstef %%v24,%[sum],0"
: [sum] "=Q"(sum),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x)
: "cc", "r1", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"vst %%v31, 240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) x),
- "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n)
+ : "+m"(*(FLOAT (*)[n * 2]) x),
+ "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
: [x] "a"(x),[y] "a"(y)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"wfmaxdb %%v0,%%v0,%%v16,8\n\t"
"lpdr %[amax],%%f0"
: [amax] "=f"(amax),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"vsel %%v0,%%v0,%%v16,%%v17\n\t"
"ldr %[amax],%%f0"
: [amax] "=f"(amax),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"wfmindb %%v0,%%v0,%%v16,8\n\t"
"lpdr %[amin],%%f0"
: [amin] "=f"(amin),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"vsel %%v0,%%v0,%%v16,%%v17\n\t"
"ldr %[amin],%%f0"
: [amin] "=f"(amin),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"vfadb %%v24,%%v24,%%v25\n\t"
"vsteg %%v24,%[asum],0"
: [asum] "=Q"(asum),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"vst %%v27,240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n]; } *) y),[n] "+&r"(n)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x),
+ : "+m"(*(FLOAT (*)[n]) y),[n] "+&r"(n)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),
[alpha] "Q"(*alpha)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"la %[x],256(%[x])\n\t"
"la %[y],256(%[y])\n\t"
"brctg %[n],0b"
- : "=m"(*(struct { FLOAT x[n]; } *) y),[x] "+&a"(x),[y] "+&a"(y),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x)
+ : "=m"(*(FLOAT (*)[n]) y),[x] "+&a"(x),[y] "+&a"(y),[n] "+&r"(n)
+ : "m"(*(const FLOAT (*)[n]) x)
: "cc");
}
"adbr %%f0,%%f1\n\t"
"ldr %[dot],%%f0"
: [dot] "=f"(dot),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x),
- "m"(*(const struct { FLOAT x[n]; } *) y),[y] "a"(y)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),
+ "m"(*(const FLOAT (*)[n]) y),[y] "a"(y)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31");
"brctg %%r0,2b\n\t"
"3:\n\t"
"nop 0"
- : "+m"(*(struct { FLOAT x[n]; } *) y)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0),
- "m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1),
- "m"(*(const struct { FLOAT x[n]; } *) ap2),[ap2] "a"(ap2),
- "m"(*(const struct { FLOAT x[n]; } *) ap3),[ap3] "a"(ap3),
- "m"(*(const struct { FLOAT x[4]; } *) x),[x] "a"(x),[alpha] "Q"(*alpha),
+ : "+m"(*(FLOAT (*)[n]) y)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
+ "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
+ "m"(*(const FLOAT (*)[n]) ap2),[ap2] "a"(ap2),
+ "m"(*(const FLOAT (*)[n]) ap3),[ap3] "a"(ap3),
+ "m"(*(const FLOAT (*)[4]) x),[x] "a"(x),[alpha] "Q"(*alpha),
[n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
"brctg %%r0,2b\n\t"
"3:\n\t"
"nop 0"
- : "+m"(*(struct { FLOAT x[n]; } *) y)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0),
- "m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1),
- "m"(*(const struct { FLOAT x[2]; } *) x),[x] "a"(x),[alpha] "Q"(*alpha),
+ : "+m"(*(FLOAT (*)[n]) y)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
+ "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
+ "m"(*(const FLOAT (*)[2]) x),[x] "a"(x),[alpha] "Q"(*alpha),
[n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v8", "v9", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"brctg %%r0,2b\n\t"
"3:\n\t"
"nop 0"
- : "+m"(*(struct { FLOAT x[n]; } *) y)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) a0),[a0] "a"(a0),
+ : "+m"(*(FLOAT (*)[n]) y)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n]) a0),[a0] "a"(a0),
"m"(*(const FLOAT (*)[1]) x),[x] "a"(x),[alpha] "Q"(*alpha),
[n] "r"(n)
: "cc", "r0", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21",
"vrepg %%v4,%%v3,1\n\t"
"adbr %%f3,%%f4\n\t"
"std %%f3,24(%[y])"
- : "=m"(*(struct { FLOAT x[4]; } *) y)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0),
- "m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1),
- "m"(*(const struct { FLOAT x[n]; } *) ap2),[ap2] "a"(ap2),
- "m"(*(const struct { FLOAT x[n]; } *) ap3),[ap3] "a"(ap3),
- "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x),[n] "r"(n)
+ : "=m"(*(FLOAT (*)[4]) y)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
+ "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
+ "m"(*(const FLOAT (*)[n]) ap2),[ap2] "a"(ap2),
+ "m"(*(const FLOAT (*)[n]) ap3),[ap3] "a"(ap3),
+ "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),[n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
"v26", "v27", "v28", "v29", "v30", "v31");
"vrepg %%v2,%%v1,1\n\t"
"adbr %%f1,%%f2\n\t"
"std %%f1,8(%[y])"
- : "=m"(*(struct { FLOAT x[2]; } *) y)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0),
- "m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1),
- "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x),[n] "r"(n)
+ : "=m"(*(FLOAT (*)[2]) y)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
+ "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
+ "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),[n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
"v26", "v27", "v28", "v29", "v30", "v31");
"adbr %%f0,%%f1\n\t"
"std %%f0,0(%[y])"
: "=m"(*(FLOAT (*)[1]) y)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) a0),[a0] "a"(a0),
- "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x),[n] "r"(n)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n]) a0),[a0] "a"(a0),
+ "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),[n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
"v26", "v27", "v28", "v29", "v30", "v31");
"brctg %%r0,2b\n\t"
"3:\n\t"
"nop 0"
- : "+m"(*(struct { FLOAT x[n]; } *) dest)
- : [dest] "a"(dest),[da] "Q"(da), "m"(*(const struct { FLOAT x[n]; } *) src),
+ : "+m"(*(FLOAT (*)[n]) dest)
+ : [dest] "a"(dest),[da] "Q"(da), "m"(*(const FLOAT (*)[n]) src),
[src] "a"(src),[n] "r"(n)
: "cc", "r0", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"wfmaxdb %%v0,%%v0,%%v16,0\n\t"
"ldr %[max],%%f0"
: [max] "=f"(max),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"vsel %%v0,%%v0,%%v16,%%v17\n\t"
"ldr %[max],%%f0"
: [max] "=f"(max),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"wfmindb %%v0,%%v0,%%v16,0\n\t"
"ldr %[min],%%f0"
: [min] "=f"(min),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"vsel %%v0,%%v0,%%v16,%%v17\n\t"
"ldr %[min],%%f0"
: [min] "=f"(min),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"vst %%v23, 240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n]; } *) x), "+m"(*(struct { FLOAT x[n]; } *) y),
+ : "+m"(*(FLOAT (*)[n]) x), "+m"(*(FLOAT (*)[n]) y),
[n] "+&r"(n)
: [x] "a"(x),[y] "a"(y),[c] "Q"(*c),[s] "Q"(*s)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"vst %%v31,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n]; } *) x),[n] "+&r"(n)
+ : "+m"(*(FLOAT (*)[n]) x),[n] "+&r"(n)
: [x] "a"(x),[da] "Q"(da)
: "cc", "r1", "v0", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31");
"vst %%v0,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t"
"brctg %[n],0b"
- : "=m"(*(struct { FLOAT x[n]; } *) x),[n] "+&r"(n)
+ : "=m"(*(FLOAT (*)[n]) x),[n] "+&r"(n)
: [x] "a"(x)
: "cc", "r1", "v0");
}
"adbr %%f0,%%f1\n\t"
"ldr %[dot],%%f0"
: [dot] "=f"(dot),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x),
- "m"(*(const struct { FLOAT x[n]; } *) y),[y] "a"(y)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),
+ "m"(*(const FLOAT (*)[n]) y),[y] "a"(y)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31");
"vfadb %%v24,%%v24,%%v25\n\t"
"vsteg %%v24,%[sum],0"
: [sum] "=Q"(sum),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"vst %%v31, 240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n]; } *) x), "+m"(*(struct { FLOAT x[n]; } *) y),
+ : "+m"(*(FLOAT (*)[n]) x), "+m"(*(FLOAT (*)[n]) y),
[n] "+&r"(n)
: [x] "a"(x),[y] "a"(y)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"2:\n\t"
"nop 0"
: [iamax] "=r"(iamax),[amax] "=Q"(*amax),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8",
"v9", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24",
"v25", "v26", "v27", "v28", "v29", "v30", "v31");
"2:\n\t"
"nop 0"
: [iamin] "=r"(iamin),[amin] "=Q"(*amin),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8",
"v9", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24",
"v25", "v26", "v27", "v28", "v29", "v30", "v31");
"2:\n\t"
"nop 0"
: [iamax] "=r"(iamax),[amax] "=Q"(*amax),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31");
"2:\n\t"
"nop 0"
: [iamin] "=r"(iamin),[amin] "=Q"(*amin),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31");
"2:\n\t"
"nop 0"
: [imax] "=r"(imax),[max] "=Q"(*max),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31");
"2:\n\t"
"nop 0"
: [imin] "=r"(imin),[min] "=Q"(*min),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31");
"2:\n\t"
"nop 0"
: [iamax] "=r"(iamax),[amax] "=Q"(*amax),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT(*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v4", "v5", "v6", "v7", "v8", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31");
"2:\n\t"
"nop 0"
: [iamin] "=r"(iamin),[amin] "=Q"(*amin),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v4", "v5", "v6", "v7", "v8", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31");
"2:\n\t"
"nop 0"
: [imax] "=r"(imax),[max] "=Q"(*max),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v4", "v5", "v6", "v7", "v8", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31");
"2:\n\t"
"nop 0"
: [imin] "=r"(imin),[min] "=Q"(*min),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v4", "v5", "v6", "v7", "v8", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31");
"2:\n\t"
"nop 0"
: [iamax] "=r"(iamax),[amax] "=Q"(*amax),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v16", "v17", "v18",
"v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v27");
"2:\n\t"
"nop 0"
: [iamin] "=r"(iamin),[amin] "=Q"(*amin),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v16", "v17", "v18",
"v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v27");
"wfmaxsb %%v0,%%v0,%%v16,8\n\t"
"lper %[amax],%%f0"
: [amax] "=f"(amax),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"wfminsb %%v0,%%v0,%%v16,8\n\t"
"lper %[amin],%%f0"
: [amin] "=f"(amin),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"vfasb %%v24,%%v24,%%v25\n\t"
"vstef %%v24,%[asum],0"
: [asum] "=Q"(asum),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"vst %%v27,240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n]; } *) y),[n] "+&r"(n)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x),
+ : "+m"(*(FLOAT (*)[n]) y),[n] "+&r"(n)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),
[alpha] "Q"(*alpha)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"la %[x],256(%[x])\n\t"
"la %[y],256(%[y])\n\t"
"brctg %[n],0b"
- : "=m"(*(struct { FLOAT x[n]; } *) y),[x] "+&a"(x),[y] "+&a"(y),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x)
+ : "=m"(*(FLOAT (*)[n]) y),[x] "+&a"(x),[y] "+&a"(y),[n] "+&r"(n)
+ : "m"(*(const FLOAT (*)[n]) x)
: "cc");
}
"aebr %%f0,%%f3\n\t"
"ler %[dot],%%f0"
: [dot] "=f"(dot),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x),
- "m"(*(const struct { FLOAT x[n]; } *) y),[y] "a"(y)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),
+ "m"(*(const FLOAT (*)[n]) y),[y] "a"(y)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31");
"brctg %%r0,2b\n\t"
"3:\n\t"
"nop 0"
- : "+m"(*(struct { FLOAT x[n]; } *) y)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0),
- "m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1),
- "m"(*(const struct { FLOAT x[n]; } *) ap2),[ap2] "a"(ap2),
- "m"(*(const struct { FLOAT x[n]; } *) ap3),[ap3] "a"(ap3),
- "m"(*(const struct { FLOAT x[4]; } *) x),[x] "a"(x),[alpha] "Q"(*alpha),
+ : "+m"(*(FLOAT (*)[n]) y)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
+ "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
+ "m"(*(const FLOAT (*)[n]) ap2),[ap2] "a"(ap2),
+ "m"(*(const FLOAT (*)[n]) ap3),[ap3] "a"(ap3),
+ "m"(*(const FLOAT (*)[4]) x),[x] "a"(x),[alpha] "Q"(*alpha),
[n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
"brctg %%r0,2b\n\t"
"3:\n\t"
"nop 0"
- : "+m"(*(struct { FLOAT x[n]; } *) y)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0),
- "m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1),
- "m"(*(const struct { FLOAT x[2]; } *) x),[x] "a"(x),[alpha] "Q"(*alpha),
+ : "+m"(*(FLOAT (*)[n]) y)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
+ "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
+ "m"(*(const FLOAT (*)[2]) x),[x] "a"(x),[alpha] "Q"(*alpha),
[n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v8", "v9", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"brctg %%r0,2b\n\t"
"3:\n\t"
"nop 0"
- : "+m"(*(struct { FLOAT x[n]; } *) y)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) a0),[a0] "a"(a0),
+ : "+m"(*(FLOAT (*)[n]) y)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n]) a0),[a0] "a"(a0),
"m"(*(const FLOAT (*)[1]) x),[x] "a"(x),[alpha] "Q"(*alpha),
[n] "r"(n)
: "cc", "r0", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21",
"vrepg %%v4,%%v3,1\n\t"
"aebr %%f3,%%f4\n\t"
"ste %%f3,12(%[y])"
- : "=m"(*(struct { FLOAT x[4]; } *) y)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0),
- "m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1),
- "m"(*(const struct { FLOAT x[n]; } *) ap2),[ap2] "a"(ap2),
- "m"(*(const struct { FLOAT x[n]; } *) ap3),[ap3] "a"(ap3),
- "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x),[n] "r"(n)
+ : "=m"(*(FLOAT (*)[4]) y)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
+ "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
+ "m"(*(const FLOAT (*)[n]) ap2),[ap2] "a"(ap2),
+ "m"(*(const FLOAT (*)[n]) ap3),[ap3] "a"(ap3),
+ "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),[n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
"v26", "v27", "v28", "v29", "v30", "v31");
"vrepg %%v2,%%v1,1\n\t"
"aebr %%f1,%%f2\n\t"
"ste %%f1,4(%[y])"
- : "=m"(*(struct { FLOAT x[2]; } *) y)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0),
- "m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1),
- "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x),[n] "r"(n)
+ : "=m"(*(FLOAT (*)[2]) y)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
+ "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
+ "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),[n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
"v26", "v27", "v28", "v29", "v30", "v31");
"aebr %%f0,%%f1\n\t"
"ste %%f0,0(%[y])"
: "=m"(*(FLOAT (*)[1]) y)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) a0),[a0] "a"(a0),
- "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x),[n] "r"(n)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n]) a0),[a0] "a"(a0),
+ "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),[n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
"v26", "v27", "v28", "v29", "v30", "v31");
"brctg %%r0,2b\n\t"
"3:\n\t"
"nop 0"
- : "+m"(*(struct { FLOAT x[n]; } *) dest)
- : [dest] "a"(dest),[da] "Q"(da), "m"(*(const struct { FLOAT x[n]; } *) src),
+ : "+m"(*(FLOAT (*)[n]) dest)
+ : [dest] "a"(dest),[da] "Q"(da), "m"(*(const FLOAT (*)[n]) src),
[src] "a"(src),[n] "r"(n)
: "cc", "r0", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"wfmaxsb %%v0,%%v0,%%v16,0\n\t"
"ler %[max],%%f0"
: [max] "=f"(max),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT(*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"wfminsb %%v0,%%v0,%%v16,0\n\t"
"ler %[min],%%f0"
: [min] "=f"(min),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"vst %%v23, 240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n]; } *) x), "+m"(*(struct { FLOAT x[n]; } *) y),
+ : "+m"(*(FLOAT (*)[n]) x), "+m"(*(FLOAT (*)[n]) y),
[n] "+&r"(n)
: [x] "a"(x),[y] "a"(y),[c] "Q"(*c),[s] "Q"(*s)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"vst %%v31,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n]; } *) x),[n] "+&r"(n)
+ : "+m"(*(FLOAT (*)[n]) x),[n] "+&r"(n)
: [x] "a"(x),[da] "Q"(da)
: "cc", "r1", "v0", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31");
"vst %%v0,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t"
"brctg %[n],0b"
- : "=m"(*(struct { FLOAT x[n]; } *) x),[n] "+&r"(n)
+ : "=m"(*(FLOAT (*)[n]) x),[n] "+&r"(n)
: [x] "a"(x)
: "cc", "r1", "v0");
}
"vfasb %%v24,%%v24,%%v25\n\t"
"vstef %%v24,%[sum],0"
: [sum] "=Q"(sum),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
: "cc", "r1", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"vst %%v31, 240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n]; } *) x), "+m"(*(struct { FLOAT x[n]; } *) y),
+ : "+m"(*(FLOAT (*)[n]) x), "+m"(*(FLOAT (*)[n]) y),
[n] "+&r"(n)
: [x] "a"(x),[y] "a"(y)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"wfmaxdb %%v0,%%v0,%%v16,0\n\t"
"ldr %[amax],%%f0"
: [amax] "=f"(amax),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"vsel %%v0,%%v0,%%v16,%%v17\n\t"
"ldr %[amax],%%f0"
: [amax] "=f"(amax),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27");
"wfmindb %%v0,%%v0,%%v16,0\n\t"
"ldr %[amin],%%f0"
: [amin] "=f"(amin),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"vsel %%v0,%%v0,%%v16,%%v17\n\t"
"ldr %[amin],%%f0"
: [amin] "=f"(amin),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27");
"vfadb %%v24,%%v24,%%v25\n\t"
"vsteg %%v24,%[asum],0"
: [asum] "=Q"(asum),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x)
: "cc", "r1", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"vst %%v19,112(%%r1,%[y])\n\t"
"agfi %%r1,128\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x),
- "m"(*(const struct { FLOAT x[2]; } *) alpha),[alpha] "a"(alpha)
+ : "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
+ "m"(*(const FLOAT (*)[2]) alpha),[alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v8", "v9", "v10", "v11", "v12", "v13",
"v14", "v15", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"la %[x],256(%[x])\n\t"
"la %[y],256(%[y])\n\t"
"brctg %[n],0b"
- : "=m"(*(struct { FLOAT x[n * 2]; } *) y),[x] "+&a"(x),[y] "+&a"(y),
+ : "=m"(*(FLOAT (*)[n * 2]) y),[x] "+&a"(x),[y] "+&a"(y),
[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n * 2]; } *) x)
+ : "m"(*(const FLOAT (*)[n * 2]) x)
: "cc");
}
"vsteg %%v24,8(%[d]),1\n\t"
"vsteg %%v25,16(%[d]),1\n\t"
"vsteg %%v25,24(%[d]),0"
- : "=m"(*(struct { FLOAT x[4]; } *) d),[n] "+&r"(n)
- : [d] "a"(d), "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x),
- "m"(*(const struct { FLOAT x[n * 2]; } *) y),[y] "a"(y)
+ : "=m"(*(FLOAT (*)[4]) d),[n] "+&r"(n)
+ : [d] "a"(d), "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
+ "m"(*(const FLOAT (*)[n * 2]) y),[y] "a"(y)
: "cc", "r1", "v0", "v1", "v2", "v3", "v16", "v17", "v18", "v19", "v20",
"v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31");
"vst %%v1,16(%%r1,%[y])\n\t"
"agfi %%r1,32\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap0),[ap0] "a"(ap0),
- "m"(*(const struct { FLOAT x[n * 2]; } *) ap1),[ap1] "a"(ap1),
- "m"(*(const struct { FLOAT x[n * 2]; } *) ap2),[ap2] "a"(ap2),
- "m"(*(const struct { FLOAT x[n * 2]; } *) ap3),[ap3] "a"(ap3),
- "m"(*(const struct { FLOAT x[8]; } *) x),[x] "a"(x)
+ : "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap0),[ap0] "a"(ap0),
+ "m"(*(const FLOAT (*)[n * 2]) ap1),[ap1] "a"(ap1),
+ "m"(*(const FLOAT (*)[n * 2]) ap2),[ap2] "a"(ap2),
+ "m"(*(const FLOAT (*)[n * 2]) ap3),[ap3] "a"(ap3),
+ "m"(*(const FLOAT (*)[8]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31");
"vst %%v1,16(%%r1,%[y])\n\t"
"agfi %%r1,32\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap0),[ap0] "a"(ap0),
- "m"(*(const struct { FLOAT x[n * 2]; } *) ap1),[ap1] "a"(ap1),
- "m"(*(const struct { FLOAT x[4]; } *) x),[x] "a"(x)
+ : "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap0),[ap0] "a"(ap0),
+ "m"(*(const FLOAT (*)[n * 2]) ap1),[ap1] "a"(ap1),
+ "m"(*(const FLOAT (*)[4]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27");
}
"vst %%v1,16(%%r1,%[y])\n\t"
"agfi %%r1,32\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap),[ap] "a"(ap),
- "m"(*(const struct { FLOAT x[2]; } *) x),[x] "a"(x)
+ : "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap),[ap] "a"(ap),
+ "m"(*(const FLOAT (*)[2]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21");
}
"vst %%v31,48(%%r1,%[dest])\n\t"
"agfi %%r1,64\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) dest),[n] "+&r"(n)
- : [dest] "a"(dest), "m"(*(const struct { FLOAT x[n * 2]; } *) src),
+ : "+m"(*(FLOAT (*)[n * 2]) dest),[n] "+&r"(n)
+ : [dest] "a"(dest), "m"(*(const FLOAT (*)[n * 2]) src),
[src] "a"(src),[alpha_r] "Q"(alpha_r),[alpha_i] "Q"(alpha_i)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"vst %%v27,16(%[y])\n\t"
"vst %%v28,32(%[y])\n\t"
"vst %%v29,48(%[y])"
- : "+m"(*(struct { FLOAT x[8]; } *) y),[n] "+&r"(n)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap0),[ap0] "a"(ap0),
- "m"(*(const struct { FLOAT x[n * 2]; } *) ap1),[ap1] "a"(ap1),
- "m"(*(const struct { FLOAT x[n * 2]; } *) ap2),[ap2] "a"(ap2),
- "m"(*(const struct { FLOAT x[n * 2]; } *) ap3),[ap3] "a"(ap3),
- "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x),
- "m"(*(const struct { FLOAT x[2]; } *) alpha),[alpha] "a"(alpha)
+ : "+m"(*(FLOAT (*)[8]) y),[n] "+&r"(n)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap0),[ap0] "a"(ap0),
+ "m"(*(const FLOAT (*)[n * 2]) ap1),[ap1] "a"(ap1),
+ "m"(*(const FLOAT (*)[n * 2]) ap2),[ap2] "a"(ap2),
+ "m"(*(const FLOAT (*)[n * 2]) ap3),[ap3] "a"(ap3),
+ "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
+ "m"(*(const FLOAT (*)[2]) alpha),[alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31");
"vfmadb %%v23,%%v19,%%v21,%%v23\n\t"
"vst %%v22,0(%[y])\n\t"
"vst %%v23,16(%[y])\n\t"
- : "+m"(*(struct { FLOAT x[4]; } *) y),[n] "+&r"(n)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap0),[ap0] "a"(ap0),
- "m"(*(const struct { FLOAT x[n * 2]; } *) ap1),[ap1] "a"(ap1),
- "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x),
- "m"(*(const struct { FLOAT x[2]; } *) alpha),[alpha] "a"(alpha)
+ : "+m"(*(FLOAT (*)[4]) y),[n] "+&r"(n)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap0),[ap0] "a"(ap0),
+ "m"(*(const FLOAT (*)[n * 2]) ap1),[ap1] "a"(ap1),
+ "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
+ "m"(*(const FLOAT (*)[2]) alpha),[alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23");
}
"vfmadb %%v0,%%v16,%%v18,%%v0\n\t"
"vfmadb %%v0,%%v17,%%v19,%%v0\n\t"
"vst %%v0,0(%[y])\n\t"
- : "+m"(*(struct { FLOAT x[2]; } *) y),[n] "+&r"(n)
- : [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap),[ap] "a"(ap),
- "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x),
- "m"(*(const struct { FLOAT x[2]; } *) alpha),[alpha] "a"(alpha)
+ : "+m"(*(FLOAT (*)[2]) y),[n] "+&r"(n)
+ : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap),[ap] "a"(ap),
+ "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
+ "m"(*(const FLOAT (*)[2]) alpha),[alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19");
}
"vst %%v23, 240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) x),
- "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n)
+ : "+m"(*(FLOAT (*)[n * 2]) x),
+ "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
: [x] "a"(x),[y] "a"(y),[c] "Q"(*c),[s] "Q"(*s)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"vst %%v23,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) x),[n] "+&r"(n)
- : [x] "a"(x), "m"(*(const struct { FLOAT x[2]; } *) alpha),
+ : "+m"(*(FLOAT (*)[n * 2]) x),[n] "+&r"(n)
+ : [x] "a"(x), "m"(*(const FLOAT (*)[2]) alpha),
[alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"vst %%v23,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) x),[n] "+&r"(n)
- : [x] "a"(x), "m"(*(const struct { FLOAT x[2]; } *) alpha),
+ : "+m"(*(FLOAT (*)[n * 2]) x),[n] "+&r"(n)
+ : [x] "a"(x), "m"(*(const FLOAT (*)[2]) alpha),
[alpha] "a"(alpha)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23");
"vst %%v23,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) x),[n] "+&r"(n)
- : [x] "a"(x), "m"(*(const struct { FLOAT x[2]; } *) alpha),
+ : "+m"(*(FLOAT (*)[n * 2]) x),[n] "+&r"(n)
+ : [x] "a"(x), "m"(*(const FLOAT (*)[2]) alpha),
[alpha] "a"(alpha)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23");
"vst %%v0,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t"
"brctg %[n],0b"
- : "=m"(*(struct { FLOAT x[n * 2]; } *) x),[n] "+&r"(n)
+ : "=m"(*(FLOAT (*)[n * 2]) x),[n] "+&r"(n)
: [x] "a"(x)
: "cc", "r1", "v0");
}
"vfadb %%v24,%%v24,%%v25\n\t"
"vsteg %%v24,%[sum],0"
: [sum] "=Q"(sum),[n] "+&r"(n)
- : "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x)
+ : "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x)
: "cc", "r1", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
"vst %%v31, 240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t"
"brctg %[n],0b"
- : "+m"(*(struct { FLOAT x[n * 2]; } *) x),
- "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n)
+ : "+m"(*(FLOAT (*)[n * 2]) x),
+ "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
: [x] "a"(x),[y] "a"(y)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",