optimized zgemm_kernel_2x2_vfp.S
This commit is contained in:
parent
b42145834f
commit
a537d7d8d7
|
@ -26,28 +26,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
/**************************************************************************************
|
/**************************************************************************************
|
||||||
* 2013/11/05 Saar
|
* 2013/11/28 Saar
|
||||||
* BLASTEST : OK
|
* BLASTEST : OK
|
||||||
* CTEST : OK
|
* CTEST : OK
|
||||||
* TEST : OK
|
* TEST : OK
|
||||||
*
|
*
|
||||||
* 2013/11/02 Saar
|
***************************************************************************************/
|
||||||
* UNROLL_N 2
|
|
||||||
* UNROLL_M 2
|
|
||||||
* ZGEMM_P 64
|
|
||||||
* ZGEMM_Q 120
|
|
||||||
* ZGEMM_R 4096
|
|
||||||
* A_PRE 96
|
|
||||||
* B_PRE 96
|
|
||||||
* C_PRE 64
|
|
||||||
*
|
|
||||||
* Performance on Odroid U2:
|
|
||||||
*
|
|
||||||
* 1 Core: 1.62 GFLOPS ATLAS: 1.39 GFLOPS
|
|
||||||
* 2 Cores: 3.20 GFLOPS ATLAS: 2.54 GFLOPS
|
|
||||||
* 3 Cores: 4.72 GFLOPS ATLAS: 3.76 GFLOPS
|
|
||||||
* 4 Cores: 5.93 GFLOPS ATLAS: 4.88 GFLOPS
|
|
||||||
**************************************************************************************/
|
|
||||||
|
|
||||||
#define ASSEMBLER
|
#define ASSEMBLER
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
@ -159,6 +143,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro KERNEL2x2_I
|
.macro KERNEL2x2_I
|
||||||
|
pld [ AO, #A_PRE ]
|
||||||
|
pld [ BO, #B_PRE ]
|
||||||
|
|
||||||
fldd d0 , [ AO ]
|
fldd d0 , [ AO ]
|
||||||
fldd d1 , [ AO, #8 ]
|
fldd d1 , [ AO, #8 ]
|
||||||
|
@ -201,22 +187,25 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
.macro KERNEL2x2_M1
|
.macro KERNEL2x2_M1
|
||||||
|
|
||||||
|
pld [ AO, #A_PRE ]
|
||||||
|
pld [ BO, #B_PRE ]
|
||||||
|
|
||||||
fldd d0 , [ AO ]
|
fldd d0 , [ AO ]
|
||||||
fldd d1 , [ AO, #8 ]
|
fldd d1 , [ AO, #8 ]
|
||||||
fldd d2 , [ AO, #16 ]
|
|
||||||
fldd d3 , [ AO, #24 ]
|
|
||||||
|
|
||||||
fldd d4 , [ BO ]
|
fldd d4 , [ BO ]
|
||||||
fldd d5 , [ BO, #8 ]
|
fldd d5 , [ BO, #8 ]
|
||||||
fldd d6 , [ BO, #16 ]
|
|
||||||
fldd d7 , [ BO, #24 ]
|
|
||||||
|
|
||||||
fmacd d8 , d0, d4
|
fmacd d8 , d0, d4
|
||||||
KMAC_R d8 , d1, d5
|
KMAC_R d8 , d1, d5
|
||||||
|
fldd d2 , [ AO, #16 ]
|
||||||
fmacd d9 , d0, d5
|
fmacd d9 , d0, d5
|
||||||
|
fldd d3 , [ AO, #24 ]
|
||||||
KMAC_I d9 , d1, d4
|
KMAC_I d9 , d1, d4
|
||||||
|
|
||||||
|
fldd d6 , [ BO, #16 ]
|
||||||
fmacd d10 , d2, d4
|
fmacd d10 , d2, d4
|
||||||
|
fldd d7 , [ BO, #24 ]
|
||||||
KMAC_R d10 , d3, d5
|
KMAC_R d10 , d3, d5
|
||||||
fmacd d11 , d2, d5
|
fmacd d11 , d2, d5
|
||||||
KMAC_I d11 , d3, d4
|
KMAC_I d11 , d3, d4
|
||||||
|
@ -228,32 +217,35 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
fmacd d14 , d2, d6
|
fmacd d14 , d2, d6
|
||||||
KMAC_R d14 , d3, d7
|
KMAC_R d14 , d3, d7
|
||||||
|
add BO , BO, #32
|
||||||
fmacd d15 , d2, d7
|
fmacd d15 , d2, d7
|
||||||
|
add AO , AO, #32
|
||||||
KMAC_I d15 , d3, d6
|
KMAC_I d15 , d3, d6
|
||||||
|
|
||||||
add BO , BO, #32
|
|
||||||
add AO , AO, #32
|
|
||||||
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro KERNEL2x2_M2
|
.macro KERNEL2x2_M2
|
||||||
|
|
||||||
|
pld [ AO, #A_PRE ]
|
||||||
|
pld [ BO, #B_PRE ]
|
||||||
|
|
||||||
fldd d0 , [ AO ]
|
fldd d0 , [ AO ]
|
||||||
fldd d1 , [ AO, #8 ]
|
fldd d1 , [ AO, #8 ]
|
||||||
fldd d2 , [ AO, #16 ]
|
|
||||||
fldd d3 , [ AO, #24 ]
|
|
||||||
|
|
||||||
fldd d4 , [ BO ]
|
fldd d4 , [ BO ]
|
||||||
fldd d5 , [ BO, #8 ]
|
fldd d5 , [ BO, #8 ]
|
||||||
fldd d6 , [ BO, #16 ]
|
|
||||||
fldd d7 , [ BO, #24 ]
|
|
||||||
|
|
||||||
fmacd d8 , d0, d4
|
fmacd d8 , d0, d4
|
||||||
KMAC_R d8 , d1, d5
|
KMAC_R d8 , d1, d5
|
||||||
|
fldd d2 , [ AO, #16 ]
|
||||||
fmacd d9 , d0, d5
|
fmacd d9 , d0, d5
|
||||||
|
fldd d3 , [ AO, #24 ]
|
||||||
KMAC_I d9 , d1, d4
|
KMAC_I d9 , d1, d4
|
||||||
|
|
||||||
|
fldd d6 , [ BO, #16 ]
|
||||||
fmacd d10 , d2, d4
|
fmacd d10 , d2, d4
|
||||||
|
fldd d7 , [ BO, #24 ]
|
||||||
KMAC_R d10 , d3, d5
|
KMAC_R d10 , d3, d5
|
||||||
fmacd d11 , d2, d5
|
fmacd d11 , d2, d5
|
||||||
KMAC_I d11 , d3, d4
|
KMAC_I d11 , d3, d4
|
||||||
|
@ -265,12 +257,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
fmacd d14 , d2, d6
|
fmacd d14 , d2, d6
|
||||||
KMAC_R d14 , d3, d7
|
KMAC_R d14 , d3, d7
|
||||||
fmacd d15 , d2, d7
|
|
||||||
KMAC_I d15 , d3, d6
|
|
||||||
|
|
||||||
add BO , BO, #32
|
add BO , BO, #32
|
||||||
|
fmacd d15 , d2, d7
|
||||||
add AO , AO, #32
|
add AO , AO, #32
|
||||||
|
KMAC_I d15 , d3, d6
|
||||||
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue