Optimized sgemm and dgemm and tested again.
authorWerner Saar <wernsaar@googlemail.com>
Thu, 21 Apr 2016 09:37:57 +0000 (11:37 +0200)
committerWerner Saar <wernsaar@googlemail.com>
Thu, 21 Apr 2016 09:37:57 +0000 (11:37 +0200)
13 files changed:
Makefile.rule
common_power.h
kernel/power/KERNEL.POWER8
kernel/power/dgemm_kernel_16x4_power8.S
kernel/power/dgemm_tcopy_16_power8.S [new file with mode: 0644]
kernel/power/dgemm_tcopy_logic_16_power8.S [new file with mode: 0644]
kernel/power/dgemm_tcopy_macros_16_power8.S [new file with mode: 0644]
kernel/power/sgemm_kernel_16x8_power8.S
kernel/power/sgemm_logic_16x8_power8.S
kernel/power/sgemm_macros_16x8_power8.S
kernel/power/sgemm_tcopy_16_power8.S
kernel/power/sgemm_tcopy_logic_16_power8.S
kernel/power/sgemm_tcopy_macros_16_power8.S

index 55c3353..4b9d36b 100644 (file)
@@ -52,6 +52,7 @@ VERSION = 0.2.19.dev
 # USE_THREAD = 0
 
 # If you're going to use this library with OpenMP, please comment it in.
+# always use this flag for POWER8 
 # USE_OPENMP = 1
 
 # You can define maximum number of threads. Basically it should be
@@ -153,10 +154,12 @@ NO_AFFINITY = 1
 
 # Common Optimization Flag;
 # The default -O2 is enough.
+# Flags for POWER8 are defined in Makefile.power. Don't modify COMMON_OPT
 # COMMON_OPT = -O2
 
 # gfortran option for LAPACK
 # enable this flag only on 64bit Linux and if you need a thread safe lapack library
+# Flags for POWER8 are defined in Makefile.power. Don't modify FCOMMON_OPT
 # FCOMMON_OPT = -frecursive
 
 # Profiling flags
index 723d949..b62aca3 100644 (file)
 #ifndef COMMON_POWER
 #define COMMON_POWER
 
+#if defined(POWER8)
+#define MB             __asm__ __volatile__ ("eieio":::"memory")
+#define WMB            __asm__ __volatile__ ("eieio":::"memory")
+#else
 #define MB             __asm__ __volatile__ ("sync")
 #define WMB            __asm__ __volatile__ ("sync")
+#endif
 
 #define INLINE inline
 
index fa5cc5e..e1b89cc 100644 (file)
@@ -20,7 +20,7 @@ SGEMMOTCOPYOBJ =  sgemm_otcopy.o
 
 DGEMMKERNEL    =  dgemm_kernel_16x4_power8.S
 DGEMMINCOPY    = ../generic/gemm_ncopy_16.c
-DGEMMITCOPY    = ../generic/gemm_tcopy_16.c
+DGEMMITCOPY    =  dgemm_tcopy_16_power8.S
 DGEMMONCOPY    =  gemm_ncopy_4.S
 DGEMMOTCOPY    =  gemm_tcopy_4.S
 DGEMMINCOPYOBJ = dgemm_incopy.o
