s390x: avoid variable-length arrays in struct for asm operands

... since it is not required and clang does not support that gcc
extension. Instead, use a variable-length array directly for these
operands.

Note that, while the actual inline assembly code does not directly use
these memory operands, they serve to inform the compiler that it cannot
reorder reads or writes to/from the input and output data across the
inline asm statements.

Signed-off-by: Marius Hillenbrand <mhillen@linux.ibm.com>
This commit is contained in:
Marius Hillenbrand 2020-09-01 12:08:05 +02:00
parent b9b3265ec8
commit 87e5bbd887
71 changed files with 212 additions and 212 deletions

View File

@ -136,7 +136,7 @@ static FLOAT camax_kernel_32(BLASLONG n, FLOAT *x) {
"wfmaxsb %%v0,%%v0,%%v16,0\n\t" "wfmaxsb %%v0,%%v0,%%v16,0\n\t"
"ler %[amax],%%f0" "ler %[amax],%%f0"
: [amax] "=f"(amax),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v1", "v2", "v16", "v17", "v18", "v19", "v20",
"v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31"); "v31");

View File

@ -136,7 +136,7 @@ static FLOAT camin_kernel_32(BLASLONG n, FLOAT *x) {
"wfminsb %%v0,%%v0,%%v16,0\n\t" "wfminsb %%v0,%%v0,%%v16,0\n\t"
"ler %[amin],%%f0" "ler %[amin],%%f0"
: [amin] "=f"(amin),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v1", "v2", "v16", "v17", "v18", "v19", "v20",
"v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31"); "v31");

View File

@ -108,7 +108,7 @@ static FLOAT casum_kernel_32(BLASLONG n, FLOAT *x) {
"vfasb %%v24,%%v24,%%v25\n\t" "vfasb %%v24,%%v24,%%v25\n\t"
"vstef %%v24,%[asum],0" "vstef %%v24,%[asum],0"
: [asum] "=Q"(asum),[n] "+&r"(n) : [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", : "cc", "r1", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -99,9 +99,9 @@ static void caxpy_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) {
"vst %%v19,112(%%r1,%[y])\n\t" "vst %%v19,112(%%r1,%[y])\n\t"
"agfi %%r1,128\n\t" "agfi %%r1,128\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n) : "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x), : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
"m"(*(const struct { FLOAT x[2]; } *) alpha),[alpha] "a"(alpha) "m"(*(const FLOAT (*)[2]) alpha),[alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v8", "v9", "v10", "v11", "v12", "v13", : "cc", "r1", "v0", "v1", "v8", "v9", "v10", "v11", "v12", "v13",
"v14", "v15", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v14", "v15", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -36,9 +36,9 @@ static void ccopy_kernel_32(BLASLONG n, FLOAT *x, FLOAT *y) {
"la %[x],256(%[x])\n\t" "la %[x],256(%[x])\n\t"
"la %[y],256(%[y])\n\t" "la %[y],256(%[y])\n\t"
"brctg %[n],0b" "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) [n] "+&r"(n)
: "m"(*(const struct { FLOAT x[n * 2]; } *) x) : "m"(*(const FLOAT (*)[n * 2]) x)
: "cc"); : "cc");
} }

View File

@ -97,9 +97,9 @@ static void cdot_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *d) {
"vstef %%v24,4(%[d]),1\n\t" "vstef %%v24,4(%[d]),1\n\t"
"vstef %%v25,8(%[d]),1\n\t" "vstef %%v25,8(%[d]),1\n\t"
"vstef %%v25,12(%[d]),0" "vstef %%v25,12(%[d]),0"
: "=m"(*(struct { FLOAT x[4]; } *) d),[n] "+&r"(n) : "=m"(*(FLOAT (*)[4]) d),[n] "+&r"(n)
: [d] "a"(d), "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x), : [d] "a"(d), "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
"m"(*(const struct { FLOAT x[n * 2]; } *) y),[y] "a"(y) "m"(*(const FLOAT (*)[n * 2]) y),[y] "a"(y)
: "cc", "r1", "v0", "v1", "v2", "v3", "v16", "v17", "v18", "v19", "v20", : "cc", "r1", "v0", "v1", "v2", "v3", "v16", "v17", "v18", "v19", "v20",
"v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31"); "v31");

View File

@ -146,12 +146,12 @@ static void cgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y) {
"vst %%v0,0(%%r1,%[y])\n\t" "vst %%v0,0(%%r1,%[y])\n\t"
"agfi %%r1,16\n\t" "agfi %%r1,16\n\t"
"brctg %[n],0b\n\t" "brctg %[n],0b\n\t"
: "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n) : "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap0),[ap0] "a"(ap0), : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap0),[ap0] "a"(ap0),
"m"(*(const struct { FLOAT x[n * 2]; } *) ap1),[ap1] "a"(ap1), "m"(*(const FLOAT (*)[n * 2]) ap1),[ap1] "a"(ap1),
"m"(*(const struct { FLOAT x[n * 2]; } *) ap2),[ap2] "a"(ap2), "m"(*(const FLOAT (*)[n * 2]) ap2),[ap2] "a"(ap2),
"m"(*(const struct { FLOAT x[n * 2]; } *) ap3),[ap3] "a"(ap3), "m"(*(const FLOAT (*)[n * 2]) ap3),[ap3] "a"(ap3),
"m"(*(const struct { FLOAT x[8]; } *) x),[x] "a"(x) "m"(*(const FLOAT (*)[8]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v16", "v17", "v18", "v19", "v20", : "cc", "r1", "v0", "v1", "v2", "v16", "v17", "v18", "v19", "v20",
"v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31"); "v31");
@ -238,10 +238,10 @@ static void cgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y) {
"vst %%v0,0(%%r1,%[y])\n\t" "vst %%v0,0(%%r1,%[y])\n\t"
"agfi %%r1,16\n\t" "agfi %%r1,16\n\t"
"brctg %[n],0b\n\t" "brctg %[n],0b\n\t"
: "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n) : "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap0),[ap0] "a"(ap0), : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap0),[ap0] "a"(ap0),
"m"(*(const struct { FLOAT x[n * 2]; } *) ap1),[ap1] "a"(ap1), "m"(*(const FLOAT (*)[n * 2]) ap1),[ap1] "a"(ap1),
"m"(*(const struct { FLOAT x[4]; } *) x),[x] "a"(x) "m"(*(const FLOAT (*)[4]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v16", "v17", "v18", "v19", "v20", : "cc", "r1", "v0", "v1", "v2", "v16", "v17", "v18", "v19", "v20",
"v21", "v22", "v23"); "v21", "v22", "v23");
} }
@ -307,9 +307,9 @@ static void cgemv_kernel_4x1(BLASLONG n, FLOAT *ap, FLOAT *x, FLOAT *y) {
"vst %%v0,0(%%r1,%[y])\n\t" "vst %%v0,0(%%r1,%[y])\n\t"
"agfi %%r1,16\n\t" "agfi %%r1,16\n\t"
"brctg %[n],0b\n\t" "brctg %[n],0b\n\t"
: "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n) : "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap),[ap] "a"(ap), : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap),[ap] "a"(ap),
"m"(*(const struct { FLOAT x[2]; } *) x),[x] "a"(x) "m"(*(const FLOAT (*)[2]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v2", "v16", "v17", "v18", "v19"); : "cc", "r1", "v0", "v1", "v2", "v16", "v17", "v18", "v19");
} }
@ -350,8 +350,8 @@ static void add_y_4(BLASLONG n, FLOAT *src, FLOAT *dest, FLOAT alpha_r,
"vst %%v23,16(%%r1,%[dest])\n\t" "vst %%v23,16(%%r1,%[dest])\n\t"
"agfi %%r1,32\n\t" "agfi %%r1,32\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n * 2]; } *) dest),[n] "+&r"(n) : "+m"(*(FLOAT (*)[n * 2]) dest),[n] "+&r"(n)
: [dest] "a"(dest), "m"(*(const struct { FLOAT x[n * 2]; } *) src), : [dest] "a"(dest), "m"(*(const FLOAT (*)[n * 2]) src),
[src] "a"(src),[alpha_r] "Q"(alpha_r),[alpha_i] "Q"(alpha_i) [src] "a"(src),[alpha_r] "Q"(alpha_r),[alpha_i] "Q"(alpha_i)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21", : "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23"); "v22", "v23");

View File

@ -159,13 +159,13 @@ static void cgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
"vfmasb %%v23,%%v19,%%v21,%%v23\n\t" "vfmasb %%v23,%%v19,%%v21,%%v23\n\t"
"vst %%v22,0(%[y])\n\t" "vst %%v22,0(%[y])\n\t"
"vst %%v23,16(%[y])" "vst %%v23,16(%[y])"
: "+m"(*(struct { FLOAT x[8]; } *) y),[n] "+&r"(n) : "+m"(*(FLOAT (*)[8]) y),[n] "+&r"(n)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap0),[ap0] "a"(ap0), : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap0),[ap0] "a"(ap0),
"m"(*(const struct { FLOAT x[n * 2]; } *) ap1),[ap1] "a"(ap1), "m"(*(const FLOAT (*)[n * 2]) ap1),[ap1] "a"(ap1),
"m"(*(const struct { FLOAT x[n * 2]; } *) ap2),[ap2] "a"(ap2), "m"(*(const FLOAT (*)[n * 2]) ap2),[ap2] "a"(ap2),
"m"(*(const struct { FLOAT x[n * 2]; } *) ap3),[ap3] "a"(ap3), "m"(*(const FLOAT (*)[n * 2]) ap3),[ap3] "a"(ap3),
"m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x), "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
"m"(*(const struct { FLOAT x[2]; } *) alpha),[alpha] "a"(alpha) "m"(*(const FLOAT (*)[2]) alpha),[alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v2", "v3", "v16", "v17", "v18", "v19", "v20", : "cc", "r1", "v0", "v1", "v2", "v3", "v16", "v17", "v18", "v19", "v20",
"v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31"); "v31");
@ -271,11 +271,11 @@ static void cgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
"vfmasb %%v20,%%v16,%%v18,%%v20\n\t" "vfmasb %%v20,%%v16,%%v18,%%v20\n\t"
"vfmasb %%v20,%%v17,%%v19,%%v20\n\t" "vfmasb %%v20,%%v17,%%v19,%%v20\n\t"
"vst %%v20,0(%[y])" "vst %%v20,0(%[y])"
: "+m"(*(struct { FLOAT x[4]; } *) y),[n] "+&r"(n) : "+m"(*(FLOAT (*)[4]) y),[n] "+&r"(n)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap0),[ap0] "a"(ap0), : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap0),[ap0] "a"(ap0),
"m"(*(const struct { FLOAT x[n * 2]; } *) ap1),[ap1] "a"(ap1), "m"(*(const FLOAT (*)[n * 2]) ap1),[ap1] "a"(ap1),
"m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x), "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
"m"(*(const struct { FLOAT x[2]; } *) alpha),[alpha] "a"(alpha) "m"(*(const FLOAT (*)[2]) alpha),[alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v2", "v3", "v16", "v17", "v18", "v19", "v20", : "cc", "r1", "v0", "v1", "v2", "v3", "v16", "v17", "v18", "v19", "v20",
"v21", "v22", "v23"); "v21", "v22", "v23");
} }
@ -361,10 +361,10 @@ static void cgemv_kernel_4x1(BLASLONG n, FLOAT *ap, FLOAT *x, FLOAT *y,
"vfmasb %%v0,%%v16,%%v18,%%v0\n\t" "vfmasb %%v0,%%v16,%%v18,%%v0\n\t"
"vfmasb %%v0,%%v17,%%v19,%%v0\n\t" "vfmasb %%v0,%%v17,%%v19,%%v0\n\t"
"vsteg %%v0,0(%[y]),0" "vsteg %%v0,0(%[y]),0"
: "+m"(*(struct { FLOAT x[2]; } *) y),[n] "+&r"(n) : "+m"(*(FLOAT (*)[2]) y),[n] "+&r"(n)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap),[ap] "a"(ap), : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap),[ap] "a"(ap),
"m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x), "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
"m"(*(const struct { FLOAT x[2]; } *) alpha),[alpha] "a"(alpha) "m"(*(const FLOAT (*)[2]) alpha),[alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v2", "v3", "v16", "v17", "v18", "v19"); : "cc", "r1", "v0", "v1", "v2", "v3", "v16", "v17", "v18", "v19");
} }

View File

