From 5f93aa5f87141fd4cb01ff8487cec6c803904647 Mon Sep 17 00:00:00 2001 From: kaustubh Date: Wed, 14 Dec 2016 14:05:11 +0530 Subject: [PATCH] Updated data prefetch in TRSM, ASUM, DOT functions Signed-off-by: kaustubh --- kernel/mips/cdot_msa.c | 32 ++++++++++----------- kernel/mips/zdot_msa.c | 64 +++++++++++++++++++++--------------------- 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/kernel/mips/cdot_msa.c b/kernel/mips/cdot_msa.c index cb86e5fbd..0999fa08d 100644 --- a/kernel/mips/cdot_msa.c +++ b/kernel/mips/cdot_msa.c @@ -115,25 +115,25 @@ OPENBLAS_COMPLEX_FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLA dot0 += (vx0r * vy0r); vx5 = LD_SP(x); x += 4; vx1i = (v4f32) __msa_pckod_w((v4i32) vx3, (v4i32) vx2); - dot1 += (vx0i * vy0r); + dot1 OP2 (vx0i * vy0r); vy4 = LD_SP(y); y += 4; vy1r = (v4f32) __msa_pckev_w((v4i32) vy3, (v4i32) vy2); dot2 += (vx1r * vy1r); vy5 = LD_SP(y); y += 4; vy1i = (v4f32) __msa_pckod_w((v4i32) vy3, (v4i32) vy2); - dot3 += (vx1i * vy1r); + dot3 OP2 (vx1i * vy1r); vx6 = LD_SP(x); x += 4; vx7 = LD_SP(x); x += 4; vy6 = LD_SP(y); y += 4; vy7 = LD_SP(y); y += 4; vx8 = LD_SP(x); x += 4; - dot0 -= (vx0i * vy0i); + dot0 OP1 (vx0i * vy0i); vx9 = LD_SP(x); x += 4; vx2r = (v4f32) __msa_pckev_w((v4i32) vx5, (v4i32) vx4); dot1 += (vx0r * vy0i); vy8 = LD_SP(y); y += 4; vx2i = (v4f32) __msa_pckod_w((v4i32) vx5, (v4i32) vx4); - dot2 -= (vx1i * vy1i); + dot2 OP1 (vx1i * vy1i); vy9 = LD_SP(y); y += 4; vy2r = (v4f32) __msa_pckev_w((v4i32) vy5, (v4i32) vy4); dot3 += (vx1r * vy1i); @@ -144,23 +144,23 @@ OPENBLAS_COMPLEX_FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLA dot4 += (vx2r * vy2r); vy10 = LD_SP(y); y += 4; vx3i = (v4f32) __msa_pckod_w((v4i32) vx7, (v4i32) vx6); - dot5 += (vx2i * vy2r); + dot5 OP2 (vx2i * vy2r); vy11 = LD_SP(y); y += 4; vy3r = (v4f32) __msa_pckev_w((v4i32) vy7, (v4i32) vy6); vy3i = (v4f32) __msa_pckod_w((v4i32) vy7, (v4i32) vy6); dot6 += (vx3r * vy3r); vx0r = (v4f32) __msa_pckev_w((v4i32) vx9, (v4i32) vx8); - dot7 += (vx3i * vy3r); + dot7 OP2 (vx3i * vy3r); vx0i = (v4f32) __msa_pckod_w((v4i32) vx9, (v4i32) vx8); vy0r = (v4f32) __msa_pckev_w((v4i32) vy9, (v4i32) vy8); vx2 = vx10; vy0i = (v4f32) __msa_pckod_w((v4i32) vy9, (v4i32) vy8); vx3 = vx11; - dot4 -= (vx2i * vy2i); + dot4 OP1 (vx2i * vy2i); vy2 = vy10; dot5 += (vx2r * vy2i); vy3 = vy11; - dot6 -= (vx3i * vy3i); + dot6 OP1 (vx3i * vy3i); dot7 += (vx3r * vy3i); } @@ -169,36 +169,36 @@ OPENBLAS_COMPLEX_FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLA dot0 += (vx0r * vy0r); vx5 = LD_SP(x); x += 4; vx1i = (v4f32) __msa_pckod_w((v4i32) vx3, (v4i32) vx2); - dot1 += (vx0i * vy0r); + dot1 OP2 (vx0i * vy0r); vy4 = LD_SP(y); y += 4; vy1r = (v4f32) __msa_pckev_w((v4i32) vy3, (v4i32) vy2); dot2 += (vx1r * vy1r); vy5 = LD_SP(y); y += 4; vy1i = (v4f32) __msa_pckod_w((v4i32) vy3, (v4i32) vy2); - dot3 += (vx1i * vy1r); + dot3 OP2 (vx1i * vy1r); vx6 = LD_SP(x); x += 4; vx7 = LD_SP(x); x += 4; vy6 = LD_SP(y); y += 4; vy7 = LD_SP(y); y += 4; - dot0 -= (vx0i * vy0i); + dot0 OP1 (vx0i * vy0i); vx2r = (v4f32) __msa_pckev_w((v4i32) vx5, (v4i32) vx4); dot1 += (vx0r * vy0i); vx2i = (v4f32) __msa_pckod_w((v4i32) vx5, (v4i32) vx4); - dot2 -= (vx1i * vy1i); + dot2 OP1 (vx1i * vy1i); vy2r = (v4f32) __msa_pckev_w((v4i32) vy5, (v4i32) vy4); dot3 += (vx1r * vy1i); vy2i = (v4f32) __msa_pckod_w((v4i32) vy5, (v4i32) vy4); vx3r = (v4f32) __msa_pckev_w((v4i32) vx7, (v4i32) vx6); dot4 += (vx2r * vy2r); vx3i = (v4f32) __msa_pckod_w((v4i32) vx7, (v4i32) vx6); - dot5 += (vx2i * vy2r); + dot5 OP2 (vx2i * vy2r); vy3r = (v4f32) __msa_pckev_w((v4i32) vy7, (v4i32) vy6); vy3i = (v4f32) __msa_pckod_w((v4i32) vy7, (v4i32) vy6); dot6 += (vx3r * vy3r); - dot7 += (vx3i * vy3r); - dot4 -= (vx2i * vy2i); + dot7 OP2 (vx3i * vy3r); + dot4 OP1 (vx2i * vy2i); dot5 += (vx2r * vy2i); - dot6 -= (vx3i * vy3i); + dot6 OP1 (vx3i * vy3i); dot7 += (vx3r * vy3i); } diff --git a/kernel/mips/zdot_msa.c b/kernel/mips/zdot_msa.c index 33012fcf1..0d9b3c4fa 100644 --- a/kernel/mips/zdot_msa.c +++ b/kernel/mips/zdot_msa.c @@ -118,25 +118,25 @@ OPENBLAS_COMPLEX_FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLA dot0 += (vx0r * vy0r); vx5 = LD_DP(x); x += 2; vx1i = (v2f64) __msa_pckod_d((v2i64) vx3, (v2i64) vx2); - dot1 += (vx0i * vy0r); + dot1 OP2 (vx0i * vy0r); vy4 = LD_DP(y); y += 2; vy1r = (v2f64) __msa_pckev_d((v2i64) vy3, (v2i64) vy2); dot2 += (vx1r * vy1r); vy5 = LD_DP(y); y += 2; vy1i = (v2f64) __msa_pckod_d((v2i64) vy3, (v2i64) vy2); - dot3 += (vx1i * vy1r); + dot3 OP2 (vx1i * vy1r); vx6 = LD_DP(x); x += 2; vx7 = LD_DP(x); x += 2; vy6 = LD_DP(y); y += 2; vy7 = LD_DP(y); y += 2; vx8 = LD_DP(x); x += 2; - dot0 -= (vx0i * vy0i); + dot0 OP1 (vx0i * vy0i); vx9 = LD_DP(x); x += 2; vx2r = (v2f64) __msa_pckev_d((v2i64) vx5, (v2i64) vx4); dot1 += (vx0r * vy0i); vy8 = LD_DP(y); y += 2; vx2i = (v2f64) __msa_pckod_d((v2i64) vx5, (v2i64) vx4); - dot2 -= (vx1i * vy1i); + dot2 OP1 (vx1i * vy1i); vy9 = LD_DP(y); y += 2; vy2r = (v2f64) __msa_pckev_d((v2i64) vy5, (v2i64) vy4); dot3 += (vx1r * vy1i); @@ -147,23 +147,23 @@ OPENBLAS_COMPLEX_FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLA dot4 += (vx2r * vy2r); vy10 = LD_DP(y); y += 2; vx3i = (v2f64) __msa_pckod_d((v2i64) vx7, (v2i64) vx6); - dot5 += (vx2i * vy2r); + dot5 OP2 (vx2i * vy2r); vy11 = LD_DP(y); y += 2; vy3r = (v2f64) __msa_pckev_d((v2i64) vy7, (v2i64) vy6); vy3i = (v2f64) __msa_pckod_d((v2i64) vy7, (v2i64) vy6); dot6 += (vx3r * vy3r); vx0r = (v2f64) __msa_pckev_d((v2i64) vx9, (v2i64) vx8); - dot7 += (vx3i * vy3r); + dot7 OP2 (vx3i * vy3r); vx0i = (v2f64) __msa_pckod_d((v2i64) vx9, (v2i64) vx8); vy0r = (v2f64) __msa_pckev_d((v2i64) vy9, (v2i64) vy8); vx2 = vx10; vy0i = (v2f64) __msa_pckod_d((v2i64) vy9, (v2i64) vy8); vx3 = vx11; - dot4 -= (vx2i * vy2i); + dot4 OP1 (vx2i * vy2i); vy2 = vy10; dot5 += (vx2r * vy2i); vy3 = vy11; - dot6 -= (vx3i * vy3i); + dot6 OP1 (vx3i * vy3i); dot7 += (vx3r * vy3i); } @@ -172,36 +172,36 @@ OPENBLAS_COMPLEX_FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLA dot0 += (vx0r * vy0r); vx5 = LD_DP(x); x += 2; vx1i = (v2f64) __msa_pckod_d((v2i64) vx3, (v2i64) vx2); - dot1 += (vx0i * vy0r); + dot1 OP2 (vx0i * vy0r); vy4 = LD_DP(y); y += 2; vy1r = (v2f64) __msa_pckev_d((v2i64) vy3, (v2i64) vy2); dot2 += (vx1r * vy1r); vy5 = LD_DP(y); y += 2; vy1i = (v2f64) __msa_pckod_d((v2i64) vy3, (v2i64) vy2); - dot3 += (vx1i * vy1r); + dot3 OP2 (vx1i * vy1r); vx6 = LD_DP(x); x += 2; vx7 = LD_DP(x); x += 2; vy6 = LD_DP(y); y += 2; vy7 = LD_DP(y); y += 2; - dot0 -= (vx0i * vy0i); + dot0 OP1 (vx0i * vy0i); vx2r = (v2f64) __msa_pckev_d((v2i64) vx5, (v2i64) vx4); dot1 += (vx0r * vy0i); vx2i = (v2f64) __msa_pckod_d((v2i64) vx5, (v2i64) vx4); - dot2 -= (vx1i * vy1i); + dot2 OP1 (vx1i * vy1i); vy2r = (v2f64) __msa_pckev_d((v2i64) vy5, (v2i64) vy4); dot3 += (vx1r * vy1i); vy2i = (v2f64) __msa_pckod_d((v2i64) vy5, (v2i64) vy4); vx3r = (v2f64) __msa_pckev_d((v2i64) vx7, (v2i64) vx6); dot4 += (vx2r * vy2r); vx3i = (v2f64) __msa_pckod_d((v2i64) vx7, (v2i64) vx6); - dot5 += (vx2i * vy2r); + dot5 OP2 (vx2i * vy2r); vy3r = (v2f64) __msa_pckev_d((v2i64) vy7, (v2i64) vy6); vy3i = (v2f64) __msa_pckod_d((v2i64) vy7, (v2i64) vy6); dot6 += (vx3r * vy3r); - dot7 += (vx3i * vy3r); - dot4 -= (vx2i * vy2i); + dot7 OP2 (vx3i * vy3r); + dot4 OP1 (vx2i * vy2i); dot5 += (vx2r * vy2i); - dot6 -= (vx3i * vy3i); + dot6 OP1 (vx3i * vy3i); dot7 += (vx3r * vy3i); } } @@ -220,25 +220,25 @@ OPENBLAS_COMPLEX_FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLA dot0 += (vx0r * vy0r); vx5 = LD_DP(x); x += inc_x2; vx1i = (v2f64) __msa_pckod_d((v2i64) vx3, (v2i64) vx2); - dot1 += (vx0i * vy0r); + dot1 OP2 (vx0i * vy0r); vy4 = LD_DP(y); y += inc_y2; vy1r = (v2f64) __msa_pckev_d((v2i64) vy3, (v2i64) vy2); dot2 += (vx1r * vy1r); vy5 = LD_DP(y); y += inc_y2; vy1i = (v2f64) __msa_pckod_d((v2i64) vy3, (v2i64) vy2); - dot3 += (vx1i * vy1r); + dot3 OP2 (vx1i * vy1r); vx6 = LD_DP(x); x += inc_x2; vx7 = LD_DP(x); x += inc_x2; vy6 = LD_DP(y); y += inc_y2; vy7 = LD_DP(y); y += inc_y2; vx8 = LD_DP(x); x += inc_x2; - dot0 -= (vx0i * vy0i); + dot0 OP1 (vx0i * vy0i); vx9 = LD_DP(x); x += inc_x2; vx2r = (v2f64) __msa_pckev_d((v2i64) vx5, (v2i64) vx4); dot1 += (vx0r * vy0i); vy8 = LD_DP(y); y += inc_y2; vx2i = (v2f64) __msa_pckod_d((v2i64) vx5, (v2i64) vx4); - dot2 -= (vx1i * vy1i); + dot2 OP1 (vx1i * vy1i); vy9 = LD_DP(y); y += inc_y2; vy2r = (v2f64) __msa_pckev_d((v2i64) vy5, (v2i64) vy4); dot3 += (vx1r * vy1i); @@ -249,23 +249,23 @@ OPENBLAS_COMPLEX_FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLA dot4 += (vx2r * vy2r); vy10 = LD_DP(y); y += inc_y2; vx3i = (v2f64) __msa_pckod_d((v2i64) vx7, (v2i64) vx6); - dot5 += (vx2i * vy2r); + dot5 OP2 (vx2i * vy2r); vy11 = LD_DP(y); y += inc_y2; vy3r = (v2f64) __msa_pckev_d((v2i64) vy7, (v2i64) vy6); vy3i = (v2f64) __msa_pckod_d((v2i64) vy7, (v2i64) vy6); dot6 += (vx3r * vy3r); vx0r = (v2f64) __msa_pckev_d((v2i64) vx9, (v2i64) vx8); - dot7 += (vx3i * vy3r); + dot7 OP2 (vx3i * vy3r); vx0i = (v2f64) __msa_pckod_d((v2i64) vx9, (v2i64) vx8); vy0r = (v2f64) __msa_pckev_d((v2i64) vy9, (v2i64) vy8); vx2 = vx10; vy0i = (v2f64) __msa_pckod_d((v2i64) vy9, (v2i64) vy8); vx3 = vx11; - dot4 -= (vx2i * vy2i); + dot4 OP1 (vx2i * vy2i); vy2 = vy10; dot5 += (vx2r * vy2i); vy3 = vy11; - dot6 -= (vx3i * vy3i); + dot6 OP1 (vx3i * vy3i); dot7 += (vx3r * vy3i); } @@ -274,36 +274,36 @@ OPENBLAS_COMPLEX_FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLA dot0 += (vx0r * vy0r); vx5 = LD_DP(x); x += inc_x2; vx1i = (v2f64) __msa_pckod_d((v2i64) vx3, (v2i64) vx2); - dot1 += (vx0i * vy0r); + dot1 OP2 (vx0i * vy0r); vy4 = LD_DP(y); y += inc_y2; vy1r = (v2f64) __msa_pckev_d((v2i64) vy3, (v2i64) vy2); dot2 += (vx1r * vy1r); vy5 = LD_DP(y); y += inc_y2; vy1i = (v2f64) __msa_pckod_d((v2i64) vy3, (v2i64) vy2); - dot3 += (vx1i * vy1r); + dot3 OP2 (vx1i * vy1r); vx6 = LD_DP(x); x += inc_x2; vx7 = LD_DP(x); x += inc_x2; vy6 = LD_DP(y); y += inc_y2; vy7 = LD_DP(y); y += inc_y2; - dot0 -= (vx0i * vy0i); + dot0 OP1 (vx0i * vy0i); vx2r = (v2f64) __msa_pckev_d((v2i64) vx5, (v2i64) vx4); dot1 += (vx0r * vy0i); vx2i = (v2f64) __msa_pckod_d((v2i64) vx5, (v2i64) vx4); - dot2 -= (vx1i * vy1i); + dot2 OP1 (vx1i * vy1i); vy2r = (v2f64) __msa_pckev_d((v2i64) vy5, (v2i64) vy4); dot3 += (vx1r * vy1i); vy2i = (v2f64) __msa_pckod_d((v2i64) vy5, (v2i64) vy4); vx3r = (v2f64) __msa_pckev_d((v2i64) vx7, (v2i64) vx6); dot4 += (vx2r * vy2r); vx3i = (v2f64) __msa_pckod_d((v2i64) vx7, (v2i64) vx6); - dot5 += (vx2i * vy2r); + dot5 OP2 (vx2i * vy2r); vy3r = (v2f64) __msa_pckev_d((v2i64) vy7, (v2i64) vy6); vy3i = (v2f64) __msa_pckod_d((v2i64) vy7, (v2i64) vy6); dot6 += (vx3r * vy3r); - dot7 += (vx3i * vy3r); - dot4 -= (vx2i * vy2i); + dot7 OP2 (vx3i * vy3r); + dot4 OP1 (vx2i * vy2i); dot5 += (vx2r * vy2i); - dot6 -= (vx3i * vy3i); + dot6 OP1 (vx3i * vy3i); dot7 += (vx3r * vy3i); }