]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libgfortran/generated/matmulavx128_c16.c
Update copyright years.
[thirdparty/gcc.git] / libgfortran / generated / matmulavx128_c16.c
index 74e79dc7040766acc4429da4d4ee7ccc96a0f1ed..32a355e424d08747bc95aa9c0099e07a16fa0458 100644 (file)
@@ -1,5 +1,5 @@
 /* Implementation of the MATMUL intrinsic
-   Copyright (C) 2002-2018 Free Software Foundation, Inc.
+   Copyright (C) 2002-2020 Free Software Foundation, Inc.
    Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>.
 
 This file is part of the GNU Fortran runtime library (libgfortran).
@@ -109,8 +109,8 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
          arg_extent = GFC_DESCRIPTOR_EXTENT(b,1);
          ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
          if (arg_extent != ret_extent)
-           runtime_error ("Incorrect extent in return array in"
-                          " MATMUL intrinsic: is %ld, should be %ld",
+           runtime_error ("Array bound mismatch for dimension 1 of "
+                          "array (%ld/%ld) ",
                           (long int) ret_extent, (long int) arg_extent);
        }
       else if (GFC_DESCRIPTOR_RANK (b) == 1)
@@ -118,8 +118,8 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
          arg_extent = GFC_DESCRIPTOR_EXTENT(a,0);
          ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
          if (arg_extent != ret_extent)
-           runtime_error ("Incorrect extent in return array in"
-                          " MATMUL intrinsic: is %ld, should be %ld",
+           runtime_error ("Array bound mismatch for dimension 1 of "
+                          "array (%ld/%ld) ",
                           (long int) ret_extent, (long int) arg_extent);
        }
       else
@@ -127,17 +127,15 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
          arg_extent = GFC_DESCRIPTOR_EXTENT(a,0);
          ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
          if (arg_extent != ret_extent)
-           runtime_error ("Incorrect extent in return array in"
-                          " MATMUL intrinsic for dimension 1:"
-                          " is %ld, should be %ld",
+           runtime_error ("Array bound mismatch for dimension 1 of "
+                          "array (%ld/%ld) ",
                           (long int) ret_extent, (long int) arg_extent);
 
          arg_extent = GFC_DESCRIPTOR_EXTENT(b,1);
          ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,1);
          if (arg_extent != ret_extent)
-           runtime_error ("Incorrect extent in return array in"
-                          " MATMUL intrinsic for dimension 2:"
-                          " is %ld, should be %ld",
+           runtime_error ("Array bound mismatch for dimension 2 of "
+                          "array (%ld/%ld) ",
                           (long int) ret_extent, (long int) arg_extent);
        }
     }
@@ -178,7 +176,9 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
   if (count != GFC_DESCRIPTOR_EXTENT(b,0))
     {
       if (count > 0 || GFC_DESCRIPTOR_EXTENT(b,0) > 0)
-       runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
+       runtime_error ("Incorrect extent in argument B in MATMUL intrinsic "
+                      "in dimension 1: is %ld, should be %ld",
+                      (long int) GFC_DESCRIPTOR_EXTENT(b,0), (long int) count);
     }
 
   if (GFC_DESCRIPTOR_RANK (b) == 1)
@@ -223,7 +223,18 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
       if (lda > 0 && ldb > 0 && ldc > 0 && m > 1 && n > 1 && k > 1)
        {
          assert (gemm != NULL);
-         gemm (axstride == 1 ? "N" : "T", bxstride == 1 ? "N" : "T", &m,
+         const char *transa, *transb;
+         if (try_blas & 2)
+           transa = "C";
+         else
+           transa = axstride == 1 ? "N" : "T";
+
+         if (try_blas & 4)
+           transb = "C";
+         else
+           transb = bxstride == 1 ? "N" : "T";
+
+         gemm (transa, transb , &m,
                &n, &k, &one, abase, &lda, bbase, &ldb, &zero, dest,
                &ldc, 1, 1);
          return;
@@ -282,8 +293,13 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
        return;
 
       /* Adjust size of t1 to what is needed.  */
