xref: /aosp_15_r20/external/llvm/test/MC/Disassembler/ARM/invalid-thumbv7.txt (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker# RUN: not llvm-mc -disassemble %s -mcpu cortex-a8 -triple thumbv7 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-V7
2*9880d681SAndroid Build Coastguard Worker# RUN: not llvm-mc -disassemble %s -mcpu cortex-a53 -triple thumbv8 2>&1 | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker# This file is checking Thumbv7 encodings which are globally invalid, usually due
5*9880d681SAndroid Build Coastguard Worker# to the constraints of the instructions not being met. For example invalid
6*9880d681SAndroid Build Coastguard Worker# combinations of registers.
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
9*9880d681SAndroid Build Coastguard Worker# Undefined encoding for b.cc
10*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Worker# Opcode=1894 Name=t2Bcc Format=ARM_FORMAT_THUMBFRM(25)
13*9880d681SAndroid Build Coastguard Worker#  31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
14*9880d681SAndroid Build Coastguard Worker# -------------------------------------------------------------------------------------------------
15*9880d681SAndroid Build Coastguard Worker# | 1: 1: 1: 1| 0: 1: 1: 1| 1: 0: 1: 0| 1: 1: 1: 1| 1: 0: 0: 0| 1: 0: 1: 1| 0: 1: 0: 0| 0: 1: 0: 0|
16*9880d681SAndroid Build Coastguard Worker# -------------------------------------------------------------------------------------------------
17*9880d681SAndroid Build Coastguard Worker#
18*9880d681SAndroid Build Coastguard Worker# A8.6.16 B
19*9880d681SAndroid Build Coastguard Worker# if cond<3:1> == '111' then SEE "Related Encodings"
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Worker[0xaf 0xf7 0x44 0x8b]
22*9880d681SAndroid Build Coastguard Worker# CHECK: warning: invalid instruction encoding
23*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0xaf 0xf7 0x44 0x8b]
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
26*9880d681SAndroid Build Coastguard Worker# Undefined encoding for it
27*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Worker[0xff 0xbf 0x6b 0x80 0x00 0x75]
30*9880d681SAndroid Build Coastguard Worker# CHECK: potentially undefined instruction encoding
31*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0xff 0xbf 0x6b 0x80 0x00 0x75]
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker[0x50 0xbf] # hint #5; legal as the third instruction for the iteee above
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Worker# Two warnings from this block since there are two instructions in there
36*9880d681SAndroid Build Coastguard Worker[0xdb 0xbf 0x42 0xbb]
37*9880d681SAndroid Build Coastguard Worker# CHECK: potentially undefined instruction encoding
38*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0xdb 0xbf 0x42 0xbb]
39*9880d681SAndroid Build Coastguard Worker# CHECK: potentially undefined instruction encoding
40*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0xdb 0xbf 0x42 0xbb]
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
43*9880d681SAndroid Build Coastguard Worker# Undefined encoding for ldm
44*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
45*9880d681SAndroid Build Coastguard Worker
46*9880d681SAndroid Build Coastguard Worker# Writeback is not allowed is Rn is in the target register list.
47*9880d681SAndroid Build Coastguard Worker[0xb4 0xe8 0x34 0x04]
48*9880d681SAndroid Build Coastguard Worker# CHECK: potentially undefined instruction encoding
49*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0xb4 0xe8 0x34 0x04]
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
53*9880d681SAndroid Build Coastguard Worker# Undefined encoding for ldrd
54*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
55*9880d681SAndroid Build Coastguard Worker
56*9880d681SAndroid Build Coastguard Worker# Opcode=1930 Name=t2LDRD_PRE Format=ARM_FORMAT_THUMBFRM(25)
57*9880d681SAndroid Build Coastguard Worker#  31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
58*9880d681SAndroid Build Coastguard Worker# -------------------------------------------------------------------------------------------------
59*9880d681SAndroid Build Coastguard Worker# | 1: 1: 1: 0| 1: 0: 0: 1| 1: 1: 1: 1| 1: 1: 1: 1| 1: 1: 1: 0| 1: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0|
60*9880d681SAndroid Build Coastguard Worker# -------------------------------------------------------------------------------------------------
61*9880d681SAndroid Build Coastguard Worker#
62*9880d681SAndroid Build Coastguard Worker# A8.6.66 LDRD (immediate)
63*9880d681SAndroid Build Coastguard Worker# if Rn = '1111' then SEE LDRD (literal)
64*9880d681SAndroid Build Coastguard Worker# A8.6.67 LDRD (literal)
65*9880d681SAndroid Build Coastguard Worker# Inst{21} = 0
66*9880d681SAndroid Build Coastguard Worker
67*9880d681SAndroid Build Coastguard Worker[0xff 0xe9 0x0 0xeb]
68*9880d681SAndroid Build Coastguard Worker# CHECK: potentially undefined
69*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0xff 0xe9 0x0 0xeb]
70*9880d681SAndroid Build Coastguard Worker
71*9880d681SAndroid Build Coastguard Worker
72*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
73*9880d681SAndroid Build Coastguard Worker# Undefined encodings for ldrbt
74*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
75*9880d681SAndroid Build Coastguard Worker
76*9880d681SAndroid Build Coastguard Worker# Opcode=1922 Name=t2LDRBT Format=ARM_FORMAT_THUMBFRM(25)
77*9880d681SAndroid Build Coastguard Worker#  31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
78*9880d681SAndroid Build Coastguard Worker# -------------------------------------------------------------------------------------------------
79*9880d681SAndroid Build Coastguard Worker# | 1: 1: 1: 1| 1: 0: 0: 0| 0: 0: 0: 1| 0: 0: 0: 0| 1: 1: 1: 1| 1: 1: 1: 0| 0: 0: 0: 0| 0: 0: 1: 1|
80*9880d681SAndroid Build Coastguard Worker# -------------------------------------------------------------------------------------------------
81*9880d681SAndroid Build Coastguard Worker#
82*9880d681SAndroid Build Coastguard Worker# The unpriviledged Load/Store cannot have SP or PC as Rt.
83*9880d681SAndroid Build Coastguard Worker[0x10 0xf8 0x3 0xfe]
84*9880d681SAndroid Build Coastguard Worker# CHECK: potentially undefined instruction encoding
85*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x10 0xf8 0x3 0xfe]
86*9880d681SAndroid Build Coastguard Worker
87*9880d681SAndroid Build Coastguard Worker
88*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
89*9880d681SAndroid Build Coastguard Worker# Undefined encodings for ldrsh
90*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
91*9880d681SAndroid Build Coastguard Worker
92*9880d681SAndroid Build Coastguard Worker# invalid LDRSHs Rt=PC
93*9880d681SAndroid Build Coastguard Worker[0x30 0xf9 0x00 0xf0]
94*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
95*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x30 0xf9 0x00 0xf0]
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard Worker# invalid LDRSHi8 Rt=PC
98*9880d681SAndroid Build Coastguard Worker[0x30 0xf9 0x00 0xfc]
99*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
100*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x30 0xf9 0x00 0xfc]
101*9880d681SAndroid Build Coastguard Worker
102*9880d681SAndroid Build Coastguard Worker# invalid LDRSHi12 Rt=PC
103*9880d681SAndroid Build Coastguard Worker[0xb0 0xf9 0x00 0xf0]
104*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
105*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0xb0 0xf9 0x00 0xf0]
106*9880d681SAndroid Build Coastguard Worker
107*9880d681SAndroid Build Coastguard Worker# Opcode=1954 Name=t2LDRSHi8 Format=ARM_FORMAT_THUMBFRM(25)
108*9880d681SAndroid Build Coastguard Worker#  31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
109*9880d681SAndroid Build Coastguard Worker# -------------------------------------------------------------------------------------------------
110*9880d681SAndroid Build Coastguard Worker# | 1: 1: 1: 1| 1: 0: 0: 1| 0: 0: 1: 1| 0: 1: 0: 1| 1: 1: 1: 1| 1: 1: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0|
111*9880d681SAndroid Build Coastguard Worker# -------------------------------------------------------------------------------------------------
112*9880d681SAndroid Build Coastguard Worker#
113*9880d681SAndroid Build Coastguard Worker# if Rt == '1111' and PUW == '100' then SEE "Unallocated memory hints"
114*9880d681SAndroid Build Coastguard Worker[0x35 0xf9 0x00 0xfc]
115*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
116*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x35 0xf9 0x00 0xfc]
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Worker# Opcode=1953 Name=t2LDRSHi12 Format=ARM_FORMAT_THUMBFRM(25)
119*9880d681SAndroid Build Coastguard Worker#  31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
120*9880d681SAndroid Build Coastguard Worker# -------------------------------------------------------------------------------------------------
121*9880d681SAndroid Build Coastguard Worker# | 1: 1: 1: 1| 1: 0: 0: 1| 1: 0: 1: 1| 0: 0: 1: 1| 1: 1: 1: 1| 1: 0: 0: 0| 1: 1: 0: 1| 1: 1: 1: 1|
122*9880d681SAndroid Build Coastguard Worker# -------------------------------------------------------------------------------------------------
123*9880d681SAndroid Build Coastguard Worker#
124*9880d681SAndroid Build Coastguard Worker# if Rt = '1111' then SEE "Unallocated memory hints"
125*9880d681SAndroid Build Coastguard Worker[0xb3 0xf9 0xdf 0xf8]
126*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
127*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0xb3 0xf9 0xdf 0xf8]
128*9880d681SAndroid Build Coastguard Worker
129*9880d681SAndroid Build Coastguard Worker
130*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
131*9880d681SAndroid Build Coastguard Worker# Undefined encoding for push
132*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
133*9880d681SAndroid Build Coastguard Worker
134*9880d681SAndroid Build Coastguard Worker# SP and PC are not allowed in the register list on STM instructions in Thumb2.
135*9880d681SAndroid Build Coastguard Worker[0x2d 0xe9 0xf7 0xb6]
136*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
137*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x2d 0xe9 0xf7 0xb6]
138*9880d681SAndroid Build Coastguard Worker
139*9880d681SAndroid Build Coastguard Worker
140*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
141*9880d681SAndroid Build Coastguard Worker# Undefined encoding for stmia
142*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
143*9880d681SAndroid Build Coastguard Worker
144*9880d681SAndroid Build Coastguard Worker# Opcode=2313 Name=tSTMIA_UPD Format=ARM_FORMAT_THUMBFRM(25)
145*9880d681SAndroid Build Coastguard Worker#  31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
146*9880d681SAndroid Build Coastguard Worker# -------------------------------------------------------------------------------------------------
147*9880d681SAndroid Build Coastguard Worker# | 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 1: 1: 0: 0| 0: 1: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0|
148*9880d681SAndroid Build Coastguard Worker# -------------------------------------------------------------------------------------------------
149*9880d681SAndroid Build Coastguard Worker#
150*9880d681SAndroid Build Coastguard Worker# if BitCount(registers) < 1 then UNPREDICTABLE
151*9880d681SAndroid Build Coastguard Worker[0x00 0xc7]
152*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
153*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x00 0xc7]
154*9880d681SAndroid Build Coastguard Worker
155*9880d681SAndroid Build Coastguard Worker
156*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
157*9880d681SAndroid Build Coastguard Worker# Undefined encodings for str
158*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
159*9880d681SAndroid Build Coastguard Worker
160*9880d681SAndroid Build Coastguard Worker# invalid STRi12   Rn=PC
161*9880d681SAndroid Build Coastguard Worker[0xcf 0xf8 0x00 0x00]
162*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
163*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0xcf 0xf8 0x00 0x00]
164*9880d681SAndroid Build Coastguard Worker
165*9880d681SAndroid Build Coastguard Worker# invalid STRi8    Rn=PC
166*9880d681SAndroid Build Coastguard Worker[0x4f 0xf8 0x00 0x0c]
167*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
168*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x4f 0xf8 0x00 0x0c]
169*9880d681SAndroid Build Coastguard Worker
170*9880d681SAndroid Build Coastguard Worker# invalid STRs     Rn=PC
171*9880d681SAndroid Build Coastguard Worker[0x4f 0xf8 0x00 0x00]
172*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
173*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x4f 0xf8 0x00 0x00]
174*9880d681SAndroid Build Coastguard Worker
175*9880d681SAndroid Build Coastguard Worker# invalid STRBi12  Rn=PC
176*9880d681SAndroid Build Coastguard Worker[0x0f 0xf8 0x00 0x00]
177*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
178*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x0f 0xf8 0x00 0x00]
179*9880d681SAndroid Build Coastguard Worker
180*9880d681SAndroid Build Coastguard Worker# invalid STRBi8   Rn=PC
181*9880d681SAndroid Build Coastguard Worker[0x0f 0xf8 0x00 0x0c]
182*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
183*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x0f 0xf8 0x00 0x0c]
184*9880d681SAndroid Build Coastguard Worker
185*9880d681SAndroid Build Coastguard Worker# invalid STRBs    Rn=PC
186*9880d681SAndroid Build Coastguard Worker[0x0f 0xf8 0x00 0x00]
187*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
188*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x0f 0xf8 0x00 0x00]
189*9880d681SAndroid Build Coastguard Worker
190*9880d681SAndroid Build Coastguard Worker# invalid STRHi12  Rn=PC
191*9880d681SAndroid Build Coastguard Worker[0xaf 0xf8 0x00 0x00]
192*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
193*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0xaf 0xf8 0x00 0x00]
194*9880d681SAndroid Build Coastguard Worker
195*9880d681SAndroid Build Coastguard Worker# invalid STRHi8   Rn=PC
196*9880d681SAndroid Build Coastguard Worker[0x2f 0xf8 0x00 0x0c]
197*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
198*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x2f 0xf8 0x00 0x0c]
199*9880d681SAndroid Build Coastguard Worker
200*9880d681SAndroid Build Coastguard Worker# invalid STRHs    Rn=PC
201*9880d681SAndroid Build Coastguard Worker[0x2f 0xf8 0x00 0x00]
202*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
203*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x2f 0xf8 0x00 0x00]
204*9880d681SAndroid Build Coastguard Worker
205*9880d681SAndroid Build Coastguard Worker# invalid STRBT    Rn=PC
206*9880d681SAndroid Build Coastguard Worker[0x0f 0xf8 0x00 0x0e]
207*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
208*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x0f 0xf8 0x00 0x0e]
209*9880d681SAndroid Build Coastguard Worker
210*9880d681SAndroid Build Coastguard Worker# invalid STRHT    Rn=PC
211*9880d681SAndroid Build Coastguard Worker[0x2f 0xf8 0x00 0x0e]
212*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
213*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x2f 0xf8 0x00 0x0e]
214*9880d681SAndroid Build Coastguard Worker
215*9880d681SAndroid Build Coastguard Worker# invalid STRT     Rn=PC
216*9880d681SAndroid Build Coastguard Worker[0x4f 0xf8 0x00 0x0e]
217*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
218*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x4f 0xf8 0x00 0x0e]
219*9880d681SAndroid Build Coastguard Worker
220*9880d681SAndroid Build Coastguard Worker# Opcode=2137 Name=t2STR_POST Format=ARM_FORMAT_THUMBFRM(25)
221*9880d681SAndroid Build Coastguard Worker#  31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
222*9880d681SAndroid Build Coastguard Worker# -------------------------------------------------------------------------------------------------
223*9880d681SAndroid Build Coastguard Worker# | 1: 1: 1: 1| 1: 0: 0: 0| 0: 1: 0: 0| 1: 1: 1: 1| 1: 1: 1: 0| 1: 0: 1: 1| 1: 1: 1: 1| 1: 1: 1: 1|
224*9880d681SAndroid Build Coastguard Worker# -------------------------------------------------------------------------------------------------
225*9880d681SAndroid Build Coastguard Worker#
226*9880d681SAndroid Build Coastguard Worker# if Rn == '1111' then UNDEFINED
227*9880d681SAndroid Build Coastguard Worker
228*9880d681SAndroid Build Coastguard Worker[0x4f 0xf8 0xff 0xeb]
229*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
230*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x4f 0xf8 0xff 0xeb]
231*9880d681SAndroid Build Coastguard Worker
232*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
233*9880d681SAndroid Build Coastguard Worker# Undefined encodings for strd
234*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
235*9880d681SAndroid Build Coastguard Worker
236*9880d681SAndroid Build Coastguard Worker# Rt == Rn is UNPREDICTABLE
237*9880d681SAndroid Build Coastguard Worker[0xe4 0xe9 0x02 0x46]
238*9880d681SAndroid Build Coastguard Worker# CHECK: warning: potentially undefined instruction encoding
239*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0xe4 0xe9 0x02 0x46]
240*9880d681SAndroid Build Coastguard Worker
241*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
242*9880d681SAndroid Build Coastguard Worker# Undefined encodings for NEON vld instructions
243*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
244*9880d681SAndroid Build Coastguard Worker
245*9880d681SAndroid Build Coastguard Worker# size = '00' and index_align == '0001' so UNDEFINED
246*9880d681SAndroid Build Coastguard Worker[0xa0 0xf9 0x10 0x08]
247*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
248*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0xa0 0xf9 0x10 0x08]
249*9880d681SAndroid Build Coastguard Worker
250*9880d681SAndroid Build Coastguard Worker
251*9880d681SAndroid Build Coastguard Worker# vld3
252*9880d681SAndroid Build Coastguard Worker
253*9880d681SAndroid Build Coastguard Worker# Opcode=871 Name=VLD3DUPd32_UPD Format=ARM_FORMAT_NLdSt(30)
254*9880d681SAndroid Build Coastguard Worker#  31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
255*9880d681SAndroid Build Coastguard Worker# -------------------------------------------------------------------------------------------------
256*9880d681SAndroid Build Coastguard Worker# | 1: 1: 1: 1| 0: 1: 0: 0| 1: 0: 1: 0| 0: 0: 1: 0| 0: 0: 1: 0| 1: 1: 1: 0| 1: 0: 0: 1| 0: 0: 1: 0|
257*9880d681SAndroid Build Coastguard Worker# -------------------------------------------------------------------------------------------------
258*9880d681SAndroid Build Coastguard Worker#
259*9880d681SAndroid Build Coastguard Worker# A8.6.315 VLD3 (single 3-element structure to all lanes)
260*9880d681SAndroid Build Coastguard Worker# The a bit must be encoded as 0.
261*9880d681SAndroid Build Coastguard Worker
262*9880d681SAndroid Build Coastguard Worker[0xa2 0xf9 0x92 0x2e]
263*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
264*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0xa2 0xf9 0x92 0x2e]
265*9880d681SAndroid Build Coastguard Worker
266*9880d681SAndroid Build Coastguard Worker
267*9880d681SAndroid Build Coastguard Worker# Some vld4 ones
268*9880d681SAndroid Build Coastguard Worker# size == '11' and a == '0' so UNDEFINED
269*9880d681SAndroid Build Coastguard Worker[0xa0 0xf9 0xc0 0x0f]
270*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
271*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0xa0 0xf9 0xc0 0x0f]
272*9880d681SAndroid Build Coastguard Worker
273*9880d681SAndroid Build Coastguard Worker[0xa0 0xf9 0x30 0x0b]
274*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
275*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0xa0 0xf9 0x30 0x0b]
276*9880d681SAndroid Build Coastguard Worker
277*9880d681SAndroid Build Coastguard Worker
278*9880d681SAndroid Build Coastguard Worker# VLD1 multi-element, type=0b1010 align=0b11
279*9880d681SAndroid Build Coastguard Worker[0x24 0xf9 0xbf 0x8a]
280*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
281*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x24 0xf9 0xbf 0x8a]
282*9880d681SAndroid Build Coastguard Worker
283*9880d681SAndroid Build Coastguard Worker# VLD1 multi-element type=0b0111 align=0b1x
284*9880d681SAndroid Build Coastguard Worker[0x24 0xf9 0xbf 0x87]
285*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
286*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x24 0xf9 0xbf 0x87]
287*9880d681SAndroid Build Coastguard Worker
288*9880d681SAndroid Build Coastguard Worker# VLD1 multi-element type=0b0010 align=0b1x
289*9880d681SAndroid Build Coastguard Worker[0x24 0xf9 0xbf 0x86]
290*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
291*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x24 0xf9 0xbf 0x86]
292*9880d681SAndroid Build Coastguard Worker
293*9880d681SAndroid Build Coastguard Worker# VLD2 multi-element size=0b11
294*9880d681SAndroid Build Coastguard Worker[0x60 0xf9 0xcf 0x08]
295*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
296*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x60 0xf9 0xcf 0x08]
297*9880d681SAndroid Build Coastguard Worker
298*9880d681SAndroid Build Coastguard Worker# VLD2 multi-element type=0b1111 align=0b11
299*9880d681SAndroid Build Coastguard Worker[0x60 0xf9 0xbf 0x08]
300*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
301*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x60 0xf9 0xbf 0x08]
302*9880d681SAndroid Build Coastguard Worker
303*9880d681SAndroid Build Coastguard Worker# VLD2 multi-element type=0b1001 align=0b11
304*9880d681SAndroid Build Coastguard Worker[0x60 0xf9 0xbf 0x09]
305*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
306*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x60 0xf9 0xbf 0x09]
307*9880d681SAndroid Build Coastguard Worker
308*9880d681SAndroid Build Coastguard Worker# VLD3 multi-element size=0b11
309*9880d681SAndroid Build Coastguard Worker[0x60 0xf9 0x7f 0x04]
310*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
311*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x60 0xf9 0x7f 0x04]
312*9880d681SAndroid Build Coastguard Worker
313*9880d681SAndroid Build Coastguard Worker# VLD3 multi-element align=0b1x
314*9880d681SAndroid Build Coastguard Worker[0x60 0xf9 0xcf 0x04]
315*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
316*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x60 0xf9 0xcf 0x04]
317*9880d681SAndroid Build Coastguard Worker
318*9880d681SAndroid Build Coastguard Worker# VLD4 multi-element size=0b11
319*9880d681SAndroid Build Coastguard Worker[0x60 0xf9 0xcd 0x11]
320*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
321*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x60 0xf9 0xcd 0x11]
322*9880d681SAndroid Build Coastguard Worker
323*9880d681SAndroid Build Coastguard Worker
324*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
325*9880d681SAndroid Build Coastguard Worker# Undefined encodings for NEON vst1
326*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
327*9880d681SAndroid Build Coastguard Worker
328*9880d681SAndroid Build Coastguard Worker# size == '10' and index_align == '0001' so UNDEFINED
329*9880d681SAndroid Build Coastguard Worker[0x80 0xf9 0x10 0x08]
330*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
331*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x80 0xf9 0x10 0x08]
332*9880d681SAndroid Build Coastguard Worker
333*9880d681SAndroid Build Coastguard Worker# Opcode=1839 Name=VST1d8Twb_register Format=ARM_FORMAT_NLdSt(30)
334*9880d681SAndroid Build Coastguard Worker#  31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
335*9880d681SAndroid Build Coastguard Worker# -------------------------------------------------------------------------------------------------
336*9880d681SAndroid Build Coastguard Worker# | 1: 1: 1: 1| 1: 0: 0: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 1: 1: 0| 0: 0: 1: 0| 1: 1: 1: 1|
337*9880d681SAndroid Build Coastguard Worker# -------------------------------------------------------------------------------------------------
338*9880d681SAndroid Build Coastguard Worker#
339*9880d681SAndroid Build Coastguard Worker# A8.6.391 VST1 (multiple single elements)
340*9880d681SAndroid Build Coastguard Worker# This encoding looks like: vst1.8 {d0,d1,d2}, [r0:128]
341*9880d681SAndroid Build Coastguard Worker# But bits 5-4 for the alignment of 128 encoded as align = 0b10, is available only if <list>
342*9880d681SAndroid Build Coastguard Worker# contains two or four registers.  rdar://11220250
343*9880d681SAndroid Build Coastguard Worker[0x00 0xf9 0x2f 0x06]
344*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
345*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x00 0xf9 0x2f 0x06]
346*9880d681SAndroid Build Coastguard Worker
347*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
348*9880d681SAndroid Build Coastguard Worker# Undefined encodings for NEON vst4
349*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
350*9880d681SAndroid Build Coastguard Worker
351*9880d681SAndroid Build Coastguard Worker[0x80 0xf9 0x30 0x0b]
352*9880d681SAndroid Build Coastguard Worker# CHECK: invalid instruction encoding
353*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x80 0xf9 0x30 0x0b]
354*9880d681SAndroid Build Coastguard Worker
355*9880d681SAndroid Build Coastguard Worker
356*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
357*9880d681SAndroid Build Coastguard Worker# Unpredictable STMs
358*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
359*9880d681SAndroid Build Coastguard Worker
360*9880d681SAndroid Build Coastguard Worker# 32-bit Thumb STM instructions cannot have a writeback register which appears
361*9880d681SAndroid Build Coastguard Worker# in the list.
362*9880d681SAndroid Build Coastguard Worker
363*9880d681SAndroid Build Coastguard Worker[0xa1 0xe8 0x07 0x04]
364*9880d681SAndroid Build Coastguard Worker# CHECK: warning: potentially undefined instruction encoding
365*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0xa1 0xe8 0x07 0x04]
366*9880d681SAndroid Build Coastguard Worker
367*9880d681SAndroid Build Coastguard Worker[0x21 0xe9 0x07 0x04]
368*9880d681SAndroid Build Coastguard Worker# CHECK: warning: potentially undefined instruction encoding
369*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: [0x21 0xe9 0x07 0x04]
370*9880d681SAndroid Build Coastguard Worker
371*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
372*9880d681SAndroid Build Coastguard Worker# SP is invalid as rGPR before ARMv8
373*9880d681SAndroid Build Coastguard Worker#------------------------------------------------------------------------------
374*9880d681SAndroid Build Coastguard Worker
375*9880d681SAndroid Build Coastguard Worker[0x00 0xf0 0x00 0x0d]
376*9880d681SAndroid Build Coastguard Worker# CHECK-V7: warning: potentially undefined instruction encoding
377*9880d681SAndroid Build Coastguard Worker# CHECK-V7-NEXT: [0x00 0xf0 0x00 0x0d]
378*9880d681SAndroid Build Coastguard Worker
379*9880d681SAndroid Build Coastguard Worker[0x63 0xeb 0x2d 0x46]
380*9880d681SAndroid Build Coastguard Worker# CHECK-V7: warning: potentially undefined instruction encoding
381*9880d681SAndroid Build Coastguard Worker# CHECK-V7-NEXT: [0x63 0xeb 0x2d 0x46]
382