s390x: avoid variable-length arrays in struct for asm operands
authorMarius Hillenbrand <mhillen@linux.ibm.com>
Tue, 1 Sep 2020 10:08:05 +0000 (12:08 +0200)
committerMarius Hillenbrand <mhillen@linux.ibm.com>
Wed, 2 Sep 2020 11:49:31 +0000 (13:49 +0200)
... 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>
71 files changed:
kernel/zarch/camax.c
kernel/zarch/camin.c
kernel/zarch/casum.c
kernel/zarch/caxpy.c
kernel/zarch/ccopy.c
kernel/zarch/cdot.c
kernel/zarch/cgemv_n_4.c
kernel/zarch/cgemv_t_4.c
kernel/zarch/crot.c
kernel/zarch/cscal.c
kernel/zarch/csum.c
kernel/zarch/cswap.c
kernel/zarch/damax.c
kernel/zarch/damax_z13.c
kernel/zarch/damin.c
kernel/zarch/damin_z13.c
kernel/zarch/dasum.c
kernel/zarch/daxpy.c
kernel/zarch/dcopy.c
kernel/zarch/ddot.c
kernel/zarch/dgemv_n_4.c
kernel/zarch/dgemv_t_4.c
kernel/zarch/dmax.c
kernel/zarch/dmax_z13.c
kernel/zarch/dmin.c
kernel/zarch/dmin_z13.c
kernel/zarch/drot.c
kernel/zarch/dscal.c
kernel/zarch/dsdot.c
kernel/zarch/dsum.c
kernel/zarch/dswap.c
kernel/zarch/icamax.c
kernel/zarch/icamin.c
kernel/zarch/idamax.c
kernel/zarch/idamin.c
kernel/zarch/idmax.c
kernel/zarch/idmin.c
kernel/zarch/isamax.c
kernel/zarch/isamin.c
kernel/zarch/ismax.c
kernel/zarch/ismin.c
kernel/zarch/izamax.c
kernel/zarch/izamin.c
kernel/zarch/samax.c
kernel/zarch/samin.c
kernel/zarch/sasum.c
kernel/zarch/saxpy.c
kernel/zarch/scopy.c
kernel/zarch/sdot.c
kernel/zarch/sgemv_n_4.c
kernel/zarch/sgemv_t_4.c
kernel/zarch/smax.c
kernel/zarch/smin.c
kernel/zarch/srot.c
kernel/zarch/sscal.c
kernel/zarch/ssum.c
kernel/zarch/sswap.c
kernel/zarch/zamax.c
kernel/zarch/zamax_z13.c
kernel/zarch/zamin.c
kernel/zarch/zamin_z13.c
kernel/zarch/zasum.c
kernel/zarch/zaxpy.c
kernel/zarch/zcopy.c
kernel/zarch/zdot.c
kernel/zarch/zgemv_n_4.c
kernel/zarch/zgemv_t_4.c
kernel/zarch/zrot.c
kernel/zarch/zscal.c
kernel/zarch/zsum.c
kernel/zarch/zswap.c

index b10ca47..018a9a9 100644 (file)
@@ -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");
index 40945fa..7b3b366 100644 (file)
@@ -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");
index e28f201..f3b9ed6 100644 (file)
@@ -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");
 
index 14a124a..c0a7a71 100644 (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"
     "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");
index 0a5e039..9e08edc 100644 (file)
@@ -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");
 }
 
index d90f9c8..0d6dfbe 100644 (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  %%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");
index 5c36bc3..5fdf771 100644 (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"
     "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");
index e10edfa..2bdac9e 100644 (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"
         "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");
 }
 
index aab155f..5a0990f 100644 (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"
     "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",
index 9fc54cf..f9e89a4 100644 (file)
@@ -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");
 }
index e9413da..b076501 100644 (file)
@@ -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");
 
index 198994e..f3ab77a 100644 (file)
@@ -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",
index caacb50..d19181c 100644 (file)
@@ -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");
 
index f3db4c1..5bc0d17 100644 (file)
@@ -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");
 
index 0163a14..4e0558a 100644 (file)
@@ -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");
 
