ARM two-operand aliases for VADDW instructions.
[oota-llvm.git] / test / MC / ARM / neon-add-encoding.s
1 @ RUN: llvm-mc -mcpu=cortex-a8 -triple armv7-apple-darwin -show-encoding < %s | FileCheck %s
2
3
4 @ CHECK: vadd.i8        d16, d17, d16           @ encoding: [0xa0,0x08,0x41,0xf2]
5         vadd.i8 d16, d17, d16
6 @ CHECK: vadd.i16       d16, d17, d16   @ encoding: [0xa0,0x08,0x51,0xf2]
7         vadd.i16        d16, d17, d16
8 @ CHECK: vadd.i64       d16, d17, d16   @ encoding: [0xa0,0x08,0x71,0xf2]
9         vadd.i64        d16, d17, d16
10 @ CHECK: vadd.i32       d16, d17, d16   @ encoding: [0xa0,0x08,0x61,0xf2]
11         vadd.i32        d16, d17, d16
12 @ CHECK: vadd.f32       d16, d16, d17   @ encoding: [0xa1,0x0d,0x40,0xf2]
13         vadd.f32        d16, d16, d17
14 @ CHECK: vadd.f32       q8, q8, q9      @ encoding: [0xe2,0x0d,0x40,0xf2]
15         vadd.f32        q8, q8, q9
16
17 @ CHECK: vaddl.s8       q8, d17, d16    @ encoding: [0xa0,0x00,0xc1,0xf2]
18         vaddl.s8        q8, d17, d16
19 @ CHECK: vaddl.s16      q8, d17, d16    @ encoding: [0xa0,0x00,0xd1,0xf2]
20         vaddl.s16       q8, d17, d16
21 @ CHECK: vaddl.s32      q8, d17, d16    @ encoding: [0xa0,0x00,0xe1,0xf2]
22         vaddl.s32       q8, d17, d16
23 @ CHECK: vaddl.u8       q8, d17, d16    @ encoding: [0xa0,0x00,0xc1,0xf3]
24         vaddl.u8        q8, d17, d16
25 @ CHECK: vaddl.u16      q8, d17, d16    @ encoding: [0xa0,0x00,0xd1,0xf3]
26         vaddl.u16       q8, d17, d16
27 @ CHECK: vaddl.u32      q8, d17, d16    @ encoding: [0xa0,0x00,0xe1,0xf3]
28         vaddl.u32       q8, d17, d16
29
30 @ CHECK: vaddw.s8       q8, q8, d18     @ encoding: [0xa2,0x01,0xc0,0xf2]
31         vaddw.s8        q8, q8, d18
32 @ CHECK: vaddw.s16      q8, q8, d18     @ encoding: [0xa2,0x01,0xd0,0xf2]
33         vaddw.s16       q8, q8, d18
34 @ CHECK: vaddw.s32      q8, q8, d18     @ encoding: [0xa2,0x01,0xe0,0xf2]
35         vaddw.s32       q8, q8, d18
36 @ CHECK: vaddw.u8       q8, q8, d18     @ encoding: [0xa2,0x01,0xc0,0xf3]
37         vaddw.u8        q8, q8, d18
38 @ CHECK: vaddw.u16      q8, q8, d18     @ encoding: [0xa2,0x01,0xd0,0xf3]
39         vaddw.u16       q8, q8, d18
40 @ CHECK: vaddw.u32      q8, q8, d18     @ encoding: [0xa2,0x01,0xe0,0xf3]
41         vaddw.u32       q8, q8, d18
42
43 @ CHECK: vhadd.s8       d16, d16, d17   @ encoding: [0xa1,0x00,0x40,0xf2]
44         vhadd.s8        d16, d16, d17
45 @ CHECK: vhadd.s16      d16, d16, d17   @ encoding: [0xa1,0x00,0x50,0xf2]
46         vhadd.s16       d16, d16, d17
47 @ CHECK: vhadd.s32      d16, d16, d17   @ encoding: [0xa1,0x00,0x60,0xf2]
48         vhadd.s32       d16, d16, d17
49 @ CHECK: vhadd.u8       d16, d16, d17   @ encoding: [0xa1,0x00,0x40,0xf3]
50         vhadd.u8        d16, d16, d17
51 @ CHECK: vhadd.u16      d16, d16, d17   @ encoding: [0xa1,0x00,0x50,0xf3]
52         vhadd.u16       d16, d16, d17
53 @ CHECK: vhadd.u32      d16, d16, d17   @ encoding: [0xa1,0x00,0x60,0xf3]
54         vhadd.u32       d16, d16, d17
55 @ CHECK: vhadd.s8       q8, q8, q9      @ encoding: [0xe2,0x00,0x40,0xf2]
56         vhadd.s8        q8, q8, q9
57 @ CHECK: vhadd.s16      q8, q8, q9      @ encoding: [0xe2,0x00,0x50,0xf2]
58         vhadd.s16       q8, q8, q9
59 @ CHECK: vhadd.s32      q8, q8, q9      @ encoding: [0xe2,0x00,0x60,0xf2]
60         vhadd.s32       q8, q8, q9
61   @ CHECK: vhadd.u8     q8, q8, q9      @ encoding: [0xe2,0x00,0x40,0xf3]
62         vhadd.u8        q8, q8, q9
63 @ CHECK: vhadd.u16      q8, q8, q9      @ encoding: [0xe2,0x00,0x50,0xf3]
64         vhadd.u16       q8, q8, q9
65 @ CHECK: vhadd.u32      q8, q8, q9      @ encoding: [0xe2,0x00,0x60,0xf3]
66         vhadd.u32       q8, q8, q9
67         
68 @ CHECK: vrhadd.s8      d16, d16, d17   @ encoding: [0xa1,0x01,0x40,0xf2]
69         vrhadd.s8       d16, d16, d17
70 @ CHECK: vrhadd.s16     d16, d16, d17   @ encoding: [0xa1,0x01,0x50,0xf2]
71         vrhadd.s16      d16, d16, d17
72 @ CHECK: vrhadd.s32     d16, d16, d17   @ encoding: [0xa1,0x01,0x60,0xf2]
73         vrhadd.s32      d16, d16, d17
74 @ CHECK: vrhadd.u8      d16, d16, d17   @ encoding: [0xa1,0x01,0x40,0xf3]
75         vrhadd.u8       d16, d16, d17
76 @ CHECK: vrhadd.u16     d16, d16, d17   @ encoding: [0xa1,0x01,0x50,0xf3]
77         vrhadd.u16      d16, d16, d17
78 @ CHECK: vrhadd.u32     d16, d16, d17   @ encoding: [0xa1,0x01,0x60,0xf3]
79         vrhadd.u32      d16, d16, d17
80 @ CHECK: vrhadd.s8      q8, q8, q9      @ encoding: [0xe2,0x01,0x40,0xf2]
81         vrhadd.s8       q8, q8, q9
82 @ CHECK: vrhadd.s16     q8, q8, q9      @ encoding: [0xe2,0x01,0x50,0xf2]
83         vrhadd.s16      q8, q8, q9
84 @ CHECK: vrhadd.s32     q8, q8, q9      @ encoding: [0xe2,0x01,0x60,0xf2]
85         vrhadd.s32      q8, q8, q9
86 @ CHECK: vrhadd.u8      q8, q8, q9      @ encoding: [0xe2,0x01,0x40,0xf3]
87         vrhadd.u8       q8, q8, q9
88 @ CHECK: vrhadd.u16     q8, q8, q9      @ encoding: [0xe2,0x01,0x50,0xf3]
89         vrhadd.u16      q8, q8, q9
90 @ CHECK: vrhadd.u32     q8, q8, q9      @ encoding: [0xe2,0x01,0x60,0xf3]
91         vrhadd.u32      q8, q8, q9
92
93 @ CHECK: vqadd.s8       d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf2]
94         vqadd.s8        d16, d16, d17
95 @ CHECK: vqadd.s16      d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf2]
96         vqadd.s16       d16, d16, d17
97 @ CHECK: vqadd.s32      d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf2]
98         vqadd.s32       d16, d16, d17
99 @ CHECK: vqadd.s64      d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf2]
100         vqadd.s64       d16, d16, d17
101 @ CHECK: vqadd.u8       d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf3]
102         vqadd.u8        d16, d16, d17
103 @ CHECK: vqadd.u16      d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf3]
104         vqadd.u16       d16, d16, d17
105 @ CHECK: vqadd.u32      d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf3]
106         vqadd.u32       d16, d16, d17
107 @ CHECK: vqadd.u64      d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf3]
108         vqadd.u64       d16, d16, d17
109 @ CHECK: vqadd.s8       q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf2]
110         vqadd.s8        q8, q8, q9
111 @ CHECK: vqadd.s16      q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf2]
112         vqadd.s16       q8, q8, q9
113 @ CHECK: vqadd.s32      q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf2]
114         vqadd.s32       q8, q8, q9
115 @ CHECK: vqadd.s64      q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf2]
116         vqadd.s64       q8, q8, q9
117 @ CHECK: vqadd.u8       q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf3]
118         vqadd.u8        q8, q8, q9
119 @ CHECK: vqadd.u16      q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf3]
120         vqadd.u16       q8, q8, q9
121 @ CHECK: vqadd.u32      q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf3]
122         vqadd.u32       q8, q8, q9
123 @ CHECK: vqadd.u64      q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf3]
124         vqadd.u64       q8, q8, q9
125
126 @ CHECK: vaddhn.i16     d16, q8, q9     @ encoding: [0xa2,0x04,0xc0,0xf2]
127         vaddhn.i16      d16, q8, q9
128 @ CHECK: vaddhn.i32     d16, q8, q9     @ encoding: [0xa2,0x04,0xd0,0xf2]
129         vaddhn.i32      d16, q8, q9
130 @ CHECK: vaddhn.i64     d16, q8, q9     @ encoding: [0xa2,0x04,0xe0,0xf2]
131         vaddhn.i64      d16, q8, q9
132 @ CHECK: vraddhn.i16    d16, q8, q9     @ encoding: [0xa2,0x04,0xc0,0xf3]
133         vraddhn.i16     d16, q8, q9
134 @ CHECK: vraddhn.i32    d16, q8, q9     @ encoding: [0xa2,0x04,0xd0,0xf3]
135         vraddhn.i32     d16, q8, q9
136 @ CHECK: vraddhn.i64    d16, q8, q9     @ encoding: [0xa2,0x04,0xe0,0xf3]
137         vraddhn.i64     d16, q8, q9
138
139
140 @ Two-operand variants
141
142         vadd.i8  d6, d5
143         vadd.i16 d7, d1
144         vadd.i32 d8, d2
145         vadd.i64 d9, d3
146
147         vadd.i8  q6, q5
148         vadd.i16 q7, q1
149         vadd.i32 q8, q2
150         vadd.i64 q9, q3
151
152 @ CHECK: vadd.i8        d6, d6, d5      @ encoding: [0x05,0x68,0x06,0xf2]
153 @ CHECK: vadd.i16       d7, d7, d1      @ encoding: [0x01,0x78,0x17,0xf2]
154 @ CHECK: vadd.i32       d8, d8, d2      @ encoding: [0x02,0x88,0x28,0xf2]
155 @ CHECK: vadd.i64       d9, d9, d3      @ encoding: [0x03,0x98,0x39,0xf2]
156
157 @ CHECK: vadd.i8        q6, q6, q5      @ encoding: [0x4a,0xc8,0x0c,0xf2]
158 @ CHECK: vadd.i16       q7, q7, q1      @ encoding: [0x42,0xe8,0x1e,0xf2]
159 @ CHECK: vadd.i32       q8, q8, q2      @ encoding: [0xc4,0x08,0x60,0xf2]
160 @ CHECK: vadd.i64       q9, q9, q3      @ encoding: [0xc6,0x28,0x72,0xf2]
161
162
163         vaddw.s8  q6, d5
164         vaddw.s16 q7, d1
165         vaddw.s32 q8, d2
166
167         vaddw.u8  q6, d5
168         vaddw.u16 q7, d1
169         vaddw.u32 q8, d2
170
171 @ CHECK: vaddw.s8       q6, q6, d5      @ encoding: [0x05,0xc1,0x8c,0xf2]
172 @ CHECK: vaddw.s16      q7, q7, d1      @ encoding: [0x01,0xe1,0x9e,0xf2]
173 @ CHECK: vaddw.s32      q8, q8, d2      @ encoding: [0x82,0x01,0xe0,0xf2]
174
175 @ CHECK: vaddw.u8       q6, q6, d5      @ encoding: [0x05,0xc1,0x8c,0xf3]
176 @ CHECK: vaddw.u16      q7, q7, d1      @ encoding: [0x01,0xe1,0x9e,0xf3]
177 @ CHECK: vaddw.u32      q8, q8, d2      @ encoding: [0x82,0x01,0xe0,0xf3]