ARM64: initial backend import
[oota-llvm.git] / test / MC / ARM64 / logical-encoding.s
1 ; RUN: llvm-mc -triple arm64-apple-darwin -show-encoding < %s | FileCheck %s
2
3 foo:
4 ;==---------------------------------------------------------------------------==
5 ; 5.4.2 Logical (immediate)
6 ;==---------------------------------------------------------------------------==
7
8   and   w0, w0, #1
9   and   x0, x0, #1
10   and   w1, w2, #15
11   and   x1, x2, #15
12   and   sp, x5, #~15
13   ands  w0, w0, #1
14   ands  x0, x0, #1
15   ands  w1, w2, #15
16   ands  x1, x2, #15
17
18 ; CHECK: and  w0, w0, #0x1           ; encoding: [0x00,0x00,0x00,0x12]
19 ; CHECK: and  x0, x0, #0x1           ; encoding: [0x00,0x00,0x40,0x92]
20 ; CHECK: and  w1, w2, #0xf           ; encoding: [0x41,0x0c,0x00,0x12]
21 ; CHECK: and  x1, x2, #0xf           ; encoding: [0x41,0x0c,0x40,0x92]
22 ; CHECK: and  sp, x5, #0xfffffffffffffff0 ; encoding: [0xbf,0xec,0x7c,0x92]
23 ; CHECK: ands w0, w0, #0x1           ; encoding: [0x00,0x00,0x00,0x72]
24 ; CHECK: ands x0, x0, #0x1           ; encoding: [0x00,0x00,0x40,0xf2]
25 ; CHECK: ands w1, w2, #0xf           ; encoding: [0x41,0x0c,0x00,0x72]
26 ; CHECK: ands x1, x2, #0xf           ; encoding: [0x41,0x0c,0x40,0xf2]
27
28   eor w1, w2, #0x4000
29   eor x1, x2, #0x8000
30
31 ; CHECK: eor w1, w2, #0x4000         ; encoding: [0x41,0x00,0x12,0x52]
32 ; CHECK: eor x1, x2, #0x8000         ; encoding: [0x41,0x00,0x71,0xd2]
33
34   orr w1, w2, #0x4000
35   orr x1, x2, #0x8000
36
37 ; CHECK: orr w1, w2, #0x4000         ; encoding: [0x41,0x00,0x12,0x32]
38 ; CHECK: orr x1, x2, #0x8000         ; encoding: [0x41,0x00,0x71,0xb2]
39
40   orr w8, wzr, #0x1
41   orr x8, xzr, #0x1
42
43 ; CHECK: orr w8, wzr, #0x1           ; encoding: [0xe8,0x03,0x00,0x32]
44 ; CHECK: orr x8, xzr, #0x1           ; encoding: [0xe8,0x03,0x40,0xb2]
45
46 ;==---------------------------------------------------------------------------==
47 ; 5.5.3 Logical (shifted register)
48 ;==---------------------------------------------------------------------------==
49
50   and   w1, w2, w3
51   and   x1, x2, x3
52   and   w1, w2, w3, lsl #2
53   and   x1, x2, x3, lsl #2
54   and   w1, w2, w3, lsr #2
55   and   x1, x2, x3, lsr #2
56   and   w1, w2, w3, asr #2
57   and   x1, x2, x3, asr #2
58   and   w1, w2, w3, ror #2
59   and   x1, x2, x3, ror #2
60
61 ; CHECK: and  w1, w2, w3             ; encoding: [0x41,0x00,0x03,0x0a]
62 ; CHECK: and  x1, x2, x3             ; encoding: [0x41,0x00,0x03,0x8a]
63 ; CHECK: and  w1, w2, w3, lsl #2     ; encoding: [0x41,0x08,0x03,0x0a]
64 ; CHECK: and  x1, x2, x3, lsl #2     ; encoding: [0x41,0x08,0x03,0x8a]
65 ; CHECK: and  w1, w2, w3, lsr #2     ; encoding: [0x41,0x08,0x43,0x0a]
66 ; CHECK: and  x1, x2, x3, lsr #2     ; encoding: [0x41,0x08,0x43,0x8a]
67 ; CHECK: and  w1, w2, w3, asr #2     ; encoding: [0x41,0x08,0x83,0x0a]
68 ; CHECK: and  x1, x2, x3, asr #2     ; encoding: [0x41,0x08,0x83,0x8a]
69 ; CHECK: and  w1, w2, w3, ror #2     ; encoding: [0x41,0x08,0xc3,0x0a]
70 ; CHECK: and  x1, x2, x3, ror #2     ; encoding: [0x41,0x08,0xc3,0x8a]
71
72   ands  w1, w2, w3
73   ands  x1, x2, x3
74   ands  w1, w2, w3, lsl #2
75   ands  x1, x2, x3, lsl #2
76   ands  w1, w2, w3, lsr #2
77   ands  x1, x2, x3, lsr #2
78   ands  w1, w2, w3, asr #2
79   ands  x1, x2, x3, asr #2
80   ands  w1, w2, w3, ror #2
81   ands  x1, x2, x3, ror #2
82
83 ; CHECK: ands w1, w2, w3             ; encoding: [0x41,0x00,0x03,0x6a]
84 ; CHECK: ands x1, x2, x3             ; encoding: [0x41,0x00,0x03,0xea]
85 ; CHECK: ands w1, w2, w3, lsl #2     ; encoding: [0x41,0x08,0x03,0x6a]
86 ; CHECK: ands x1, x2, x3, lsl #2     ; encoding: [0x41,0x08,0x03,0xea]
87 ; CHECK: ands w1, w2, w3, lsr #2     ; encoding: [0x41,0x08,0x43,0x6a]
88 ; CHECK: ands x1, x2, x3, lsr #2     ; encoding: [0x41,0x08,0x43,0xea]
89 ; CHECK: ands w1, w2, w3, asr #2     ; encoding: [0x41,0x08,0x83,0x6a]
90 ; CHECK: ands x1, x2, x3, asr #2     ; encoding: [0x41,0x08,0x83,0xea]
91 ; CHECK: ands w1, w2, w3, ror #2     ; encoding: [0x41,0x08,0xc3,0x6a]
92 ; CHECK: ands x1, x2, x3, ror #2     ; encoding: [0x41,0x08,0xc3,0xea]
93
94   bic w1, w2, w3
95   bic x1, x2, x3
96   bic w1, w2, w3, lsl #3
97   bic x1, x2, x3, lsl #3
98   bic w1, w2, w3, lsr #3
99   bic x1, x2, x3, lsr #3
100   bic w1, w2, w3, asr #3
101   bic x1, x2, x3, asr #3
102   bic w1, w2, w3, ror #3
103   bic x1, x2, x3, ror #3
104
105 ; CHECK: bic w1, w2, w3              ; encoding: [0x41,0x00,0x23,0x0a]
106 ; CHECK: bic x1, x2, x3              ; encoding: [0x41,0x00,0x23,0x8a]
107 ; CHECK: bic w1, w2, w3, lsl #3      ; encoding: [0x41,0x0c,0x23,0x0a]
108 ; CHECK: bic x1, x2, x3, lsl #3      ; encoding: [0x41,0x0c,0x23,0x8a]
109 ; CHECK: bic w1, w2, w3, lsr #3      ; encoding: [0x41,0x0c,0x63,0x0a]
110 ; CHECK: bic x1, x2, x3, lsr #3      ; encoding: [0x41,0x0c,0x63,0x8a]
111 ; CHECK: bic w1, w2, w3, asr #3      ; encoding: [0x41,0x0c,0xa3,0x0a]
112 ; CHECK: bic x1, x2, x3, asr #3      ; encoding: [0x41,0x0c,0xa3,0x8a]
113 ; CHECK: bic w1, w2, w3, ror #3      ; encoding: [0x41,0x0c,0xe3,0x0a]
114 ; CHECK: bic x1, x2, x3, ror #3      ; encoding: [0x41,0x0c,0xe3,0x8a]
115
116   bics w1, w2, w3
117   bics x1, x2, x3
118   bics w1, w2, w3, lsl #3
119   bics x1, x2, x3, lsl #3
120   bics w1, w2, w3, lsr #3
121   bics x1, x2, x3, lsr #3
122   bics w1, w2, w3, asr #3
123   bics x1, x2, x3, asr #3
124   bics w1, w2, w3, ror #3
125   bics x1, x2, x3, ror #3
126
127 ; CHECK: bics w1, w2, w3             ; encoding: [0x41,0x00,0x23,0x6a]
128 ; CHECK: bics x1, x2, x3             ; encoding: [0x41,0x00,0x23,0xea]
129 ; CHECK: bics w1, w2, w3, lsl #3     ; encoding: [0x41,0x0c,0x23,0x6a]
130 ; CHECK: bics x1, x2, x3, lsl #3     ; encoding: [0x41,0x0c,0x23,0xea]
131 ; CHECK: bics w1, w2, w3, lsr #3     ; encoding: [0x41,0x0c,0x63,0x6a]
132 ; CHECK: bics x1, x2, x3, lsr #3     ; encoding: [0x41,0x0c,0x63,0xea]
133 ; CHECK: bics w1, w2, w3, asr #3     ; encoding: [0x41,0x0c,0xa3,0x6a]
134 ; CHECK: bics x1, x2, x3, asr #3     ; encoding: [0x41,0x0c,0xa3,0xea]
135 ; CHECK: bics w1, w2, w3, ror #3     ; encoding: [0x41,0x0c,0xe3,0x6a]
136 ; CHECK: bics x1, x2, x3, ror #3     ; encoding: [0x41,0x0c,0xe3,0xea]
137
138   eon w1, w2, w3
139   eon x1, x2, x3
140   eon w1, w2, w3, lsl #4
141   eon x1, x2, x3, lsl #4
142   eon w1, w2, w3, lsr #4
143   eon x1, x2, x3, lsr #4
144   eon w1, w2, w3, asr #4
145   eon x1, x2, x3, asr #4
146   eon w1, w2, w3, ror #4
147   eon x1, x2, x3, ror #4
148
149 ; CHECK: eon w1, w2, w3              ; encoding: [0x41,0x00,0x23,0x4a]
150 ; CHECK: eon x1, x2, x3              ; encoding: [0x41,0x00,0x23,0xca]
151 ; CHECK: eon w1, w2, w3, lsl #4      ; encoding: [0x41,0x10,0x23,0x4a]
152 ; CHECK: eon x1, x2, x3, lsl #4      ; encoding: [0x41,0x10,0x23,0xca]
153 ; CHECK: eon w1, w2, w3, lsr #4      ; encoding: [0x41,0x10,0x63,0x4a]
154 ; CHECK: eon x1, x2, x3, lsr #4      ; encoding: [0x41,0x10,0x63,0xca]
155 ; CHECK: eon w1, w2, w3, asr #4      ; encoding: [0x41,0x10,0xa3,0x4a]
156 ; CHECK: eon x1, x2, x3, asr #4      ; encoding: [0x41,0x10,0xa3,0xca]
157 ; CHECK: eon w1, w2, w3, ror #4      ; encoding: [0x41,0x10,0xe3,0x4a]
158 ; CHECK: eon x1, x2, x3, ror #4      ; encoding: [0x41,0x10,0xe3,0xca]
159
160   eor w1, w2, w3
161   eor x1, x2, x3
162   eor w1, w2, w3, lsl #5
163   eor x1, x2, x3, lsl #5
164   eor w1, w2, w3, lsr #5
165   eor x1, x2, x3, lsr #5
166   eor w1, w2, w3, asr #5
167   eor x1, x2, x3, asr #5
168   eor w1, w2, w3, ror #5
169   eor x1, x2, x3, ror #5
170
171 ; CHECK: eor w1, w2, w3              ; encoding: [0x41,0x00,0x03,0x4a]
172 ; CHECK: eor x1, x2, x3              ; encoding: [0x41,0x00,0x03,0xca]
173 ; CHECK: eor w1, w2, w3, lsl #5      ; encoding: [0x41,0x14,0x03,0x4a]
174 ; CHECK: eor x1, x2, x3, lsl #5      ; encoding: [0x41,0x14,0x03,0xca]
175 ; CHECK: eor w1, w2, w3, lsr #5      ; encoding: [0x41,0x14,0x43,0x4a]
176 ; CHECK: eor x1, x2, x3, lsr #5      ; encoding: [0x41,0x14,0x43,0xca]
177 ; CHECK: eor w1, w2, w3, asr #5      ; encoding: [0x41,0x14,0x83,0x4a]
178 ; CHECK: eor x1, x2, x3, asr #5      ; encoding: [0x41,0x14,0x83,0xca]
179 ; CHECK: eor w1, w2, w3, ror #5      ; encoding: [0x41,0x14,0xc3,0x4a]
180 ; CHECK: eor x1, x2, x3, ror #5      ; encoding: [0x41,0x14,0xc3,0xca]
181
182   orr w1, w2, w3
183   orr x1, x2, x3
184   orr w1, w2, w3, lsl #6
185   orr x1, x2, x3, lsl #6
186   orr w1, w2, w3, lsr #6
187   orr x1, x2, x3, lsr #6
188   orr w1, w2, w3, asr #6
189   orr x1, x2, x3, asr #6
190   orr w1, w2, w3, ror #6
191   orr x1, x2, x3, ror #6
192
193 ; CHECK: orr w1, w2, w3              ; encoding: [0x41,0x00,0x03,0x2a]
194 ; CHECK: orr x1, x2, x3              ; encoding: [0x41,0x00,0x03,0xaa]
195 ; CHECK: orr w1, w2, w3, lsl #6      ; encoding: [0x41,0x18,0x03,0x2a]
196 ; CHECK: orr x1, x2, x3, lsl #6      ; encoding: [0x41,0x18,0x03,0xaa]
197 ; CHECK: orr w1, w2, w3, lsr #6      ; encoding: [0x41,0x18,0x43,0x2a]
198 ; CHECK: orr x1, x2, x3, lsr #6      ; encoding: [0x41,0x18,0x43,0xaa]
199 ; CHECK: orr w1, w2, w3, asr #6      ; encoding: [0x41,0x18,0x83,0x2a]
200 ; CHECK: orr x1, x2, x3, asr #6      ; encoding: [0x41,0x18,0x83,0xaa]
201 ; CHECK: orr w1, w2, w3, ror #6      ; encoding: [0x41,0x18,0xc3,0x2a]
202 ; CHECK: orr x1, x2, x3, ror #6      ; encoding: [0x41,0x18,0xc3,0xaa]
203
204   orn w1, w2, w3
205   orn x1, x2, x3
206   orn w1, w2, w3, lsl #7
207   orn x1, x2, x3, lsl #7
208   orn w1, w2, w3, lsr #7
209   orn x1, x2, x3, lsr #7
210   orn w1, w2, w3, asr #7
211   orn x1, x2, x3, asr #7
212   orn w1, w2, w3, ror #7
213   orn x1, x2, x3, ror #7
214
215 ; CHECK: orn w1, w2, w3              ; encoding: [0x41,0x00,0x23,0x2a]
216 ; CHECK: orn x1, x2, x3              ; encoding: [0x41,0x00,0x23,0xaa]
217 ; CHECK: orn w1, w2, w3, lsl #7      ; encoding: [0x41,0x1c,0x23,0x2a]
218 ; CHECK: orn x1, x2, x3, lsl #7      ; encoding: [0x41,0x1c,0x23,0xaa]
219 ; CHECK: orn w1, w2, w3, lsr #7      ; encoding: [0x41,0x1c,0x63,0x2a]
220 ; CHECK: orn x1, x2, x3, lsr #7      ; encoding: [0x41,0x1c,0x63,0xaa]
221 ; CHECK: orn w1, w2, w3, asr #7      ; encoding: [0x41,0x1c,0xa3,0x2a]
222 ; CHECK: orn x1, x2, x3, asr #7      ; encoding: [0x41,0x1c,0xa3,0xaa]
223 ; CHECK: orn w1, w2, w3, ror #7      ; encoding: [0x41,0x1c,0xe3,0x2a]
224 ; CHECK: orn x1, x2, x3, ror #7      ; encoding: [0x41,0x1c,0xe3,0xaa]