index 4196b2e..a7efd4b 100644 (file)
@@ -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");
 
index aa1382b..9703cd3 100644 (file)
@@ -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");
 
index 5b0208c..4e59ef7 100644 (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"
     "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");
index 691b90c..3c54656 100644 (file)
@@ -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");
 }
 
index 9cad68f..c0ed8b7 100644 (file)
@@ -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");
index b2a3d1e..e1c5c44 100644 (file)
@@ -170,12 +170,12 @@ static void dgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
     "brctg  %%r0,2b\n\t"
     "3:\n\t"
     "nop 0"
-    : "+m"(*(struct { FLOAT x[n]; } *) y)
-    : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0),
-       "m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1),
-       "m"(*(const struct { FLOAT x[n]; } *) ap2),[ap2] "a"(ap2),
-       "m"(*(const struct { FLOAT x[n]; } *) ap3),[ap3] "a"(ap3),
-       "m"(*(const struct { FLOAT x[4]; } *) x),[x] "a"(x),[alpha] "Q"(*alpha),
+    : "+m"(*(FLOAT (*)[n]) y)
+    : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
+       "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
+       "m"(*(const FLOAT (*)[n]) ap2),[ap2] "a"(ap2),
+       "m"(*(const FLOAT (*)[n]) ap3),[ap3] "a"(ap3),
+       "m"(*(const FLOAT (*)[4]) x),[x] "a"(x),[alpha] "Q"(*alpha),
        [n] "r"(n)
     : "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
        "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
@@ -275,10 +275,10 @@ static void dgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
     "brctg  %%r0,2b\n\t"
     "3:\n\t"
     "nop 0"
-    : "+m"(*(struct { FLOAT x[n]; } *) y)
-    : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0),
-       "m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1),
-       "m"(*(const struct { FLOAT x[2]; } *) x),[x] "a"(x),[alpha] "Q"(*alpha),
+    : "+m"(*(FLOAT (*)[n]) y)
+    : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
+       "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
+       "m"(*(const FLOAT (*)[2]) x),[x] "a"(x),[alpha] "Q"(*alpha),
        [n] "r"(n)
     : "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
        "v8", "v9", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
@@ -352,8 +352,8 @@ static void dgemv_kernel_4x1(BLASLONG n, FLOAT *a0, FLOAT *x, FLOAT *y,
     "brctg  %%r0,2b\n\t"
     "3:\n\t"
     "nop 0"
-    : "+m"(*(struct { FLOAT x[n]; } *) y)
-    : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) a0),[a0] "a"(a0),
+    : "+m"(*(FLOAT (*)[n]) y)
+    : [y] "a"(y), "m"(*(const FLOAT (*)[n]) a0),[a0] "a"(a0),
        "m"(*(const FLOAT (*)[1]) x),[x] "a"(x),[alpha] "Q"(*alpha),
        [n] "r"(n)
     : "cc", "r0", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21",