@ -169,8 +169,8 @@ static void crot_kernel_32(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *c, FLOAT *s) {
"vst %%v23, 240(%%r1,%[y])\n\t" "vst %%v23, 240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t" "agfi %%r1,256\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n * 2]; } *) x), : "+m"(*(FLOAT (*)[n * 2]) x),
"+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n) "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
: [x] "a"(x),[y] "a"(y),[c] "Q"(*c),[s] "Q"(*s) : [x] "a"(x),[y] "a"(y),[c] "Q"(*c),[s] "Q"(*s)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21", : "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",

View File

@ -80,8 +80,8 @@ static void cscal_kernel_16(BLASLONG n, FLOAT *alpha, FLOAT *x) {
"vst %%v23,112(%%r1,%[x])\n\t" "vst %%v23,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t" "agfi %%r1,128\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n * 2]; } *) x),[n] "+&r"(n) : "+m"(*(FLOAT (*)[n * 2]) x),[n] "+&r"(n)
: [x] "a"(x), "m"(*(const struct { FLOAT x[2]; } *) alpha), : [x] "a"(x), "m"(*(const FLOAT (*)[2]) alpha),
[alpha] "a"(alpha) [alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21", : "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
@ -132,8 +132,8 @@ static void cscal_kernel_16_zero_r(BLASLONG n, FLOAT *alpha, FLOAT *x) {
"vst %%v23,112(%%r1,%[x])\n\t" "vst %%v23,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t" "agfi %%r1,128\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n * 2]; } *) x),[n] "+&r"(n) : "+m"(*(FLOAT (*)[n * 2]) x),[n] "+&r"(n)
: [x] "a"(x), "m"(*(const struct { FLOAT x[2]; } *) alpha), : [x] "a"(x), "m"(*(const FLOAT (*)[2]) alpha),
[alpha] "a"(alpha) [alpha] "a"(alpha)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23"); "v23");
@ -171,8 +171,8 @@ static void cscal_kernel_16_zero_i(BLASLONG n, FLOAT *alpha, FLOAT *x) {
"vst %%v23,112(%%r1,%[x])\n\t" "vst %%v23,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t" "agfi %%r1,128\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n * 2]; } *) x),[n] "+&r"(n) : "+m"(*(FLOAT (*)[n * 2]) x),[n] "+&r"(n)
: [x] "a"(x), "m"(*(const struct { FLOAT x[2]; } *) alpha), : [x] "a"(x), "m"(*(const FLOAT (*)[2]) alpha),
[alpha] "a"(alpha) [alpha] "a"(alpha)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23"); "v23");
@ -194,7 +194,7 @@ static void cscal_kernel_16_zero(BLASLONG n, FLOAT *x) {
"vst %%v0,112(%%r1,%[x])\n\t" "vst %%v0,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t" "agfi %%r1,128\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "=m"(*(struct { FLOAT x[n * 2]; } *) x),[n] "+&r"(n) : "=m"(*(FLOAT (*)[n * 2]) x),[n] "+&r"(n)
: [x] "a"(x) : [x] "a"(x)
: "cc", "r1", "v0"); : "cc", "r1", "v0");
} }

View File

@ -90,7 +90,7 @@ static FLOAT csum_kernel_32(BLASLONG n, FLOAT *x) {
"vfasb %%v24,%%v24,%%v25\n\t" "vfasb %%v24,%%v24,%%v25\n\t"
"vstef %%v24,%[sum],0" "vstef %%v24,%[sum],0"
: [sum] "=Q"(sum),[n] "+&r"(n) : [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", : "cc", "r1", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -99,8 +99,8 @@ static void cswap_kernel_32(BLASLONG n, FLOAT *x, FLOAT *y) {
"vst %%v31, 240(%%r1,%[y])\n\t" "vst %%v31, 240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t" "agfi %%r1,256\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n * 2]; } *) x), : "+m"(*(FLOAT (*)[n * 2]) x),
"+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n) "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
: [x] "a"(x),[y] "a"(y) : [x] "a"(x),[y] "a"(y)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16", : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",

View File

@ -76,7 +76,7 @@ static FLOAT damax_kernel_32(BLASLONG n, FLOAT *x) {
"wfmaxdb %%v0,%%v0,%%v16,8\n\t" "wfmaxdb %%v0,%%v0,%%v16,8\n\t"
"lpdr %[amax],%%f0" "lpdr %[amax],%%f0"
: [amax] "=f"(amax),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -110,7 +110,7 @@ static FLOAT damax_kernel_32(BLASLONG n, FLOAT *x) {
"vsel %%v0,%%v0,%%v16,%%v17\n\t" "vsel %%v0,%%v0,%%v16,%%v17\n\t"
"ldr %[amax],%%f0" "ldr %[amax],%%f0"
: [amax] "=f"(amax),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -76,7 +76,7 @@ static FLOAT damin_kernel_32(BLASLONG n, FLOAT *x) {
"wfmindb %%v0,%%v0,%%v16,8\n\t" "wfmindb %%v0,%%v0,%%v16,8\n\t"
"lpdr %[amin],%%f0" "lpdr %[amin],%%f0"
: [amin] "=f"(amin),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -110,7 +110,7 @@ static FLOAT damin_kernel_32(BLASLONG n, FLOAT *x) {
"vsel %%v0,%%v0,%%v16,%%v17\n\t" "vsel %%v0,%%v0,%%v16,%%v17\n\t"
"ldr %[amin],%%f0" "ldr %[amin],%%f0"
: [amin] "=f"(amin),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -106,7 +106,7 @@ static FLOAT dasum_kernel_32(BLASLONG n, FLOAT *x) {
"vfadb %%v24,%%v24,%%v25\n\t" "vfadb %%v24,%%v24,%%v25\n\t"
"vsteg %%v24,%[asum],0" "vsteg %%v24,%[asum],0"
: [asum] "=Q"(asum),[n] "+&r"(n) : [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", : "cc", "r1", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -100,8 +100,8 @@ static void daxpy_kernel_32(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) {
"vst %%v27,240(%%r1,%[y])\n\t" "vst %%v27,240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t" "agfi %%r1,256\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n]; } *) y),[n] "+&r"(n) : "+m"(*(FLOAT (*)[n]) y),[n] "+&r"(n)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x), : [y] "a"(y), "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),
[alpha] "Q"(*alpha) [alpha] "Q"(*alpha)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -36,8 +36,8 @@ static void dcopy_kernel_32(BLASLONG n, FLOAT *x, FLOAT *y) {
"la %[x],256(%[x])\n\t" "la %[x],256(%[x])\n\t"
"la %[y],256(%[y])\n\t" "la %[y],256(%[y])\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "=m"(*(struct { FLOAT x[n]; } *) y),[x] "+&a"(x),[y] "+&a"(y),[n] "+&r"(n) : "=m"(*(FLOAT (*)[n]) y),[x] "+&a"(x),[y] "+&a"(y),[n] "+&r"(n)
: "m"(*(const struct { FLOAT x[n]; } *) x) : "m"(*(const FLOAT (*)[n]) x)
: "cc"); : "cc");
} }

View File

@ -80,8 +80,8 @@ static FLOAT ddot_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y) {
"adbr %%f0,%%f1\n\t" "adbr %%f0,%%f1\n\t"
"ldr %[dot],%%f0" "ldr %[dot],%%f0"
: [dot] "=f"(dot),[n] "+&r"(n) : [dot] "=f"(dot),[n] "+&r"(n)
: "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x), : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),
"m"(*(const struct { FLOAT x[n]; } *) y),[y] "a"(y) "m"(*(const FLOAT (*)[n]) y),[y] "a"(y)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16", : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31"); "v27", "v28", "v29", "v30", "v31");

View File

@ -170,12 +170,12 @@ static void dgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
"brctg %%r0,2b\n\t" "brctg %%r0,2b\n\t"
"3:\n\t" "3:\n\t"
"nop 0" "nop 0"
: "+m"(*(struct { FLOAT x[n]; } *) y) : "+m"(*(FLOAT (*)[n]) y)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0), : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
"m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1), "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
"m"(*(const struct { FLOAT x[n]; } *) ap2),[ap2] "a"(ap2), "m"(*(const FLOAT (*)[n]) ap2),[ap2] "a"(ap2),
"m"(*(const struct { FLOAT x[n]; } *) ap3),[ap3] "a"(ap3), "m"(*(const FLOAT (*)[n]) ap3),[ap3] "a"(ap3),
"m"(*(const struct { FLOAT x[4]; } *) x),[x] "a"(x),[alpha] "Q"(*alpha), "m"(*(const FLOAT (*)[4]) x),[x] "a"(x),[alpha] "Q"(*alpha),
[n] "r"(n) [n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", : "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
@ -275,10 +275,10 @@ static void dgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
"brctg %%r0,2b\n\t" "brctg %%r0,2b\n\t"
"3:\n\t" "3:\n\t"
"nop 0" "nop 0"
: "+m"(*(struct { FLOAT x[n]; } *) y) : "+m"(*(FLOAT (*)[n]) y)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0), : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
"m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1), "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
"m"(*(const struct { FLOAT x[2]; } *) x),[x] "a"(x),[alpha] "Q"(*alpha), "m"(*(const FLOAT (*)[2]) x),[x] "a"(x),[alpha] "Q"(*alpha),
[n] "r"(n) [n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", : "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v8", "v9", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v8", "v9", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
@ -352,8 +352,8 @@ static void dgemv_kernel_4x1(BLASLONG n, FLOAT *a0, FLOAT *x, FLOAT *y,
"brctg %%r0,2b\n\t" "brctg %%r0,2b\n\t"
"3:\n\t" "3:\n\t"
"nop 0" "nop 0"
: "+m"(*(struct { FLOAT x[n]; } *) y) : "+m"(*(FLOAT (*)[n]) y)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) a0),[a0] "a"(a0), : [y] "a"(y), "m"(*(const FLOAT (*)[n]) a0),[a0] "a"(a0),
"m"(*(const FLOAT (*)[1]) x),[x] "a"(x),[alpha] "Q"(*alpha), "m"(*(const FLOAT (*)[1]) x),[x] "a"(x),[alpha] "Q"(*alpha),
[n] "r"(n) [n] "r"(n)
: "cc", "r0", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", : "cc", "r0", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21",

View File

@ -173,12 +173,12 @@ static void dgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y) {
"vrepg %%v4,%%v3,1\n\t" "vrepg %%v4,%%v3,1\n\t"
"adbr %%f3,%%f4\n\t" "adbr %%f3,%%f4\n\t"
"std %%f3,24(%[y])" "std %%f3,24(%[y])"
: "=m"(*(struct { FLOAT x[4]; } *) y) : "=m"(*(FLOAT (*)[4]) y)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0), : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
"m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1), "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
"m"(*(const struct { FLOAT x[n]; } *) ap2),[ap2] "a"(ap2), "m"(*(const FLOAT (*)[n]) ap2),[ap2] "a"(ap2),
"m"(*(const struct { FLOAT x[n]; } *) ap3),[ap3] "a"(ap3), "m"(*(const FLOAT (*)[n]) ap3),[ap3] "a"(ap3),
"m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x),[n] "r"(n) "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),[n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", : "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
"v26", "v27", "v28", "v29", "v30", "v31"); "v26", "v27", "v28", "v29", "v30", "v31");
@ -280,10 +280,10 @@ static void dgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y) {
"vrepg %%v2,%%v1,1\n\t" "vrepg %%v2,%%v1,1\n\t"
"adbr %%f1,%%f2\n\t" "adbr %%f1,%%f2\n\t"
"std %%f1,8(%[y])" "std %%f1,8(%[y])"
: "=m"(*(struct { FLOAT x[2]; } *) y) : "=m"(*(FLOAT (*)[2]) y)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0), : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
"m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1), "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
"m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x),[n] "r"(n) "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),[n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", : "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
"v26", "v27", "v28", "v29", "v30", "v31"); "v26", "v27", "v28", "v29", "v30", "v31");
@ -360,8 +360,8 @@ static void dgemv_kernel_4x1(BLASLONG n, FLOAT *a0, FLOAT *x, FLOAT *y) {
"adbr %%f0,%%f1\n\t" "adbr %%f0,%%f1\n\t"
"std %%f0,0(%[y])" "std %%f0,0(%[y])"
: "=m"(*(FLOAT (*)[1]) y) : "=m"(*(FLOAT (*)[1]) y)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) a0),[a0] "a"(a0), : [y] "a"(y), "m"(*(const FLOAT (*)[n]) a0),[a0] "a"(a0),
"m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x),[n] "r"(n) "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),[n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", : "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
"v26", "v27", "v28", "v29", "v30", "v31"); "v26", "v27", "v28", "v29", "v30", "v31");
@ -439,8 +439,8 @@ static void add_y_kernel_4(BLASLONG n, FLOAT da, FLOAT *src, FLOAT *dest) {
"brctg %%r0,2b\n\t" "brctg %%r0,2b\n\t"
"3:\n\t" "3:\n\t"
"nop 0" "nop 0"
: "+m"(*(struct { FLOAT x[n]; } *) dest) : "+m"(*(FLOAT (*)[n]) dest)
: [dest] "a"(dest),[da] "Q"(da), "m"(*(const struct { FLOAT x[n]; } *) src), : [dest] "a"(dest),[da] "Q"(da), "m"(*(const FLOAT (*)[n]) src),
[src] "a"(src),[n] "r"(n) [src] "a"(src),[n] "r"(n)
: "cc", "r0", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", : "cc", "r0", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",

View File

@ -73,7 +73,7 @@ static FLOAT dmax_kernel_32(BLASLONG n, FLOAT *x) {
"wfmaxdb %%v0,%%v0,%%v16,0\n\t" "wfmaxdb %%v0,%%v0,%%v16,0\n\t"
"ldr %[max],%%f0" "ldr %[max],%%f0"
: [max] "=f"(max),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -90,7 +90,7 @@ static FLOAT dmax_kernel_32(BLASLONG n, FLOAT *x) {
"vsel %%v0,%%v0,%%v16,%%v17\n\t" "vsel %%v0,%%v0,%%v16,%%v17\n\t"
"ldr %[max],%%f0" "ldr %[max],%%f0"
: [max] "=f"(max),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -73,7 +73,7 @@ static FLOAT dmin_kernel_32(BLASLONG n, FLOAT *x) {
"wfmindb %%v0,%%v0,%%v16,0\n\t" "wfmindb %%v0,%%v0,%%v16,0\n\t"
"ldr %[min],%%f0" "ldr %[min],%%f0"
: [min] "=f"(min),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -90,7 +90,7 @@ static FLOAT dmin_kernel_32(BLASLONG n, FLOAT *x) {
"vsel %%v0,%%v0,%%v16,%%v17\n\t" "vsel %%v0,%%v0,%%v16,%%v17\n\t"
"ldr %[min],%%f0" "ldr %[min],%%f0"
: [min] "=f"(min),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -169,7 +169,7 @@ static void drot_kernel_32(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *c, FLOAT *s) {
"vst %%v23, 240(%%r1,%[y])\n\t" "vst %%v23, 240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t" "agfi %%r1,256\n\t"
"brctg %[n],0b" "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) [n] "+&r"(n)
: [x] "a"(x),[y] "a"(y),[c] "Q"(*c),[s] "Q"(*s) : [x] "a"(x),[y] "a"(y),[c] "Q"(*c),[s] "Q"(*s)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21", : "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",

View File

@ -59,7 +59,7 @@ static void dscal_kernel_16(BLASLONG n, FLOAT da, FLOAT *x) {
"vst %%v31,112(%%r1,%[x])\n\t" "vst %%v31,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t" "agfi %%r1,128\n\t"
"brctg %[n],0b" "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) : [x] "a"(x),[da] "Q"(da)
: "cc", "r1", "v0", "v24", "v25", "v26", "v27", "v28", "v29", "v30", : "cc", "r1", "v0", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31"); "v31");
@ -81,7 +81,7 @@ static void dscal_kernel_16_zero(BLASLONG n, FLOAT *x) {
"vst %%v0,112(%%r1,%[x])\n\t" "vst %%v0,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t" "agfi %%r1,128\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "=m"(*(struct { FLOAT x[n]; } *) x),[n] "+&r"(n) : "=m"(*(FLOAT (*)[n]) x),[n] "+&r"(n)
: [x] "a"(x) : [x] "a"(x)
: "cc", "r1", "v0"); : "cc", "r1", "v0");
} }

View File

@ -112,8 +112,8 @@ static double dsdot_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y) {
"adbr %%f0,%%f1\n\t" "adbr %%f0,%%f1\n\t"
"ldr %[dot],%%f0" "ldr %[dot],%%f0"
: [dot] "=f"(dot),[n] "+&r"(n) : [dot] "=f"(dot),[n] "+&r"(n)
: "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x), : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),
"m"(*(const struct { FLOAT x[n]; } *) y),[y] "a"(y) "m"(*(const FLOAT (*)[n]) y),[y] "a"(y)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16", : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31"); "v27", "v28", "v29", "v30", "v31");

View File

@ -88,7 +88,7 @@ static FLOAT dsum_kernel_32(BLASLONG n, FLOAT *x) {
"vfadb %%v24,%%v24,%%v25\n\t" "vfadb %%v24,%%v24,%%v25\n\t"
"vsteg %%v24,%[sum],0" "vsteg %%v24,%[sum],0"
: [sum] "=Q"(sum),[n] "+&r"(n) : [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", : "cc", "r1", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -99,7 +99,7 @@ static void dswap_kernel_32(BLASLONG n, FLOAT *x, FLOAT *y) {
"vst %%v31, 240(%%r1,%[y])\n\t" "vst %%v31, 240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t" "agfi %%r1,256\n\t"
"brctg %[n],0b" "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) [n] "+&r"(n)
: [x] "a"(x),[y] "a"(y) : [x] "a"(x),[y] "a"(y)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16", : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",

View File

@ -215,7 +215,7 @@ static BLASLONG icamax_kernel_32(BLASLONG n, FLOAT *x, FLOAT *amax) {
"2:\n\t" "2:\n\t"
"nop 0" "nop 0"
: [iamax] "=r"(iamax),[amax] "=Q"(*amax),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8",
"v9", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v9", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24",
"v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -215,7 +215,7 @@ static BLASLONG icamin_kernel_32(BLASLONG n, FLOAT *x, FLOAT *amin) {
"2:\n\t" "2:\n\t"
"nop 0" "nop 0"
: [iamin] "=r"(iamin),[amin] "=Q"(*amin),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8",
"v9", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v9", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24",
"v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -162,7 +162,7 @@ static BLASLONG idamax_kernel_32(BLASLONG n, FLOAT *x, FLOAT *amax) {
"2:\n\t" "2:\n\t"
"nop 0" "nop 0"
: [iamax] "=r"(iamax),[amax] "=Q"(*amax),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31"); "v27", "v28", "v29", "v30", "v31");

View File

@ -162,7 +162,7 @@ static BLASLONG idamin_kernel_32(BLASLONG n, FLOAT *x, FLOAT *amin) {
"2:\n\t" "2:\n\t"
"nop 0" "nop 0"
: [iamin] "=r"(iamin),[amin] "=Q"(*amin),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31"); "v27", "v28", "v29", "v30", "v31");

View File

@ -142,7 +142,7 @@ static BLASLONG idmax_kernel_32(BLASLONG n, FLOAT *x, FLOAT *max) {
"2:\n\t" "2:\n\t"
"nop 0" "nop 0"
: [imax] "=r"(imax),[max] "=Q"(*max),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31"); "v27", "v28", "v29", "v30", "v31");

View File

@ -142,7 +142,7 @@ static BLASLONG idmin_kernel_32(BLASLONG n, FLOAT *x, FLOAT *min) {
"2:\n\t" "2:\n\t"
"nop 0" "nop 0"
: [imin] "=r"(imin),[min] "=Q"(*min),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31"); "v27", "v28", "v29", "v30", "v31");

View File

@ -206,7 +206,7 @@ static BLASLONG isamax_kernel_64(BLASLONG n, FLOAT *x, FLOAT *amax) {
"2:\n\t" "2:\n\t"
"nop 0" "nop 0"
: [iamax] "=r"(iamax),[amax] "=Q"(*amax),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v1", "v2", "v4", "v5", "v6", "v7", "v8", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31"); "v27", "v28", "v29", "v30", "v31");

View File

@ -206,7 +206,7 @@ static BLASLONG isamin_kernel_64(BLASLONG n, FLOAT *x, FLOAT *amin) {
"2:\n\t" "2:\n\t"
"nop 0" "nop 0"
: [iamin] "=r"(iamin),[amin] "=Q"(*amin),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v1", "v2", "v4", "v5", "v6", "v7", "v8", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31"); "v27", "v28", "v29", "v30", "v31");

View File

@ -186,7 +186,7 @@ static BLASLONG ismax_kernel_64(BLASLONG n, FLOAT *x, FLOAT *max) {
"2:\n\t" "2:\n\t"
"nop 0" "nop 0"
: [imax] "=r"(imax),[max] "=Q"(*max),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v1", "v2", "v4", "v5", "v6", "v7", "v8", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31"); "v27", "v28", "v29", "v30", "v31");

View File

@ -186,7 +186,7 @@ static BLASLONG ismin_kernel_64(BLASLONG n, FLOAT *x, FLOAT *min) {
"2:\n\t" "2:\n\t"
"nop 0" "nop 0"
: [imin] "=r"(imin),[min] "=Q"(*min),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v1", "v2", "v4", "v5", "v6", "v7", "v8", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31"); "v27", "v28", "v29", "v30", "v31");

View File

@ -159,7 +159,7 @@ static BLASLONG izamax_kernel_16(BLASLONG n, FLOAT *x, FLOAT *amax) {
"2:\n\t" "2:\n\t"
"nop 0" "nop 0"
: [iamax] "=r"(iamax),[amax] "=Q"(*amax),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v16", "v17", "v18",
"v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v27"); "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v27");

View File

@ -159,7 +159,7 @@ static BLASLONG izamin_kernel_16(BLASLONG n, FLOAT *x, FLOAT *amin) {
"2:\n\t" "2:\n\t"
"nop 0" "nop 0"
: [iamin] "=r"(iamin),[amin] "=Q"(*amin),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v16", "v17", "v18",
"v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v27"); "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v27");

View File

@ -78,7 +78,7 @@ static FLOAT samax_kernel_64(BLASLONG n, FLOAT *x) {
"wfmaxsb %%v0,%%v0,%%v16,8\n\t" "wfmaxsb %%v0,%%v0,%%v16,8\n\t"
"lper %[amax],%%f0" "lper %[amax],%%f0"
: [amax] "=f"(amax),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -78,7 +78,7 @@ static FLOAT samin_kernel_64(BLASLONG n, FLOAT *x) {
"wfminsb %%v0,%%v0,%%v16,8\n\t" "wfminsb %%v0,%%v0,%%v16,8\n\t"
"lper %[amin],%%f0" "lper %[amin],%%f0"
: [amin] "=f"(amin),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -108,7 +108,7 @@ static FLOAT sasum_kernel_64(BLASLONG n, FLOAT *x) {
"vfasb %%v24,%%v24,%%v25\n\t" "vfasb %%v24,%%v24,%%v25\n\t"
"vstef %%v24,%[asum],0" "vstef %%v24,%[asum],0"
: [asum] "=Q"(asum),[n] "+&r"(n) : [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", : "cc", "r1", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -100,8 +100,8 @@ static void saxpy_kernel_64(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) {
"vst %%v27,240(%%r1,%[y])\n\t" "vst %%v27,240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t" "agfi %%r1,256\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n]; } *) y),[n] "+&r"(n) : "+m"(*(FLOAT (*)[n]) y),[n] "+&r"(n)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x), : [y] "a"(y), "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),
[alpha] "Q"(*alpha) [alpha] "Q"(*alpha)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -36,8 +36,8 @@ static void scopy_kernel_64(BLASLONG n, FLOAT *x, FLOAT *y) {
"la %[x],256(%[x])\n\t" "la %[x],256(%[x])\n\t"
"la %[y],256(%[y])\n\t" "la %[y],256(%[y])\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "=m"(*(struct { FLOAT x[n]; } *) y),[x] "+&a"(x),[y] "+&a"(y),[n] "+&r"(n) : "=m"(*(FLOAT (*)[n]) y),[x] "+&a"(x),[y] "+&a"(y),[n] "+&r"(n)
: "m"(*(const struct { FLOAT x[n]; } *) x) : "m"(*(const FLOAT (*)[n]) x)
: "cc"); : "cc");
} }

View File

@ -84,8 +84,8 @@ static FLOAT sdot_kernel_32(BLASLONG n, FLOAT *x, FLOAT *y) {
"aebr %%f0,%%f3\n\t" "aebr %%f0,%%f3\n\t"
"ler %[dot],%%f0" "ler %[dot],%%f0"
: [dot] "=f"(dot),[n] "+&r"(n) : [dot] "=f"(dot),[n] "+&r"(n)
: "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x), : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),
"m"(*(const struct { FLOAT x[n]; } *) y),[y] "a"(y) "m"(*(const FLOAT (*)[n]) y),[y] "a"(y)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16", : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
"v27", "v28", "v29", "v30", "v31"); "v27", "v28", "v29", "v30", "v31");

View File

@ -160,12 +160,12 @@ static void sgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
"brctg %%r0,2b\n\t" "brctg %%r0,2b\n\t"
"3:\n\t" "3:\n\t"
"nop 0" "nop 0"
: "+m"(*(struct { FLOAT x[n]; } *) y) : "+m"(*(FLOAT (*)[n]) y)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0), : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
"m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1), "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
"m"(*(const struct { FLOAT x[n]; } *) ap2),[ap2] "a"(ap2), "m"(*(const FLOAT (*)[n]) ap2),[ap2] "a"(ap2),
"m"(*(const struct { FLOAT x[n]; } *) ap3),[ap3] "a"(ap3), "m"(*(const FLOAT (*)[n]) ap3),[ap3] "a"(ap3),
"m"(*(const struct { FLOAT x[4]; } *) x),[x] "a"(x),[alpha] "Q"(*alpha), "m"(*(const FLOAT (*)[4]) x),[x] "a"(x),[alpha] "Q"(*alpha),
[n] "r"(n) [n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", : "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
@ -259,10 +259,10 @@ static void sgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
"brctg %%r0,2b\n\t" "brctg %%r0,2b\n\t"
"3:\n\t" "3:\n\t"
"nop 0" "nop 0"
: "+m"(*(struct { FLOAT x[n]; } *) y) : "+m"(*(FLOAT (*)[n]) y)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0), : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
"m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1), "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
"m"(*(const struct { FLOAT x[2]; } *) x),[x] "a"(x),[alpha] "Q"(*alpha), "m"(*(const FLOAT (*)[2]) x),[x] "a"(x),[alpha] "Q"(*alpha),
[n] "r"(n) [n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", : "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v8", "v9", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v8", "v9", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
@ -332,8 +332,8 @@ static void sgemv_kernel_4x1(BLASLONG n, FLOAT *a0, FLOAT *x, FLOAT *y,
"brctg %%r0,2b\n\t" "brctg %%r0,2b\n\t"
"3:\n\t" "3:\n\t"
"nop 0" "nop 0"
: "+m"(*(struct { FLOAT x[n]; } *) y) : "+m"(*(FLOAT (*)[n]) y)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) a0),[a0] "a"(a0), : [y] "a"(y), "m"(*(const FLOAT (*)[n]) a0),[a0] "a"(a0),
"m"(*(const FLOAT (*)[1]) x),[x] "a"(x),[alpha] "Q"(*alpha), "m"(*(const FLOAT (*)[1]) x),[x] "a"(x),[alpha] "Q"(*alpha),
[n] "r"(n) [n] "r"(n)
: "cc", "r0", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", : "cc", "r0", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21",

