From: wernsaar Date: Mon, 30 Sep 2013 15:31:23 +0000 (+0200) Subject: updated dgemm_kernel_8x2_vfpv3.S X-Git-Tag: v0.2.9.rc1~7^2~6^2~77 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1c63180bb6820fce44ab81b62cc056dd9d35ca9d;p=platform%2Fupstream%2Fopenblas.git updated dgemm_kernel_8x2_vfpv3.S --- diff --git a/kernel/arm/dgemm_kernel_8x2_vfpv3.S b/kernel/arm/dgemm_kernel_8x2_vfpv3.S index e4b2568..6c1b0f5 100644 --- a/kernel/arm/dgemm_kernel_8x2_vfpv3.S +++ b/kernel/arm/dgemm_kernel_8x2_vfpv3.S @@ -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 - - vstm CO1!, { d24, d25, d26 , d27 , d28 , d29 , d30 , d31 } - vldm CO2, { d8 , d9 , d10 , d11 , d12, d13 , d14 , 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 ] + - 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