Skip to content

Commit 8fa948e

Browse files
authored
fix gemm_int8 leakyRelu bugs, test=develop (#6065)
1 parent 2f5def2 commit 8fa948e

File tree

2 files changed

+42
-42
lines changed

2 files changed

+42
-42
lines changed

lite/backends/arm/math/gemm_prepacked_int8.cc

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1920,7 +1920,7 @@ inline void gemm_sdot_int8_kernel(const int8_t* a_ptr,
19201920
"vmax.f32 q5, q5, q0 \n" /* relu*/ \
19211921
"vmax.f32 q6, q6, q0 \n" /* relu*/ \
19221922
"vmax.f32 q7, q7, q0 \n" /* relu*/ \
1923-
"vld1.32 {d2-d3}, [%[alpha]]! \n" \
1923+
"vld1.32 {d2-d3}, [%[alpha]] \n" \
19241924
"vmax.f32 q8, q8, q0 \n" /* relu*/ \
19251925
"vmax.f32 q9, q9, q0 \n" /* relu*/ \
19261926
"vmax.f32 q10, q10, q0 \n" /* relu*/ \
@@ -1943,46 +1943,46 @@ inline void gemm_sdot_int8_kernel(const int8_t* a_ptr,
19431943
"vmin.f32 q15, q15, q1 \n" /* relu6*/ \
19441944
"b 12f \n" /* relu6 end */
19451945

1946-
#define GEMM_DOT_LEAKY_RELU \
1947-
"14: \n" \
1948-
"vmov.f32 q0, #0.0 \n" /* for leakyrelu*/ \
1949-
"vld1.32 {d2-d3}, [%[alpha]]! \n" /* leakyrelu alpha */ \
1950-
"vcge.f32 q2, q4, q0 \n" /* vcgeq_f32 */ \
1951-
"vmla.f32 q3, q4, q1 \n" /* vmulq_f32 */ \
1952-
"vbif q4, q3, q2 \n" /* choose*/ \
1953-
"vcge.f32 q2, q5, q0 \n" /* vcgeq_f32 */ \
1954-
"vmla.f32 q3, q5, q1 \n" /* vmulq_f32 */ \
1955-
"vbif q5, q3, q2 \n" /* choose*/ \
1956-
"vcge.f32 q2, q6, q0 \n" /* vcgeq_f32 */ \
1957-
"vmla.f32 q3, q6, q1 \n" /* vmulq_f32 */ \
1958-
"vbif q6, q3, q2 \n" /* choose*/ \
1959-
"vcge.f32 q2, q7, q0 \n" /* vcgeq_f32 */ \
1960-
"vmla.f32 q3, q7, q1 \n" /* vmulq_f32 */ \
1961-
"vbif q7, q3, q2 \n" /* choose*/ \
1962-
"vcge.f32 q2, q8, q0 \n" /* vcgeq_f32 */ \
1963-
"vmla.f32 q3, q8, q1 \n" /* vmulq_f32 */ \
1964-
"vbif q8, q3, q2 \n" /* choose*/ \
1965-
"vcge.f32 q2, q9, q0 \n" /* vcgeq_f32 */ \
1966-
"vmla.f32 q3, q9, q1 \n" /* vmulq_f32 */ \
1967-
"vbif q9, q3, q2 \n" /* choose*/ \
1968-
"vcge.f32 q2, q10, q0 \n" /* vcgeq_f32 */ \
1969-
"vmla.f32 q3, q10, q1 \n" /* vmulq_f32 */ \
1970-
"vbif q10, q3, q2 \n" /* choose*/ \
1971-
"vcge.f32 q2, q11, q0 \n" /* vcgeq_f32 */ \
1972-
"vmla.f32 q3, q11, q1 \n" /* vmulq_f32 */ \
1973-
"vbif q11, q3, q2 \n" /* choose*/ \
1974-
"vcge.f32 q2, q12, q0 \n" /* vcgeq_f32 */ \
1975-
"vmla.f32 q3, q12, q1 \n" /* vmulq_f32 */ \
1976-
"vbif q12, q3, q2 \n" /* choose*/ \
1977-
"vcge.f32 q2, q13, q0 \n" /* vcgeq_f32 */ \
1978-
"vmla.f32 q3, q13, q1 \n" /* vmulq_f32 */ \
1979-
"vbif q13, q3, q2 \n" /* choose*/ \
1980-
"vcge.f32 q2, q14, q0 \n" /* vcgeq_f32 */ \
1981-
"vmla.f32 q3, q14, q1 \n" /* vmulq_f32 */ \
1982-
"vbif q14, q3, q2 \n" /* choose*/ \
1983-
"vcge.f32 q2, q15, q0 \n" /* vcgeq_f32 */ \
1984-
"vmla.f32 q3, q15, q1 \n" /* vmulq_f32 */ \
1985-
"vbif q15, q3, q2 \n" /* choose*/ \
1946+
#define GEMM_DOT_LEAKY_RELU \
1947+
"14: \n" \
1948+
"vmov.f32 q0, #0.0 \n" /* for leakyrelu*/ \
1949+
"vld1.32 {d2-d3}, [%[alpha]] \n" /* leakyrelu alpha */ \
1950+
"vcge.f32 q2, q4, q0 \n" /* vcgeq_f32 */ \
1951+
"vmul.f32 q3, q4, q1 \n" /* vmulq_f32 */ \
1952+
"vbif q4, q3, q2 \n" /* choose*/ \
1953+
"vcge.f32 q2, q5, q0 \n" /* vcgeq_f32 */ \
1954+
"vmul.f32 q3, q5, q1 \n" /* vmulq_f32 */ \
1955+
"vbif q5, q3, q2 \n" /* choose*/ \
1956+
"vcge.f32 q2, q6, q0 \n" /* vcgeq_f32 */ \
1957+
"vmul.f32 q3, q6, q1 \n" /* vmulq_f32 */ \
1958+
"vbif q6, q3, q2 \n" /* choose*/ \
1959+
"vcge.f32 q2, q7, q0 \n" /* vcgeq_f32 */ \
1960+
"vmul.f32 q3, q7, q1 \n" /* vmulq_f32 */ \
1961+
"vbif q7, q3, q2 \n" /* choose*/ \
1962+
"vcge.f32 q2, q8, q0 \n" /* vcgeq_f32 */ \
1963+
"vmul.f32 q3, q8, q1 \n" /* vmulq_f32 */ \
1964+
"vbif q8, q3, q2 \n" /* choose*/ \
1965+
"vcge.f32 q2, q9, q0 \n" /* vcgeq_f32 */ \
1966+
"vmul.f32 q3, q9, q1 \n" /* vmulq_f32 */ \
1967+
"vbif q9, q3, q2 \n" /* choose*/ \
1968+
"vcge.f32 q2, q10, q0 \n" /* vcgeq_f32 */ \
1969+
"vmul.f32 q3, q10, q1 \n" /* vmulq_f32 */ \
1970+
"vbif q10, q3, q2 \n" /* choose*/ \
1971+
"vcge.f32 q2, q11, q0 \n" /* vcgeq_f32 */ \
1972+
"vmul.f32 q3, q11, q1 \n" /* vmulq_f32 */ \
1973+
"vbif q11, q3, q2 \n" /* choose*/ \
1974+
"vcge.f32 q2, q12, q0 \n" /* vcgeq_f32 */ \
1975+
"vmul.f32 q3, q12, q1 \n" /* vmulq_f32 */ \
1976+
"vbif q12, q3, q2 \n" /* choose*/ \
1977+
"vcge.f32 q2, q13, q0 \n" /* vcgeq_f32 */ \
1978+
"vmul.f32 q3, q13, q1 \n" /* vmulq_f32 */ \
1979+
"vbif q13, q3, q2 \n" /* choose*/ \
1980+
"vcge.f32 q2, q14, q0 \n" /* vcgeq_f32 */ \
1981+
"vmul.f32 q3, q14, q1 \n" /* vmulq_f32 */ \
1982+
"vbif q14, q3, q2 \n" /* choose*/ \
1983+
"vcge.f32 q2, q15, q0 \n" /* vcgeq_f32 */ \
1984+
"vmul.f32 q3, q15, q1 \n" /* vmulq_f32 */ \
1985+
"vbif q15, q3, q2 \n" /* choose*/ \
19861986
"12: \n"
19871987

19881988
#define GEMM_DOT_ST_INT8 \

lite/tests/math/conv_int8_compute_test.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ DEFINE_int32(stride_w, 1, "stride width");
5353
DEFINE_int32(dila_h, 1, "dilation height");
5454
DEFINE_int32(dila_w, 1, "dilation width");
5555

56-
DEFINE_bool(flag_act, true, "do act");
56+
DEFINE_int32(flag_act, 1, "do act");
5757
DEFINE_bool(flag_bias, true, "with bias");
5858
DEFINE_double(clipped_coef, 1.0, "clipped relu coef");
5959
DEFINE_double(leakey_relu_alpha, 2.22, "leakey relu alpha");

0 commit comments

Comments
 (0)