summaryrefslogtreecommitdiff
path: root/apps/codecs/demac/libdemac/vector_math16_armv6.h
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2010-03-03 20:52:02 +0000
committerJens Arnold <amiconn@rockbox.org>2010-03-03 20:52:02 +0000
commit0030ae28b551df94defe25c04c1859ba508e632e (patch)
tree7700cd67da8c2b191cc68402a83c4c674d470c1d /apps/codecs/demac/libdemac/vector_math16_armv6.h
parentd9adfa1c739c54640fff1ac79c7a6ab8c75398b8 (diff)
downloadrockbox-0030ae28b551df94defe25c04c1859ba508e632e.tar.gz
rockbox-0030ae28b551df94defe25c04c1859ba508e632e.zip
Get rid of .rept in inline asm() blocks where possible. Using .rept causes gcc to wrongly estimate the size of the asm(), leading to (potential) compilation problems. This is necessary for the upcoming restructuring, and should fix ARMv6+ sim builds as well. No functional change.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25004 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/demac/libdemac/vector_math16_armv6.h')
-rw-r--r--apps/codecs/demac/libdemac/vector_math16_armv6.h34
1 files changed, 17 insertions, 17 deletions
diff --git a/apps/codecs/demac/libdemac/vector_math16_armv6.h b/apps/codecs/demac/libdemac/vector_math16_armv6.h
index 0ace6c5811..2ce62728cb 100644
--- a/apps/codecs/demac/libdemac/vector_math16_armv6.h
+++ b/apps/codecs/demac/libdemac/vector_math16_armv6.h
@@ -22,14 +22,14 @@ You should have received a copy of the GNU General Public License
22along with this program; if not, write to the Free Software 22along with this program; if not, write to the Free Software
23Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA 23Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
24 24
25*/ 25*/
26 26
27#define FUSED_VECTOR_MATH 27#define FUSED_VECTOR_MATH
28 28
29#if ORDER > 16 29#if ORDER > 16
30#define BLOCK_REPEAT "3" 30#define REPEAT_BLOCK(x) x x x
31#else 31#else
32#define BLOCK_REPEAT "1" 32#define REPEAT_BLOCK(x) x
33#endif 33#endif
34 34
35/* Calculate scalarproduct, then add a 2nd vector (fused for performance) 35/* Calculate scalarproduct, then add a 2nd vector (fused for performance)
@@ -77,7 +77,7 @@ static inline int32_t vector_sp_add(int16_t* v1, int16_t* f2, int16_t* s2)
77 "sadd16 r1, r1, r5 \n" 77 "sadd16 r1, r1, r5 \n"
78 "strd r0, [%[v1]], #8 \n" 78 "strd r0, [%[v1]], #8 \n"
79 79
80 ".rept " BLOCK_REPEAT "\n" 80 REPEAT_BLOCK(
81 "ldmia %[s2]!, {r5,r6} \n" 81 "ldmia %[s2]!, {r5,r6} \n"
82 "pkhtb r4, r4, r2 \n" 82 "pkhtb r4, r4, r2 \n"
83 "pkhtb r2, r2, r3 \n" 83 "pkhtb r2, r2, r3 \n"
@@ -104,7 +104,7 @@ static inline int32_t vector_sp_add(int16_t* v1, int16_t* f2, int16_t* s2)
104 "sadd16 r0, r0, r6 \n" 104 "sadd16 r0, r0, r6 \n"
105 "sadd16 r1, r1, r5 \n" 105 "sadd16 r1, r1, r5 \n"
106 "strd r0, [%[v1]], #8 \n" 106 "strd r0, [%[v1]], #8 \n"
107 ".endr \n" 107 )
108 108
109 "ldmia %[s2]!, {r5,r6} \n" 109 "ldmia %[s2]!, {r5,r6} \n"
110 "pkhtb r4, r4, r2 \n" 110 "pkhtb r4, r4, r2 \n"
@@ -148,7 +148,7 @@ static inline int32_t vector_sp_add(int16_t* v1, int16_t* f2, int16_t* s2)
148 "sadd16 r1, r1, r7 \n" 148 "sadd16 r1, r1, r7 \n"
149 "strd r0, [%[v1]], #8 \n" 149 "strd r0, [%[v1]], #8 \n"
150 150
151 ".rept " BLOCK_REPEAT "\n" 151 REPEAT_BLOCK(
152 "smlad %[res], r2, r4, %[res] \n" 152 "smlad %[res], r2, r4, %[res] \n"
153 "ldrd r6, [%[s2]], #8 \n" 153 "ldrd r6, [%[s2]], #8 \n"
154 "smlad %[res], r3, r5, %[res] \n" 154 "smlad %[res], r3, r5, %[res] \n"
@@ -165,7 +165,7 @@ static inline int32_t vector_sp_add(int16_t* v1, int16_t* f2, int16_t* s2)
165 "sadd16 r0, r0, r6 \n" 165 "sadd16 r0, r0, r6 \n"
166 "sadd16 r1, r1, r7 \n" 166 "sadd16 r1, r1, r7 \n"
167 "strd r0, [%[v1]], #8 \n" 167 "strd r0, [%[v1]], #8 \n"
168 ".endr \n" 168 )
169 169
170 "smlad %[res], r2, r4, %[res] \n" 170 "smlad %[res], r2, r4, %[res] \n"
171 "ldrd r6, [%[s2]], #8 \n" 171 "ldrd r6, [%[s2]], #8 \n"
@@ -246,7 +246,7 @@ static inline int32_t vector_sp_sub(int16_t* v1, int16_t* f2, int16_t* s2)
246 "ssub16 r1, r1, r5 \n" 246 "ssub16 r1, r1, r5 \n"
247 "strd r0, [%[v1]], #8 \n" 247 "strd r0, [%[v1]], #8 \n"
248 248
249 ".rept " BLOCK_REPEAT "\n" 249 REPEAT_BLOCK(
250 "ldmia %[s2]!, {r5,r6} \n" 250 "ldmia %[s2]!, {r5,r6} \n"
251 "pkhtb r4, r4, r2 \n" 251 "pkhtb r4, r4, r2 \n"
252 "pkhtb r2, r2, r3 \n" 252 "pkhtb r2, r2, r3 \n"
@@ -273,7 +273,7 @@ static inline int32_t vector_sp_sub(int16_t* v1, int16_t* f2, int16_t* s2)
273 "ssub16 r0, r0, r6 \n" 273 "ssub16 r0, r0, r6 \n"
274 "ssub16 r1, r1, r5 \n" 274 "ssub16 r1, r1, r5 \n"
275 "strd r0, [%[v1]], #8 \n" 275 "strd r0, [%[v1]], #8 \n"
276 ".endr \n" 276 )
277 277
278 "ldmia %[s2]!, {r5,r6} \n" 278 "ldmia %[s2]!, {r5,r6} \n"
279 "pkhtb r4, r4, r2 \n" 279 "pkhtb r4, r4, r2 \n"
@@ -317,7 +317,7 @@ static inline int32_t vector_sp_sub(int16_t* v1, int16_t* f2, int16_t* s2)
317 "ssub16 r1, r1, r7 \n" 317 "ssub16 r1, r1, r7 \n"
318 "strd r0, [%[v1]], #8 \n" 318 "strd r0, [%[v1]], #8 \n"
319 319
320 ".rept " BLOCK_REPEAT "\n" 320 REPEAT_BLOCK(
321 "smlad %[res], r2, r4, %[res] \n" 321 "smlad %[res], r2, r4, %[res] \n"
322 "ldrd r6, [%[s2]], #8 \n" 322 "ldrd r6, [%[s2]], #8 \n"
323 "smlad %[res], r3, r5, %[res] \n" 323 "smlad %[res], r3, r5, %[res] \n"
@@ -334,7 +334,7 @@ static inline int32_t vector_sp_sub(int16_t* v1, int16_t* f2, int16_t* s2)
334 "ssub16 r0, r0, r6 \n" 334 "ssub16 r0, r0, r6 \n"
335 "ssub16 r1, r1, r7 \n" 335 "ssub16 r1, r1, r7 \n"
336 "strd r0, [%[v1]], #8 \n" 336 "strd r0, [%[v1]], #8 \n"
337 ".endr \n" 337 )
338 338
339 "smlad %[res], r2, r4, %[res] \n" 339 "smlad %[res], r2, r4, %[res] \n"
340 "ldrd r6, [%[s2]], #8 \n" 340 "ldrd r6, [%[s2]], #8 \n"
@@ -400,7 +400,7 @@ static inline int32_t scalarproduct(int16_t* v1, int16_t* v2)
400#else 400#else
401 "smuadx %[res], r0, r3 \n" 401 "smuadx %[res], r0, r3 \n"
402#endif 402#endif
403 ".rept " BLOCK_REPEAT "\n" 403 REPEAT_BLOCK(
404 "pkhtb r0, r6, r7 \n" 404 "pkhtb r0, r6, r7 \n"
405 "ldrd r2, [%[v1]], #8 \n" 405 "ldrd r2, [%[v1]], #8 \n"
406 "smladx %[res], r1, r0, %[res] \n" 406 "smladx %[res], r1, r0, %[res] \n"
@@ -413,8 +413,8 @@ static inline int32_t scalarproduct(int16_t* v1, int16_t* v2)
413 "pkhtb r3, r5, r6 \n" 413 "pkhtb r3, r5, r6 \n"
414 "ldrd r4, [%[v2]], #8 \n" 414 "ldrd r4, [%[v2]], #8 \n"
415 "smladx %[res], r0, r3, %[res] \n" 415 "smladx %[res], r0, r3, %[res] \n"
416 ".endr \n" 416 )
417 417
418 "pkhtb r0, r6, r7 \n" 418 "pkhtb r0, r6, r7 \n"
419 "ldrd r2, [%[v1]], #8 \n" 419 "ldrd r2, [%[v1]], #8 \n"
420 "smladx %[res], r1, r0, %[res] \n" 420 "smladx %[res], r1, r0, %[res] \n"
@@ -434,7 +434,7 @@ static inline int32_t scalarproduct(int16_t* v1, int16_t* v2)
434#endif 434#endif
435 435
436 "b 99f \n" 436 "b 99f \n"
437 437
438 "20: \n" 438 "20: \n"
439 "ldrd r0, [%[v1]], #8 \n" 439 "ldrd r0, [%[v1]], #8 \n"
440 "ldmia %[v2]!, {r5-r7} \n" 440 "ldmia %[v2]!, {r5-r7} \n"
@@ -446,7 +446,7 @@ static inline int32_t scalarproduct(int16_t* v1, int16_t* v2)
446#else 446#else
447 "smuad %[res], r0, r5 \n" 447 "smuad %[res], r0, r5 \n"
448#endif 448#endif
449 ".rept " BLOCK_REPEAT "\n" 449 REPEAT_BLOCK(
450 "ldrd r4, [%[v2]], #8 \n" 450 "ldrd r4, [%[v2]], #8 \n"
451 "smlad %[res], r1, r6, %[res] \n" 451 "smlad %[res], r1, r6, %[res] \n"
452 "ldrd r0, [%[v1]], #8 \n" 452 "ldrd r0, [%[v1]], #8 \n"
@@ -455,7 +455,7 @@ static inline int32_t scalarproduct(int16_t* v1, int16_t* v2)
455 "smlad %[res], r3, r4, %[res] \n" 455 "smlad %[res], r3, r4, %[res] \n"
456 "ldrd r2, [%[v1]], #8 \n" 456 "ldrd r2, [%[v1]], #8 \n"
457 "smlad %[res], r0, r5, %[res] \n" 457 "smlad %[res], r0, r5, %[res] \n"
458 ".endr \n" 458 )
459 459
460#if ORDER > 32 460#if ORDER > 32
461 "ldrd r4, [%[v2]], #8 \n" 461 "ldrd r4, [%[v2]], #8 \n"