69021cb3b10d308116a1302545f9d3ee12f471bd
[external/binutils.git] / sim / testsuite / sim / aarch64 / sumov.s
1 # mach: aarch64
2
3 # Check the mov from asimd to general reg instructions: smov, umov.
4
5 .include "testutils.inc"
6
7         .data
8         .align 4
9 input:
10         .word 0x04030201
11         .word 0x08070605
12         .word 0xf4f3f2f1
13         .word 0xf8f7f6f5
14
15         start
16         adrp x0, input
17         ldr q0, [x0, #:lo12:input]
18
19         smov w0, v0.b[0]
20         smov w3, v0.b[12]
21         cmp w0, #1
22         bne .Lfailure
23         cmp w3, #-11
24         bne .Lfailure
25
26         smov x0, v0.b[1]
27         smov x3, v0.b[13]
28         cmp x0, #2
29         bne .Lfailure
30         cmp x3, #-10
31         bne .Lfailure
32
33         smov w0, v0.h[0]
34         smov w1, v0.h[4]
35         cmp w0, #0x0201
36         bne .Lfailure
37         cmp w1, #-2315
38         bne .Lfailure
39
40         smov x0, v0.h[1]
41         smov x1, v0.h[5]
42         cmp x0, #0x0403
43         bne .Lfailure
44         cmp x1, #-2829
45         bne .Lfailure
46
47         smov x0, v0.s[1]
48         smov x1, v0.s[3]
49         mov x2, #0x0605
50         movk x2, #0x0807, lsl #16
51         cmp x0, x2
52         bne .Lfailure
53         mov x3, #0xf6f5
54         movk x3, #0xf8f7, lsl #16
55         cmp x1, x3
56         bne .Lfailure
57
58         umov w0, v0.b[0]
59         umov w3, v0.b[12]
60         cmp w0, #1
61         bne .Lfailure
62         cmp w3, #0xf5
63         bne .Lfailure
64
65         umov w0, v0.h[0]
66         umov w1, v0.h[4]
67         cmp w0, #0201
68         bne .Lfailure
69         cmp w1, #0xf2f1
70         bne .Lfailure
71
72         umov w0, v0.s[0]
73         umov w1, v0.s[2]
74         mov w2, #0x0201
75         movk w2, #0x0403, lsl #16
76         cmp w0, w2
77         bne .Lfailure
78         mov w3, #0xf2f1
79         movk w3, #0xf4f3, lsl #16
80         cmp w1, w3
81         bne .Lfailure
82
83         umov x0, v0.d[0]
84         adrp x1, input
85         ldr x2, [x1, #:lo12:input]
86         cmp x0, x2
87         bne .Lfailure
88
89         pass
90 .Lfailure:
91         fail