diff options
Diffstat (limited to 'sim/testsuite/aarch64/xtl.s')
-rw-r--r-- | sim/testsuite/aarch64/xtl.s | 101 |
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 |