# 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, #0xfa bne .Lfailure cmtst v2.16b, v0.16b, v1.16b addv b3, v2.16b mov x1, v3.d[0] cmp x1, #0xf4 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, #0xfffe cmp x1, x2 bne .Lfailure cmtst v2.8h, v0.8h, v1.8h addv h3, v2.8h mov x1, v3.d[0] mov x2, #0xfffc 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, #0xfffffffe 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