arc: memcmp - fix zero-delay loop utilization
It's prohibited to put branch instruction in the very end of zero-delay loop. On execution this causes "Illegal instruction" exception. Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Signed-off-by: Igor Guryanov <guryanov@synopsys.com>
This commit is contained in:
parent
7f641d53bb
commit
f958a91fa5
@ -29,6 +29,7 @@ memcmp:
|
|||||||
ld.a %r4, [%r0, 8]
|
ld.a %r4, [%r0, 8]
|
||||||
ld.a %r5, [%r1, 8]
|
ld.a %r5, [%r1, 8]
|
||||||
brne WORD2, %r12, .Lodd
|
brne WORD2, %r12, .Lodd
|
||||||
|
nop
|
||||||
.Loop_end:
|
.Loop_end:
|
||||||
asl_s SHIFT, SHIFT, 3
|
asl_s SHIFT, SHIFT, 3
|
||||||
bhs_s .Last_cmp
|
bhs_s .Last_cmp
|
||||||
@ -105,6 +106,7 @@ memcmp:
|
|||||||
ldb.a %r4, [%r0, 2]
|
ldb.a %r4, [%r0, 2]
|
||||||
ldb.a %r5, [%r1, 2]
|
ldb.a %r5, [%r1, 2]
|
||||||
brne %r3, %r12, .Lbyte_odd
|
brne %r3, %r12, .Lbyte_odd
|
||||||
|
nop
|
||||||
.Lbyte_end:
|
.Lbyte_end:
|
||||||
bcc .Lbyte_even
|
bcc .Lbyte_even
|
||||||
brne %r4, %r5, .Lbyte_even
|
brne %r4, %r5, .Lbyte_even
|
||||||
|
Loading…
Reference in New Issue
Block a user