summaryrefslogtreecommitdiff
path: root/apps/codecs/demac/libdemac/vector_math16_armv5te.h
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/demac/libdemac/vector_math16_armv5te.h')
-rw-r--r--apps/codecs/demac/libdemac/vector_math16_armv5te.h46
1 files changed, 22 insertions, 24 deletions
diff --git a/apps/codecs/demac/libdemac/vector_math16_armv5te.h b/apps/codecs/demac/libdemac/vector_math16_armv5te.h
index fef99d9061..a999c0333a 100644
--- a/apps/codecs/demac/libdemac/vector_math16_armv5te.h
+++ b/apps/codecs/demac/libdemac/vector_math16_armv5te.h
@@ -127,32 +127,30 @@ static inline int32_t scalarproduct(int16_t* v1, int16_t* v2)
127 "beq 20f \n" 127 "beq 20f \n"
128 128
129 "10: \n" 129 "10: \n"
130 "ldrh r4, [%[v2]], #2 \n" 130 "ldrh r7, [%[v2]], #2 \n"
131 "mov r4, r4, lsl #16 \n" 131 "mov r7, r7, lsl #16 \n"
132 "1: \n" 132 "1: \n"
133 "ldmia %[v1]!, {r0-r3} \n" 133 "ldmia %[v1]!, {r0-r3} \n"
134 "ldmia %[v2]!, {r5-r8} \n" 134 "smlabt %[res], r0, r7, %[res] \n"
135 "smlabt %[res], r0, r4, %[res] \n" 135 "ldmia %[v2]!, {r4-r7} \n"
136 "smlatb %[res], r0, r5, %[res] \n" 136 "smlatb %[res], r0, r4, %[res] \n"
137 "smlabt %[res], r1, r5, %[res] \n" 137 "smlabt %[res], r1, r4, %[res] \n"
138 "smlatb %[res], r1, r6, %[res] \n" 138 "smlatb %[res], r1, r5, %[res] \n"
139 "smlabt %[res], r2, r6, %[res] \n" 139 "smlabt %[res], r2, r5, %[res] \n"
140 "smlatb %[res], r2, r7, %[res] \n" 140 "smlatb %[res], r2, r6, %[res] \n"
141 "smlabt %[res], r3, r7, %[res] \n" 141 "smlabt %[res], r3, r6, %[res] \n"
142 "smlatb %[res], r3, r8, %[res] \n" 142 "smlatb %[res], r3, r7, %[res] \n"
143 "mov r4, r8 \n"
144 "ldmia %[v1]!, {r0-r3} \n" 143 "ldmia %[v1]!, {r0-r3} \n"
145 "ldmia %[v2]!, {r5-r8} \n" 144 "smlabt %[res], r0, r7, %[res] \n"
146 "smlabt %[res], r0, r4, %[res] \n" 145 "ldmia %[v2]!, {r4-r7} \n"
147 "smlatb %[res], r0, r5, %[res] \n" 146 "smlatb %[res], r0, r4, %[res] \n"
148 "smlabt %[res], r1, r5, %[res] \n" 147 "smlabt %[res], r1, r4, %[res] \n"
149 "smlatb %[res], r1, r6, %[res] \n" 148 "smlatb %[res], r1, r5, %[res] \n"
150 "smlabt %[res], r2, r6, %[res] \n" 149 "smlabt %[res], r2, r5, %[res] \n"
151 "smlatb %[res], r2, r7, %[res] \n" 150 "smlatb %[res], r2, r6, %[res] \n"
152 "smlabt %[res], r3, r7, %[res] \n" 151 "smlabt %[res], r3, r6, %[res] \n"
153 "smlatb %[res], r3, r8, %[res] \n" 152 "smlatb %[res], r3, r7, %[res] \n"
154#if ORDER > 16 153#if ORDER > 16
155 "mov r4, r8 \n"
156 "subs %[cnt], %[cnt], #1 \n" 154 "subs %[cnt], %[cnt], #1 \n"
157 "bne 1b \n" 155 "bne 1b \n"
158#endif 156#endif
@@ -195,8 +193,8 @@ static inline int32_t scalarproduct(int16_t* v1, int16_t* v2)
195 [res]"+r"(res) 193 [res]"+r"(res)
196 : /* inputs */ 194 : /* inputs */
197 : /* clobbers */ 195 : /* clobbers */
198 "r0", "r1", "r2", "r3", "r4", 196 "r0", "r1", "r2", "r3",
199 "r5", "r6", "r7", "r8" 197 "r4", "r5", "r6", "r7"
200 ); 198 );
201 return res; 199 return res;
202} 200}