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