updated dgemm_kernel_8x2_vfpv3.S

This commit is contained in:
wernsaar 2013-09-30 17:31:23 +02:00
parent 22a8fcc4b7
commit 1c63180bb6
1 changed files with 81 additions and 42 deletions

View File

@ -26,28 +26,28 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
/**************************************************************************************
* 2013/09/29 Saar
* 2013/09/30 Saar
* BLASTEST : OK
* CTEST : OK
* TEST : OK
*
*
* 2013/09/29 Saar
* 2013/09/30 Saar
* UNROLL_N 2
* UNROLL_M 8
* DGEMM_P 128
* DGEMM_Q 128
* DGEMM_R 2048
* DGEMM_P 64
* DGEMM_Q 64
* DGEMM_R 512
* A_PRE 192
* B_PRE 32
* C_PRE 64
*
* Performance on Odroid U2:
*
* 1 Core: 1.48 GFLOPS ATLAS: 1.52 GFLOPS
* 2 Cores: 2.92 GFLOPS ATLAS: - GFLOPS
* 3 Cores: 4.08 GFLOPS ATLAS: - GFLOPS
* 4 Cores: 4.80 GFLOPS ATLAS: 3.80 GFLOPS
* 1 Core: 1.42 GFLOPS ATLAS: 1.58 GFLOPS
* 2 Cores: 2.81 GFLOPS ATLAS: - GFLOPS
* 3 Cores: 4.05 GFLOPS ATLAS: - GFLOPS
* 4 Cores: 5.40 GFLOPS ATLAS: 3.88 GFLOPS
**************************************************************************************/
#define ASSEMBLER
@ -128,32 +128,34 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.macro KERNEL8x2
fldmiad BO!, { d24 , d25}
pld [AO , #A_PRE]
fldmiad AO!, { d0, d1 }
fldd d0, [ AO ]
fmacd d8 , d0, d24
fldmiad AO!, { d2, d3 }
fmacd d9 , d1, d24
fldmiad AO!, { d4, d5 }
fldd d1, [ AO , #8 ]
fmacd d16 , d0, d25
fldmiad AO!, { d6, d7 }
fldd d2, [ AO , #16 ]
fmacd d9 , d1, d24
fmacd d17 , d1, d25
fldd d3, [ AO , #24 ]
fmacd d10 , d2, d24
fmacd d11 , d3, d24
fmacd d18 , d2, d25
fldd d4, [ AO , #32 ]
fmacd d11 , d3, d24
pld [AO , #A_PRE]
fmacd d19 , d3, d25
pld [AO , #A_PRE-32]
fldd d5, [ AO , #40 ]
fmacd d12 , d4, d24
fmacd d13 , d5, d24
fmacd d20 , d4, d25
fldd d6, [ AO , #48 ]
fmacd d13 , d5, d24
fmacd d21 , d5, d25
fldd d7, [ AO , #56 ]
fmacd d14 , d6, d24
fmacd d15 , d7, d24
fmacd d22 , d6, d25
pld [AO , #A_PRE+32]
fmacd d15 , d7, d24
add AO, AO, #64
fmacd d23 , d7, d25
.endm
@ -161,30 +163,62 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.macro SAVE8x2
vldr d0, ALPHA
vldm CO1, { d24, d25, d26 , d27 , d28 , d29 , d30 , d31 }
vmla.f64 d24, d0 , d8
vmla.f64 d25, d0 , d9
vmla.f64 d26, d0 , d10
vmla.f64 d27, d0 , d11
vmla.f64 d28, d0 , d12
vmla.f64 d29, d0 , d13
vmla.f64 d30, d0 , d14
vmla.f64 d31, d0 , d15
fldd d24, [CO1]
fldd d25, [CO1, #8 ]
fmacd d24, d0 , d8
fldd d8 , [CO2]
fldd d26, [CO1, #16]
fmacd d25, d0 , d9
fldd d9 , [CO2, #8 ]
fldd d27, [CO1, #24]
fmacd d26, d0 , d10
fldd d10 , [CO2, #16 ]
fldd d28, [CO1, #32]
fmacd d27, d0 , d11
fldd d11 , [CO2, #24 ]
fldd d29, [CO1, #40]
fmacd d28, d0 , d12
fldd d12 , [CO2, #32 ]
fldd d30, [CO1, #48]
fmacd d29, d0 , d13
fldd d13 , [CO2, #40 ]
fldd d31, [CO1, #56]
fmacd d30, d0 , d14
fldd d14 , [CO2, #48 ]
fmacd d31, d0 , d15
fldd d15 , [CO2, #56 ]
vstm CO1!, { d24, d25, d26 , d27 , d28 , d29 , d30 , d31 }
vldm CO2, { d8 , d9 , d10 , d11 , d12, d13 , d14 , d15 }
vmla.f64 d8 , d0 , d16
vmla.f64 d9 , d0 , d17
vmla.f64 d10, d0 , d18
vmla.f64 d11, d0 , d19
vmla.f64 d12, d0 , d20
vmla.f64 d13, d0 , d21
vmla.f64 d14, d0 , d22
vmla.f64 d15, d0 , d23
fmacd d8 , d0 , d16
fstd d24, [CO1]
fmacd d9 , d0 , d17
fstd d25, [CO1, #8 ]
fstd d8 , [CO2]
fmacd d10, d0 , d18
fstd d26, [CO1, #16 ]
fstd d9 , [CO2, #8 ]
fmacd d11, d0 , d19
fstd d27, [CO1, #24 ]
fstd d10, [CO2, #16 ]
fmacd d12, d0 , d20
fstd d28, [CO1, #32 ]
fstd d11, [CO2, #24 ]
fmacd d13, d0 , d21
fstd d29, [CO1, #40 ]
fstd d12, [CO2, #32 ]
fmacd d14, d0 , d22
fstd d30, [CO1, #48 ]
fstd d13, [CO2, #40 ]
fmacd d15, d0 , d23
fstd d31, [CO1, #56 ]
fstd d14, [CO2, #48 ]
add CO1, CO1, #64
fstd d15, [CO2, #56 ]
add CO2, CO2, #64
vstm CO2!, { d8 , d9 , d10 , d11 , d12, d13 , d14 , d15 }
.endm
@ -643,6 +677,9 @@ _L2_BEGIN:
str r3 , C // store C
ldr AO, A // AO = A
pld [AO , #A_PRE-96]
pld [AO , #A_PRE-64]
pld [AO , #A_PRE-32]
_L2_M8_BEGIN:
@ -653,7 +690,9 @@ _L2_M8_BEGIN:
_L2_M8_20:
pld [CO1, #C_PRE]
pld [CO1, #C_PRE+32]
pld [CO2, #C_PRE]
pld [CO2, #C_PRE+32]
INIT8x2
mov BO, BC