View File

@ -172,12 +172,12 @@ static void sgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y) {
"vrepg %%v4,%%v3,1\n\t" "vrepg %%v4,%%v3,1\n\t"
"aebr %%f3,%%f4\n\t" "aebr %%f3,%%f4\n\t"
"ste %%f3,12(%[y])" "ste %%f3,12(%[y])"
: "=m"(*(struct { FLOAT x[4]; } *) y) : "=m"(*(FLOAT (*)[4]) y)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0), : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
"m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1), "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
"m"(*(const struct { FLOAT x[n]; } *) ap2),[ap2] "a"(ap2), "m"(*(const FLOAT (*)[n]) ap2),[ap2] "a"(ap2),
"m"(*(const struct { FLOAT x[n]; } *) ap3),[ap3] "a"(ap3), "m"(*(const FLOAT (*)[n]) ap3),[ap3] "a"(ap3),
"m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x),[n] "r"(n) "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),[n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", : "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
"v26", "v27", "v28", "v29", "v30", "v31"); "v26", "v27", "v28", "v29", "v30", "v31");
@ -278,10 +278,10 @@ static void sgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y) {
"vrepg %%v2,%%v1,1\n\t" "vrepg %%v2,%%v1,1\n\t"
"aebr %%f1,%%f2\n\t" "aebr %%f1,%%f2\n\t"
"ste %%f1,4(%[y])" "ste %%f1,4(%[y])"
: "=m"(*(struct { FLOAT x[2]; } *) y) : "=m"(*(FLOAT (*)[2]) y)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0), : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
"m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1), "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
"m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x),[n] "r"(n) "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),[n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", : "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
"v26", "v27", "v28", "v29", "v30", "v31"); "v26", "v27", "v28", "v29", "v30", "v31");
@ -357,8 +357,8 @@ static void sgemv_kernel_4x1(BLASLONG n, FLOAT *a0, FLOAT *x, FLOAT *y) {
"aebr %%f0,%%f1\n\t" "aebr %%f0,%%f1\n\t"
"ste %%f0,0(%[y])" "ste %%f0,0(%[y])"
: "=m"(*(FLOAT (*)[1]) y) : "=m"(*(FLOAT (*)[1]) y)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) a0),[a0] "a"(a0), : [y] "a"(y), "m"(*(const FLOAT (*)[n]) a0),[a0] "a"(a0),
"m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x),[n] "r"(n) "m"(*(const FLOAT (*)[n]) x),[x] "a"(x),[n] "r"(n)
: "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", : "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
"v26", "v27", "v28", "v29", "v30", "v31"); "v26", "v27", "v28", "v29", "v30", "v31");
@ -432,8 +432,8 @@ static void add_y_kernel_4(BLASLONG n, FLOAT da, FLOAT *src, FLOAT *dest) {
"brctg %%r0,2b\n\t" "brctg %%r0,2b\n\t"
"3:\n\t" "3:\n\t"
"nop 0" "nop 0"
: "+m"(*(struct { FLOAT x[n]; } *) dest) : "+m"(*(FLOAT (*)[n]) dest)
: [dest] "a"(dest),[da] "Q"(da), "m"(*(const struct { FLOAT x[n]; } *) src), : [dest] "a"(dest),[da] "Q"(da), "m"(*(const FLOAT (*)[n]) src),
[src] "a"(src),[n] "r"(n) [src] "a"(src),[n] "r"(n)
: "cc", "r0", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", : "cc", "r0", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",

View File

@ -75,7 +75,7 @@ static FLOAT smax_kernel_64(BLASLONG n, FLOAT *x) {
"wfmaxsb %%v0,%%v0,%%v16,0\n\t" "wfmaxsb %%v0,%%v0,%%v16,0\n\t"
"ler %[max],%%f0" "ler %[max],%%f0"
: [max] "=f"(max),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -75,7 +75,7 @@ static FLOAT smin_kernel_64(BLASLONG n, FLOAT *x) {
"wfminsb %%v0,%%v0,%%v16,0\n\t" "wfminsb %%v0,%%v0,%%v16,0\n\t"
"ler %[min],%%f0" "ler %[min],%%f0"
: [min] "=f"(min),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -169,7 +169,7 @@ static void srot_kernel_64(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *c, FLOAT *s) {
"vst %%v23, 240(%%r1,%[y])\n\t" "vst %%v23, 240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t" "agfi %%r1,256\n\t"
"brctg %[n],0b" "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) [n] "+&r"(n)
: [x] "a"(x),[y] "a"(y),[c] "Q"(*c),[s] "Q"(*s) : [x] "a"(x),[y] "a"(y),[c] "Q"(*c),[s] "Q"(*s)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21", : "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",

View File

@ -59,7 +59,7 @@ static void sscal_kernel_32(BLASLONG n, FLOAT da, FLOAT *x) {
"vst %%v31,112(%%r1,%[x])\n\t" "vst %%v31,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t" "agfi %%r1,128\n\t"
"brctg %[n],0b" "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) : [x] "a"(x),[da] "Q"(da)
: "cc", "r1", "v0", "v24", "v25", "v26", "v27", "v28", "v29", "v30", : "cc", "r1", "v0", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31"); "v31");
@ -81,7 +81,7 @@ static void sscal_kernel_32_zero(BLASLONG n, FLOAT *x) {
"vst %%v0,112(%%r1,%[x])\n\t" "vst %%v0,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t" "agfi %%r1,128\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "=m"(*(struct { FLOAT x[n]; } *) x),[n] "+&r"(n) : "=m"(*(FLOAT (*)[n]) x),[n] "+&r"(n)
: [x] "a"(x) : [x] "a"(x)
: "cc", "r1", "v0"); : "cc", "r1", "v0");
} }

View File

@ -91,7 +91,7 @@ static FLOAT ssum_kernel_64(BLASLONG n, FLOAT *x) {
"vfasb %%v24,%%v24,%%v25\n\t" "vfasb %%v24,%%v24,%%v25\n\t"
"vstef %%v24,%[sum],0" "vstef %%v24,%[sum],0"
: [sum] "=Q"(sum),[n] "+&r"(n) : [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", : "cc", "r1", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -99,7 +99,7 @@ static void sswap_kernel_64(BLASLONG n, FLOAT *x, FLOAT *y) {
"vst %%v31, 240(%%r1,%[y])\n\t" "vst %%v31, 240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t" "agfi %%r1,256\n\t"
"brctg %[n],0b" "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) [n] "+&r"(n)
: [x] "a"(x),[y] "a"(y) : [x] "a"(x),[y] "a"(y)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16", : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",

View File

@ -114,7 +114,7 @@ static FLOAT zamax_kernel_16(BLASLONG n, FLOAT *x) {
"wfmaxdb %%v0,%%v0,%%v16,0\n\t" "wfmaxdb %%v0,%%v0,%%v16,0\n\t"
"ldr %[amax],%%f0" "ldr %[amax],%%f0"
: [amax] "=f"(amax),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -123,7 +123,7 @@ static FLOAT zamax_kernel_16(BLASLONG n, FLOAT *x) {
"vsel %%v0,%%v0,%%v16,%%v17\n\t" "vsel %%v0,%%v0,%%v16,%%v17\n\t"
"ldr %[amax],%%f0" "ldr %[amax],%%f0"
: [amax] "=f"(amax),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27"); "v23", "v24", "v25", "v26", "v27");

View File

@ -114,7 +114,7 @@ static FLOAT zamin_kernel_16(BLASLONG n, FLOAT *x) {
"wfmindb %%v0,%%v0,%%v16,0\n\t" "wfmindb %%v0,%%v0,%%v16,0\n\t"
"ldr %[amin],%%f0" "ldr %[amin],%%f0"
: [amin] "=f"(amin),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -123,7 +123,7 @@ static FLOAT zamin_kernel_16(BLASLONG n, FLOAT *x) {
"vsel %%v0,%%v0,%%v16,%%v17\n\t" "vsel %%v0,%%v0,%%v16,%%v17\n\t"
"ldr %[amin],%%f0" "ldr %[amin],%%f0"
: [amin] "=f"(amin),[n] "+&r"(n) : [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", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23", "v24", "v25", "v26", "v27"); "v23", "v24", "v25", "v26", "v27");

View File

@ -106,7 +106,7 @@ static FLOAT zasum_kernel_16(BLASLONG n, FLOAT *x) {
"vfadb %%v24,%%v24,%%v25\n\t" "vfadb %%v24,%%v24,%%v25\n\t"
"vsteg %%v24,%[asum],0" "vsteg %%v24,%[asum],0"
: [asum] "=Q"(asum),[n] "+&r"(n) : [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", : "cc", "r1", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -95,9 +95,9 @@ static void zaxpy_kernel_8(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) {
"vst %%v19,112(%%r1,%[y])\n\t" "vst %%v19,112(%%r1,%[y])\n\t"
"agfi %%r1,128\n\t" "agfi %%r1,128\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n) : "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x), : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
"m"(*(const struct { FLOAT x[2]; } *) alpha),[alpha] "a"(alpha) "m"(*(const FLOAT (*)[2]) alpha),[alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v8", "v9", "v10", "v11", "v12", "v13", : "cc", "r1", "v0", "v1", "v8", "v9", "v10", "v11", "v12", "v13",
"v14", "v15", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v14", "v15", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -36,9 +36,9 @@ static void zcopy_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y) {
"la %[x],256(%[x])\n\t" "la %[x],256(%[x])\n\t"
"la %[y],256(%[y])\n\t" "la %[y],256(%[y])\n\t"
"brctg %[n],0b" "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) [n] "+&r"(n)
: "m"(*(const struct { FLOAT x[n * 2]; } *) x) : "m"(*(const FLOAT (*)[n * 2]) x)
: "cc"); : "cc");
} }

View File

@ -93,9 +93,9 @@ static void zdot_kernel_8(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *d) {
"vsteg %%v24,8(%[d]),1\n\t" "vsteg %%v24,8(%[d]),1\n\t"
"vsteg %%v25,16(%[d]),1\n\t" "vsteg %%v25,16(%[d]),1\n\t"
"vsteg %%v25,24(%[d]),0" "vsteg %%v25,24(%[d]),0"
: "=m"(*(struct { FLOAT x[4]; } *) d),[n] "+&r"(n) : "=m"(*(FLOAT (*)[4]) d),[n] "+&r"(n)
: [d] "a"(d), "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x), : [d] "a"(d), "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
"m"(*(const struct { FLOAT x[n * 2]; } *) y),[y] "a"(y) "m"(*(const FLOAT (*)[n * 2]) y),[y] "a"(y)
: "cc", "r1", "v0", "v1", "v2", "v3", "v16", "v17", "v18", "v19", "v20", : "cc", "r1", "v0", "v1", "v2", "v3", "v16", "v17", "v18", "v19", "v20",
"v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v21", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31"); "v31");

View File

@ -112,12 +112,12 @@ static void zgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y) {
"vst %%v1,16(%%r1,%[y])\n\t" "vst %%v1,16(%%r1,%[y])\n\t"
"agfi %%r1,32\n\t" "agfi %%r1,32\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n) : "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap0),[ap0] "a"(ap0), : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap0),[ap0] "a"(ap0),
"m"(*(const struct { FLOAT x[n * 2]; } *) ap1),[ap1] "a"(ap1), "m"(*(const FLOAT (*)[n * 2]) ap1),[ap1] "a"(ap1),
"m"(*(const struct { FLOAT x[n * 2]; } *) ap2),[ap2] "a"(ap2), "m"(*(const FLOAT (*)[n * 2]) ap2),[ap2] "a"(ap2),
"m"(*(const struct { FLOAT x[n * 2]; } *) ap3),[ap3] "a"(ap3), "m"(*(const FLOAT (*)[n * 2]) ap3),[ap3] "a"(ap3),
"m"(*(const struct { FLOAT x[8]; } *) x),[x] "a"(x) "m"(*(const FLOAT (*)[8]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21", : "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31"); "v31");
@ -172,10 +172,10 @@ static void zgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y) {
"vst %%v1,16(%%r1,%[y])\n\t" "vst %%v1,16(%%r1,%[y])\n\t"
"agfi %%r1,32\n\t" "agfi %%r1,32\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n) : "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap0),[ap0] "a"(ap0), : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap0),[ap0] "a"(ap0),
"m"(*(const struct { FLOAT x[n * 2]; } *) ap1),[ap1] "a"(ap1), "m"(*(const FLOAT (*)[n * 2]) ap1),[ap1] "a"(ap1),
"m"(*(const struct { FLOAT x[4]; } *) x),[x] "a"(x) "m"(*(const FLOAT (*)[4]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21", : "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27"); "v22", "v23", "v24", "v25", "v26", "v27");
} }
@ -210,9 +210,9 @@ static void zgemv_kernel_4x1(BLASLONG n, FLOAT *ap, FLOAT *x, FLOAT *y) {
"vst %%v1,16(%%r1,%[y])\n\t" "vst %%v1,16(%%r1,%[y])\n\t"
"agfi %%r1,32\n\t" "agfi %%r1,32\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n) : "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap),[ap] "a"(ap), : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap),[ap] "a"(ap),
"m"(*(const struct { FLOAT x[2]; } *) x),[x] "a"(x) "m"(*(const FLOAT (*)[2]) x),[x] "a"(x)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21"); : "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21");
} }
@ -261,8 +261,8 @@ static void add_y_4(BLASLONG n, FLOAT *src, FLOAT *dest, FLOAT alpha_r,
"vst %%v31,48(%%r1,%[dest])\n\t" "vst %%v31,48(%%r1,%[dest])\n\t"
"agfi %%r1,64\n\t" "agfi %%r1,64\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n * 2]; } *) dest),[n] "+&r"(n) : "+m"(*(FLOAT (*)[n * 2]) dest),[n] "+&r"(n)
: [dest] "a"(dest), "m"(*(const struct { FLOAT x[n * 2]; } *) src), : [dest] "a"(dest), "m"(*(const FLOAT (*)[n * 2]) src),
[src] "a"(src),[alpha_r] "Q"(alpha_r),[alpha_i] "Q"(alpha_i) [src] "a"(src),[alpha_r] "Q"(alpha_r),[alpha_i] "Q"(alpha_i)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21", : "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",

View File

@ -141,13 +141,13 @@ static void zgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
"vst %%v27,16(%[y])\n\t" "vst %%v27,16(%[y])\n\t"
"vst %%v28,32(%[y])\n\t" "vst %%v28,32(%[y])\n\t"
"vst %%v29,48(%[y])" "vst %%v29,48(%[y])"
: "+m"(*(struct { FLOAT x[8]; } *) y),[n] "+&r"(n) : "+m"(*(FLOAT (*)[8]) y),[n] "+&r"(n)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap0),[ap0] "a"(ap0), : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap0),[ap0] "a"(ap0),
"m"(*(const struct { FLOAT x[n * 2]; } *) ap1),[ap1] "a"(ap1), "m"(*(const FLOAT (*)[n * 2]) ap1),[ap1] "a"(ap1),
"m"(*(const struct { FLOAT x[n * 2]; } *) ap2),[ap2] "a"(ap2), "m"(*(const FLOAT (*)[n * 2]) ap2),[ap2] "a"(ap2),
"m"(*(const struct { FLOAT x[n * 2]; } *) ap3),[ap3] "a"(ap3), "m"(*(const FLOAT (*)[n * 2]) ap3),[ap3] "a"(ap3),
"m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x), "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
"m"(*(const struct { FLOAT x[2]; } *) alpha),[alpha] "a"(alpha) "m"(*(const FLOAT (*)[2]) alpha),[alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21", : "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
"v31"); "v31");
@ -229,11 +229,11 @@ static void zgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
"vfmadb %%v23,%%v19,%%v21,%%v23\n\t" "vfmadb %%v23,%%v19,%%v21,%%v23\n\t"
"vst %%v22,0(%[y])\n\t" "vst %%v22,0(%[y])\n\t"
"vst %%v23,16(%[y])\n\t" "vst %%v23,16(%[y])\n\t"
: "+m"(*(struct { FLOAT x[4]; } *) y),[n] "+&r"(n) : "+m"(*(FLOAT (*)[4]) y),[n] "+&r"(n)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap0),[ap0] "a"(ap0), : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap0),[ap0] "a"(ap0),
"m"(*(const struct { FLOAT x[n * 2]; } *) ap1),[ap1] "a"(ap1), "m"(*(const FLOAT (*)[n * 2]) ap1),[ap1] "a"(ap1),
"m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x), "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
"m"(*(const struct { FLOAT x[2]; } *) alpha),[alpha] "a"(alpha) "m"(*(const FLOAT (*)[2]) alpha),[alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21", : "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23"); "v22", "v23");
} }
@ -294,10 +294,10 @@ static void zgemv_kernel_4x1(BLASLONG n, FLOAT *ap, FLOAT *x, FLOAT *y,
"vfmadb %%v0,%%v16,%%v18,%%v0\n\t" "vfmadb %%v0,%%v16,%%v18,%%v0\n\t"
"vfmadb %%v0,%%v17,%%v19,%%v0\n\t" "vfmadb %%v0,%%v17,%%v19,%%v0\n\t"
"vst %%v0,0(%[y])\n\t" "vst %%v0,0(%[y])\n\t"
: "+m"(*(struct { FLOAT x[2]; } *) y),[n] "+&r"(n) : "+m"(*(FLOAT (*)[2]) y),[n] "+&r"(n)
: [y] "a"(y), "m"(*(const struct { FLOAT x[n * 2]; } *) ap),[ap] "a"(ap), : [y] "a"(y), "m"(*(const FLOAT (*)[n * 2]) ap),[ap] "a"(ap),
"m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x), "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x),
"m"(*(const struct { FLOAT x[2]; } *) alpha),[alpha] "a"(alpha) "m"(*(const FLOAT (*)[2]) alpha),[alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19"); : "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19");
} }

