Browse Source
sim/aarch64 * simulator.c (NEG, POS): Move before set_flags_for_add64. (set_flags_for_add64): Replace with a modified copy of set_flags_for_sub64. sim/testsuite/sim/aarch64 * testutils.inc (pass): Move .Lpass to start. (fail): Move .Lfail to start. Return 1 instead of 0. (start): Moved .Lpass and .Lfail to here. * adds.s: New. * fstur.s: New. * tbnz.s: New.binutils-2_28-branch
7 changed files with 309 additions and 45 deletions
@ -1,3 +1,12 @@ |
|||
2016-12-13 Jim Wilson <jim.wilson@linaro.org> |
|||
|
|||
* testutils.inc (pass): Move .Lpass to start. |
|||
(fail): Move .Lfail to start. Return 1 instead of 0. |
|||
(start): Moved .Lpass and .Lfail to here. |
|||
* adds.s: New. |
|||
* fstur.s: New. |
|||
* tbnz.s: New. |
|||
|
|||
2015-11-24 Nick Clifton <nickc@redhat.com> |
|||
|
|||
* pass.s, allinsn.exp, testutils.inc: New files. |
|||
|
|||
@ -0,0 +1,81 @@ |
|||
# mach: aarch64 |
|||
|
|||
# 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), |
|||
# For sub, negate the second value. |
|||
|
|||
.include "testutils.inc" |
|||
|
|||
start |
|||
mov w0, #1 |
|||
mov w1, #-1 |
|||
adds w2, w0, w1 |
|||
bne .Lfailure |
|||
mov w0, #-1 |
|||
mov w1, #-1 |
|||
adds w2, w0, w1 |
|||
bpl .Lfailure |
|||
mov w0, #2 |
|||
mov w1, #-1 |
|||
adds w2, w0, w1 |
|||
bcc .Lfailure |
|||
mov w0, #0x80000000 |
|||
mov w1, #-1 |
|||
adds w2, w0, w1 |
|||
bvc .Lfailure |
|||
|
|||
mov x0, #1 |
|||
mov x1, #-1 |
|||
adds x2, x0, x1 |
|||
bne .Lfailure |
|||
mov x0, #-1 |
|||
mov x1, #-1 |
|||
adds x2, x0, x1 |
|||
bpl .Lfailure |
|||
mov x0, #2 |
|||
mov x1, #-1 |
|||
adds x2, x0, x1 |
|||
bcc .Lfailure |
|||
mov x0, #0x8000000000000000 |
|||
mov x1, #-1 |
|||
adds x2, x0, x1 |
|||
bvc .Lfailure |
|||
|
|||
mov w0, #1 |
|||
mov w1, #1 |
|||
subs w2, w0, w1 |
|||
bne .Lfailure |
|||
mov w0, #-1 |
|||
mov w1, #1 |
|||
subs w2, w0, w1 |
|||
bpl .Lfailure |
|||
mov w0, #2 |
|||
mov w1, #1 |
|||
subs w2, w0, w1 |
|||
bcc .Lfailure |
|||
mov w0, #0x80000000 |
|||
mov w1, #1 |
|||
subs w2, w0, w1 |
|||
bvc .Lfailure |
|||
|
|||
mov x0, #1 |
|||
mov x1, #1 |
|||
subs x2, x0, x1 |
|||
bne .Lfailure |
|||
mov x0, #-1 |
|||
mov x1, #1 |
|||
subs x2, x0, x1 |
|||
bpl .Lfailure |
|||
mov x0, #2 |
|||
mov x1, #1 |
|||
subs x2, x0, x1 |
|||
bcc .Lfailure |
|||
mov x0, #0x8000000000000000 |
|||
mov x1, #1 |
|||
subs x2, x0, x1 |
|||
bvc .Lfailure |
|||
|
|||
pass |
|||
.Lfailure: |
|||
fail |
|||
@ -0,0 +1,136 @@ |
|||
# mach: aarch64 |
|||
|
|||
# Check the FP store unscaled offset instructions: fsturs, fsturd, fsturq. |
|||
# Check the values -1, and XXX_MAX, which tests all bits. |
|||
# Check with offsets -256 and 255, which tests all bits. |
|||
# Also tests the FP load unscaled offset instructions: fldurs, fldurd, fldurq. |
|||
|
|||
.include "testutils.inc" |
|||
|
|||
.data |
|||
fm1: |
|||
.word 3212836864 |
|||
fmax: |
|||
.word 2139095039 |
|||
ftmp: |
|||
.word 0 |
|||
|
|||
dm1: |
|||
.word 0 |
|||
.word -1074790400 |
|||
dmax: |
|||
.word 4294967295 |
|||
.word 2146435071 |
|||
dtmp: |
|||
.word 0 |
|||
.word 0 |
|||
|
|||
ldm1: |
|||
.word 0 |
|||
.word 0 |
|||
.word 0 |
|||
.word -1073807360 |
|||
ldmax: |
|||
.word 4294967295 |
|||
.word 4294967295 |
|||
.word 4294967295 |
|||
.word 2147418111 |
|||
ldtmp: |
|||
.word 0 |
|||
.word 0 |
|||
.word 0 |
|||
.word 0 |
|||
|
|||
start |
|||
adrp x1, ftmp |
|||
add x1, x1, :lo12:ftmp |
|||
|
|||
adrp x0, fm1 |
|||
add x0, x0, :lo12:fm1 |
|||
sub x5, x0, #255 |
|||
sub x6, x1, #255 |
|||
movi d2, #0 |
|||
ldur s2, [x5, #255] |
|||
stur s2, [x6, #255] |
|||
ldr w3, [x0] |
|||
ldr w4, [x1] |
|||
cmp w3, w4 |
|||
bne .Lfailure |
|||
|
|||
adrp x0, fmax |
|||
add x0, x0, :lo12:fmax |
|||
add x5, x0, #256 |
|||
add x6, x1, #256 |
|||
movi d2, #0 |
|||
ldur s2, [x5, #-256] |
|||
stur s2, [x6, #-256] |
|||
ldr w3, [x0] |
|||
ldr w4, [x1] |
|||
cmp w3, w4 |
|||
bne .Lfailure |
|||
|
|||
adrp x1, dtmp |
|||
add x1, x1, :lo12:dtmp |
|||
|
|||
adrp x0, dm1 |
|||
add x0, x0, :lo12:dm1 |
|||
sub x5, x0, #255 |
|||
sub x6, x1, #255 |
|||
movi d2, #0 |
|||
ldur d2, [x5, #255] |
|||
stur d2, [x6, #255] |
|||
ldr x3, [x0] |
|||
ldr x4, [x1] |
|||
cmp x3, x4 |
|||
bne .Lfailure |
|||
|
|||
adrp x0, dmax |
|||
add x0, x0, :lo12:dmax |
|||
add x5, x0, #256 |
|||
add x6, x1, #256 |
|||
movi d2, #0 |
|||
ldur d2, [x5, #-256] |
|||
stur d2, [x6, #-256] |
|||
ldr x3, [x0] |
|||
ldr x4, [x1] |
|||
cmp x3, x4 |
|||
bne .Lfailure |
|||
|
|||
adrp x1, ldtmp |
|||
add x1, x1, :lo12:ldtmp |
|||
|
|||
adrp x0, ldm1 |
|||
add x0, x0, :lo12:ldm1 |
|||
sub x5, x0, #255 |
|||
sub x6, x1, #255 |
|||
movi v2.2d, #0 |
|||
ldur q2, [x5, #255] |
|||
stur q2, [x6, #255] |
|||
ldr x3, [x0] |
|||
ldr x4, [x1] |
|||
cmp x3, x4 |
|||
bne .Lfailure |
|||
ldr x3, [x0, 8] |
|||
ldr x4, [x1, 8] |
|||
cmp x3, x4 |
|||
bne .Lfailure |
|||
|
|||
adrp x0, ldmax |
|||
add x0, x0, :lo12:ldmax |
|||
add x5, x0, #256 |
|||
add x6, x1, #256 |
|||
movi v2.2d, #0 |
|||
ldur q2, [x5, #-256] |
|||
stur q2, [x6, #-256] |
|||
ldr x3, [x0] |
|||
ldr x4, [x1] |
|||
cmp x3, x4 |
|||
bne .Lfailure |
|||
ldr x3, [x0, 8] |
|||
ldr x4, [x1, 8] |
|||
cmp x3, x4 |
|||
bne .Lfailure |
|||
|
|||
pass |
|||
.Lfailure: |
|||
fail |
|||
@ -0,0 +1,55 @@ |
|||
# mach: aarch64 |
|||
|
|||
# Check the test-bit-and-branch instructions: tbnz, and tbz. |
|||
# We check the edge condition bit positions: 0, 1<<31, 1<<32, 1<<63. |
|||
|
|||
.include "testutils.inc" |
|||
|
|||
start |
|||
mov x0, #1 |
|||
tbnz x0, #0, .L1 |
|||
fail |
|||
.L1: |
|||
tbz x0, #0, .Lfailure |
|||
mov x0, #0xFFFFFFFFFFFFFFFE |
|||
tbnz x0, #0, .Lfailure |
|||
tbz x0, #0, .L2 |
|||
fail |
|||
.L2: |
|||
|
|||
mov x0, #0x80000000 |
|||
tbnz x0, #31, .L3 |
|||
fail |
|||
.L3: |
|||
tbz x0, #31, .Lfailure |
|||
mov x0, #0xFFFFFFFF7FFFFFFF |
|||
tbnz x0, #31, .Lfailure |
|||
tbz x0, #31, .L4 |
|||
fail |
|||
.L4: |
|||
|
|||
mov x0, #0x100000000 |
|||
tbnz x0, #32, .L5 |
|||
fail |
|||
.L5: |
|||
tbz x0, #32, .Lfailure |
|||
mov x0, #0xFFFFFFFEFFFFFFFF |
|||
tbnz x0, #32, .Lfailure |
|||
tbz x0, #32, .L6 |
|||
fail |
|||
.L6: |
|||
|
|||
mov x0, #0x8000000000000000 |
|||
tbnz x0, #63, .L7 |
|||
fail |
|||
.L7: |
|||
tbz x0, #63, .Lfailure |
|||
mov x0, #0x7FFFFFFFFFFFFFFF |
|||
tbnz x0, #63, .Lfailure |
|||
tbz x0, #63, .L8 |
|||
fail |
|||
.L8: |
|||
|
|||
pass |
|||
.Lfailure: |
|||
fail |
|||
Loading…
Reference in new issue