Fix bug with cmn/adds where C flag was incorrectly set.
sim/aarch64/ * simulator.c (set_flags_for_add32): Cast result to uint32_t in carry flag check. sim/testsuite/sim/aarch64/ * adds.s: Add checks for values -2 and 1, where C is not set.
This commit is contained in:
parent
7ed687b257
commit
f124168208
4 changed files with 27 additions and 1 deletions
|
@ -1,3 +1,8 @@
|
|||
2017-03-25 Jim Wilson <jim.wilson@linaro.org>
|
||||
|
||||
* simulator.c (set_flags_for_add32): Cast result to uint32_t in carry
|
||||
flag check.
|
||||
|
||||
2017-03-03 Jim Wilson <jim.wilson@linaro.org>
|
||||
|
||||
* simulator.c (mul64hi): Shift carry left by 32.
|
||||
|
|
|
@ -1650,7 +1650,7 @@ set_flags_for_add32 (sim_cpu *cpu, int32_t value1, int32_t value2)
|
|||
if (result & (1 << 31))
|
||||
flags |= N;
|
||||
|
||||
if (uresult != result)
|
||||
if (uresult != (uint32_t)result)
|
||||
flags |= C;
|
||||
|
||||
if (sresult != result)
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2017-03-25 Jim Wilson <jim.wilson@linaro.org>
|
||||
|
||||
* adds.s: Add checks for values -2 and 1, where C is not set.
|
||||
|
||||
2017-03-03 Jim Wilson <jim.wilson@linaro.org>
|
||||
|
||||
* sumov.s: Correct compare test values.
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
# Check the basic integer compare instructions: adds, adds64, subs, subs64.
|
||||
# For add, check value pairs 1 and -1 (Z), -1 and -1 (N), 2 and -1 (C),
|
||||
# and MIN_INT and -1 (V),
|
||||
# Also check -2 and 1 (not C).
|
||||
# For sub, negate the second value.
|
||||
|
||||
.include "testutils.inc"
|
||||
|
@ -24,6 +25,10 @@
|
|||
mov w1, #-1
|
||||
adds w2, w0, w1
|
||||
bvc .Lfailure
|
||||
mov w0, #-2
|
||||
mov w1, #1
|
||||
adds w2, w0, w1
|
||||
bcs .Lfailure
|
||||
|
||||
mov x0, #1
|
||||
mov x1, #-1
|
||||
|
@ -41,6 +46,10 @@
|
|||
mov x1, #-1
|
||||
adds x2, x0, x1
|
||||
bvc .Lfailure
|
||||
mov x0, #-2
|
||||
mov x1, #1
|
||||
adds x2, x0, x1
|
||||
bcs .Lfailure
|
||||
|
||||
mov w0, #1
|
||||
mov w1, #1
|
||||
|
@ -58,6 +67,10 @@
|
|||
mov w1, #1
|
||||
subs w2, w0, w1
|
||||
bvc .Lfailure
|
||||
mov w0, #-2
|
||||
mov w1, #-1
|
||||
subs w2, w0, w1
|
||||
bcs .Lfailure
|
||||
|
||||
mov x0, #1
|
||||
mov x1, #1
|
||||
|
@ -75,6 +88,10 @@
|
|||
mov x1, #1
|
||||
subs x2, x0, x1
|
||||
bvc .Lfailure
|
||||
mov x0, #-2
|
||||
mov x1, #-1
|
||||
subs x2, x0, x1
|
||||
bcs .Lfailure
|
||||
|
||||
pass
|
||||
.Lfailure:
|
||||
|
|
Loading…
Add table
Reference in a new issue