| @@ -81,7 +81,8 @@ static inline void dgemm_kernel_arm_cortex_a53_4x4_m4n12( | |||||
| /** register v0-v3 for loading A, v4-v7 for loading B, x0 for transporting data */ | /** register v0-v3 for loading A, v4-v7 for loading B, x0 for transporting data */ | ||||
| "ldp q0,q1,[%[sa]]; ldp q4,q5,[%[b1_]]\n\t" | "ldp q0,q1,[%[sa]]; ldp q4,q5,[%[b1_]]\n\t" | ||||
| "ldr d6,[%[b2_]]; ldr x0,[%[b2_],#8]\n\t" | "ldr d6,[%[b2_]]; ldr x0,[%[b2_],#8]\n\t" | ||||
| "blt 3f; beq 2f; 1:\n\t" | |||||
| "blt 3f; beq 2f;\n\t" | |||||
| "1:\n\t" | |||||
| /** main loop with unroll_k = 2, specially designed for cortex-A53 NEON pipeline */ | /** main loop with unroll_k = 2, specially designed for cortex-A53 NEON pipeline */ | ||||
| "ldr d7,[%[b2_],#16]; fmov v6.d[1],x0\n\t" | "ldr d7,[%[b2_],#16]; fmov v6.d[1],x0\n\t" | ||||
| "fmla v8.2d,v0.2d,v4.d[0]; ldr x0,[%[b2_],#24]\n\t" | "fmla v8.2d,v0.2d,v4.d[0]; ldr x0,[%[b2_],#24]\n\t" | ||||
| @@ -147,7 +148,8 @@ static inline void dgemm_kernel_arm_cortex_a53_4x4_m4n12( | |||||
| "fmla v29.2d,v3.2d,v7.d[0]; ldr x0,[%[b2_],#8]\n\t" | "fmla v29.2d,v3.2d,v7.d[0]; ldr x0,[%[b2_],#8]\n\t" | ||||
| "fmla v30.2d,v2.2d,v7.d[1]; cmp %[K],#2\n\t" | "fmla v30.2d,v2.2d,v7.d[1]; cmp %[K],#2\n\t" | ||||
| "fmla v31.2d,v3.2d,v7.d[1]\n\t" | "fmla v31.2d,v3.2d,v7.d[1]\n\t" | ||||
| "bgt 1b; blt 3f; 2:\n\t" | |||||
| "bgt 1b; blt 3f;\n" | |||||
| "2:\n\t" | |||||
| /** tail part with k = 2 */ | /** tail part with k = 2 */ | ||||
| "ldr d7,[%[b2_],#16]; fmov v6.d[1],x0\n\t" | "ldr d7,[%[b2_],#16]; fmov v6.d[1],x0\n\t" | ||||
| "fmla v8.2d,v0.2d,v4.d[0]; ldr x0,[%[b2_],#24]\n\t" | "fmla v8.2d,v0.2d,v4.d[0]; ldr x0,[%[b2_],#24]\n\t" | ||||