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