Blame SOURCES/0003-Fix-SIMD-support-on-IBM-z13.patch

90d3fb
From 999efd5370b33e8b02d9370eda3d454e08fc9d15 Mon Sep 17 00:00:00 2001
90d3fb
From: Andreas Arnez <arnez@linux.ibm.com>
90d3fb
Date: Wed, 5 Dec 2018 18:59:15 +0100
90d3fb
Subject: [PATCH 3/8] Fix SIMD support on IBM z13
90d3fb
90d3fb
The header file atlas_simd.h contained a syntax error and a few functional
90d3fb
errors that affected IBM z13.  It prevented any SIMD kernels from being
90d3fb
compiled successfully for that platform.  This is fixed.  The macro
90d3fb
vec_madd is avoided, because some GCC versions don't implement it
90d3fb
correctly; the equivalent GCC builtin __builtin_s390_vec_madd is used
90d3fb
instead.
90d3fb
---
90d3fb
 include/atlas_simd.h | 10 +++++-----
90d3fb
 1 file changed, 5 insertions(+), 5 deletions(-)
90d3fb
90d3fb
diff --git a/include/atlas_simd.h b/include/atlas_simd.h
90d3fb
index baee6b1..68daf79 100644
90d3fb
--- a/include/atlas_simd.h
90d3fb
+++ b/include/atlas_simd.h
90d3fb
@@ -69,7 +69,7 @@
90d3fb
          #define ATL_FRCGNUVEC
90d3fb
       #endif
90d3fb
    #elif defined(ATL_VXZ)
90d3fb
-      #if ATL_VLEN != 2;
90d3fb
+      #if ATL_VLEN != 2
90d3fb
          #define ATL_FRCGNUVEC
90d3fb
       #endif
90d3fb
    #elif defined(ATL_NEON)
90d3fb
@@ -390,19 +390,19 @@
90d3fb
       #define ATL_vld(v_, p_) v_ = vec_ld2f(p_);
90d3fb
       #define ATL_vst(p_, v_) vec_st2f(v_, p_);
90d3fb
    #endif
90d3fb
-   #define ATL_vzero(v_) v_ = vec_splats((TYPE)0.0)
90d3fb
+   #define ATL_vzero(v_) v_ = vec_splats((double)0.0)
90d3fb
    #define ATL_vcopy(d_, s_) d_ = s_
90d3fb
-   #define ATL_vbcast(v_, p_) v_ =  vec_splats(*((TYPE*)(p_)))
90d3fb
+   #define ATL_vbcast(v_, p_) v_ = vec_splats((double)*((TYPE*)(p_)))
90d3fb
    #define ATL_vuld(v_, p_) ATL_vld(v_, p_)
90d3fb
    #define ATL_vust(p_, v_) ATL_vst(p_, v_)
90d3fb
    #define ATL_vadd(d_, s1_, s2_) d_ =  s1_ + s2_
90d3fb
    #define ATL_vsub(d_, s1_, s2_) d_ =  s1_ - s2_
90d3fb
    #define ATL_vmul(d_, s1_, s2_) d_ =  s1_ * s2_
90d3fb
-   #define ATL_vmac(d_, s1_, s2_) d_ = vec_madd(s1_, s2_, d_)
90d3fb
+   #define ATL_vmac(d_, s1_, s2_) d_ = __builtin_s390_vec_madd(s1_, s2_, d_)
90d3fb
    #define ATL_vvrsum1(s0_) \
90d3fb
    {  ATL_VTYPE t_;\
90d3fb
       t_ = vec_splat(s0_, 1); \
90d3fb
-      s0 += t_; \
90d3fb
+      s0_ += t_; \
90d3fb
    }
90d3fb
    #define ATL_vsplat0(d_, s_) d_ = vec_splat(s_, 0)
90d3fb
    #define ATL_vsplat1(d_, s_) d_ = vec_splat(s_, 1)
90d3fb
-- 
90d3fb
2.23.0
90d3fb