#mach: aarch64 # Check the extend long instructions: sxtl, sxtl2, uxtl, uxtl2. .include "testutils.inc" .data .align 4 input: .word 0x04030201 .word 0x08070605 .word 0xfcfdfeff .word 0xf8f9fafb start adrp x0, input ldr q0, [x0, #:lo12:input] uxtl v1.8h, v0.8b uxtl2 v2.8h, v0.16b addv h3, v1.8h addv h4, v2.8h mov x1, v3.d[0] mov x2, v4.d[0] cmp x1, #36 bne .Lfailure cmp x2, #2012 bne .Lfailure uxtl v1.4s, v0.4h uxtl2 v2.4s, v0.8h addv s3, v1.4s addv s4, v2.4s mov x1, v3.d[0] mov x2, v4.d[0] mov x3, #5136 cmp x1, x3 bne .Lfailure mov x4, #0xeff0 movk x4, 0x3, lsl #16 cmp x2, x4 bne .Lfailure uxtl v1.2d, v0.2s uxtl2 v2.2d, v0.4s addv s3, v1.4s addv s4, v2.4s mov x1, v3.d[0] mov x2, v4.d[0] mov x3, #0x0806 movk x3, #0x0c0a, lsl #16 cmp x1, x3 bne .Lfailure mov x4, #0xf9fa movk x4, #0xf5f7, lsl #16 cmp x2, x4 bne .Lfailure sxtl v1.8h, v0.8b sxtl2 v2.8h, v0.16b addv h3, v1.8h addv h4, v2.8h mov x1, v3.d[0] mov x2, v4.d[0] cmp x1, #36 bne .Lfailure mov x3, #0xffdc cmp x2, x3 bne .Lfailure sxtl v1.4s, v0.4h sxtl2 v2.4s, v0.8h addv s3, v1.4s addv s4, v2.4s mov x1, v3.d[0] mov x2, v4.d[0] mov x3, #5136 cmp x1, x3 bne .Lfailure mov x4, #0xeff0 movk x4, 0xffff, lsl #16 bne .Lfailure sxtl v1.2d, v0.2s sxtl2 v2.2d, v0.4s addv s3, v1.4s addv s4, v2.4s mov x1, v3.d[0] mov x2, v4.d[0] mov x3, #0x0806 movk x3, #0x0c0a, lsl #16 cmp x1, x3 bne .Lfailure mov x4, #0xf9f8 movk x4, #0xf5f7, lsl #16 cmp x2, x4 bne .Lfailure pass .Lfailure: fail