ARM assembly parsing and encoding for VMOV/VMVN/VORR/VBIC.i32.
[oota-llvm.git] / test / MC / ARM / neon-mov-encoding.s
1 @ RUN: llvm-mc -mcpu=cortex-a8 -triple arm-unknown-unknown -show-encoding < %s | FileCheck %s
2
3         vmov.i8         d16, #0x8
4         vmov.i16        d16, #0x10
5         vmov.i16        d16, #0x1000
6         vmov.i32        d16, #0x20
7         vmov.i32        d16, #0x2000
8         vmov.i32        d16, #0x200000
9         vmov.i32        d16, #0x20000000
10         vmov.i32        d16, #0x20FF
11         vmov.i32        d16, #0x20FFFF
12 @       vmov.i64        d16, #0xFF0000FF0000FFFF
13
14 @ CHECK: vmov.i8        d16, #0x8       @ encoding: [0x18,0x0e,0xc0,0xf2]
15 @ CHECK: vmov.i16       d16, #0x10      @ encoding: [0x10,0x08,0xc1,0xf2]
16 @ CHECK: vmov.i16       d16, #0x1000    @ encoding: [0x10,0x0a,0xc1,0xf2]
17 @ CHECK: vmov.i32       d16, #0x20      @ encoding: [0x10,0x00,0xc2,0xf2]
18 @ CHECK: vmov.i32       d16, #0x2000    @ encoding: [0x10,0x02,0xc2,0xf2]
19 @ CHECK: vmov.i32       d16, #0x200000  @ encoding: [0x10,0x04,0xc2,0xf2]
20 @ CHECK: vmov.i32       d16, #0x20000000 @ encoding: [0x10,0x06,0xc2,0xf2]
21 @ CHECK: vmov.i32       d16, #0x20FF    @ encoding: [0x10,0x0c,0xc2,0xf2]
22 @ CHECK: vmov.i32       d16, #0x20FFFF  @ encoding: [0x10,0x0d,0xc2,0xf2]
23 @ FIXME: vmov.i64 d16, #0xFF0000FF0000FFFF @ encoding: [0x33,0x0e,0xc1,0xf3]
24
25
26
27         vmov.i8         q8, #0x8
28         vmov.i16        q8, #0x10
29         vmov.i16        q8, #0x1000
30         vmov.i32        q8, #0x20
31         vmov.i32        q8, #0x2000
32         vmov.i32        q8, #0x200000
33         vmov.i32        q8, #0x20000000
34         vmov.i32        q8, #0x20FF
35         vmov.i32        q8, #0x20FFFF
36 @       vmov.i64        q8, #0xFF0000FF0000FFFF
37
38 @ CHECK: vmov.i8 q8, #0x8               @ encoding: [0x58,0x0e,0xc0,0xf2]
39 @ CHECK: vmov.i16       q8, #0x10       @ encoding: [0x50,0x08,0xc1,0xf2]
40 @ CHECK: vmov.i16       q8, #0x1000     @ encoding: [0x50,0x0a,0xc1,0xf2]
41 @ CHECK: vmov.i32       q8, #0x20       @ encoding: [0x50,0x00,0xc2,0xf2]
42 @ CHECK: vmov.i32       q8, #0x2000     @ encoding: [0x50,0x02,0xc2,0xf2]
43 @ CHECK: vmov.i32       q8, #0x200000   @ encoding: [0x50,0x04,0xc2,0xf2]
44 @ CHECK: vmov.i32       q8, #0x20000000 @ encoding: [0x50,0x06,0xc2,0xf2]
45 @ CHECK: vmov.i32       q8, #0x20FF     @ encoding: [0x50,0x0c,0xc2,0xf2]
46 @ CHECK: vmov.i32       q8, #0x20FFFF   @ encoding: [0x50,0x0d,0xc2,0xf2]
47 @ FIXME: vmov.i64 q8, #0xFF0000FF0000FFFF @ encoding: [0x73,0x0e,0xc1,0xf3]
48
49         vmvn.i16        d16, #0x10
50         vmvn.i16        d16, #0x1000
51         vmvn.i32        d16, #0x20
52         vmvn.i32        d16, #0x2000
53         vmvn.i32        d16, #0x200000
54         vmvn.i32        d16, #0x20000000
55         vmvn.i32        d16, #0x20FF
56         vmvn.i32        d16, #0x20FFFF
57
58 @ CHECK: vmvn.i16       d16, #0x10      @ encoding: [0x30,0x08,0xc1,0xf2]
59 @ CHECK: vmvn.i16       d16, #0x1000    @ encoding: [0x30,0x0a,0xc1,0xf2]
60 @ CHECK: vmvn.i32       d16, #0x20      @ encoding: [0x30,0x00,0xc2,0xf2]
61 @ CHECK: vmvn.i32       d16, #0x2000    @ encoding: [0x30,0x02,0xc2,0xf2]
62 @ CHECK: vmvn.i32       d16, #0x200000  @ encoding: [0x30,0x04,0xc2,0xf2]
63 @ CHECK: vmvn.i32       d16, #0x20000000 @ encoding: [0x30,0x06,0xc2,0xf2]
64 @ CHECK: vmvn.i32       d16, #0x20FF    @ encoding: [0x30,0x0c,0xc2,0xf2]
65 @ CHECK: vmvn.i32       d16, #0x20FFFF  @ encoding: [0x30,0x0d,0xc2,0xf2]
66
67         vmovl.s8        q8, d16
68         vmovl.s16       q8, d16
69         vmovl.s32       q8, d16
70         vmovl.u8        q8, d16
71         vmovl.u16       q8, d16
72         vmovl.u32       q8, d16
73
74 @ CHECK: vmovl.s8       q8, d16         @ encoding: [0x30,0x0a,0xc8,0xf2]
75 @ CHECK: vmovl.s16      q8, d16         @ encoding: [0x30,0x0a,0xd0,0xf2]
76 @ CHECK: vmovl.s32      q8, d16         @ encoding: [0x30,0x0a,0xe0,0xf2]
77 @ CHECK: vmovl.u8       q8, d16         @ encoding: [0x30,0x0a,0xc8,0xf3]
78 @ CHECK: vmovl.u16      q8, d16         @ encoding: [0x30,0x0a,0xd0,0xf3]
79 @ CHECK: vmovl.u32      q8, d16         @ encoding: [0x30,0x0a,0xe0,0xf3]
80
81
82         vmovn.i16       d16, q8
83         vmovn.i32       d16, q8
84         vmovn.i64       d16, q8
85         vqmovn.s16      d16, q8
86         vqmovn.s32      d16, q8
87         vqmovn.s64      d16, q8
88         vqmovn.u16      d16, q8
89         vqmovn.u32      d16, q8
90         vqmovn.u64      d16, q8
91         vqmovun.s16     d16, q8
92         vqmovun.s32     d16, q8
93         vqmovun.s64     d16, q8
94
95 @ CHECK: vmovn.i16      d16, q8         @ encoding: [0x20,0x02,0xf2,0xf3]
96 @ CHECK: vmovn.i32      d16, q8         @ encoding: [0x20,0x02,0xf6,0xf3]
97 @ CHECK: vmovn.i64      d16, q8         @ encoding: [0x20,0x02,0xfa,0xf3]
98 @ CHECK: vqmovn.s16     d16, q8         @ encoding: [0xa0,0x02,0xf2,0xf3]
99 @ CHECK: vqmovn.s32     d16, q8         @ encoding: [0xa0,0x02,0xf6,0xf3]
100 @ CHECK: vqmovn.s64     d16, q8         @ encoding: [0xa0,0x02,0xfa,0xf3]
101 @ CHECK: vqmovn.u16     d16, q8         @ encoding: [0xe0,0x02,0xf2,0xf3]
102 @ CHECK: vqmovn.u32     d16, q8         @ encoding: [0xe0,0x02,0xf6,0xf3]
103 @ CHECK: vqmovn.u64     d16, q8         @ encoding: [0xe0,0x02,0xfa,0xf3]
104 @ CHECK: vqmovun.s16    d16, q8         @ encoding: [0x60,0x02,0xf2,0xf3]
105 @ CHECK: vqmovun.s32    d16, q8         @ encoding: [0x60,0x02,0xf6,0xf3]
106 @ CHECK: vqmovun.s64    d16, q8         @ encoding: [0x60,0x02,0xfa,0xf3]
107
108 @       vmov.s8         r0, d16[1]
109 @       vmov.s16        r0, d16[1]
110 @       vmov.u8         r0, d16[1]
111 @       vmov.u16        r0, d16[1]
112 @       vmov.32         r0, d16[1]
113 @       vmov.8  d16[1], r1
114 @       vmov.16 d16[1], r1
115 @       vmov.32 d16[1], r1
116 @       vmov.8  d18[1], r1
117 @       vmov.16 d18[1], r1
118 @       vmov.32 d18[1], r1
119
120 @ FIXME: vmov.s8        r0, d16[1]      @ encoding: [0xb0,0x0b,0x50,0xee]
121 @ FIXME: vmov.s16       r0, d16[1]      @ encoding: [0xf0,0x0b,0x10,0xee]
122 @ FIXME: vmov.u8        r0, d16[1]      @ encoding: [0xb0,0x0b,0xd0,0xee]
123 @ FIXME: vmov.u16       r0, d16[1]      @ encoding: [0xf0,0x0b,0x90,0xee]
124 @ FIXME: vmov.32        r0, d16[1]      @ encoding: [0x90,0x0b,0x30,0xee]
125 @ FIXME: vmov.8 d16[1], r1              @ encoding: [0xb0,0x1b,0x40,0xee]
126 @ FIXME: vmov.16        d16[1], r1      @ encoding: [0xf0,0x1b,0x00,0xee]
127 @ FIXME: vmov.32        d16[1], r1      @ encoding: [0x90,0x1b,0x20,0xee]
128 @ FIXME: vmov.8 d18[1], r1              @ encoding: [0xb0,0x1b,0x42,0xee]
129 @ FIXME: vmov.16        d18[1], r1      @ encoding: [0xf0,0x1b,0x02,0xee]
130 @ FIXME: vmov.32        d18[1], r1      @ encoding: [0x90,0x1b,0x22,0xee]