index c67f311..4c14b0c 100644 (file)
@@ -26,7 +26,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *****************************************************************************/
 
 /**************************************************************************************
-* 2016/03/05 Werner Saar (wernsaar@googlemail.com)
+* 2016/04/21 Werner Saar (wernsaar@googlemail.com)
 *       BLASTEST               : OK
 *       CTEST                  : OK
 *       TEST                   : OK
diff --git a/kernel/power/dgemm_tcopy_16_power8.S b/kernel/power/dgemm_tcopy_16_power8.S
new file mode 100644 (file)
index 0000000..f87af53
--- /dev/null
@@ -0,0 +1,211 @@
+/***************************************************************************
+Copyright (c) 2013-2016, The OpenBLAS Project
+All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the
+distribution.
+3. Neither the name of the OpenBLAS project nor the names of
+its contributors may be used to endorse or promote products
+derived from this software without specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*****************************************************************************/
+
+/**************************************************************************************
+* 2016/04/21 Werner Saar (wernsaar@googlemail.com)
+*       BLASTEST               : OK
+*       CTEST                  : OK
+*       TEST                   : OK
+*       LAPACK-TEST            : OK
+**************************************************************************************/
+
+/*********************************************************************/
+/* Copyright 2009, 2010 The University of Texas at Austin.           */
+/* All rights reserved.                                              */
+/*                                                                   */
+/* Redistribution and use in source and binary forms, with or        */
+/* without modification, are permitted provided that the following   */
+/* conditions are met:                                               */
+/*                                                                   */
+/*   1. Redistributions of source code must retain the above         */
+/*      copyright notice, this list of conditions and the following  */
+/*      disclaimer.                                                  */
+/*                                                                   */
+/*   2. Redistributions in binary form must reproduce the above      */
+/*      copyright notice, this list of conditions and the following  */
+/*      disclaimer in the documentation and/or other materials       */
+/*      provided with the distribution.                              */
+/*                                                                   */
+/*    THIS  SOFTWARE IS PROVIDED  BY THE  UNIVERSITY OF  TEXAS AT    */
+/*    AUSTIN  ``AS IS''  AND ANY  EXPRESS OR  IMPLIED WARRANTIES,    */
+/*    INCLUDING, BUT  NOT LIMITED  TO, THE IMPLIED  WARRANTIES OF    */
+/*    MERCHANTABILITY  AND FITNESS FOR  A PARTICULAR  PURPOSE ARE    */
+/*    DISCLAIMED.  IN  NO EVENT SHALL THE UNIVERSITY  OF TEXAS AT    */
+/*    AUSTIN OR CONTRIBUTORS BE  LIABLE FOR ANY DIRECT, INDIRECT,    */
+/*    INCIDENTAL,  SPECIAL, EXEMPLARY,  OR  CONSEQUENTIAL DAMAGES    */
+/*    (INCLUDING, BUT  NOT LIMITED TO,  PROCUREMENT OF SUBSTITUTE    */
+/*    GOODS  OR  SERVICES; LOSS  OF  USE,  DATA,  OR PROFITS;  OR    */
+/*    BUSINESS INTERRUPTION) HOWEVER CAUSED  AND ON ANY THEORY OF    */
+/*    LIABILITY, WHETHER  IN CONTRACT, STRICT  LIABILITY, OR TORT    */
+/*    (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY WAY OUT    */
+/*    OF  THE  USE OF  THIS  SOFTWARE,  EVEN  IF ADVISED  OF  THE    */
+/*    POSSIBILITY OF SUCH DAMAGE.                                    */
+/*                                                                   */
+/* The views and conclusions contained in the software and           */
+/* documentation are those of the authors and should not be          */
+/* interpreted as representing official policies, either expressed   */
+/* or implied, of The University of Texas at Austin.                 */
+/*********************************************************************/
+
+#define ASSEMBLER
+#include "common.h"
+#include "def_vsx.h"
+
+#define        M       r3
+#define        N       r4
+#define        A       r5
+#define        LDA     r6
+#define B      r7
+
+#define A0     r8
+#define A1     r9
+#define A2     r10
+#define A3     r11
+
+#define J      r12
+
+#define PREA   r14
+#define PREB   r15
+#define BO     r16
+#define B8     r17
+#define B4     r18
+#define B2     r19
+#define B1     r20
+#define o8     r21
+#define T2     r22
+#define I      r23
+#define o16    r24
+#define o32    r25
+#define o48    r26
+#define B16    r29
+#define M16    r30
+#define T1     r31
+
+#define o0     0
+
+#include "dgemm_tcopy_macros_16_power8.S"
+
+#define STACKSIZE 384
+
+
+       PROLOGUE
+       PROFCODE
+
+       addi    SP, SP, -STACKSIZE
+       li      r0, 0
+
+        std     r31,  144(SP)
+        std     r30,  152(SP)
+        std     r29,  160(SP)
+        std     r28,  168(SP)
+        std     r27,  176(SP)
+        std     r26,  184(SP)
+        std     r25,  192(SP)
+        std     r24,  200(SP)
+        std     r23,  208(SP)
+        std     r22,  216(SP)
+        std     r21,  224(SP)
+        std     r20,  232(SP)
+        std     r19,  240(SP)
+        std     r18,  248(SP)
+        std     r17,  256(SP)
+        std     r16,  264(SP)
+        std     r15,  272(SP)
+        std     r14,  280(SP)
+
+       cmpwi   cr0, M, 0
+       ble-    L999
+       cmpwi   cr0, N, 0
+       ble-    L999
+
+       slwi    LDA, LDA, BASE_SHIFT
+       slwi    M16, M, 4 + BASE_SHIFT
+
+       li      T1,     -16
+       li      T2,     -8
+       li      PREA,   -4
+       li      PREB,   -2
+
+       and     B8, N, T1
+       and     B4, N, T2
+       and     B2, N, PREA
+       and     B1, N, PREB
+       
+       mullw   B8, B8, M
+       mullw   B4, B4, M
+       mullw   B2, B2, M
+       mullw   B1, B1, M
+
+       slwi    B8, B8, BASE_SHIFT
+       slwi    B4, B4, BASE_SHIFT
+       slwi    B2, B2, BASE_SHIFT
+       slwi    B1, B1, BASE_SHIFT
+
+       add     B8, B8, B
+       add     B4, B4, B
+       add     B2, B2, B
+       add     B1, B1, B
+
+       li      PREA,  768
+       addi    PREB,  M16, 128
+
+       li      o8,     8
+       li      o16,    16
+       li      o32,    32
+       li      o48,    48
+
+#include "dgemm_tcopy_logic_16_power8.S"
+
+L999:
+
+       li      r3, 0
+
+        ld      r31,  144(SP)
+        ld      r30,  152(SP)
+        ld      r29,  160(SP)
+        ld      r28,  168(SP)
+        ld      r27,  176(SP)
+        ld      r26,  184(SP)
+        ld      r25,  192(SP)
+        ld      r24,  200(SP)
+        ld      r23,  208(SP)
+        ld      r22,  216(SP)
+        ld      r21,  224(SP)
+        ld      r20,  232(SP)
+        ld      r19,  240(SP)
+        ld      r18,  248(SP)
+        ld      r17,  256(SP)
+        ld      r16,  264(SP)
+        ld      r15,  272(SP)
+        ld      r14,  280(SP)
+
+       addi    SP, SP, STACKSIZE
+
+       blr
+       EPILOGUE
+
+
diff --git a/kernel/power/dgemm_tcopy_logic_16_power8.S b/kernel/power/dgemm_tcopy_logic_16_power8.S
new file mode 100644 (file)
index 0000000..776cd34
--- /dev/null
@@ -0,0 +1,281 @@
+/***************************************************************************
+Copyright (c) 2013-2016, The OpenBLAS Project
+All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the
+distribution.
+3. Neither the name of the OpenBLAS project nor the names of
+its contributors may be used to endorse or promote products
+derived from this software without specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*****************************************************************************/
+
+/**************************************************************************************
+* 2016/04/21 Werner Saar (wernsaar@googlemail.com)
+*       BLASTEST               : OK
+*       CTEST                  : OK
+*       TEST                   : OK
+*       LAPACK-TEST            : OK
+**************************************************************************************/
+
+
+       srawi.          I,      M,      2
+       ble             DCOPYT_L2_BEGIN
+
+
+DCOPYT_L4_BEGIN:
+
+       mr              A0,     A
+       add             A1,     A0,     LDA
+       add             A2,     A1,     LDA
+       add             A3,     A2,     LDA
+       add             A,      A3,     LDA
+       mr              B16,    B
+       addi            B,      B,      64*SIZE
+
+       sradi.          J,      N,      4
+       ble             DCOPYT_L4x8_BEGIN
+
+       mr              BO,     B16
+
+       .align 5
+
+DCOPYT_L4x16_LOOP:
+
+       addi    T1,     PREB,   128
+       addi    T2,     PREB,   256
+       dcbt    A0,     PREA
+       dcbt    A1,     PREA
+       dcbt    A2,     PREA
+       dcbt    A3,     PREA
+       dcbtst  BO,     M16
+       dcbtst  BO,     PREB
+       dcbtst  BO,     T1
+       dcbtst  BO,     T2
+       COPY_4x16
+
+       add             BO,     BO,     M16
+
+       addic.          J,      J,      -1
+       bgt             DCOPYT_L4x16_LOOP
+
+DCOPYT_L4x8_BEGIN:
+
+       andi.           T1,     N,      8
+       ble             DCOPYT_L4x4_BEGIN
+
+       mr              BO,     B8
+
+       COPY_4x8
+
+
+       addi            B8,     B8,     32*SIZE
+
+DCOPYT_L4x4_BEGIN:
+
+       andi.           T1,     N,      4
+       ble             DCOPYT_L4x2_BEGIN
+
+       mr              BO,     B4
+
+       COPY_4x4
+
+
+       addi            B4,     B4,     16*SIZE
+
+DCOPYT_L4x2_BEGIN:
+
+       andi.           T1,     N,      2
+       ble             DCOPYT_L4x1_BEGIN
+
+       mr              BO,     B2
+
+       COPY_4x2
+
+
+       addi            B2,     B2,     8*SIZE
+
+DCOPYT_L4x1_BEGIN:
+
+       andi.           T1,     N,      1
+       ble             DCOPYT_L4_END
+
+       mr              BO,     B1
+
+       COPY_4x1
+
+
+       addi            B1,     B1,     4*SIZE
+
+DCOPYT_L4_END:
+
+       addic.          I,      I,      -1
+       bgt             DCOPYT_L4_BEGIN
+
+
+
+DCOPYT_L2_BEGIN:
+
+       andi.           T1,     M,      2
+       ble             DCOPYT_L1_BEGIN
+
+       mr              A0,     A
+       add             A1,     A0,     LDA
+       add             A,      A1,     LDA
+       mr              B16,    B
+       addi            B,      B,      32*SIZE
+
+       sradi.          J,      N,      4
+       ble             DCOPYT_L2x8_BEGIN
+
+       mr              BO,     B16
+
+DCOPYT_L2x16_LOOP:
+
+       COPY_2x16
+
+       add             BO,     BO,     M16
+
+       addic.          J,      J,      -1
+       bgt             DCOPYT_L2x16_LOOP
+
+DCOPYT_L2x8_BEGIN:
+
+       andi.           T1,     N,      8
+       ble             DCOPYT_L2x4_BEGIN
+
+       mr              BO,     B8
+
+       COPY_2x8
+
+
+       addi            B8,     B8,     16*SIZE
+
+DCOPYT_L2x4_BEGIN:
+
+       andi.           T1,     N,      4
+       ble             DCOPYT_L2x2_BEGIN
+
+       mr              BO,     B4
+
+       COPY_2x4
+
+
+       addi            B4,     B4,     8*SIZE
+
+DCOPYT_L2x2_BEGIN:
+
+       andi.           T1,     N,      2
+       ble             DCOPYT_L2x1_BEGIN
+
+       mr              BO,     B2
+
+       COPY_2x2
+
+
+       addi            B2,     B2,     4*SIZE
+
+DCOPYT_L2x1_BEGIN:
+
+       andi.           T1,     N,      1
+       ble             DCOPYT_L2_END
+
+       mr              BO,     B1
+
+       COPY_2x1
+
+
+       addi            B1,     B1,     2*SIZE
+
+DCOPYT_L2_END:
+
+
+DCOPYT_L1_BEGIN:
+
+       andi.           T1,     M,      1
+       ble             L999
+
+       mr              A0,     A
+       add             A,      A0,     LDA
+       mr              B16,    B
+       addi            B,      B,      16*SIZE
+
+       sradi.          J,      N,      4
+       ble             DCOPYT_L1x8_BEGIN
+
+       mr              BO,     B16
+
+DCOPYT_L1x16_LOOP:
+
+       COPY_1x16
+
+       add             BO,     BO,     M16
+
+       addic.          J,      J,      -1
+       bgt             DCOPYT_L1x16_LOOP
+
+DCOPYT_L1x8_BEGIN:
+
+       andi.           T1,     N,      8
+       ble             DCOPYT_L1x4_BEGIN
+
+       mr              BO,     B8
+
+       COPY_1x8
+
+
+       addi            B8,     B8,     8*SIZE
+
+DCOPYT_L1x4_BEGIN:
+
+       andi.           T1,     N,      4
+       ble             DCOPYT_L1x2_BEGIN
+
+       mr              BO,     B4
+
+       COPY_1x4
+
+
+       addi            B4,     B4,     4*SIZE
+
+DCOPYT_L1x2_BEGIN:
+
+       andi.           T1,     N,      2
+       ble             DCOPYT_L1x1_BEGIN
+
+       mr              BO,     B2
+
+       COPY_1x2
+
+
+       addi            B2,     B2,     2*SIZE
+
+DCOPYT_L1x1_BEGIN:
+
+       andi.           T1,     N,      1
+       ble             DCOPYT_L1_END
+
+       mr              BO,     B1
+
+       COPY_1x1
+
+
+       addi            B1,     B1,     1*SIZE
+
+DCOPYT_L1_END:
+
diff --git a/kernel/power/dgemm_tcopy_macros_16_power8.S b/kernel/power/dgemm_tcopy_macros_16_power8.S
new file mode 100644 (file)
index 0000000..aef03d7
--- /dev/null
@@ -0,0 +1,612 @@
+/***************************************************************************
+Copyright (c) 2013-2016, The OpenBLAS Project
+All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the
+distribution.
+3. Neither the name of the OpenBLAS project nor the names of
+its contributors may be used to endorse or promote products
+derived from this software without specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*****************************************************************************/
+
+/**************************************************************************************
+* 2016/04/21 Werner Saar (wernsaar@googlemail.com)
+*       BLASTEST               : OK
+*       CTEST                  : OK
+*       TEST                   : OK
+*       LAPACK-TEST            : OK
+**************************************************************************************/
+
+
+/**********************************************************************************************
+* Macros for N=4 and M=16
+**********************************************************************************************/
+
+.macro COPY_4x16
+
+       lxvd2x          vs32,   o0,     A0
+       lxvd2x          vs33,   o16,    A0
+       lxvd2x          vs34,   o32,    A0
+       lxvd2x          vs35,   o48,    A0
+       addi            A0,     A0,     64
+
+       lxvd2x          vs36,   o0,     A0
+       lxvd2x          vs37,   o16,    A0
+       lxvd2x          vs38,   o32,    A0
+       lxvd2x          vs39,   o48,    A0
+       addi            A0,     A0,     64
+
+
+       lxvd2x          vs40,   o0,     A1
+       lxvd2x          vs41,   o16,    A1
+       lxvd2x          vs42,   o32,    A1
+       lxvd2x          vs43,   o48,    A1
+       addi            A1,     A1,     64
+
+       lxvd2x          vs44,   o0,     A1
+       lxvd2x          vs45,   o16,    A1
+       lxvd2x          vs46,   o32,    A1
+       lxvd2x          vs47,   o48,    A1
+       addi            A1,     A1,     64
+
+
+       lxvd2x          vs48,   o0,     A2
+       lxvd2x          vs49,   o16,    A2
+       lxvd2x          vs50,   o32,    A2
+       lxvd2x          vs51,   o48,    A2
+       addi            A2,     A2,     64
+
+       lxvd2x          vs52,   o0,     A2
+       lxvd2x          vs53,   o16,    A2
+       lxvd2x          vs54,   o32,    A2
+       lxvd2x          vs55,   o48,    A2
+       addi            A2,     A2,     64
+
+
+       lxvd2x          vs56,   o0,     A3
+       lxvd2x          vs57,   o16,    A3
+       lxvd2x          vs58,   o32,    A3
+       lxvd2x          vs59,   o48,    A3
+       addi            A3,     A3,     64
+
+       lxvd2x          vs60,   o0,     A3
+       lxvd2x          vs61,   o16,    A3
+       lxvd2x          vs62,   o32,    A3
+       lxvd2x          vs63,   o48,    A3
+       addi            A3,     A3,     64
+
+
+       mr              T1,     BO
+
+       stxvd2x         vs32,   o0,     T1
+       stxvd2x         vs33,   o16,    T1
+       stxvd2x         vs34,   o32,    T1
+       stxvd2x         vs35,   o48,    T1
+       addi            T1,     T1,     64
+
+       stxvd2x         vs36,   o0,     T1
+       stxvd2x         vs37,   o16,    T1
+       stxvd2x         vs38,   o32,    T1
+       stxvd2x         vs39,   o48,    T1
+
+       addi            T1,     T1,     64
+
+       stxvd2x         vs40,   o0,     T1
+       stxvd2x         vs41,   o16,    T1
+       stxvd2x         vs42,   o32,    T1
+       stxvd2x         vs43,   o48,    T1
+       addi            T1,     T1,     64
+
+       stxvd2x         vs44,   o0,     T1
+       stxvd2x         vs45,   o16,    T1
+       stxvd2x         vs46,   o32,    T1
+       stxvd2x         vs47,   o48,    T1
+
+       addi            T1,     T1,     64
+
+       stxvd2x         vs48,   o0,     T1
+       stxvd2x         vs49,   o16,    T1
+       stxvd2x         vs50,   o32,    T1
+       stxvd2x         vs51,   o48,    T1
+       addi            T1,     T1,     64
+
+       stxvd2x         vs52,   o0,     T1
+       stxvd2x         vs53,   o16,    T1
+       stxvd2x         vs54,   o32,    T1
+       stxvd2x         vs55,   o48,    T1
+
+       addi            T1,     T1,     64
+
+       stxvd2x         vs56,   o0,     T1
+       stxvd2x         vs57,   o16,    T1
+       stxvd2x         vs58,   o32,    T1
+       stxvd2x         vs59,   o48,    T1
+       addi            T1,     T1,     64
+
+       stxvd2x         vs60,   o0,     T1
+       stxvd2x         vs61,   o16,    T1
+       stxvd2x         vs62,   o32,    T1
+       stxvd2x         vs63,   o48,    T1
+
+.endm
+
+
+/**********************************************************************************************
+* Macros for N=4 and M=8
+**********************************************************************************************/
+
+.macro COPY_4x8
+
+       lxvd2x          vs32,   o0,     A0
+       lxvd2x          vs33,   o16,    A0
+       lxvd2x          vs34,   o32,    A0
+       lxvd2x          vs35,   o48,    A0
+       addi            A0,     A0,     64
+
+
+       lxvd2x          vs36,   o0,     A1
+       lxvd2x          vs37,   o16,    A1
+       lxvd2x          vs38,   o32,    A1
+       lxvd2x          vs39,   o48,    A1
+       addi            A1,     A1,     64
+
+
+       lxvd2x          vs40,   o0,     A2
+       lxvd2x          vs41,   o16,    A2
+       lxvd2x          vs42,   o32,    A2
+       lxvd2x          vs43,   o48,    A2
+       addi            A2,     A2,     64
+
+
+       lxvd2x          vs44,   o0,     A3
+       lxvd2x          vs45,   o16,    A3
+       lxvd2x          vs46,   o32,    A3
+       lxvd2x          vs47,   o48,    A3
+       addi            A3,     A3,     64
+
+
+       mr              T1,     BO
+
+       stxvd2x         vs32,   o0,     T1
+       stxvd2x         vs33,   o16,    T1
+       stxvd2x         vs34,   o32,    T1
+       stxvd2x         vs35,   o48,    T1
+
+       addi            T1,     T1,     64
+
+       stxvd2x         vs36,   o0,     T1
+       stxvd2x         vs37,   o16,    T1
+       stxvd2x         vs38,   o32,    T1
+       stxvd2x         vs39,   o48,    T1
+
+       addi            T1,     T1,     64
+
+       stxvd2x         vs40,   o0,     T1
+       stxvd2x         vs41,   o16,    T1
+       stxvd2x         vs42,   o32,    T1
+       stxvd2x         vs43,   o48,    T1
+
+       addi            T1,     T1,     64
+
+       stxvd2x         vs44,   o0,     T1
+       stxvd2x         vs45,   o16,    T1
+       stxvd2x         vs46,   o32,    T1
+       stxvd2x         vs47,   o48,    T1
+
+.endm
+
+
+/**********************************************************************************************
+* Macros for N=4 and M=4
+**********************************************************************************************/
+
+.macro COPY_4x4
+
+       lxvd2x          vs32,   o0,     A0
+       lxvd2x          vs33,   o16,    A0
+       addi            A0,     A0,     32
+
+
+       lxvd2x          vs34,   o0,     A1
+       lxvd2x          vs35,   o16,    A1
+       addi            A1,     A1,     32
+
+
+       lxvd2x          vs36,   o0,     A2
+       lxvd2x          vs37,   o16,    A2
+       addi            A2,     A2,     32
+
+
+       lxvd2x          vs38,   o0,     A3
+       lxvd2x          vs39,   o16,    A3
+       addi            A3,     A3,     32
+
+
+       mr              T1,     BO
+
+       stxvd2x         vs32,   o0,     T1
+       stxvd2x         vs33,   o16,    T1
+
+       stxvd2x         vs34,   o32,    T1
+       stxvd2x         vs35,   o48,    T1
+
+       addi            T1,     T1,     64
+
+       stxvd2x         vs36,   o0,     T1
+       stxvd2x         vs37,   o16,    T1
+
+       stxvd2x         vs38,   o32,    T1
+       stxvd2x         vs39,   o48,    T1
+
+.endm
+
+
+/**********************************************************************************************
+* Macros for N=4 and M=2
+**********************************************************************************************/
+
+.macro COPY_4x2
+
+       lxvd2x          vs32,   o0,     A0
+       addi            A0,     A0,     16
+
+
+       lxvd2x          vs33,   o0,     A1
+       addi            A1,     A1,     16
+
+
+       lxvd2x          vs34,   o0,     A2
+       addi            A2,     A2,     16
+
+
+       lxvd2x          vs35,   o0,     A3
+       addi            A3,     A3,     16
+
+
+       mr              T1,     BO
+
+       stxvd2x         vs32,   o0,     T1
+
+       stxvd2x         vs33,   o16,    T1
+
+       stxvd2x         vs34,   o32,    T1
+
+       stxvd2x         vs35,   o48,    T1
+
+.endm
+
+
+/**********************************************************************************************
+* Macros for N=4 and M=1
+**********************************************************************************************/
+
+.macro COPY_4x1
+
+       lxsdx           vs32,   o0,     A0
+       addi            A0,     A0,     8
+
+
+       lxsdx           vs33,   o0,     A1
+       addi            A1,     A1,     8
+
+
+       lxsdx           vs34,   o0,     A2
+       addi            A2,     A2,     8
+
+
+       lxsdx           vs35,   o0,     A3
+       addi            A3,     A3,     8
+
+
+       mr              T1,     BO
+
+       stxsdx          vs32,   o0,     T1
+
+       stxsdx          vs33,   o8,     T1
+
+       addi            T1,     T1,     16
+
+       stxsdx          vs34,   o0,     T1
+
+       stxsdx          vs35,   o8,     T1
+
+.endm
+
+
+/**********************************************************************************************
+* Macros for N=2 and M=16
+**********************************************************************************************/
+
+.macro COPY_2x16
+
+       lxvd2x          vs32,   o0,     A0
+       lxvd2x          vs33,   o16,    A0
+       lxvd2x          vs34,   o32,    A0
+       lxvd2x          vs35,   o48,    A0
+       addi            A0,     A0,     64
+
+       lxvd2x          vs36,   o0,     A0
+       lxvd2x          vs37,   o16,    A0
+       lxvd2x          vs38,   o32,    A0
+       lxvd2x          vs39,   o48,    A0
+       addi            A0,     A0,     64
+
+
+       lxvd2x          vs40,   o0,     A1
+       lxvd2x          vs41,   o16,    A1
+       lxvd2x          vs42,   o32,    A1
+       lxvd2x          vs43,   o48,    A1
+       addi            A1,     A1,     64
+
+       lxvd2x          vs44,   o0,     A1
+       lxvd2x          vs45,   o16,    A1
+       lxvd2x          vs46,   o32,    A1
+       lxvd2x          vs47,   o48,    A1
+       addi            A1,     A1,     64
+
+
+       mr              T1,     BO
+
+       stxvd2x         vs32,   o0,     T1
+       stxvd2x         vs33,   o16,    T1
+       stxvd2x         vs34,   o32,    T1
+       stxvd2x         vs35,   o48,    T1
+       addi            T1,     T1,     64
+
+       stxvd2x         vs36,   o0,     T1
+       stxvd2x         vs37,   o16,    T1
+       stxvd2x         vs38,   o32,    T1
+       stxvd2x         vs39,   o48,    T1
+
+       addi            T1,     T1,     64
+
+       stxvd2x         vs40,   o0,     T1
+       stxvd2x         vs41,   o16,    T1
+       stxvd2x         vs42,   o32,    T1
+       stxvd2x         vs43,   o48,    T1
+       addi            T1,     T1,     64
+
+       stxvd2x         vs44,   o0,     T1
+       stxvd2x         vs45,   o16,    T1
+       stxvd2x         vs46,   o32,    T1
+       stxvd2x         vs47,   o48,    T1
+
+.endm
+
+
+/**********************************************************************************************
+* Macros for N=2 and M=8
+**********************************************************************************************/
+
+.macro COPY_2x8
+
+       lxvd2x          vs32,   o0,     A0
+       lxvd2x          vs33,   o16,    A0
+       lxvd2x          vs34,   o32,    A0
+       lxvd2x          vs35,   o48,    A0
+       addi            A0,     A0,     64
+
+
+       lxvd2x          vs36,   o0,     A1
+       lxvd2x          vs37,   o16,    A1
+       lxvd2x          vs38,   o32,    A1
+       lxvd2x          vs39,   o48,    A1
+       addi            A1,     A1,     64
+
+
+       mr              T1,     BO
+
+       stxvd2x         vs32,   o0,     T1
+       stxvd2x         vs33,   o16,    T1
+       stxvd2x         vs34,   o32,    T1
+       stxvd2x         vs35,   o48,    T1
+
+       addi            T1,     T1,     64
+
+       stxvd2x         vs36,   o0,     T1
+       stxvd2x         vs37,   o16,    T1
+       stxvd2x         vs38,   o32,    T1
+       stxvd2x         vs39,   o48,    T1
+
+.endm
+
+
+/**********************************************************************************************
+* Macros for N=2 and M=4
+**********************************************************************************************/
+
+.macro COPY_2x4
+
+       lxvd2x          vs32,   o0,     A0
+       lxvd2x          vs33,   o16,    A0
+       addi            A0,     A0,     32
+
+
+       lxvd2x          vs34,   o0,     A1
+       lxvd2x          vs35,   o16,    A1
+       addi            A1,     A1,     32
+
+
+       mr              T1,     BO
+
+       stxvd2x         vs32,   o0,     T1
+       stxvd2x         vs33,   o16,    T1
+
+       stxvd2x         vs34,   o32,    T1
+       stxvd2x         vs35,   o48,    T1
+
+.endm
+
+
+/**********************************************************************************************
+* Macros for N=2 and M=2
+**********************************************************************************************/
+
+.macro COPY_2x2
+
+       lxvd2x          vs32,   o0,     A0
+       addi            A0,     A0,     16
+
+
+       lxvd2x          vs33,   o0,     A1
+       addi            A1,     A1,     16
+
+
+       mr              T1,     BO
+
+       stxvd2x         vs32,   o0,     T1
+
+       stxvd2x         vs33,   o16,    T1
+
+.endm
+
+
+/**********************************************************************************************
+* Macros for N=2 and M=1
+**********************************************************************************************/
+
+.macro COPY_2x1
+
+       lxsdx           vs32,   o0,     A0
+       addi            A0,     A0,     8
+
+
+       lxsdx           vs33,   o0,     A1
+       addi            A1,     A1,     8
+
+
+       mr              T1,     BO
+
+       stxsdx          vs32,   o0,     T1
+
+       stxsdx          vs33,   o8,     T1
+
+.endm
+
+
+/**********************************************************************************************
+* Macros for N=1 and M=16
+**********************************************************************************************/
+
+.macro COPY_1x16
+
+       lxvd2x          vs32,   o0,     A0
+       lxvd2x          vs33,   o16,    A0
+       lxvd2x          vs34,   o32,    A0
+       lxvd2x          vs35,   o48,    A0
+       addi            A0,     A0,     64
+
+       lxvd2x          vs36,   o0,     A0
+       lxvd2x          vs37,   o16,    A0
+       lxvd2x          vs38,   o32,    A0
+       lxvd2x          vs39,   o48,    A0
+       addi            A0,     A0,     64
+
+
+       mr              T1,     BO
+
+       stxvd2x         vs32,   o0,     T1
+       stxvd2x         vs33,   o16,    T1
+       stxvd2x         vs34,   o32,    T1
+       stxvd2x         vs35,   o48,    T1
+       addi            T1,     T1,     64
+
+       stxvd2x         vs36,   o0,     T1
+       stxvd2x         vs37,   o16,    T1
+       stxvd2x         vs38,   o32,    T1
+       stxvd2x         vs39,   o48,    T1
+
+.endm
+
+
+/**********************************************************************************************
+* Macros for N=1 and M=8
+**********************************************************************************************/
+
+.macro COPY_1x8
+
+       lxvd2x          vs32,   o0,     A0
+       lxvd2x          vs33,   o16,    A0
+       lxvd2x          vs34,   o32,    A0
+       lxvd2x          vs35,   o48,    A0
+       addi            A0,     A0,     64
+
+
+       mr              T1,     BO
+
+       stxvd2x         vs32,   o0,     T1
+       stxvd2x         vs33,   o16,    T1
+       stxvd2x         vs34,   o32,    T1
+       stxvd2x         vs35,   o48,    T1
+
+.endm
+
+
+/**********************************************************************************************
+* Macros for N=1 and M=4
+**********************************************************************************************/
+
+.macro COPY_1x4
+
+       lxvd2x          vs32,   o0,     A0
+       lxvd2x          vs33,   o16,    A0
+       addi            A0,     A0,     32
+
+
+       mr              T1,     BO
+
+       stxvd2x         vs32,   o0,     T1
+       stxvd2x         vs33,   o16,    T1
+
+.endm
+
+
+/**********************************************************************************************
+* Macros for N=1 and M=2
+**********************************************************************************************/
+
+.macro COPY_1x2
+
+       lxvd2x          vs32,   o0,     A0
+       addi            A0,     A0,     16
+
+
+       mr              T1,     BO
+
+       stxvd2x         vs32,   o0,     T1
+
+.endm
+
+
+/**********************************************************************************************
+* Macros for N=1 and M=1
+**********************************************************************************************/
+
+.macro COPY_1x1
+
+       lxsdx           vs32,   o0,     A0
+       addi            A0,     A0,     8
+
+
+       mr              T1,     BO
+
+       stxsdx          vs32,   o0,     T1
+
+.endm
+
index 77f3f7c..e169eb9 100644 (file)
@@ -26,7 +26,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *****************************************************************************/
 
 /**************************************************************************************
-* 2016/04/02 Werner Saar (wernsaar@googlemail.com)
+* 2016/04/21 Werner Saar (wernsaar@googlemail.com)
 *       BLASTEST               : OK
 *       CTEST                  : OK
 *       TEST                   : OK
index 6ba9990..8907fe6 100644 (file)
@@ -1,3 +1,38 @@
+/***************************************************************************
+Copyright (c) 2013-2016, The OpenBLAS Project
+All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the
+distribution.
+3. Neither the name of the OpenBLAS project nor the names of
+its contributors may be used to endorse or promote products
+derived from this software without specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*****************************************************************************/
+
+/**************************************************************************************
+* 2016/04/21 Werner Saar (wernsaar@googlemail.com)
+*       BLASTEST               : OK
+*       CTEST                  : OK
+*       TEST                   : OK
+*       LAPACK-TEST            : OK
+**************************************************************************************/
+
        srawi.          J,      N,      3
        ble             SGEMM_L8_END
 
