Tag %1 and %2 as both input and output
authorMartin Kroeker <martin@ruby.chemie.uni-freiburg.de>
Fri, 29 Dec 2017 22:56:41 +0000 (23:56 +0100)
committerGitHub <noreply@github.com>
Fri, 29 Dec 2017 22:56:41 +0000 (23:56 +0100)
The inline assembly modifies its input operands, so mark them as output to avoid surprises with optimization. Fixes #1292

kernel/x86_64/cgemv_n_microk_haswell-4.c
kernel/x86_64/cgemv_t_microk_haswell-4.c
kernel/x86_64/dgemv_n_microk_haswell-4.c
kernel/x86_64/dgemv_t_microk_haswell-4.c
kernel/x86_64/sgemv_n_microk_haswell-4.c
kernel/x86_64/sgemv_t_microk_haswell-4.c
kernel/x86_64/zgemv_n_microk_haswell-4.c
kernel/x86_64/zgemv_t_microk_haswell-4.c

index 3603450..2a8c0ea 100644 (file)
@@ -159,9 +159,9 @@ static void cgemv_kernel_4x4( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y)
        "vzeroupper                      \n\t"
 
        :
-        : 
-          "r" (i),     // 0    
-         "r" (n1),     // 1
+          "+r" (i),    // 0    
+         "+r" (n1)     // 1
+       :
           "r" (x),      // 2
           "r" (y),      // 3
           "r" (ap[0]),  // 4
@@ -283,9 +283,9 @@ static void cgemv_kernel_4x2( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y)
        "vzeroupper                      \n\t"
 
        :
-        : 
-          "r" (i),     // 0    
-         "r" (n1),     // 1
+          "+r" (i),    // 0    
+         "+r" (n1)     // 1
+       :
           "r" (x),      // 2
           "r" (y),      // 3
           "r" (ap[0]),  // 4
@@ -390,9 +390,9 @@ static void cgemv_kernel_4x1( BLASLONG n, FLOAT *ap, FLOAT *x, FLOAT *y)
        "vzeroupper                      \n\t"
 
        :
-        : 
-          "r" (i),     // 0    
-         "r" (n1),     // 1
+          "+r" (i),    // 0    
+         "+r" (n1)     // 1
+       :
           "r" (x),      // 2
           "r" (y),      // 3
           "r" (ap),     // 4
