Create Makefile variables for 'share' and 'libexec'
[oota-llvm.git] / test / MC / ARM / basic-arm-instructions-v8.1a.s
1 //RUN: not llvm-mc -triple thumb-none-linux-gnu -mattr=+v8.1a -mattr=neon -show-encoding < %s 2>%t | FileCheck %s --check-prefix=CHECK-V81aTHUMB
2 //RUN: FileCheck --check-prefix=CHECK-ERROR <%t %s
3 //RUN: not llvm-mc -triple arm-none-linux-gnu -mattr=+v8.1a -mattr=neon -show-encoding < %s 2>%t | FileCheck %s --check-prefix=CHECK-V81aARM
4 //RUN: FileCheck --check-prefix=CHECK-ERROR <%t %s
5
6 //RUN: not llvm-mc -triple thumb-none-linux-gnu -mattr=+v8 -mattr=neon -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=CHECK-V8
7 //RUN: not llvm-mc -triple arm-none-linux-gnu -mattr=+v8 -mattr=neon -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=CHECK-V8
8
9
10   .text
11 //CHECK-V8THUMB: .text
12
13   vqrdmlah.i8   q0, q1, q2
14   vqrdmlah.u16  d0, d1, d2
15   vqrdmlsh.f32  q3, q4, q5
16   vqrdmlsh.f64  d3, d5, d5
17
18 //CHECK-ERROR: error: invalid operand for instruction
19 //CHECK-ERROR:   vqrdmlah.i8   q0, q1, q2
20 //CHECK-ERROR:           ^
21 //CHECK-ERROR: error: invalid operand for instruction
22 //CHECK-ERROR:   vqrdmlah.u16  d0, d1, d2
23 //CHECK-ERROR:           ^
24 //CHECK-ERROR: error: invalid operand for instruction
25 //CHECK-ERROR:   vqrdmlsh.f32  q3, q4, q5
26 //CHECK-ERROR:           ^
27 //CHECK-ERROR: error: invalid operand for instruction
28 //CHECK-ERROR:   vqrdmlsh.f64  d3, d5, d5
29 //CHECK-ERROR:           ^
30 //CHECK-V8: error: invalid operand for instruction
31 //CHECK-V8:   vqrdmlah.i8   q0, q1, q2
32 //CHECK-V8:           ^
33 //CHECK-V8: error: invalid operand for instruction
34 //CHECK-V8:   vqrdmlah.u16  d0, d1, d2
35 //CHECK-V8:           ^
36 //CHECK-V8: error: invalid operand for instruction
37 //CHECK-V8:   vqrdmlsh.f32  q3, q4, q5
38 //CHECK-V8:           ^
39 //CHECK-V8: error: invalid operand for instruction
40 //CHECK-V8:  vqrdmlsh.f64  d3, d5, d5
41 //CHECK-V8:           ^
42
43   vqrdmlah.s16    d0, d1, d2
44 //CHECK-V81aARM:   vqrdmlah.s16  d0, d1, d2      @ encoding: [0x12,0x0b,0x11,0xf3]
45 //CHECK-V81aTHUMB: vqrdmlah.s16  d0, d1, d2      @ encoding: [0x11,0xff,0x12,0x0b]
46 //CHECK-V8: error: instruction requires: armv8.1a
47 //CHECK-V8:  vqrdmlah.s16    d0, d1, d2
48 //CHECK-V8:  ^
49
50   vqrdmlah.s32  d0, d1, d2
51 //CHECK-V81aARM:   vqrdmlah.s32  d0, d1, d2      @ encoding: [0x12,0x0b,0x21,0xf3]
52 //CHECK-V81aTHUMB: vqrdmlah.s32  d0, d1, d2      @ encoding: [0x21,0xff,0x12,0x0b]
53 //CHECK-V8: error: instruction requires: armv8.1a
54 //CHECK-V8:  vqrdmlah.s32  d0, d1, d2
55 //CHECK-V8:  ^
56
57   vqrdmlah.s16  q0, q1, q2
58 //CHECK-V81aARM:   vqrdmlah.s16  q0, q1, q2      @ encoding: [0x54,0x0b,0x12,0xf3]
59 //CHECK-V81aTHUMB: vqrdmlah.s16  q0, q1, q2      @ encoding: [0x12,0xff,0x54,0x0b]
60 //CHECK-V8: error: instruction requires: armv8.1a
61 //CHECK-V8:  vqrdmlah.s16  q0, q1, q2
62 //CHECK-V8:  ^
63
64   vqrdmlah.s32  q2, q3, q0
65 //CHECK-V81aARM:   vqrdmlah.s32  q2, q3, q0      @ encoding: [0x50,0x4b,0x26,0xf3]
66 //CHECK-V81aTHUMB: vqrdmlah.s32  q2, q3, q0      @ encoding: [0x26,0xff,0x50,0x4b]
67 //CHECK-V8: error: instruction requires: armv8.1a
68 //CHECK-V8:  vqrdmlah.s32  q2, q3, q0
69 //CHECK-V8:  ^
70
71
72   vqrdmlsh.s16  d7, d6, d5
73 //CHECK-V81aARM:   vqrdmlsh.s16  d7, d6, d5      @ encoding: [0x15,0x7c,0x16,0xf3]
74 //CHECK-V81aTHUMB: vqrdmlsh.s16  d7, d6, d5      @ encoding: [0x16,0xff,0x15,0x7c]
75 //CHECK-V8: error: instruction requires: armv8.1a
76 //CHECK-V8:  vqrdmlsh.s16  d7, d6, d5
77 //CHECK-V8:  ^
78
79   vqrdmlsh.s32  d0, d1, d2
80 //CHECK-V81aARM:   vqrdmlsh.s32  d0, d1, d2      @ encoding: [0x12,0x0c,0x21,0xf3]
81 //CHECK-V81aTHUMB: vqrdmlsh.s32  d0, d1, d2      @ encoding: [0x21,0xff,0x12,0x0c]
82 //CHECK-V8: error: instruction requires: armv8.1a
83 //CHECK-V8:  vqrdmlsh.s32  d0, d1, d2
84 //CHECK-V8:  ^
85
86   vqrdmlsh.s16  q0, q1, q2
87 //CHECK-V81aARM:   vqrdmlsh.s16  q0, q1, q2      @ encoding: [0x54,0x0c,0x12,0xf3]
88 //CHECK-V81aTHUMB: vqrdmlsh.s16  q0, q1, q2      @ encoding: [0x12,0xff,0x54,0x0c]
89 //CHECK-V8: error: instruction requires: armv8.1a
90 //CHECK-V8:  vqrdmlsh.s16  q0, q1, q2
91 //CHECK-V8:  ^
92
93   vqrdmlsh.s32    q3, q4, q5
94 //CHECK-V81aARM:   vqrdmlsh.s32  q3, q4, q5      @ encoding: [0x5a,0x6c,0x28,0xf3]
95 //CHECK-V81aTHUMB: vqrdmlsh.s32  q3, q4, q5      @ encoding: [0x28,0xff,0x5a,0x6c]
96 //CHECK-V8: error: instruction requires: armv8.1a
97 //CHECK-V8:  vqrdmlsh.s32  q3, q4, q5
98 //CHECK-V8:  ^
99
100
101   vqrdmlah.i8   q0, q1, d9[7]
102   vqrdmlah.u16  d0, d1, d2[3]
103   vqrdmlsh.f32  q3, q4, d5[1]
104   vqrdmlsh.f64  d3, d5, d5[0]
105
106 //CHECK-ERROR: error: invalid operand for instruction
107 //CHECK-ERROR:   vqrdmlah.i8   q0, q1, d9[7]
108 //CHECK-ERROR:           ^
109 //CHECK-ERROR: error: invalid operand for instruction
110 //CHECK-ERROR:   vqrdmlah.u16  d0, d1, d2[3]
111 //CHECK-ERROR:           ^
112 //CHECK-ERROR: error: invalid operand for instruction
113 //CHECK-ERROR:   vqrdmlsh.f32  q3, q4, d5[1]
114 //CHECK-ERROR:           ^
115 //CHECK-ERROR: error: invalid operand for instruction
116 //CHECK-ERROR:   vqrdmlsh.f64  d3, d5, d5[0]
117 //CHECK-ERROR:           ^
118
119   vqrdmlah.s16  d0, d1, d2[0]
120 //CHECK-V81aARM:   vqrdmlah.s16 d0, d1, d2[0]    @ encoding: [0x42,0x0e,0x91,0xf2]
121 //CHECK-V81aTHUMB: vqrdmlah.s16  d0, d1, d2[0]   @ encoding: [0x91,0xef,0x42,0x0e]
122 //CHECK-V8: error: instruction requires: armv8.1a
123 //CHECK-V8:  vqrdmlah.s16  d0, d1, d2[0]
124 //CHECK-V8:  ^
125
126   vqrdmlah.s32  d0, d1, d2[0]
127 //CHECK-V81aARM:   vqrdmlah.s32 d0, d1, d2[0]    @ encoding: [0x42,0x0e,0xa1,0xf2]
128 //CHECK-V81aTHUMB: vqrdmlah.s32  d0, d1, d2[0]   @ encoding: [0xa1,0xef,0x42,0x0e]
129 //CHECK-V8: error: instruction requires: armv8.1a
130 //CHECK-V8:  vqrdmlah.s32  d0, d1, d2[0]
131 //CHECK-V8:  ^
132
133   vqrdmlah.s16  q0, q1, d2[0]
134 //CHECK-V81aARM:   vqrdmlah.s16  q0, q1, d2[0]   @ encoding: [0x42,0x0e,0x92,0xf3]
135 //CHECK-V81aTHUMB: vqrdmlah.s16  q0, q1, d2[0]   @ encoding: [0x92,0xff,0x42,0x0e]
136 //CHECK-V8: error: instruction requires: armv8.1a
137 //CHECK-V8:  vqrdmlah.s16  q0, q1, d2[0]
138 //CHECK-V8:  ^
139
140   vqrdmlah.s32  q0, q1, d2[0]
141 //CHECK-V81aARM:   vqrdmlah.s32  q0, q1, d2[0]   @ encoding: [0x42,0x0e,0xa2,0xf3]
142 //CHECK-V81aTHUMB: vqrdmlah.s32  q0, q1, d2[0]   @ encoding: [0xa2,0xff,0x42,0x0e]
143 //CHECK-V8: error: instruction requires: armv8.1a
144 //CHECK-V8:  vqrdmlah.s32  q0, q1, d2[0]
145 //CHECK-V8:  ^
146
147
148   vqrdmlsh.s16  d0, d1, d2[0]
149 //CHECK-V81aARM:   vqrdmlsh.s16 d0, d1, d2[0]    @ encoding: [0x42,0x0f,0x91,0xf2]
150 //CHECK-V81aTHUMB: vqrdmlsh.s16  d0, d1, d2[0]   @ encoding: [0x91,0xef,0x42,0x0f]
151 //CHECK-V8: error: instruction requires: armv8.1a
152 //CHECK-V8:  vqrdmlsh.s16  d0, d1, d2[0]
153 //CHECK-V8:  ^
154
155   vqrdmlsh.s32  d0, d1, d2[0]
156 //CHECK-V81aARM:   vqrdmlsh.s32 d0, d1, d2[0]    @ encoding: [0x42,0x0f,0xa1,0xf2]
157 //CHECK-V81aTHUMB: vqrdmlsh.s32  d0, d1, d2[0]   @ encoding: [0xa1,0xef,0x42,0x0f]
158 //CHECK-V8: error: instruction requires: armv8.1a
159 //CHECK-V8:  vqrdmlsh.s32  d0, d1, d2[0]
160 //CHECK-V8:  ^
161
162   vqrdmlsh.s16  q0, q1, d2[0]
163 //CHECK-V81aARM:   vqrdmlsh.s16 q0, q1, d2[0]    @ encoding: [0x42,0x0f,0x92,0xf3]
164 //CHECK-V81aTHUMB: vqrdmlsh.s16  q0, q1, d2[0]   @ encoding: [0x92,0xff,0x42,0x0f]
165 //CHECK-V8: error: instruction requires: armv8.1a
166 //CHECK-V8:  vqrdmlsh.s16  q0, q1, d2[0]
167 //CHECK-V8:  ^
168
169   vqrdmlsh.s32  q0, q1, d2[0]
170 //CHECK-V81aARM:   vqrdmlsh.s32 q0, q1, d2[0]    @ encoding: [0x42,0x0f,0xa2,0xf3]
171 //CHECK-V81aTHUMB: vqrdmlsh.s32  q0, q1, d2[0]   @ encoding: [0xa2,0xff,0x42,0x0f]
172 //CHECK-V8: error: instruction requires: armv8.1a
173 //CHECK-V8:  vqrdmlsh.s32  q0, q1, d2[0]
174 //CHECK-V8:  ^
175
176   setpan  #0
177 //CHECK-V81aTHUMB:  setpan  #0                @       encoding: [0x10,0xb6]
178 //CHECK-V81aARM:    setpan  #0                @       encoding: [0x00,0x00,0x10,0xf1]
179 //CHECK-V8: error: instruction requires: armv8.1a
180 //CHECK-V8:  setpan  #0
181 //CHECK-V8:  ^
182
183   setpan  #1
184 //CHECK-V81aTHUMB:  setpan  #1                @       encoding: [0x18,0xb6]
185 //CHECK-V81aARM:    setpan  #1                @       encoding: [0x00,0x02,0x10,0xf1]
186 //CHECK-V8: error: instruction requires: armv8.1a
187 //CHECK-V8:  setpan  #1
188 //CHECK-V8:  ^
189   setpan
190   setpan #-1
191   setpan #2
192 //CHECK-ERROR: error: too few operands for instruction
193 //CHECK-ERROR:  setpan
194 //CHECK-ERROR:  ^
195 //CHECK-ERROR: error: invalid operand for instruction
196 //CHECK-ERROR:  setpan #-1
197 //CHECK-ERROR:         ^
198 //CHECK-ERROR: error: invalid operand for instruction
199 //CHECK-ERROR:  setpan #2
200 //CHECK-ERROR:         ^
201
202   it eq
203   setpaneq #0
204 //CHECK-THUMB-ERROR: error: instruction 'setpan' is not predicable, but condition code specified
205 //CHECK-THUMB-ERROR:  setpaneq #0
206 //CHECK-THUMB-ERROR:  ^