index 30cec14..513cffe 100644 (file)
@@ -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");
@@ -439,8 +439,8 @@ static void add_y_kernel_4(BLASLONG n, FLOAT da, FLOAT *src, FLOAT *dest) {
     "brctg  %%r0,2b\n\t"
     "3:\n\t"
     "nop 0"
-    : "+m"(*(struct { FLOAT x[n]; } *) dest)
-    : [dest] "a"(dest),[da] "Q"(da), "m"(*(const struct { FLOAT x[n]; } *) src),
+    : "+m"(*(FLOAT (*)[n]) dest)
+    : [dest] "a"(dest),[da] "Q"(da), "m"(*(const FLOAT (*)[n]) src),
        [src] "a"(src),[n] "r"(n)
     : "cc", "r0", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21",
        "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
index cdc8d5d..4b76e0d 100644 (file)
@@ -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");
 
index c4e8d91..93acee2 100644 (file)
@@ -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");
 
index f9b129c..21d55f3 100644 (file)
@@ -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");
 
index 77f021c..7d2dae3 100644 (file)
@@ -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");
 
index 11fbe15..9d6d1a8 100644 (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"
     "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",
index 2961eff..a5a5e34 100644 (file)
@@ -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");
 }
index 5fa88c3..2952bcf 100644 (file)
@@ -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");
index 8d44873..69b9f9b 100644 (file)
@@ -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");
 
index f0c9ded..46cbbba 100644 (file)
@@ -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",
index 2d5c484..459196d 100644 (file)
@@ -215,7 +215,7 @@ static BLASLONG icamax_kernel_32(BLASLONG n, FLOAT *x, FLOAT *amax) {
     "2:\n\t"
     "nop 0"
     : [iamax] "=r"(iamax),[amax] "=Q"(*amax),[n] "+&r"(n)
-    : "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x)
+    : "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x)
     : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8",
        "v9", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24",
        "v25", "v26", "v27", "v28", "v29", "v30", "v31");
index 1d51bb2..9bcf364 100644 (file)
@@ -215,7 +215,7 @@ static BLASLONG icamin_kernel_32(BLASLONG n, FLOAT *x, FLOAT *amin) {
     "2:\n\t"
     "nop 0"
     : [iamin] "=r"(iamin),[amin] "=Q"(*amin),[n] "+&r"(n)
-    : "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x)
+    : "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x)
     : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8",
        "v9", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24",
        "v25", "v26", "v27", "v28", "v29", "v30", "v31");
index f9bfe34..0f53488 100644 (file)
@@ -162,7 +162,7 @@ static BLASLONG idamax_kernel_32(BLASLONG n, FLOAT *x, FLOAT *amax) {
     "2:\n\t"
     "nop 0"
     : [iamax] "=r"(iamax),[amax] "=Q"(*amax),[n] "+&r"(n)
-    : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+    : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
     : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
        "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
        "v27", "v28", "v29", "v30", "v31");
index b7ce700..f48bde8 100644 (file)
@@ -162,7 +162,7 @@ static BLASLONG idamin_kernel_32(BLASLONG n, FLOAT *x, FLOAT *amin) {
     "2:\n\t"
     "nop 0"
     : [iamin] "=r"(iamin),[amin] "=Q"(*amin),[n] "+&r"(n)
-    : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+    : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
     : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
        "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
        "v27", "v28", "v29", "v30", "v31");
index 55471ce..1fdf1fa 100644 (file)
@@ -142,7 +142,7 @@ static BLASLONG idmax_kernel_32(BLASLONG n, FLOAT *x, FLOAT *max) {
     "2:\n\t"
     "nop 0"
     : [imax] "=r"(imax),[max] "=Q"(*max),[n] "+&r"(n)
-    : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+    : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
     : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
        "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
        "v27", "v28", "v29", "v30", "v31");
index ec1c698..282f26b 100644 (file)
@@ -142,7 +142,7 @@ static BLASLONG idmin_kernel_32(BLASLONG n, FLOAT *x, FLOAT *min) {
     "2:\n\t"
     "nop 0"
     : [imin] "=r"(imin),[min] "=Q"(*min),[n] "+&r"(n)
-    : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+    : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
     : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16",
        "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
        "v27", "v28", "v29", "v30", "v31");
index 6ea46c7..a30a964 100644 (file)
@@ -206,7 +206,7 @@ static BLASLONG isamax_kernel_64(BLASLONG n, FLOAT *x, FLOAT *amax) {
     "2:\n\t"
     "nop 0"
     : [iamax] "=r"(iamax),[amax] "=Q"(*amax),[n] "+&r"(n)
-    : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+    : "m"(*(const FLOAT(*)[n]) x),[x] "a"(x)
     : "cc", "r1", "v0", "v1", "v2", "v4", "v5", "v6", "v7", "v8", "v16",
        "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
        "v27", "v28", "v29", "v30", "v31");
index 18cfa2a..b29027f 100644 (file)
@@ -206,7 +206,7 @@ static BLASLONG isamin_kernel_64(BLASLONG n, FLOAT *x, FLOAT *amin) {
     "2:\n\t"
     "nop 0"
     : [iamin] "=r"(iamin),[amin] "=Q"(*amin),[n] "+&r"(n)
-    : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+    : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
     : "cc", "r1", "v0", "v1", "v2", "v4", "v5", "v6", "v7", "v8", "v16",
        "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
        "v27", "v28", "v29", "v30", "v31");
index be990b9..3d751ff 100644 (file)
@@ -186,7 +186,7 @@ static BLASLONG ismax_kernel_64(BLASLONG n, FLOAT *x, FLOAT *max) {
     "2:\n\t"
     "nop 0"
     : [imax] "=r"(imax),[max] "=Q"(*max),[n] "+&r"(n)
-    : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+    : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
     : "cc", "r1", "v0", "v1", "v2", "v4", "v5", "v6", "v7", "v8", "v16",
        "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
        "v27", "v28", "v29", "v30", "v31");
index a27c8a7..e57c0bf 100644 (file)
@@ -186,7 +186,7 @@ static BLASLONG ismin_kernel_64(BLASLONG n, FLOAT *x, FLOAT *min) {
     "2:\n\t"
     "nop 0"
     : [imin] "=r"(imin),[min] "=Q"(*min),[n] "+&r"(n)
-    : "m"(*(const struct { FLOAT x[n]; } *) x),[x] "a"(x)
+    : "m"(*(const FLOAT (*)[n]) x),[x] "a"(x)
     : "cc", "r1", "v0", "v1", "v2", "v4", "v5", "v6", "v7", "v8", "v16",
        "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26",
        "v27", "v28", "v29", "v30", "v31");
index cb299cb..fda76f4 100644 (file)
@@ -159,7 +159,7 @@ static BLASLONG izamax_kernel_16(BLASLONG n, FLOAT *x, FLOAT *amax) {
     "2:\n\t"
     "nop 0"
     : [iamax] "=r"(iamax),[amax] "=Q"(*amax),[n] "+&r"(n)
-    : "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x)
+    : "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x)
     : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v16", "v17", "v18",
        "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v27");
 
index 4dfa1a9..412ab15 100644 (file)
@@ -159,7 +159,7 @@ static BLASLONG izamin_kernel_16(BLASLONG n, FLOAT *x, FLOAT *amin) {
     "2:\n\t"
     "nop 0"
     : [iamin] "=r"(iamin),[amin] "=Q"(*amin),[n] "+&r"(n)
-    : "m"(*(const struct { FLOAT x[n * 2]; } *) x),[x] "a"(x)
+    : "m"(*(const FLOAT (*)[n * 2]) x),[x] "a"(x)
     : "cc", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v16", "v17", "v18",
        "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v27");
 
index fdda6dd..20da440 100644 (file)
@@ -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");
 
index f05e851..e7e4fd9 100644 (file)
@@ -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");
 
index d56f269..4cf74f3 100644 (file)
@@ -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");
 
index ca34a47..8bcb1a6 100644 (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"
     "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");
index 5c453cf..631c9f9 100644 (file)
@@ -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");
 }
 