View File

@ -169,8 +169,8 @@ static void zrot_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *c, FLOAT *s) {
"vst %%v23, 240(%%r1,%[y])\n\t" "vst %%v23, 240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t" "agfi %%r1,256\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n * 2]; } *) x), : "+m"(*(FLOAT (*)[n * 2]) x),
"+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n) "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
: [x] "a"(x),[y] "a"(y),[c] "Q"(*c),[s] "Q"(*s) : [x] "a"(x),[y] "a"(y),[c] "Q"(*c),[s] "Q"(*s)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21", : "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",

View File

@ -78,8 +78,8 @@ static void zscal_kernel_8(BLASLONG n, FLOAT *alpha, FLOAT *x) {
"vst %%v23,112(%%r1,%[x])\n\t" "vst %%v23,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t" "agfi %%r1,128\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n * 2]; } *) x),[n] "+&r"(n) : "+m"(*(FLOAT (*)[n * 2]) x),[n] "+&r"(n)
: [x] "a"(x), "m"(*(const struct { FLOAT x[2]; } *) alpha), : [x] "a"(x), "m"(*(const FLOAT (*)[2]) alpha),
[alpha] "a"(alpha) [alpha] "a"(alpha)
: "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21", : "cc", "r1", "v0", "v1", "v16", "v17", "v18", "v19", "v20", "v21",
"v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
@ -128,8 +128,8 @@ static void zscal_kernel_8_zero_r(BLASLONG n, FLOAT *alpha, FLOAT *x) {
"vst %%v23,112(%%r1,%[x])\n\t" "vst %%v23,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t" "agfi %%r1,128\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n * 2]; } *) x),[n] "+&r"(n) : "+m"(*(FLOAT (*)[n * 2]) x),[n] "+&r"(n)
: [x] "a"(x), "m"(*(const struct { FLOAT x[2]; } *) alpha), : [x] "a"(x), "m"(*(const FLOAT (*)[2]) alpha),
[alpha] "a"(alpha) [alpha] "a"(alpha)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23"); "v23");
@ -167,8 +167,8 @@ static void zscal_kernel_8_zero_i(BLASLONG n, FLOAT *alpha, FLOAT *x) {
"vst %%v23,112(%%r1,%[x])\n\t" "vst %%v23,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t" "agfi %%r1,128\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n * 2]; } *) x),[n] "+&r"(n) : "+m"(*(FLOAT (*)[n * 2]) x),[n] "+&r"(n)
: [x] "a"(x), "m"(*(const struct { FLOAT x[2]; } *) alpha), : [x] "a"(x), "m"(*(const FLOAT (*)[2]) alpha),
[alpha] "a"(alpha) [alpha] "a"(alpha)
: "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22", : "cc", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
"v23"); "v23");
@ -190,7 +190,7 @@ static void zscal_kernel_8_zero(BLASLONG n, FLOAT *x) {
"vst %%v0,112(%%r1,%[x])\n\t" "vst %%v0,112(%%r1,%[x])\n\t"
"agfi %%r1,128\n\t" "agfi %%r1,128\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "=m"(*(struct { FLOAT x[n * 2]; } *) x),[n] "+&r"(n) : "=m"(*(FLOAT (*)[n * 2]) x),[n] "+&r"(n)
: [x] "a"(x) : [x] "a"(x)
: "cc", "r1", "v0"); : "cc", "r1", "v0");
} }

View File

@ -89,7 +89,7 @@ static FLOAT zsum_kernel_16(BLASLONG n, FLOAT *x) {
"vfadb %%v24,%%v24,%%v25\n\t" "vfadb %%v24,%%v24,%%v25\n\t"
"vsteg %%v24,%[sum],0" "vsteg %%v24,%[sum],0"
: [sum] "=Q"(sum),[n] "+&r"(n) : [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", : "cc", "r1", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
"v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"); "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");

View File

@ -99,8 +99,8 @@ static void zswap_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y) {
"vst %%v31, 240(%%r1,%[y])\n\t" "vst %%v31, 240(%%r1,%[y])\n\t"
"agfi %%r1,256\n\t" "agfi %%r1,256\n\t"
"brctg %[n],0b" "brctg %[n],0b"
: "+m"(*(struct { FLOAT x[n * 2]; } *) x), : "+m"(*(FLOAT (*)[n * 2]) x),
"+m"(*(struct { FLOAT x[n * 2]; } *) y),[n] "+&r"(n) "+m"(*(FLOAT (*)[n * 2]) y),[n] "+&r"(n)
: [x] "a"(x),[y] "a"(y) : [x] "a"(x),[y] "a"(y)
: "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16", : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
"v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",