@@ -520,9 +520,9 @@ static void add_y(BLASLONG n, FLOAT *src, FLOAT *dest, BLASLONG inc_dest,FLOAT a
        "vzeroupper                      \n\t"
 
        :
-        : 
-          "r" (i),           // 0      
-         "r" (n1),           // 1
+          "+r" (i),          // 0      
+         "+r" (n1)           // 1
+       :
           "r" (src),          // 2
           "r" (dest),         // 3
           "r" (&alpha_r),     // 4
index 1c20751..1674f0f 100644 (file)
@@ -230,9 +230,9 @@ static void cgemv_kernel_4x4( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y, FLOAT
        "vzeroupper                      \n\t"
 
        :
-        : 
-          "r" (i),     // 0    
-         "r" (n),      // 1
+          "+r" (i),    // 0    
+         "+r" (n)      // 1
+       :
           "r" (x),      // 2
           "r" (y),      // 3
           "r" (ap[0]),  // 4
@@ -391,9 +391,9 @@ static void cgemv_kernel_4x2( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y, FLOAT
        "vzeroupper                      \n\t"
 
        :
-        : 
-          "r" (i),     // 0    
-         "r" (n),      // 1
+          "+r" (i),    // 0    
+         "+r" (n)      // 1
+       :
           "r" (x),      // 2
           "r" (y),      // 3
           "r" (ap[0]),  // 4
@@ -519,9 +519,9 @@ static void cgemv_kernel_4x1( BLASLONG n, FLOAT *ap, FLOAT *x, FLOAT *y, FLOAT *
        "vzeroupper                      \n\t"
 
        :
-        : 
-          "r" (i),     // 0    
-         "r" (n),      // 1
+          "+r" (i),    // 0    
+         "+r" (n)      // 1
+       :
           "r" (x),      // 2
           "r" (y),      // 3
           "r" (ap),     // 4
index 7b36ffe..584a6c6 100644 (file)
@@ -93,9 +93,9 @@ static void dgemv_kernel_4x4( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y, FLOAT
        "vzeroupper                                   \n\t"
 
        :
-        : 
-          "r" (i),     // 0    
-         "r" (n),      // 1
+          "+r" (i),    // 0    
+         "+r" (n)      // 1
+       :
           "r" (x),      // 2
           "r" (y),      // 3
           "r" (ap[0]),  // 4
@@ -172,9 +172,9 @@ static void dgemv_kernel_4x2( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y, FLOAT
 
 
        :
-        : 
-          "r" (i),     // 0    
-         "r" (n),      // 1
+          "+r" (i),    // 0    
+         "+r" (n)      // 1
+       :
           "r" (x),      // 2
           "r" (y),      // 3
           "r" (ap[0]),  // 4
index 07fca85..958fd3e 100644 (file)
@@ -107,9 +107,9 @@ static void dgemv_kernel_4x4( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y)
        "vzeroupper                      \n\t"
 
        :
-        : 
-          "r" (i),     // 0    
-         "r" (n),      // 1
+          "+r" (i),    // 0    
+         "+r" (n)      // 1
+       :
           "r" (x),      // 2
           "r" (y),      // 3
           "r" (ap[0]),  // 4
index b4b88ed..2c90f8a 100644 (file)
@@ -153,10 +153,10 @@ static void sgemv_kernel_4x8( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y, BLASLO
        "vzeroupper                             \n\t"
 
        :
-        : 
-          "r" (i),     // 0    
-         "r" (n),      // 1
-          "r" (x),      // 2
+          "+r" (i),    // 0    
+         "+r" (n)      // 1
+        :  
+         "r" (x),      // 2
           "r" (y),      // 3
           "r" (ap[0]),  // 4
           "r" (ap[1]),  // 5
@@ -276,9 +276,9 @@ static void sgemv_kernel_4x4( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y, FLOAT
        "vzeroupper                      \n\t"
 
        :
-        : 
-          "r" (i),     // 0    
-         "r" (n),      // 1
+          "+r" (i),    // 0    
+         "+r" (n)      // 1
+       :
           "r" (x),      // 2
           "r" (y),      // 3
           "r" (ap[0]),  // 4
index eca8586..8c370b4 100644 (file)
@@ -128,9 +128,9 @@ static void sgemv_kernel_4x4( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y)
        "vzeroupper                      \n\t"
 
        :
-        : 
-          "r" (i),     // 0    
-         "r" (n),      // 1
+          "+r" (i),    // 0    
+         "+r" (n)      // 1
+       :
           "r" (x),      // 2
           "r" (y),      // 3
           "r" (ap[0]),  // 4
index 559ed5b..4d3a032 100644 (file)
@@ -115,9 +115,9 @@ static void zgemv_kernel_4x4( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y)
        "vzeroupper                      \n\t"
 
        :
-        : 
-          "r" (i),     // 0    
-         "r" (n),      // 1
+          "+r" (i),    // 0    
+         "+r" (n)      // 1
+       :
           "r" (x),      // 2
           "r" (y),      // 3
           "r" (ap[0]),  // 4
@@ -203,9 +203,9 @@ static void zgemv_kernel_4x2( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y)
        "vzeroupper                      \n\t"
 
        :
-        : 
-          "r" (i),     // 0    
-         "r" (n),      // 1
+          "+r" (i),    // 0    
+         "+r" (n)      // 1
+       :
           "r" (x),      // 2
           "r" (y),      // 3
           "r" (ap[0]),  // 4
@@ -277,9 +277,9 @@ static void zgemv_kernel_4x1( BLASLONG n, FLOAT *ap, FLOAT *x, FLOAT *y)
        "vzeroupper                      \n\t"
 
        :
-        : 
-          "r" (i),     // 0    
-         "r" (n),      // 1
+          "+r" (i),    // 0    
+         "+r" (n)      // 1
+       :
           "r" (x),      // 2
           "r" (y),      // 3
           "r" (ap)      // 4
@@ -379,9 +379,9 @@ static void add_y(BLASLONG n, FLOAT *src, FLOAT *dest, BLASLONG inc_dest,FLOAT a
        "vzeroupper                      \n\t"
 
        :
-        : 
-          "r" (i),           // 0      
-         "r" (n),            // 1
+          "+r" (i),          // 0      
+         "+r" (n)            // 1
+       :
           "r" (src),          // 2
           "r" (dest),         // 3
           "r" (&alpha_r),     // 4
index e391012..585783c 100644 (file)
@@ -181,9 +181,9 @@ static void zgemv_kernel_4x4( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y, FLOAT
        "vzeroupper                      \n\t"
 
        :
-        : 
-          "r" (i),     // 0    
-         "r" (n),      // 1
+          "+r" (i),    // 0    
+         "+r" (n)      // 1
+       :
           "r" (x),      // 2
           "r" (y),      // 3
           "r" (ap[0]),  // 4
@@ -308,9 +308,9 @@ static void zgemv_kernel_4x2( BLASLONG n, FLOAT **ap, FLOAT *x, FLOAT *y, FLOAT
        "vzeroupper                      \n\t"
 
        :
-        : 
-          "r" (i),     // 0    
-         "r" (n),      // 1
+          "+r" (i),    // 0    
+         "+r" (n)      // 1
+       :
           "r" (x),      // 2
           "r" (y),      // 3
           "r" (ap[0]),  // 4
@@ -407,9 +407,9 @@ static void zgemv_kernel_4x1( BLASLONG n, FLOAT *ap, FLOAT *x, FLOAT *y, FLOAT *
        "vzeroupper                      \n\t"
 
        :
-        : 
-          "r" (i),     // 0    
-         "r" (n),      // 1
+          "+r" (i),    // 0    
+         "+r" (n)      // 1
+       :
           "r" (x),      // 2
           "r" (y),      // 3
           "r" (ap),     // 4