index d870b30..d27c171 100644 (file)
@@ -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");
index a0d522b..b4cfb61 100644 (file)
@@ -160,12 +160,12 @@ static void sgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
     "brctg  %%r0,2b\n\t"
     "3:\n\t"
     "nop 0"
-    : "+m"(*(struct { FLOAT x[n]; } *) y)
-    : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0),
-       "m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1),
-       "m"(*(const struct { FLOAT x[n]; } *) ap2),[ap2] "a"(ap2),
-       "m"(*(const struct { FLOAT x[n]; } *) ap3),[ap3] "a"(ap3),
-       "m"(*(const struct { FLOAT x[4]; } *) x),[x] "a"(x),[alpha] "Q"(*alpha),
+    : "+m"(*(FLOAT (*)[n]) y)
+    : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
+       "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
+       "m"(*(const FLOAT (*)[n]) ap2),[ap2] "a"(ap2),
+       "m"(*(const FLOAT (*)[n]) ap3),[ap3] "a"(ap3),
+       "m"(*(const FLOAT (*)[4]) x),[x] "a"(x),[alpha] "Q"(*alpha),
        [n] "r"(n)
     : "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
        "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
@@ -259,10 +259,10 @@ static void sgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y,
     "brctg  %%r0,2b\n\t"
     "3:\n\t"
     "nop 0"
