aboutsummaryrefslogtreecommitdiff
path: root/sim/testsuite/aarch64/xtl.s
diff options
context:
space:
mode:
Diffstat (limited to 'sim/testsuite/aarch64/xtl.s')
-rw-r--r--sim/testsuite/aarch64/xtl.s101
1 files changed, 101 insertions, 0 deletions
diff --git a/sim/testsuite/aarch64/xtl.s b/sim/testsuite/aarch64/xtl.s
new file mode 100644
index 0000000..16ef892
--- /dev/null
+++ b/sim/testsuite/aarch64/xtl.s
@@ -0,0 +1,101 @@
+#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