Add shortcuts for (small) cases that do not need expensive buffer allocation
authorMartin Kroeker <martin@ruby.chemie.uni-freiburg.de>
Sat, 29 May 2021 20:28:00 +0000 (22:28 +0200)
committerGitHub <noreply@github.com>
Sat, 29 May 2021 20:28:00 +0000 (22:28 +0200)
interface/trsv.c
interface/ztrsv.c

index a054d8e..6a6e8f8 100644 (file)
@@ -188,6 +188,12 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
 
   if (n == 0) return;
 
+  if (incx == 1 && trans == 0 && n < 50) {
+    buffer = NULL;
+    (trsv[(trans<<2) | (uplo<<1) | unit])(n, a, lda, x, incx, buffer);
+    return;  
+  }
+
   IDEBUG_START;
 
   FUNCTION_PROFILE_START();
index cbb7bba..cf750b0 100644 (file)
@@ -199,6 +199,12 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
 
   if (n == 0) return;
 
+  if (incx == 1 && trans == 0 && n < 50) {
+    buffer = NULL;
+    (trsv[(trans<<2) | (uplo<<1) | unit])(n, a, lda, x, incx, buffer);
+    return;
+  }
+
   IDEBUG_START;
 
   FUNCTION_PROFILE_START();