-    : "+m"(*(struct { FLOAT x[n]; } *) y)
-    : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) ap0),[ap0] "a"(ap0),
-       "m"(*(const struct { FLOAT x[n]; } *) ap1),[ap1] "a"(ap1),
-       "m"(*(const struct { FLOAT x[2]; } *) x),[x] "a"(x),[alpha] "Q"(*alpha),
+    : "+m"(*(FLOAT (*)[n]) y)
+    : [y] "a"(y), "m"(*(const FLOAT (*)[n]) ap0),[ap0] "a"(ap0),
+       "m"(*(const FLOAT (*)[n]) ap1),[ap1] "a"(ap1),
+       "m"(*(const FLOAT (*)[2]) x),[x] "a"(x),[alpha] "Q"(*alpha),
        [n] "r"(n)
     : "cc", "r0", "r1", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
        "v8", "v9", "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
@@ -332,8 +332,8 @@ static void sgemv_kernel_4x1(BLASLONG n, FLOAT *a0, FLOAT *x, FLOAT *y,
     "brctg  %%r0,2b\n\t"
     "3:\n\t"
     "nop 0"
-    : "+m"(*(struct { FLOAT x[n]; } *) y)
-    : [y] "a"(y), "m"(*(const struct { FLOAT x[n]; } *) a0),[a0] "a"(a0),
+    : "+m"(*(FLOAT (*)[n]) y)
+    : [y] "a"(y), "m"(*(const FLOAT (*)[n]) a0),[a0] "a"(a0),
        "m"(*(const FLOAT (*)[1]) x),[x] "a"(x),[alpha] "Q"(*alpha),
        [n] "r"(n)
     : "cc", "r0", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21",
index 81e6006..3c70820 100644 (file)
@@ -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");
@@ -432,8 +432,8 @@ static void add_y_kernel_4(BLASLONG n, FLOAT da, FLOAT *src, FLOAT *dest) {
     "brctg  %%r0,2b\n\t"
     "3:\n\t"
     "nop 0"
-    : "+m"(*(struct { FLOAT x[n]; } *) dest)
-    : [dest] "a"(dest),[da] "Q"(da), "m"(*(const struct { FLOAT x[n]; } *) src),
+    : "+m"(*(FLOAT (*)[n]) dest)
+    : [dest] "a"(dest),[da] "Q"(da), "m"(*(const FLOAT (*)[n]) src),
        [src] "a"(src),[n] "r"(n)
     : "cc", "r0", "r1", "v0", "v16", "v17", "v18", "v19", "v20", "v21",
        "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30",
index 7015aaa..0c7433c 100644 (file)
@@ -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");
 
index b6875c5..5e0f386 100644 (file)
@@ -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");
 
index 4f471d8..c235adc 100644 (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"
     "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",
index 9b9930d..da2f49e 100644 (file)
@@ -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");
 }
index 3f3f46a..02aabdf 100644 (file)
@@ -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");
 
index 0c62f18..ec86076 100644 (file)
@@ -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",
index aa04ab9..98e40d0 100644 (file)
@@ -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");
 
index 37278d6..f727ad6 100644 (file)
@@ -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");
 
index 0b54028..2e43fef 100644 (file)
@@ -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");
 
index e37bb22..e528025 100644 (file)
@@ -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");
 
index aeef8d7..0003f38 100644 (file)
@@ -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");
 
index 9363ec3..f2c1155 100644 (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"
     "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");
index 5a46aec..d91d9f3 100644 (file)
@@ -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");
 }
 
index ac6e69c..6b71441 100644 (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  %%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");
index 13045a3..2ef9b4d 100644 (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"
     "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",
index 031c31e..c107692 100644 (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  %%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");
 }
 
index 6284d5a..3b87e35 100644 (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"
     "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",
index e497a6d..a5a8f69 100644 (file)
@@ -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");
 }
index e0f978d..b35832a 100644 (file)
@@ -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");
 
index bc46686..7a2d1f8 100644 (file)
@@ -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",