diff options
Diffstat (limited to 'sim/testsuite')
-rw-r--r-- | sim/testsuite/sim/aarch64/ChangeLog | 4 | ||||
-rw-r--r-- | sim/testsuite/sim/aarch64/cmtst.s | 104 |
2 files changed, 108 insertions, 0 deletions
diff --git a/sim/testsuite/sim/aarch64/ChangeLog b/sim/testsuite/sim/aarch64/ChangeLog index 7e48dd1..6a39354 100644 --- a/sim/testsuite/sim/aarch64/ChangeLog +++ b/sim/testsuite/sim/aarch64/ChangeLog @@ -1,3 +1,7 @@ +2017-01-23 Jim Wilson <jim.wilson@linaro.org> + + * cmtst.s: New. + 2017-01-17 Jim Wilson <jim.wilson@linaro.org> * addv.s: New. diff --git a/sim/testsuite/sim/aarch64/cmtst.s b/sim/testsuite/sim/aarch64/cmtst.s new file mode 100644 index 0000000..64c8b27 --- /dev/null +++ b/sim/testsuite/sim/aarch64/cmtst.s @@ -0,0 +1,104 @@ +# mach: aarch64 + +# Check the vector compare bitwise test instruction: cmtst. + +.include "testutils.inc" + + .data + .align 4 +inputb: + .word 0x04030201 + .word 0x08070605 + .word 0x0c0b0a09 + .word 0x100f0e0d +inputh: + .word 0x00020001 + .word 0x00040003 + .word 0x00060005 + .word 0x00800007 +inputs: + .word 0x00000001 + .word 0x00000002 + .word 0x00000003 + .word 0x00000004 +inputd: + .word 0x00000001 + .word 0x00000000 + .word 0x00000002 + .word 0x00000000 +inputd2: + .word 0x00000003 + .word 0x00000000 + .word 0x00000004 + .word 0x00000000 + + start + adrp x0, inputb + ldr q0, [x0, #:lo12:inputb] + rev64 v1.16b, v0.16b + + cmtst v2.8b, v0.8b, v1.8b + addv b3, v2.8b + mov x1, v3.d[0] + cmp x1, #0x5fa + bne .Lfailure + + cmtst v2.16b, v0.16b, v1.16b + addv b3, v2.16b + mov x1, v3.d[0] + cmp x1, #0xbf4 + bne .Lfailure + + adrp x0, inputh + ldr q0, [x0, #:lo12:inputh] + rev64 v1.8h, v0.8h + + cmtst v2.4h, v0.4h, v1.4h + addv h3, v2.4h + mov x1, v3.d[0] + mov x2, #0x1fffe + cmp x1, x2 + bne .Lfailure + + cmtst v2.8h, v0.8h, v1.8h + addv h3, v2.8h + mov x1, v3.d[0] + mov x2, #0x3fffc + cmp x1, x2 + bne .Lfailure + + adrp x0, inputs + ldr q0, [x0, #:lo12:inputs] + mov v1.d[0], v0.d[1] + mov v1.d[1], v0.d[0] + rev64 v1.4s, v1.4s + + cmtst v2.2s, v0.2s, v1.2s + mov x1, v2.d[0] + mov x2, #0xffffffff00000000 + cmp x1, x2 + bne .Lfailure + + cmtst v2.4s, v0.4s, v1.4s + addv s3, v2.4s + mov x1, v3.d[0] + mov x2, #0x1fffffffe + cmp x1, x2 + bne .Lfailure + + adrp x0, inputd + ldr q0, [x0, #:lo12:inputd] + adrp x0, inputd2 + ldr q1, [x0, #:lo12:inputd2] + + cmtst v2.2d, v0.2d, v1.2d + mov x1, v2.d[0] + cmp x1, #-1 + bne .Lfailure + mov x2, v2.d[1] + cmp x2, #0 + bne .Lfailure + + pass +.Lfailure: + fail |