Merge pull request #1226 from ashwinyes/develop_arm_clang_ual_fix
[platform/upstream/openblas.git] / kernel / arm / cgemv_t_vfp.S
index 76c8a8f..c07b6d6 100644 (file)
@@ -38,11 +38,23 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 #define STACKSIZE 256
 
-#define        OLD_LDA         [fp, #0 ]
-#define        X               [fp, #4 ]
-#define        OLD_INC_X       [fp, #8 ]
-#define        Y               [fp, #12 ]
-#define        OLD_INC_Y       [fp, #16 ]
+#if !defined(__ARM_PCS_VFP)
+#define OLD_ALPHAR     r3
+#define OLD_ALPHAI     [fp, #0 ]
+#define OLD_A_SOFTFP   [fp, #4 ]
+#define OLD_LDA                [fp, #8 ]
+#define X              [fp, #12 ]
+#define OLD_INC_X      [fp, #16 ]
+#define Y              [fp, #20 ]
+#define OLD_INC_Y      [fp, #24 ]
+#else
+#define OLD_LDA                [fp, #0 ]
+#define X              [fp, #4 ]
+#define OLD_INC_X      [fp, #8 ]
+#define Y              [fp, #12 ]
+#define OLD_INC_Y      [fp, #16 ]
+#endif
+
 #define OLD_A          r3
 #define        OLD_N           r1
 
@@ -76,42 +88,42 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 #if !defined(CONJ) && !defined(XCONJ)
 
-        #define KMAC_R  fnmacs
+        #define KMAC_R  vmls.f32
         #define KMAC_I  fmacs
 
         #define FMAC_R1 fmacs
-        #define FMAC_R2 fnmacs
+        #define FMAC_R2 vmls.f32
         #define FMAC_I1 fmacs
         #define FMAC_I2 fmacs
 
 #elif defined(CONJ) && !defined(XCONJ)
 
         #define KMAC_R  fmacs
-        #define KMAC_I  fnmacs
+        #define KMAC_I  vmls.f32
 
         #define FMAC_R1 fmacs
-        #define FMAC_R2 fnmacs
+        #define FMAC_R2 vmls.f32
         #define FMAC_I1 fmacs
         #define FMAC_I2 fmacs
 
 #elif !defined(CONJ) && defined(XCONJ)
 
         #define KMAC_R  fmacs
-        #define KMAC_I  fnmacs
+        #define KMAC_I  vmls.f32
 
         #define FMAC_R1 fmacs
         #define FMAC_R2 fmacs
-        #define FMAC_I1 fnmacs
+        #define FMAC_I1 vmls.f32
         #define FMAC_I2 fmacs
 
 #else
 
-        #define KMAC_R  fnmacs
+        #define KMAC_R  vmls.f32
         #define KMAC_I  fmacs
 
         #define FMAC_R1 fmacs
         #define FMAC_R2 fmacs
-        #define FMAC_I1 fnmacs
+        #define FMAC_I1 vmls.f32
         #define FMAC_I2 fmacs
 
 #endif
@@ -359,6 +371,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        cmp     OLD_N, #0
        ble     cgemvt_kernel_L999
 
+#if !defined(__ARM_PCS_VFP)
+       vmov    s0, OLD_ALPHAR
+       vldr    s1, OLD_ALPHAI
+       ldr     OLD_A, OLD_A_SOFTFP
+#endif
+
        str     OLD_A, A
        str     OLD_N, N