2016-12-14 00:35:31 +08:00
|
|
|
# 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
|
Fix ldn/stn multiple instructions. Fix testcases with unaligned data.
sim/aarch64/
* simulator.c (vec_load): Add M argument. Rewrite to iterate over
registers based on structure size.
(LD4, LD3, LD2, LD1_2, LD1_3, LD1_4): Pass new arg to vec_load.
(LD1_1): Replace with call to vec_load.
(vec_store): Add new M argument. Rewrite to iterate over registers
based on structure size.
(ST4, ST3, ST2, ST1_2, ST1_3, ST1_4): Pass new arg to vec_store.
(ST1_1): Replace with call to vec_store.
sim/testsuite/sim/aarch64/
* fcvtz.s, fstur.s, ldn_single.s, ldnr.s, mla.s, mls.s, uzp.s: Align
data.
* sumulh.s: Delete unnecessary data alignment.
* stn_single.s: Align data. Fix unaligned ldr insns. Adjust cmp
arguments to match change.
* ldn_multiple.s, stn_multiple.s: New.
2017-04-23 07:36:01 +08:00
|
|
|
.align 4
|
2016-12-14 00:35:31 +08:00
|
|
|
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
|