-      index_type t1_dim;
-      t1_dim = (a_dim1-1) * 256 + b_dim1;
+      index_type t1_dim, a_sz;
+      if (aystride == 1)
+        a_sz = rystride;
+      else
+        a_sz = a_dim1;
+
+      t1_dim = a_sz * 256 + b_dim1;
       if (t1_dim > 65536)
        t1_dim = 65536;
 
@@ -662,8 +678,8 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
          arg_extent = GFC_DESCRIPTOR_EXTENT(b,1);
          ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
          if (arg_extent != ret_extent)
-           runtime_error ("Incorrect extent in return array in"
-                          " MATMUL intrinsic: is %ld, should be %ld",
+           runtime_error ("Array bound mismatch for dimension 1 of "
+                          "array (%ld/%ld) ",
                           (long int) ret_extent, (long int) arg_extent);
        }
       else if (GFC_DESCRIPTOR_RANK (b) == 1)
@@ -671,8 +687,8 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
          arg_extent = GFC_DESCRIPTOR_EXTENT(a,0);
          ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
          if (arg_extent != ret_extent)
-           runtime_error ("Incorrect extent in return array in"
-                          " MATMUL intrinsic: is %ld, should be %ld",
+           runtime_error ("Array bound mismatch for dimension 1 of "
+                          "array (%ld/%ld) ",
                           (long int) ret_extent, (long int) arg_extent);
        }
       else
@@ -680,17 +696,15 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
          arg_extent = GFC_DESCRIPTOR_EXTENT(a,0);
          ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,0);
          if (arg_extent != ret_extent)
-           runtime_error ("Incorrect extent in return array in"
-                          " MATMUL intrinsic for dimension 1:"
-                          " is %ld, should be %ld",
+           runtime_error ("Array bound mismatch for dimension 1 of "
+                          "array (%ld/%ld) ",
                           (long int) ret_extent, (long int) arg_extent);
 
          arg_extent = GFC_DESCRIPTOR_EXTENT(b,1);
          ret_extent = GFC_DESCRIPTOR_EXTENT(retarray,1);
          if (arg_extent != ret_extent)
-           runtime_error ("Incorrect extent in return array in"
-                          " MATMUL intrinsic for dimension 2:"
-                          " is %ld, should be %ld",
+           runtime_error ("Array bound mismatch for dimension 2 of "
+                          "array (%ld/%ld) ",
                           (long int) ret_extent, (long int) arg_extent);
        }
     }
@@ -731,7 +745,9 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
   if (count != GFC_DESCRIPTOR_EXTENT(b,0))
     {
       if (count > 0 || GFC_DESCRIPTOR_EXTENT(b,0) > 0)
-       runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
+       runtime_error ("Incorrect extent in argument B in MATMUL intrinsic "
+                      "in dimension 1: is %ld, should be %ld",
+                      (long int) GFC_DESCRIPTOR_EXTENT(b,0), (long int) count);
     }
 
   if (GFC_DESCRIPTOR_RANK (b) == 1)
@@ -776,7 +792,18 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
       if (lda > 0 && ldb > 0 && ldc > 0 && m > 1 && n > 1 && k > 1)
        {
          assert (gemm != NULL);
-         gemm (axstride == 1 ? "N" : "T", bxstride == 1 ? "N" : "T", &m,
+         const char *transa, *transb;
+         if (try_blas & 2)
+           transa = "C";
+         else
+           transa = axstride == 1 ? "N" : "T";
+
+         if (try_blas & 4)
+           transb = "C";
+         else
+           transb = bxstride == 1 ? "N" : "T";
+
+         gemm (transa, transb , &m,
                &n, &k, &one, abase, &lda, bbase, &ldb, &zero, dest,
                &ldc, 1, 1);
          return;
@@ -835,8 +862,13 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
        return;
 
       /* Adjust size of t1 to what is needed.  */
-      index_type t1_dim;
-      t1_dim = (a_dim1-1) * 256 + b_dim1;
+      index_type t1_dim, a_sz;
+      if (aystride == 1)
+        a_sz = rystride;
+      else
+        a_sz = a_dim1;
+
+      t1_dim = a_sz * 256 + b_dim1;
       if (t1_dim > 65536)
        t1_dim = 65536;