index 94e7d7d..9841485 100644 (file)
@@ -1,3 +1,38 @@
+/***************************************************************************
+Copyright (c) 2013-2016, The OpenBLAS Project
+All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the
+distribution.
+3. Neither the name of the OpenBLAS project nor the names of
+its contributors may be used to endorse or promote products
+derived from this software without specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*****************************************************************************/
+
+/**************************************************************************************
+* 2016/04/21 Werner Saar (wernsaar@googlemail.com)
+*       BLASTEST               : OK
+*       CTEST                  : OK
+*       TEST                   : OK
+*       LAPACK-TEST            : OK
+**************************************************************************************/
+
 
 /**********************************************************************************************
 * Macros for N=8 and M=16
index c31784d..764d5b1 100644 (file)
@@ -1,3 +1,39 @@
+/***************************************************************************
+Copyright (c) 2013-2016, The OpenBLAS Project
+All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the
+distribution.
+3. Neither the name of the OpenBLAS project nor the names of
+its contributors may be used to endorse or promote products
+derived from this software without specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*****************************************************************************/
+
+/**************************************************************************************
+* 2016/04/21 Werner Saar (wernsaar@googlemail.com)
+*       BLASTEST               : OK
+*       CTEST                  : OK
+*       TEST                   : OK
+*       LAPACK-TEST            : OK
+**************************************************************************************/
+
+
 /*********************************************************************/
 /* Copyright 2009, 2010 The University of Texas at Austin.           */
 /* All rights reserved.                                              */
        add     B2, B2, B
        add     B1, B1, B
 
