101 lines
1.5 KiB
ArmAsm
101 lines
1.5 KiB
ArmAsm
#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
|