| # 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 |