updated dgemm_kernel_8x2_vfpv3.S
This commit is contained in:
parent
22a8fcc4b7
commit
1c63180bb6
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue