提交 a5d89422 编写于 作者: H HappyAngel 提交者: xiaogang

fix con5x5s2_dw compute error in v7 (#2783)

上级 907150a4
......@@ -3637,16 +3637,14 @@ void conv_depthwise_3x3s1p0_bias(float *dout,
dr2 = dr1 + w_in;
dr3 = dr2 + w_in;
//! process bottom pad
if (i + 3 >= h_in) {
switch (i + 3 - h_in) {
if (i + 4 > h_in) {
switch (i + 4 - h_in) {
case 3:
din_ptr1 = zero_ptr;
case 2:
din_ptr2 = zero_ptr;
case 1:
din_ptr3 = zero_ptr;
case 0:
din_ptr3 = zero_ptr;
default:
break;
}
......
......@@ -1366,8 +1366,8 @@ void conv_depthwise_3x3s2p1_bias(float* dout,
}
//! process bottom pad
if (i + 2 > h_in) {
switch (i + 2 - h_in) {
if (i * 2 + 2 > h_in) {
switch (i * 2 + 2 - h_in) {
case 2:
din1_ptr = zero_ptr;
case 1:
......
......@@ -276,8 +276,8 @@ namespace math {
"vmla.f32 q13, q9, q4 @ w2 * inr4\n" \
"vmla.f32 q14, q9, q6 @ w2 * inr6\n" \
"vmla.f32 q15, q9, q1 @ w2 * inr8\n" \
"vld1.32 {d4-d7}, [%[r1]] @ load r1, 9, 10\n" \
"vmla.f32 q12, q10, q3 @ w3 * inr3\n" \
"vld1.32 {d4-d7}, [%[r1]] @ load r1, 9, 10\n" \
"vmla.f32 q13, q10, q5 @ w3 * inr5\n" \
"vmla.f32 q14, q10, q0 @ w3 * inr7\n" \
"vmla.f32 q15, q10, q2 @ w3 * inr9\n" \
......@@ -302,7 +302,7 @@ namespace math {
"vld1.32 {d0-d3}, [%[r2]]! @ load r2, 7, 8\n" \
"vmla.f32 q12, q9, q2 @ w2 * inr2\n" \
"vmla.f32 q13, q9, q4 @ w2 * inr4\n" \
"vmla.f32 q14, q8, q4 @ w1 * inr5\n" \
"vmla.f32 q14, q8, q5 @ w1 * inr5\n" \
"vmla.f32 q15, q8, q0 @ w1 * inr7\n" \
"vmla.f32 q12, q10, q3 @ w3 * inr3\n" \
"vmla.f32 q13, q10, q5 @ w3 * inr5\n" \
......@@ -334,15 +334,15 @@ namespace math {
"vmla.f32 q13, q9, q4 @ w2 * inr4\n" \
"vmla.f32 q14, q8, q5 @ w1 * inr5\n" \
"vmla.f32 q15, q8, q0 @ w1 * inr7\n" \
"vld1.32 {d4-d7}, [%[r3]] @ load r3, 9, 10\n" \
"vmla.f32 q12, q10, q3 @ w3 * inr3\n" \
"vld1.32 {d4-d7}, [%[r3]] @ load r3, 9, 10\n" \
"vmla.f32 q13, q10, q5 @ w3 * inr5\n" \
"vmla.f32 q14, q9, q6 @ w2 * inr6\n" \
"vmla.f32 q15, q9, q1 @ w2 * inr8\n" \
"vmla.f32 q12, q11, q4 @ w4 * inr4\n" \
"vmla.f32 q13, q11, q6 @ w4 * inr6\n" \
"vmla.f32 q14, q9, q0 @ w3 * inr7\n" \
"vmla.f32 q15, q9, q2 @ w3 * inr9\n" \
"vmla.f32 q14, q10, q0 @ w3 * inr7\n" \
"vmla.f32 q15, q10, q2 @ w3 * inr9\n" \
"vld1.32 {d14-d17}, [%[wc0]]!\n" /* load w0-1, to q7-8 */ \
"sub %[r3], %[r3], #16 @ r1 - 16 to nextline address\n" \
"vmla.f32 q14, q11, q1 @ w4 * inr8\n" \
......@@ -364,15 +364,15 @@ namespace math {
"vmla.f32 q13, q9, q4 @ w2 * inr4\n" \
"vmla.f32 q14, q8, q5 @ w1 * inr5\n" \
"vmla.f32 q15, q8, q0 @ w1 * inr7\n" \
"vld1.32 {d4-d7}, [%[r4]] @ load r3, 9, 10\n" \
"vmla.f32 q12, q10, q3 @ w3 * inr3\n" \
"vld1.32 {d4-d7}, [%[r4]] @ load r3, 9, 10\n" \
"vmla.f32 q13, q10, q5 @ w3 * inr5\n" \
"vmla.f32 q14, q9, q6 @ w2 * inr6\n" \
"vmla.f32 q15, q9, q1 @ w2 * inr8\n" \
"vmla.f32 q12, q11, q4 @ w4 * inr4\n" \
"vmla.f32 q13, q11, q6 @ w4 * inr6\n" \
"vmla.f32 q14, q9, q0 @ w3 * inr7\n" \
"vmla.f32 q15, q9, q2 @ w3 * inr9\n" \
"vmla.f32 q14, q10, q0 @ w3 * inr7\n" \
"vmla.f32 q15, q10, q2 @ w3 * inr9\n" \
"sub %[wc0], %[wc0], #400 @ wc0 - 400 to start address\n" \
"sub %[r4], %[r4], #16 @ r1 - 16 to nextline address\n" \
"vmla.f32 q14, q11, q1 @ w4 * inr8\n" \
......
......@@ -950,16 +950,18 @@ void pooling1x1s2p0_max(const float* din,
break;
}
}
if (h * 2 + 4 >= hin) {
switch (h * 2 + 4 - hin) {
case 4:
if (h * 2 + 7 > hin) {
switch (h * 2 + 7 - hin) {
case 7:
din0_ptr = zero_ptr;
case 6:
case 5:
din1_ptr = zero_ptr;
case 4:
case 3:
din2_ptr = zero_ptr;
case 2:
din1_ptr = zero_ptr;
case 1:
case 0:
din2_ptr = zero_ptr;
din3_ptr = zero_ptr;
default:
break;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册