Merge pull request #2815 from mhillenibm/clang_s390x
Fix build with clang on s390x
This commit is contained in:
commit
776d005f4c
|
@ -8,3 +8,9 @@ ifeq ($(CORE), Z14)
|
|||
CCOMMON_OPT += -march=z14 -mzvector -O3
|
||||
FCOMMON_OPT += -march=z14 -mzvector
|
||||
endif
|
||||
|
||||
# Enable floating-point expression contraction for clang, since it is the
|
||||
# default for gcc
|
||||
ifeq ($(C_COMPILER), CLANG)
|
||||
CCOMMON_OPT += -ffp-contract=fast
|
||||
endif
|
||||
|
|
|
@ -136,7 +136,7 @@ static FLOAT camax_kernel_32(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
|
|
@ -136,7 +136,7 @@ static FLOAT camin_kernel_32(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
|
|
@ -108,7 +108,7 @@ static FLOAT casum_kernel_32(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -99,9 +99,9 @@ static void caxpy_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) {
|
|||
"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");
|
||||
|
|
|
@ -36,9 +36,9 @@ static void ccopy_kernel_32(BLASLONG n, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
}
|
||||
|
||||
|
|
|
@ -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 %%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");
|
||||
|
|
|
@ -146,12 +146,12 @@ static void cgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
|
@ -238,10 +238,10 @@ static void cgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
}
|
||||
|
@ -307,9 +307,9 @@ static void cgemv_kernel_4x1(BLASLONG n, FLOAT *ap, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
}
|
||||
|
||||
|
@ -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"
|
||||
"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");
|
||||
|
|
|
@ -159,13 +159,13 @@ static void cgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
|
|||
"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");
|
||||
|
@ -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,%%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");
|
||||
}
|
||||
|
@ -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,%%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");
|
||||
}
|
||||
|
||||
|
|
|
@ -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"
|
||||
"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",
|
||||
|
|
|
@ -80,8 +80,8 @@ static void cscal_kernel_16(BLASLONG n, FLOAT *alpha, FLOAT *x) {
|
|||
"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",
|
||||
|
@ -132,8 +132,8 @@ static void cscal_kernel_16_zero_r(BLASLONG n, FLOAT *alpha, FLOAT *x) {
|
|||
"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");
|
||||
|
@ -171,8 +171,8 @@ static void cscal_kernel_16_zero_i(BLASLONG n, FLOAT *alpha, FLOAT *x) {
|
|||
"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");
|
||||
|
@ -194,7 +194,7 @@ static void cscal_kernel_16_zero(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
}
|
||||
|
|
|
@ -90,7 +90,7 @@ static FLOAT csum_kernel_32(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -99,8 +99,8 @@ static void cswap_kernel_32(BLASLONG n, FLOAT *x, FLOAT *y) {
|
|||
"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",
|
||||
|
|
|
@ -198,7 +198,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,4,4
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L4x4_BK_Store
|
||||
|
@ -254,7 +254,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,2,4
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L2x4_BK_Store
|
||||
|
@ -305,7 +305,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,1,4
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L1x4_BK_Store
|
||||
|
@ -385,7 +385,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,4,2
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L4x2_BK_Store
|
||||
|
@ -442,7 +442,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,2,2
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L2x2_BK_Store
|
||||
|
@ -492,7 +492,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,1,2
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L1x2_BK_Store
|
||||
|
@ -568,7 +568,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,4,1
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L4x1_BK_Store
|
||||
|
@ -620,7 +620,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,2,1
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L2x1_BK_Store
|
||||
|
@ -670,7 +670,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,1,1
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L1x1_BK_Store
|
||||
|
|
|
@ -76,7 +76,7 @@ static FLOAT damax_kernel_32(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -110,7 +110,7 @@ static FLOAT damax_kernel_32(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -76,7 +76,7 @@ static FLOAT damin_kernel_32(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -110,7 +110,7 @@ static FLOAT damin_kernel_32(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -106,7 +106,7 @@ static FLOAT dasum_kernel_32(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -100,8 +100,8 @@ static void daxpy_kernel_32(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) {
|
|||
"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");
|
||||
|
|
|
@ -36,8 +36,8 @@ static void dcopy_kernel_32(BLASLONG n, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
}
|
||||
|
||||
|
|
|
@ -80,8 +80,8 @@ static FLOAT ddot_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
|
|
|
@ -169,13 +169,13 @@ static void dgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
|
|||
"agfi %%r1,32\n\t"
|
||||
"brctg %%r0,2b\n\t"
|
||||
"3:\n\t"
|
||||
"nop"
|
||||
: "+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),
|
||||
"nop 0"
|
||||
: "+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",
|
||||
|
@ -274,11 +274,11 @@ static void dgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
|
|||
"agfi %%r1,32\n\t"
|
||||
"brctg %%r0,2b\n\t"
|
||||
"3:\n\t"
|
||||
"nop"
|
||||
: "+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),
|
||||
"nop 0"
|
||||
: "+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",
|
||||
|
@ -351,9 +351,9 @@ static void dgemv_kernel_4x1(BLASLONG n, FLOAT *a0, FLOAT *x, FLOAT *y,
|
|||
"agfi %%r1,32\n\t"
|
||||
"brctg %%r0,2b\n\t"
|
||||
"3:\n\t"
|
||||
"nop"
|
||||
: "+m"(*(struct { FLOAT x[n]; } *) y)
|
||||
: [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) a0),[a0] "a"(a0),
|
||||
"nop 0"
|
||||
: "+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",
|
||||
|
|
|
@ -173,12 +173,12 @@ static void dgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
|
@ -280,10 +280,10 @@ static void dgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
|
@ -360,8 +360,8 @@ static void dgemv_kernel_4x1(BLASLONG n, FLOAT *a0, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
|
@ -438,9 +438,9 @@ static void add_y_kernel_4(BLASLONG n, FLOAT da, FLOAT *src, FLOAT *dest) {
|
|||
"agfi %%r1,32\n\t"
|
||||
"brctg %%r0,2b\n\t"
|
||||
"3:\n\t"
|
||||
"nop"
|
||||
: "+m"(*(struct { FLOAT x[n]; } *) dest)
|
||||
: [dest] "a"(dest),[da] "Q"(da), "m"(*(const struct { FLOAT x[n]; } *) src),
|
||||
"nop 0"
|
||||
: "+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",
|
||||
|
|
|
@ -73,7 +73,7 @@ static FLOAT dmax_kernel_32(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ static FLOAT dmax_kernel_32(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ static FLOAT dmin_kernel_32(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ static FLOAT dmin_kernel_32(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -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"
|
||||
"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",
|
||||
|
|
|
@ -59,7 +59,7 @@ static void dscal_kernel_16(BLASLONG n, FLOAT da, FLOAT *x) {
|
|||
"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");
|
||||
|
@ -81,7 +81,7 @@ static void dscal_kernel_16_zero(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
}
|
||||
|
|
|
@ -112,8 +112,8 @@ static double dsdot_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
|
|
|
@ -88,7 +88,7 @@ static FLOAT dsum_kernel_32(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -99,7 +99,7 @@ static void dswap_kernel_32(BLASLONG n, FLOAT *x, FLOAT *y) {
|
|||
"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",
|
||||
|
|
|
@ -147,7 +147,7 @@ brctg LOCAL_VAR1,.L8x4_4_BK
|
|||
|
||||
ALIGN_4
|
||||
.L8x4_mod:
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
jz .L8x4_BK_Store
|
||||
|
||||
|
@ -183,7 +183,7 @@ brctg LOCAL_VAR1,.L4x4_4_BK
|
|||
|
||||
ALIGN_4
|
||||
.L4x4_mod:
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
jz .L4x4_BK_Store
|
||||
|
||||
|
@ -217,7 +217,7 @@ brctg LOCAL_VAR1,.L2x4_4_BK
|
|||
|
||||
ALIGN_4
|
||||
.L2x4_mod:
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
jz .L2x4_BK_Store
|
||||
|
||||
|
@ -252,7 +252,7 @@ brctg LOCAL_VAR1,.L1x4_4_BK
|
|||
|
||||
ALIGN_4
|
||||
.L1x4_mod:
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
jz .L1x4_BK_Store
|
||||
|
||||
|
@ -309,7 +309,7 @@ brctg LOCAL_VAR1,.L8x2_4_BK
|
|||
|
||||
ALIGN_4
|
||||
.L8x2_mod:
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
jz .L8x2_BK_Store
|
||||
|
||||
|
@ -346,7 +346,7 @@ brctg LOCAL_VAR1,.L4x2_4_BK
|
|||
|
||||
ALIGN_4
|
||||
.L4x2_mod:
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
jz .L4x2_BK_Store
|
||||
|
||||
|
@ -380,7 +380,7 @@ brctg LOCAL_VAR1,.L2x2_4_BK
|
|||
|
||||
ALIGN_4
|
||||
.L2x2_mod:
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
jz .L2x2_BK_Store
|
||||
|
||||
|
@ -415,7 +415,7 @@ brctg LOCAL_VAR1,.L1x2_4_BK
|
|||
|
||||
ALIGN_4
|
||||
.L1x2_mod:
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
jz .L1x2_BK_Store
|
||||
|
||||
|
@ -471,7 +471,7 @@ brctg LOCAL_VAR1,.L8x1_4_BK
|
|||
|
||||
ALIGN_4
|
||||
.L8x1_mod:
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
jz .L8x1_BK_Store
|
||||
|
||||
|
@ -508,7 +508,7 @@ brctg LOCAL_VAR1,.L4x1_4_BK
|
|||
|
||||
ALIGN_4
|
||||
.L4x1_mod:
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
jz .L4x1_BK_Store
|
||||
|
||||
|
@ -542,7 +542,7 @@ brctg LOCAL_VAR1,.L2x1_4_BK
|
|||
|
||||
ALIGN_4
|
||||
.L2x1_mod:
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
jz .L2x1_BK_Store
|
||||
|
||||
|
@ -577,7 +577,7 @@ brctg LOCAL_VAR1,.L1x1_4_BK
|
|||
|
||||
ALIGN_4
|
||||
.L1x1_mod:
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
jz .L1x1_BK_Store
|
||||
|
||||
|
|
|
@ -172,7 +172,7 @@ static inline vector_float vec_load_hinted(FLOAT const *restrict a) {
|
|||
vector_float const *restrict addr = (vector_float const *restrict)a;
|
||||
vector_float y;
|
||||
|
||||
#if __GNUC__ < 9
|
||||
#if __GNUC__ < 9 && !defined(__clang__)
|
||||
// hex-encode vl %[out],%[addr],3
|
||||
asm(".insn vrx,0xe70000003006,%[out],%[addr],3"
|
||||
: [ out ] "=v"(y)
|
||||
|
@ -393,7 +393,7 @@ static inline void GEBP_block_16_4(
|
|||
* Note that we need to massage this particular "barrier"
|
||||
* depending on the gcc version.
|
||||
*/
|
||||
#if __GNUC__ > 7
|
||||
#if __GNUC__ > 7 || defined(__clang__)
|
||||
#define BARRIER_READ_BEFORE_COMPUTE(SUFFIX) \
|
||||
do { \
|
||||
asm("" \
|
||||
|
|
|
@ -213,9 +213,9 @@ static BLASLONG icamax_kernel_32(BLASLONG n, FLOAT *x, FLOAT *amax) {
|
|||
"ste %%f0,%[amax]\n\t"
|
||||
"vlgvg %[iamax],%%v1,0\n\t"
|
||||
"2:\n\t"
|
||||
"nop"
|
||||
"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");
|
||||
|
|
|
@ -213,9 +213,9 @@ static BLASLONG icamin_kernel_32(BLASLONG n, FLOAT *x, FLOAT *amin) {
|
|||
"ste %%f0,%[amin]\n\t"
|
||||
"vlgvg %[iamin],%%v1,0\n\t"
|
||||
"2:\n\t"
|
||||
"nop"
|
||||
"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");
|
||||
|
|
|
@ -160,9 +160,9 @@ static BLASLONG idamax_kernel_32(BLASLONG n, FLOAT *x, FLOAT *amax) {
|
|||
"std %%f0,%[amax]\n\t"
|
||||
"vlgvg %[iamax],%%v1,0\n\t"
|
||||
"2:\n\t"
|
||||
"nop"
|
||||
"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");
|
||||
|
|
|
@ -160,9 +160,9 @@ static BLASLONG idamin_kernel_32(BLASLONG n, FLOAT *x, FLOAT *amin) {
|
|||
"std %%f0,%[amin]\n\t"
|
||||
"vlgvg %[iamin],%%v1,0\n\t"
|
||||
"2:\n\t"
|
||||
"nop"
|
||||
"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");
|
||||
|
|
|
@ -140,9 +140,9 @@ static BLASLONG idmax_kernel_32(BLASLONG n, FLOAT *x, FLOAT *max) {
|
|||
"std %%f0,%[max]\n\t"
|
||||
"vlgvg %[imax],%%v1,0\n\t"
|
||||
"2:\n\t"
|
||||
"nop"
|
||||
"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");
|
||||
|
|
|
@ -140,9 +140,9 @@ static BLASLONG idmin_kernel_32(BLASLONG n, FLOAT *x, FLOAT *min) {
|
|||
"std %%f0,%[min]\n\t"
|
||||
"vlgvg %[imin],%%v1,0\n\t"
|
||||
"2:\n\t"
|
||||
"nop"
|
||||
"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");
|
||||
|
|
|
@ -204,9 +204,9 @@ static BLASLONG isamax_kernel_64(BLASLONG n, FLOAT *x, FLOAT *amax) {
|
|||
"ste %%f0,%[amax]\n\t"
|
||||
"vlgvg %[iamax],%%v1,0\n\t"
|
||||
"2:\n\t"
|
||||
"nop"
|
||||
"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");
|
||||
|
|
|
@ -204,9 +204,9 @@ static BLASLONG isamin_kernel_64(BLASLONG n, FLOAT *x, FLOAT *amin) {
|
|||
"ste %%f0,%[amin]\n\t"
|
||||
"vlgvg %[iamin],%%v1,0\n\t"
|
||||
"2:\n\t"
|
||||
"nop"
|
||||
"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");
|
||||
|
|
|
@ -184,9 +184,9 @@ static BLASLONG ismax_kernel_64(BLASLONG n, FLOAT *x, FLOAT *max) {
|
|||
"ste %%f0,%[max]\n\t"
|
||||
"vlgvg %[imax],%%v1,0\n\t"
|
||||
"2:\n\t"
|
||||
"nop"
|
||||
"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");
|
||||
|
|
|
@ -184,9 +184,9 @@ static BLASLONG ismin_kernel_64(BLASLONG n, FLOAT *x, FLOAT *min) {
|
|||
"ste %%f0,%[min]\n\t"
|
||||
"vlgvg %[imin],%%v1,0\n\t"
|
||||
"2:\n\t"
|
||||
"nop"
|
||||
"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");
|
||||
|
|
|
@ -157,9 +157,9 @@ static BLASLONG izamax_kernel_16(BLASLONG n, FLOAT *x, FLOAT *amax) {
|
|||
"std %%f0,%[amax]\n\t"
|
||||
"vlgvg %[iamax],%%v1,0\n\t"
|
||||
"2:\n\t"
|
||||
"nop"
|
||||
"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");
|
||||
|
||||
|
|
|
@ -157,9 +157,9 @@ static BLASLONG izamin_kernel_16(BLASLONG n, FLOAT *x, FLOAT *amin) {
|
|||
"std %%f0,%[amin]\n\t"
|
||||
"vlgvg %[iamin],%%v1,0\n\t"
|
||||
"2:\n\t"
|
||||
"nop"
|
||||
"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");
|
||||
|
||||
|
|
|
@ -78,7 +78,7 @@ static FLOAT samax_kernel_64(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -78,7 +78,7 @@ static FLOAT samin_kernel_64(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -108,7 +108,7 @@ static FLOAT sasum_kernel_64(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -100,8 +100,8 @@ static void saxpy_kernel_64(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) {
|
|||
"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");
|
||||
|
|
|
@ -36,8 +36,8 @@ static void scopy_kernel_64(BLASLONG n, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
}
|
||||
|
||||
|
|
|
@ -84,8 +84,8 @@ static FLOAT sdot_kernel_32(BLASLONG n, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
|
|
|
@ -159,13 +159,13 @@ static void sgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
|
|||
"agfi %%r1,16\n\t"
|
||||
"brctg %%r0,2b\n\t"
|
||||
"3:\n\t"
|
||||
"nop"
|
||||
: "+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),
|
||||
"nop 0"
|
||||
: "+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",
|
||||
|
@ -258,11 +258,11 @@ static void sgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
|
|||
"agfi %%r1,16\n\t"
|
||||
"brctg %%r0,2b\n\t"
|
||||
"3:\n\t"
|
||||
"nop"
|
||||
: "+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),
|
||||
"nop 0"
|
||||
: "+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",
|
||||
|
@ -331,9 +331,9 @@ static void sgemv_kernel_4x1(BLASLONG n, FLOAT *a0, FLOAT *x, FLOAT *y,
|
|||
"agfi %%r1,16\n\t"
|
||||
"brctg %%r0,2b\n\t"
|
||||
"3:\n\t"
|
||||
"nop"
|
||||
: "+m"(*(struct { FLOAT x[n]; } *) y)
|
||||
: [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) a0),[a0] "a"(a0),
|
||||
"nop 0"
|
||||
: "+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",
|
||||
|
|
|
@ -172,12 +172,12 @@ static void sgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
|
@ -278,10 +278,10 @@ static void sgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
|
@ -357,8 +357,8 @@ static void sgemv_kernel_4x1(BLASLONG n, FLOAT *a0, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
|
@ -431,9 +431,9 @@ static void add_y_kernel_4(BLASLONG n, FLOAT da, FLOAT *src, FLOAT *dest) {
|
|||
"agfi %%r1,16\n\t"
|
||||
"brctg %%r0,2b\n\t"
|
||||
"3:\n\t"
|
||||
"nop"
|
||||
: "+m"(*(struct { FLOAT x[n]; } *) dest)
|
||||
: [dest] "a"(dest),[da] "Q"(da), "m"(*(const struct { FLOAT x[n]; } *) src),
|
||||
"nop 0"
|
||||
: "+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",
|
||||
|
|
|
@ -75,7 +75,7 @@ static FLOAT smax_kernel_64(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -75,7 +75,7 @@ static FLOAT smin_kernel_64(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -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"
|
||||
"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",
|
||||
|
|
|
@ -59,7 +59,7 @@ static void sscal_kernel_32(BLASLONG n, FLOAT da, FLOAT *x) {
|
|||
"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");
|
||||
|
@ -81,7 +81,7 @@ static void sscal_kernel_32_zero(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
}
|
||||
|
|
|
@ -91,7 +91,7 @@ static FLOAT ssum_kernel_64(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -99,7 +99,7 @@ static void sswap_kernel_64(BLASLONG n, FLOAT *x, FLOAT *y) {
|
|||
"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",
|
||||
|
|
|
@ -186,7 +186,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,8,4
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L8x4_BK_Store
|
||||
|
@ -239,7 +239,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,4,4
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L4x4_BK_Store
|
||||
|
@ -290,7 +290,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,2,4
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L2x4_BK_Store
|
||||
|
@ -341,7 +341,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,1,4
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L1x4_BK_Store
|
||||
|
@ -423,7 +423,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,8,2
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L8x2_BK_Store
|
||||
|
@ -475,7 +475,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,4,2
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L4x2_BK_Store
|
||||
|
@ -525,7 +525,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,2,2
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L2x2_BK_Store
|
||||
|
@ -575,7 +575,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,1,2
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L1x2_BK_Store
|
||||
|
@ -655,7 +655,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,8,1
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L8x1_BK_Store
|
||||
|
@ -708,7 +708,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,4,1
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L4x1_BK_Store
|
||||
|
@ -757,7 +757,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,2,1
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L2x1_BK_Store
|
||||
|
@ -807,7 +807,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,1,1
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L1x1_BK_Store
|
||||
|
|
|
@ -114,7 +114,7 @@ static FLOAT zamax_kernel_16(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -123,7 +123,7 @@ static FLOAT zamax_kernel_16(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -114,7 +114,7 @@ static FLOAT zamin_kernel_16(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -123,7 +123,7 @@ static FLOAT zamin_kernel_16(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -106,7 +106,7 @@ static FLOAT zasum_kernel_16(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -95,9 +95,9 @@ static void zaxpy_kernel_8(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) {
|
|||
"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");
|
||||
|
|
|
@ -36,9 +36,9 @@ static void zcopy_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
}
|
||||
|
||||
|
|
|
@ -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 %%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");
|
||||
|
|
|
@ -112,12 +112,12 @@ static void zgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
|
@ -172,10 +172,10 @@ static void zgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
}
|
||||
|
@ -210,9 +210,9 @@ static void zgemv_kernel_4x1(BLASLONG n, FLOAT *ap, FLOAT *x, FLOAT *y) {
|
|||
"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");
|
||||
}
|
||||
|
||||
|
@ -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"
|
||||
"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",
|
||||
|
|
|
@ -141,13 +141,13 @@ static void zgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
|
|||
"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");
|
||||
|
@ -229,11 +229,11 @@ static void zgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
|
|||
"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");
|
||||
}
|
||||
|
@ -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,%%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");
|
||||
}
|
||||
|
||||
|
|
|
@ -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"
|
||||
"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",
|
||||
|
|
|
@ -78,8 +78,8 @@ static void zscal_kernel_8(BLASLONG n, FLOAT *alpha, FLOAT *x) {
|
|||
"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",
|
||||
|
@ -128,8 +128,8 @@ static void zscal_kernel_8_zero_r(BLASLONG n, FLOAT *alpha, FLOAT *x) {
|
|||
"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");
|
||||
|
@ -167,8 +167,8 @@ static void zscal_kernel_8_zero_i(BLASLONG n, FLOAT *alpha, FLOAT *x) {
|
|||
"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");
|
||||
|
@ -190,7 +190,7 @@ static void zscal_kernel_8_zero(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
}
|
||||
|
|
|
@ -89,7 +89,7 @@ static FLOAT zsum_kernel_16(BLASLONG n, FLOAT *x) {
|
|||
"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");
|
||||
|
||||
|
|
|
@ -99,8 +99,8 @@ static void zswap_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y) {
|
|||
"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",
|
||||
|
|
|
@ -196,7 +196,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,4,4
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L4x4_BK_Store
|
||||
|
@ -256,7 +256,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,2,4
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L2x4_BK_Store
|
||||
|
@ -307,7 +307,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,1,4
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L1x4_BK_Store
|
||||
|
@ -390,7 +390,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,4,2
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L4x2_BK_Store
|
||||
|
@ -447,7 +447,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,2,2
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L2x2_BK_Store
|
||||
|
@ -497,7 +497,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,1,2
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L1x2_BK_Store
|
||||
|
@ -573,7 +573,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,4,1
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L4x1_BK_Store
|
||||
|
@ -625,7 +625,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,2,1
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L2x1_BK_Store
|
||||
|
@ -675,7 +675,7 @@ ALIGN_4
|
|||
RefreshTempBk LOCAL_VAR1,BK,OFF,1,1
|
||||
nill LOCAL_VAR1,3
|
||||
#else
|
||||
la LOCAL_VAR1,3(0,0)
|
||||
lghi LOCAL_VAR1,3
|
||||
NGR LOCAL_VAR1,BK /*refresh BK*/
|
||||
#endif
|
||||
jz .L1x1_BK_Store
|
||||
|
|
Loading…
Reference in New Issue