From: Marius Hillenbrand Date: Tue, 1 Sep 2020 14:16:53 +0000 (+0200) Subject: s390x: enable S/DGEMM block with explicit loop unrolling + interleaving with clang X-Git-Tag: upstream/0.3.21~25^2~60^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2ee5b899ce9777c63710de1ede75c362db5bcd47;p=platform%2Fupstream%2Fopenblas.git s390x: enable S/DGEMM block with explicit loop unrolling + interleaving with clang The code for SGEMM 16x4 and DGEMM 8x4 blocks on z14 and z15 uses explicit unrolling and interleaving to improve performance. The code employs an empty inline asm statement with operands that constrain the compiler's instruction scheduling and thereby enforce proper overlapping of load and compute phases. Fix an ifdef to apply that for clang builds, as well. Signed-off-by: Marius Hillenbrand --- diff --git a/kernel/zarch/gemm_vec.c b/kernel/zarch/gemm_vec.c index b7d7cc0..ef0b1d1 100644 --- a/kernel/zarch/gemm_vec.c +++ b/kernel/zarch/gemm_vec.c @@ -393,7 +393,7 @@ static inline void GEBP_block_16_4( * Note that we need to massage this particular "barrier" * depending on the gcc version. */ -#if __GNUC__ > 7 +#if __GNUC__ > 7 || defined(__clang__) #define BARRIER_READ_BEFORE_COMPUTE(SUFFIX) \ do { \ asm("" \