-       li      PREA,  384
+       li      PREA,  768
        addi    PREB,  M16, 128
 
        li      o4,     4
index 5a715c8..7dfb6fa 100644 (file)
@@ -1,3 +1,39 @@
+/***************************************************************************
+Copyright (c) 2013-2016, The OpenBLAS Project
+All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the
+distribution.
+3. Neither the name of the OpenBLAS project nor the names of
+its contributors may be used to endorse or promote products
+derived from this software without specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*****************************************************************************/
+
+/**************************************************************************************
+* 2016/04/21 Werner Saar (wernsaar@googlemail.com)
+*       BLASTEST               : OK
+*       CTEST                  : OK
+*       TEST                   : OK
+*       LAPACK-TEST            : OK
+**************************************************************************************/
+
+
        srawi.          I,      M,      2
        ble             SCOPYT_L2_BEGIN
 
index 36c4593..53f9c8b 100644 (file)
@@ -1,3 +1,38 @@
+/***************************************************************************
+Copyright (c) 2013-2016, The OpenBLAS Project
+All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the
+distribution.
+3. Neither the name of the OpenBLAS project nor the names of
+its contributors may be used to endorse or promote products
+derived from this software without specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*****************************************************************************/
+
+/**************************************************************************************
+* 2016/04/21 Werner Saar (wernsaar@googlemail.com)
+*       BLASTEST               : OK
+*       CTEST                  : OK
+*       TEST                   : OK
+*       LAPACK-TEST            : OK
+**************************************************************************************/
+
 
 /**********************************************************************************************
 * Macros for N=4 and M=16