Fix Thumb-2 inline asm (#15)

This commit is contained in:
Ken MacKay
2014-12-02 22:57:11 -08:00
parent f20cf79703
commit f3d46f0fb7
2 changed files with 17 additions and 0 deletions
+16
View File
@@ -1265,6 +1265,7 @@ static void vli_square(uint32_t *p_result, uint32_t *p_left)
"mov r14, r11 \n\t"
"umlal r8, r11, r3, r4 \n\t"
"cmp r14, r11 \n\t"
"it hi \n\t"
"adchi r12, #0 \n\t"
"adds r8, r8 \n\t"
"adcs r11, r11 \n\t"
@@ -1279,6 +1280,7 @@ static void vli_square(uint32_t *p_result, uint32_t *p_left)
"mov r14, r9 \n\t"
"umlal r8, r9, r3, r5 \n\t"
"cmp r14, r9 \n\t"
"it hi \n\t"
"adchi r10, #0 \n\t"
"adds r8, r8 \n\t"
"adcs r9, r9 \n\t"
@@ -1286,6 +1288,7 @@ static void vli_square(uint32_t *p_result, uint32_t *p_left)
"mov r14, r9 \n\t"
"umlal r8, r9, r4, r4 \n\t"
"cmp r14, r9 \n\t"
"it hi \n\t"
"adchi r10, #0 \n\t"
"adds r8, r11 \n\t"
"adcs r9, r12 \n\t"
@@ -1297,10 +1300,12 @@ static void vli_square(uint32_t *p_result, uint32_t *p_left)
"mov r14, r11 \n\t"
"umlal r8, r11, r3, r6 \n\t"
"cmp r14, r11 \n\t"
"it hi \n\t"
"adchi r12, #0 \n\t"
"mov r14, r11 \n\t"
"umlal r8, r11, r4, r5 \n\t"
"cmp r14, r11 \n\t"
"it hi \n\t"
"adchi r12, #0 \n\t"
"adds r8, r8 \n\t"
"adcs r11, r11 \n\t"
@@ -1316,6 +1321,7 @@ static void vli_square(uint32_t *p_result, uint32_t *p_left)
"mov r14, r9 \n\t"
"umlal r8, r9, r4, r6 \n\t"
"cmp r14, r9 \n\t"
"it hi \n\t"
"adchi r10, #0 \n\t"
"ldr r14, [r0] \n\t"
"adds r8, r14 \n\t"
@@ -1327,6 +1333,7 @@ static void vli_square(uint32_t *p_result, uint32_t *p_left)
"mov r14, r9 \n\t"
"umlal r8, r9, r5, r5 \n\t"
"cmp r14, r9 \n\t"
"it hi \n\t"
"adchi r10, #0 \n\t"
"adds r8, r11 \n\t"
"adcs r9, r12 \n\t"
@@ -1338,10 +1345,12 @@ static void vli_square(uint32_t *p_result, uint32_t *p_left)
"mov r14, r11 \n\t"
"umlal r8, r11, r4, r7 \n\t"
"cmp r14, r11 \n\t"
"it hi \n\t"
"adchi r12, #0 \n\t"
"mov r14, r11 \n\t"
"umlal r8, r11, r5, r6 \n\t"
"cmp r14, r11 \n\t"
"it hi \n\t"
"adchi r12, #0 \n\t"
"ldr r14, [r0] \n\t"
"adds r8, r14 \n\t"
@@ -1361,6 +1370,7 @@ static void vli_square(uint32_t *p_result, uint32_t *p_left)
"mov r14, r9 \n\t"
"umlal r8, r9, r5, r7 \n\t"
"cmp r14, r9 \n\t"
"it hi \n\t"
"adchi r10, #0 \n\t"
"ldr r14, [r0] \n\t"
"adds r8, r14 \n\t"
@@ -1372,6 +1382,7 @@ static void vli_square(uint32_t *p_result, uint32_t *p_left)
"mov r14, r9 \n\t"
"umlal r8, r9, r6, r6 \n\t"
"cmp r14, r9 \n\t"
"it hi \n\t"
"adchi r10, #0 \n\t"
"adds r8, r11 \n\t"
"adcs r9, r12 \n\t"
@@ -1383,10 +1394,12 @@ static void vli_square(uint32_t *p_result, uint32_t *p_left)
"mov r14, r11 \n\t"
"umlal r8, r11, r5, r2 \n\t"
"cmp r14, r11 \n\t"
"it hi \n\t"
"adchi r12, #0 \n\t"
"mov r14, r11 \n\t"
"umlal r8, r11, r6, r7 \n\t"
"cmp r14, r11 \n\t"
"it hi \n\t"
"adchi r12, #0 \n\t"
"ldr r14, [r0] \n\t"
"adds r8, r14 \n\t"
@@ -1405,6 +1418,7 @@ static void vli_square(uint32_t *p_result, uint32_t *p_left)
"mov r14, r9 \n\t"
"umlal r8, r9, r6, r2 \n\t"
"cmp r14, r9 \n\t"
"it hi \n\t"
"adchi r10, #0 \n\t"
"adds r8, r8 \n\t"
"adcs r9, r9 \n\t"
@@ -1412,6 +1426,7 @@ static void vli_square(uint32_t *p_result, uint32_t *p_left)
"mov r14, r9 \n\t"
"umlal r8, r9, r7, r7 \n\t"
"cmp r14, r9 \n\t"
"it hi \n\t"
"adchi r10, #0 \n\t"
"adds r8, r11 \n\t"
"adcs r9, r12 \n\t"
@@ -1423,6 +1438,7 @@ static void vli_square(uint32_t *p_result, uint32_t *p_left)
"mov r14, r11 \n\t"
"umlal r8, r11, r7, r2 \n\t"
"cmp r14, r11 \n\t"
"it hi \n\t"
"adchi r12, #0 \n\t"
"adds r8, r8 \n\t"
"adcs r11, r11 \n\t"
+1
View File
@@ -30,6 +30,7 @@ def mulacc(acc, r1, r2):
emit("mov r14, r%s", acc[1])
emit("umlal r%s, r%s, r%s, r%s", acc[0], acc[1], r1, r2)
emit("cmp r14, r%s", acc[1])
emit("it hi")
emit("adchi r%s, #0", acc[2])
r = [2, 3, 4, 5, 6, 7]