### Fixed armv5te multiplications

```Rd and Rm registers should be different in 'mul'. This register
combination results in unpredictable behaviour. GCC will give
a warning and RVCT an error in this case.

Restriction applies only to armv5 targets and not for armv6 and above.

Change-Id: I378d17c51e1f16a6820814fbed43e115aaabb03e```
parent 35ce4eb0
 ... ... @@ -53,10 +53,10 @@ sub r7, r5, #1 ; range-1 cmp r1, #0 mul r4, r4, r7 ; ((range-1) * probability) mul r6, r4, r7 ; ((range-1) * probability) mov r7, #1 add r4, r7, r4, lsr #8 ; 1 + (((range-1) * probability) >> 8) add r4, r7, r6, lsr #8 ; 1 + (((range-1) * probability) >> 8) addne r2, r2, r4 ; if (bit) lowvalue += split subne r4, r5, r4 ; if (bit) range = range-split ... ...
 ... ... @@ -71,7 +71,7 @@ token_loop ; off of v, so set a flag here based on this. ; This value is refered to as "bb" lsls r12, r12, #1 ; bb = v >> n mul r4, r4, r7 ; ((range-1) * pp[i>>1])) mul r6, r4, r7 ; ((range-1) * pp[i>>1])) ; bb can only be 0 or 1. So only execute this statement ; if bb == 1, otherwise it will act like i + 0 ... ... @@ -79,7 +79,7 @@ token_loop mov r7, #1 ldrsb lr, [r10, lr] ; i = vp8_coef_tree[i+bb] add r4, r7, r4, lsr #8 ; 1 + (((range-1) * pp[i>>1]) >> 8) add r4, r7, r6, lsr #8 ; 1 + (((range-1) * pp[i>>1]) >> 8) addcs r2, r2, r4 ; if (bb) lowvalue += split subcs r4, r5, r4 ; if (bb) range = range-split ... ... @@ -172,12 +172,12 @@ extra_bits_loop ldrb r4, [r9, lr, asr #1] ; pp[i>>1] sub r7, r5, #1 ; range-1 lsls r12, r12, #1 ; v >> n mul r4, r4, r7 ; (range-1) * pp[i>>1] mul r6, r4, r7 ; (range-1) * pp[i>>1] addcs lr, lr, #1 ; i + bb mov r7, #1 ldrsb lr, [r10, lr] ; i = b->tree[i+bb] add r4, r7, r4, lsr #8 ; split = 1 + (((range-1) * pp[i>>1]) >> 8) add r4, r7, r6, lsr #8 ; split = 1 + (((range-1) * pp[i>>1]) >> 8) addcs r2, r2, r4 ; if (bb) lowvalue += split subcs r4, r5, r4 ; if (bb) range = range-split ... ...
 ... ... @@ -93,7 +93,7 @@ token_loop ; off of v, so set a flag here based on this. ; This value is refered to as "bb" lsls r12, r12, #1 ; bb = v >> n mul r4, r4, r7 ; ((range-1) * pp[i>>1])) mul r6, r4, r7 ; ((range-1) * pp[i>>1])) ; bb can only be 0 or 1. So only execute this statement ; if bb == 1, otherwise it will act like i + 0 ... ... @@ -101,7 +101,7 @@ token_loop mov r7, #1 ldrsb lr, [r10, lr] ; i = vp8_coef_tree[i+bb] add r4, r7, r4, lsr #8 ; 1 + (((range-1) * pp[i>>1]) >> 8) add r4, r7, r6, lsr #8 ; 1 + (((range-1) * pp[i>>1]) >> 8) addcs r2, r2, r4 ; if (bb) lowvalue += split subcs r4, r5, r4 ; if (bb) range = range-split ... ... @@ -194,12 +194,12 @@ extra_bits_loop ldrb r4, [r9, lr, asr #1] ; pp[i>>1] sub r7, r5, #1 ; range-1 lsls r12, r12, #1 ; v >> n mul r4, r4, r7 ; (range-1) * pp[i>>1] mul r6, r4, r7 ; (range-1) * pp[i>>1] addcs lr, lr, #1 ; i + bb mov r7, #1 ldrsb lr, [r10, lr] ; i = b->tree[i+bb] add r4, r7, r4, lsr #8 ; split = 1 + (((range-1) * pp[i>>1]) >> 8) add r4, r7, r6, lsr #8 ; split = 1 + (((range-1) * pp[i>>1]) >> 8) addcs r2, r2, r4 ; if (bb) lowvalue += split subcs r4, r5, r4 ; if (bb) range = range-split ... ...
 ... ... @@ -123,7 +123,7 @@ token_loop ; off of v, so set a flag here based on this. ; This value is refered to as "bb" lsls r12, r12, #1 ; bb = v >> n mul r4, r4, r7 ; ((range-1) * pp[i>>1])) mul r6, r4, r7 ; ((range-1) * pp[i>>1])) ; bb can only be 0 or 1. So only execute this statement ; if bb == 1, otherwise it will act like i + 0 ... ... @@ -131,7 +131,7 @@ token_loop mov r7, #1 ldrsb lr, [r10, lr] ; i = vp8_coef_tree[i+bb] add r4, r7, r4, lsr #8 ; 1 + (((range-1) * pp[i>>1]) >> 8) add r4, r7, r6, lsr #8 ; 1 + (((range-1) * pp[i>>1]) >> 8) addcs r2, r2, r4 ; if (bb) lowvalue += split subcs r4, r5, r4 ; if (bb) range = range-split ... ... @@ -224,12 +224,12 @@ extra_bits_loop ldrb r4, [r9, lr, asr #1] ; pp[i>>1] sub r7, r5, #1 ; range-1 lsls r12, r12, #1 ; v >> n mul r4, r4, r7 ; (range-1) * pp[i>>1] mul r6, r4, r7 ; (range-1) * pp[i>>1] addcs lr, lr, #1 ; i + bb mov r7, #1 ldrsb lr, [r10, lr] ; i = b->tree[i+bb] add r4, r7, r4, lsr #8 ; split = 1 + (((range-1) * pp[i>>1]) >> 8) add r4, r7, r6, lsr #8 ; split = 1 + (((range-1) * pp[i>>1]) >> 8) addcs r2, r2, r4 ; if (bb) lowvalue += split subcs r4, r5, r4 ; if (bb) range = range-split ... ...
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment