optimized dgemm kernel for ARMV6
This commit is contained in:
parent
697e198e8a
commit
a9bd12da2c
|
@ -26,10 +26,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
/**************************************************************************************
|
/**************************************************************************************
|
||||||
* 2013/11/23 Saar
|
* 2013/11/27 Saar
|
||||||
* BLASTEST : xOK
|
* BLASTEST : OK
|
||||||
* CTEST : xOK
|
* CTEST : OK
|
||||||
* TEST : xOK
|
* TEST : OK
|
||||||
*
|
*
|
||||||
**************************************************************************************/
|
**************************************************************************************/
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#define A_PRE 96
|
#define A_PRE 96
|
||||||
#define B_PRE 96
|
#define B_PRE 96
|
||||||
#define C_PRE 64
|
#define C_PRE 32
|
||||||
|
|
||||||
/**************************************************************************************
|
/**************************************************************************************
|
||||||
* Macro definitions
|
* Macro definitions
|
||||||
|
@ -100,26 +100,27 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
.macro KERNEL4x2_SUB
|
.macro KERNEL4x2_SUB
|
||||||
|
|
||||||
|
pld [ AO, #A_PRE ]
|
||||||
fldd d4 , [ BO ]
|
fldd d4 , [ BO ]
|
||||||
fldd d5 , [ BO, #8 ]
|
|
||||||
|
|
||||||
fldd d0 , [ AO ]
|
fldd d0 , [ AO ]
|
||||||
fldd d1 , [ AO, #8 ]
|
fldd d1 , [ AO, #8 ]
|
||||||
fldd d2 , [ AO, #16 ]
|
|
||||||
fldd d3 , [ AO, #24 ]
|
|
||||||
|
|
||||||
fmacd d8 , d0, d4
|
fmacd d8 , d0, d4
|
||||||
|
fldd d2 , [ AO, #16 ]
|
||||||
fmacd d9 , d1, d4
|
fmacd d9 , d1, d4
|
||||||
|
fldd d3 , [ AO, #24 ]
|
||||||
fmacd d10 , d2, d4
|
fmacd d10 , d2, d4
|
||||||
|
fldd d5 , [ BO, #8 ]
|
||||||
fmacd d11 , d3, d4
|
fmacd d11 , d3, d4
|
||||||
|
|
||||||
fmacd d12 , d0, d5
|
fmacd d12 , d0, d5
|
||||||
fmacd d13 , d1, d5
|
fmacd d13 , d1, d5
|
||||||
|
add AO , AO, #32
|
||||||
fmacd d14 , d2, d5
|
fmacd d14 , d2, d5
|
||||||
|
add BO , BO, #16
|
||||||
fmacd d15 , d3, d5
|
fmacd d15 , d3, d5
|
||||||
|
|
||||||
add AO , AO, #32
|
|
||||||
add BO , BO, #16
|
|
||||||
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
@ -130,37 +131,40 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
fldd d0, ALPHA
|
fldd d0, ALPHA
|
||||||
|
|
||||||
|
|
||||||
fldd d4 , [CO1]
|
fldd d4 , [CO1]
|
||||||
fldd d5 , [CO1, #8 ]
|
fldd d5 , [CO1, #8 ]
|
||||||
fldd d6 , [CO1, #16 ]
|
|
||||||
fldd d7 , [CO1, #24 ]
|
|
||||||
|
|
||||||
|
pld [ CO1, #C_PRE ]
|
||||||
fmacd d4 , d0 , d8
|
fmacd d4 , d0 , d8
|
||||||
|
fldd d6 , [CO1, #16 ]
|
||||||
fmacd d5 , d0 , d9
|
fmacd d5 , d0 , d9
|
||||||
|
fldd d7 , [CO1, #24 ]
|
||||||
fmacd d6 , d0 , d10
|
fmacd d6 , d0 , d10
|
||||||
|
fstd d4 , [CO1]
|
||||||
fmacd d7 , d0 , d11
|
fmacd d7 , d0 , d11
|
||||||
|
|
||||||
fstd d4 , [CO1]
|
|
||||||
fstd d5 , [CO1, #8 ]
|
fstd d5 , [CO1, #8 ]
|
||||||
fstd d6 , [CO1, #16 ]
|
fstd d6 , [CO1, #16 ]
|
||||||
fstd d7 , [CO1, #24 ]
|
fstd d7 , [CO1, #24 ]
|
||||||
|
|
||||||
fldd d4 , [CO2]
|
fldd d4 , [CO2]
|
||||||
fldd d5 , [CO2, #8 ]
|
fldd d5 , [CO2, #8 ]
|
||||||
fldd d6 , [CO2, #16 ]
|
|
||||||
fldd d7 , [CO2, #24 ]
|
|
||||||
|
|
||||||
|
pld [ CO2, #C_PRE ]
|
||||||
fmacd d4 , d0 , d12
|
fmacd d4 , d0 , d12
|
||||||
|
fldd d6 , [CO2, #16 ]
|
||||||
fmacd d5 , d0 , d13
|
fmacd d5 , d0 , d13
|
||||||
|
fldd d7 , [CO2, #24 ]
|
||||||
fmacd d6 , d0 , d14
|
fmacd d6 , d0 , d14
|
||||||
fmacd d7 , d0 , d15
|
|
||||||
|
|
||||||
fstd d4 , [CO2]
|
fstd d4 , [CO2]
|
||||||
|
fmacd d7 , d0 , d15
|
||||||
|
add CO1, CO1, #32
|
||||||
|
|
||||||
fstd d5 , [CO2, #8 ]
|
fstd d5 , [CO2, #8 ]
|
||||||
fstd d6 , [CO2, #16 ]
|
fstd d6 , [CO2, #16 ]
|
||||||
fstd d7 , [CO2, #24 ]
|
fstd d7 , [CO2, #24 ]
|
||||||
|
|
||||||
add CO1, CO1, #32
|
|
||||||
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
@ -469,13 +473,18 @@ dgemm_kernel_L2_M4_20:
|
||||||
.align 5
|
.align 5
|
||||||
|
|
||||||
dgemm_kernel_L2_M4_22:
|
dgemm_kernel_L2_M4_22:
|
||||||
|
|
||||||
|
pld [ BO, #B_PRE ]
|
||||||
KERNEL4x2_SUB
|
KERNEL4x2_SUB
|
||||||
KERNEL4x2_SUB
|
KERNEL4x2_SUB
|
||||||
|
pld [ BO, #B_PRE ]
|
||||||
KERNEL4x2_SUB
|
KERNEL4x2_SUB
|
||||||
KERNEL4x2_SUB
|
KERNEL4x2_SUB
|
||||||
|
|
||||||
|
pld [ BO, #B_PRE ]
|
||||||
KERNEL4x2_SUB
|
KERNEL4x2_SUB
|
||||||
KERNEL4x2_SUB
|
KERNEL4x2_SUB
|
||||||
|
pld [ BO, #B_PRE ]
|
||||||
KERNEL4x2_SUB
|
KERNEL4x2_SUB
|
||||||
KERNEL4x2_SUB
|
KERNEL4x2_SUB
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue