1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
# 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
.align 4
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
|