optimizations for trsm
authorwernsaar <wernsaar@googlemail.com>
Fri, 25 Jul 2014 09:59:17 +0000 (11:59 +0200)
committerwernsaar <wernsaar@googlemail.com>
Fri, 25 Jul 2014 09:59:17 +0000 (11:59 +0200)
driver/level3/trsm_L.c
driver/level3/trsm_R.c

index fa3b0d5..78da0eb 100644 (file)
@@ -128,7 +128,9 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLO
 
       for(jjs = js; jjs < js + min_j; jjs += min_jj){
        min_jj = min_j + js - jjs;
-       if (min_jj > GEMM_UNROLL_N) min_jj = GEMM_UNROLL_N;
+       if (min_jj > GEMM_UNROLL_N*3) min_jj = GEMM_UNROLL_N*3;
+       else
+         if (min_jj > GEMM_UNROLL_N) min_jj = GEMM_UNROLL_N;
 
        GEMM_ONCOPY(min_l, min_jj, b + (ls + jjs * ldb) * COMPSIZE, ldb, sb + min_l * (jjs - js) * COMPSIZE);
 
@@ -194,7 +196,9 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLO
 
       for(jjs = js; jjs < js + min_j; jjs += min_jj){
        min_jj = min_j + js - jjs;
-       if (min_jj > GEMM_UNROLL_N) min_jj = GEMM_UNROLL_N;
+       if (min_jj > GEMM_UNROLL_N*3) min_jj = GEMM_UNROLL_N*3;
+       else
+         if (min_jj > GEMM_UNROLL_N) min_jj = GEMM_UNROLL_N;
 
        GEMM_ONCOPY(min_l, min_jj, b + (ls - min_l + jjs * ldb) * COMPSIZE, ldb, sb + min_l * (jjs - js) * COMPSIZE);
 
index b6ee956..169441d 100644 (file)
@@ -123,7 +123,9 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLO
 
       for(jjs = js; jjs < js + min_j; jjs += min_jj){
        min_jj = min_j + js - jjs;
-       if (min_jj > GEMM_UNROLL_N) min_jj = GEMM_UNROLL_N;
+       if (min_jj > GEMM_UNROLL_N*3) min_jj = GEMM_UNROLL_N*3;
+       else
+         if (min_jj > GEMM_UNROLL_N) min_jj = GEMM_UNROLL_N;
 
 #ifndef TRANSA
        GEMM_ONCOPY(min_l, min_jj, a + (ls + jjs * lda) * COMPSIZE, lda, sb + min_l * (jjs - js) * COMPSIZE);
@@ -177,7 +179,9 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLO
 
       for(jjs = 0; jjs < min_j - min_l - ls + js; jjs += min_jj){
        min_jj = min_j - min_l - ls + js - jjs;
-       if (min_jj > GEMM_UNROLL_N) min_jj = GEMM_UNROLL_N;
+       if (min_jj > GEMM_UNROLL_N*3) min_jj = GEMM_UNROLL_N*3;
+       else
+         if (min_jj > GEMM_UNROLL_N) min_jj = GEMM_UNROLL_N;
 
 #ifndef TRANSA
       GEMM_ONCOPY (min_l, min_jj, a + (ls + (ls + min_l + jjs) * lda) * COMPSIZE, lda,
@@ -238,7 +242,9 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLO
 
       for(jjs = js; jjs < js + min_j; jjs += min_jj){
        min_jj = min_j + js - jjs;
-       if (min_jj > GEMM_UNROLL_N) min_jj = GEMM_UNROLL_N;
+       if (min_jj > GEMM_UNROLL_N*3) min_jj = GEMM_UNROLL_N*3;
+       else
+         if (min_jj > GEMM_UNROLL_N) min_jj = GEMM_UNROLL_N;
 
 #ifndef TRANSA
        GEMM_ONCOPY(min_l, min_jj, a + (ls + (jjs - min_j) * lda) * COMPSIZE, lda, sb + min_l * (jjs - js) * COMPSIZE);
@@ -297,7 +303,9 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLO
 
       for(jjs = 0; jjs < min_j - js + ls; jjs += min_jj){
        min_jj = min_j - js + ls - jjs;
-       if (min_jj > GEMM_UNROLL_N) min_jj = GEMM_UNROLL_N;
+       if (min_jj > GEMM_UNROLL_N*3) min_jj = GEMM_UNROLL_N*3;
+       else
+         if (min_jj > GEMM_UNROLL_N) min_jj = GEMM_UNROLL_N;
 
 #ifndef TRANSA
        GEMM_ONCOPY (min_l, min_jj, a + (ls + (js - min_j + jjs) * lda) * COMPSIZE, lda,