577 lines · plain
1# RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+mve -show-encoding < %s \2# RUN: | FileCheck --check-prefix=CHECK-NOFP %s3# RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+mve.fp,+fp64 -show-encoding < %s 2>%t \4# RUN: | FileCheck --check-prefix=CHECK %s5# RUN: FileCheck --check-prefix=ERROR < %t %s6 7# CHECK: vshlc q0, lr, #8 @ encoding: [0xa8,0xee,0xce,0x0f]8# CHECK-NOFP: vshlc q0, lr, #8 @ encoding: [0xa8,0xee,0xce,0x0f]9vshlc q0, lr, #810 11# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,32]12vshlc q0, lr, #3313 14# CHECK: vmovlb.s8 q0, q6 @ encoding: [0xa8,0xee,0x4c,0x0f]15# CHECK-NOFP: vmovlb.s8 q0, q6 @ encoding: [0xa8,0xee,0x4c,0x0f]16vmovlb.s8 q0, q617 18# CHECK: vmovlt.s8 q0, q4 @ encoding: [0xa8,0xee,0x48,0x1f]19# CHECK-NOFP: vmovlt.s8 q0, q4 @ encoding: [0xa8,0xee,0x48,0x1f]20vmovlt.s8 q0, q421 22# CHECK: vpt.i8 eq, q0, q023# CHECK-NOFP: vpt.i8 eq, q0, q024# CHECK: vmovltt.s8 q0, q4 @ encoding: [0xa8,0xee,0x48,0x1f]25# CHECK-NOFP: vmovltt.s8 q0, q4 @ encoding: [0xa8,0xee,0x48,0x1f]26vpt.i8 eq, q0, q027vmovltt.s8 q0, q428 29# CHECK: vmovlb.u8 q0, q0 @ encoding: [0xa8,0xfe,0x40,0x0f]30# CHECK-NOFP: vmovlb.u8 q0, q0 @ encoding: [0xa8,0xfe,0x40,0x0f]31vmovlb.u8 q0, q032 33# CHECK: vmovlt.u8 q0, q2 @ encoding: [0xa8,0xfe,0x44,0x1f]34# CHECK-NOFP: vmovlt.u8 q0, q2 @ encoding: [0xa8,0xfe,0x44,0x1f]35vmovlt.u8 q0, q236 37# CHECK: vmovlb.u16 q1, q0 @ encoding: [0xb0,0xfe,0x40,0x2f]38# CHECK-NOFP: vmovlb.u16 q1, q0 @ encoding: [0xb0,0xfe,0x40,0x2f]39vmovlb.u16 q1, q040 41# CHECK: vmovlt.u16 q0, q2 @ encoding: [0xb0,0xfe,0x44,0x1f]42# CHECK-NOFP: vmovlt.u16 q0, q2 @ encoding: [0xb0,0xfe,0x44,0x1f]43vmovlt.u16 q0, q244 45# CHECK: vshllb.s8 q0, q2, #8 @ encoding: [0x31,0xee,0x05,0x0e]46# CHECK-NOFP: vshllb.s8 q0, q2, #8 @ encoding: [0x31,0xee,0x05,0x0e]47vshllb.s8 q0, q2, #848 49# CHECK: vshllt.s8 q1, q5, #8 @ encoding: [0x31,0xee,0x0b,0x3e]50# CHECK-NOFP: vshllt.s8 q1, q5, #8 @ encoding: [0x31,0xee,0x0b,0x3e]51vshllt.s8 q1, q5, #852 53# CHECK: vshllb.s8 q0, q0, #7 @ encoding: [0xaf,0xee,0x40,0x0f]54# CHECK-NOFP: vshllb.s8 q0, q0, #7 @ encoding: [0xaf,0xee,0x40,0x0f]55vshllb.s8 q0, q0, #756 57# CHECK: vshllb.u8 q1, q1, #8 @ encoding: [0x31,0xfe,0x03,0x2e]58# CHECK-NOFP: vshllb.u8 q1, q1, #8 @ encoding: [0x31,0xfe,0x03,0x2e]59vshllb.u8 q1, q1, #860 61# CHECK: vshllt.u8 q0, q0, #8 @ encoding: [0x31,0xfe,0x01,0x1e]62# CHECK-NOFP: vshllt.u8 q0, q0, #8 @ encoding: [0x31,0xfe,0x01,0x1e]63vshllt.u8 q0, q0, #864 65# CHECK: vshllb.u8 q0, q0, #3 @ encoding: [0xab,0xfe,0x40,0x0f]66# CHECK-NOFP: vshllb.u8 q0, q0, #3 @ encoding: [0xab,0xfe,0x40,0x0f]67vshllb.u8 q0, q0, #368 69# CHECK: vshllb.u16 q0, q5, #16 @ encoding: [0x35,0xfe,0x0b,0x0e]70# CHECK-NOFP: vshllb.u16 q0, q5, #16 @ encoding: [0x35,0xfe,0x0b,0x0e]71vshllb.u16 q0, q5, #1672 73# CHECK: vshllt.u16 q0, q3, #16 @ encoding: [0x35,0xfe,0x07,0x1e]74# CHECK-NOFP: vshllt.u16 q0, q3, #16 @ encoding: [0x35,0xfe,0x07,0x1e]75vshllt.u16 q0, q3, #1676 77# CHECK: vshllt.s16 q0, q0, #16 @ encoding: [0x35,0xee,0x01,0x1e]78# CHECK-NOFP: vshllt.s16 q0, q0, #16 @ encoding: [0x35,0xee,0x01,0x1e]79vshllt.s16 q0, q0, #1680 81# CHECK: vshllt.s16 q0, q0, #14 @ encoding: [0xbe,0xee,0x40,0x1f]82vshllt.s16 q0, q0, #1483 84# CHECK: vshllt.s16 q0, q0, #11 @ encoding: [0xbb,0xee,0x40,0x1f]85vshllt.s16 q0, q0, #1186 87# CHECK: vshllb.u16 q0, q2, #4 @ encoding: [0xb4,0xfe,0x44,0x0f]88# CHECK-NOFP: vshllb.u16 q0, q2, #4 @ encoding: [0xb4,0xfe,0x44,0x0f]89vshllb.u16 q0, q2, #490 91# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,8]92vshllb.s8 q0, q2, #993 94# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,8]95vshllb.u8 q0, q2, #996 97# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,8]98vshllb.u8 q0, q2, #099 100# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,16]101vshllb.s16 q0, q2, #17102 103# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,16]104vshllb.u16 q0, q2, #17105 106# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,16]107vshllb.u16 q0, q2, #0108 109# CHECK: vrshrnb.i16 q0, q3, #1 @ encoding: [0x8f,0xfe,0xc7,0x0f]110# CHECK-NOFP: vrshrnb.i16 q0, q3, #1 @ encoding: [0x8f,0xfe,0xc7,0x0f]111vrshrnb.i16 q0, q3, #1112 113# CHECK: vrshrnt.i16 q0, q2, #5 @ encoding: [0x8b,0xfe,0xc5,0x1f]114# CHECK-NOFP: vrshrnt.i16 q0, q2, #5 @ encoding: [0x8b,0xfe,0xc5,0x1f]115vrshrnt.i16 q0, q2, #5116 117# CHECK: vrshrnb.i32 q0, q4, #8 @ encoding: [0x98,0xfe,0xc9,0x0f]118# CHECK-NOFP: vrshrnb.i32 q0, q4, #8 @ encoding: [0x98,0xfe,0xc9,0x0f]119vrshrnb.i32 q0, q4, #8120 121# CHECK: vrshrnt.i32 q0, q2, #7 @ encoding: [0x99,0xfe,0xc5,0x1f]122# CHECK-NOFP: vrshrnt.i32 q0, q2, #7 @ encoding: [0x99,0xfe,0xc5,0x1f]123vrshrnt.i32 q0, q2, #7124 125# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,8]126vrshrnb.i16 q0, q3, #9127 128# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,16]129vrshrnb.i32 q0, q3, #17130 131# CHECK: vshrnb.i16 q1, q2, #1 @ encoding: [0x8f,0xee,0xc5,0x2f]132# CHECK-NOFP: vshrnb.i16 q1, q2, #1 @ encoding: [0x8f,0xee,0xc5,0x2f]133vshrnb.i16 q1, q2, #1134 135# CHECK: vshrnt.i16 q0, q1, #1 @ encoding: [0x8f,0xee,0xc3,0x1f]136# CHECK-NOFP: vshrnt.i16 q0, q1, #1 @ encoding: [0x8f,0xee,0xc3,0x1f]137vshrnt.i16 q0, q1, #1138 139# CHECK: vshrnb.i32 q0, q0, #12 @ encoding: [0x94,0xee,0xc1,0x0f]140# CHECK-NOFP: vshrnb.i32 q0, q0, #12 @ encoding: [0x94,0xee,0xc1,0x0f]141vshrnb.i32 q0, q0, #12142 143# CHECK: vshrnt.i32 q0, q2, #4 @ encoding: [0x9c,0xee,0xc5,0x1f]144# CHECK-NOFP: vshrnt.i32 q0, q2, #4 @ encoding: [0x9c,0xee,0xc5,0x1f]145vshrnt.i32 q0, q2, #4146 147# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,8]148vshrnb.i16 q1, q2, #9149 150# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,16]151vshrnb.i32 q1, q2, #17152 153# CHECK: vqrshrunb.s16 q0, q2, #8 @ encoding: [0x88,0xfe,0xc4,0x0f]154# CHECK-NOFP: vqrshrunb.s16 q0, q2, #8 @ encoding: [0x88,0xfe,0xc4,0x0f]155vqrshrunb.s16 q0, q2, #8156 157# CHECK: vqrshrunt.s16 q0, q0, #6 @ encoding: [0x8a,0xfe,0xc0,0x1f]158# CHECK-NOFP: vqrshrunt.s16 q0, q0, #6 @ encoding: [0x8a,0xfe,0xc0,0x1f]159vqrshrunt.s16 q0, q0, #6160 161# CHECK: vqrshrunt.s32 q0, q1, #8 @ encoding: [0x98,0xfe,0xc2,0x1f]162# CHECK-NOFP: vqrshrunt.s32 q0, q1, #8 @ encoding: [0x98,0xfe,0xc2,0x1f]163vqrshrunt.s32 q0, q1, #8164 165# CHECK: vqrshrunb.s32 q0, q7, #13 @ encoding: [0x93,0xfe,0xce,0x0f]166# CHECK-NOFP: vqrshrunb.s32 q0, q7, #13 @ encoding: [0x93,0xfe,0xce,0x0f]167vqrshrunb.s32 q0, q7, #13168 169# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,8]170vqrshrunb.s16 q0, q2, #9171 172# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,16]173vqrshrunb.s32 q0, q2, #17174 175# CHECK: vqshrunb.s16 q0, q7, #5 @ encoding: [0x8b,0xee,0xce,0x0f]176# CHECK-NOFP: vqshrunb.s16 q0, q7, #5 @ encoding: [0x8b,0xee,0xce,0x0f]177vqshrunb.s16 q0, q7, #5178 179# CHECK: vqshrunt.s16 q0, q1, #7 @ encoding: [0x89,0xee,0xc2,0x1f]180# CHECK-NOFP: vqshrunt.s16 q0, q1, #7 @ encoding: [0x89,0xee,0xc2,0x1f]181vqshrunt.s16 q0, q1, #7182 183# CHECK: vqshrunb.s32 q0, q6, #4 @ encoding: [0x9c,0xee,0xcc,0x0f]184# CHECK-NOFP: vqshrunb.s32 q0, q6, #4 @ encoding: [0x9c,0xee,0xcc,0x0f]185vqshrunb.s32 q0, q6, #4186 187# CHECK: vqshrunt.s32 q0, q2, #10 @ encoding: [0x96,0xee,0xc4,0x1f]188# CHECK-NOFP: vqshrunt.s32 q0, q2, #10 @ encoding: [0x96,0xee,0xc4,0x1f]189vqshrunt.s32 q0, q2, #10190 191# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,8]192vqshrunt.s16 q0, q1, #9193 194# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,16]195vqshrunb.s32 q0, q6, #17196 197# CHECK: vqrshrnb.s16 q0, q7, #8 @ encoding: [0x88,0xee,0x4f,0x0f]198# CHECK-NOFP: vqrshrnb.s16 q0, q7, #8 @ encoding: [0x88,0xee,0x4f,0x0f]199vqrshrnb.s16 q0, q7, #8200 201# CHECK: vqrshrnt.u16 q1, q3, #4 @ encoding: [0x8c,0xfe,0x47,0x3f]202# CHECK-NOFP: vqrshrnt.u16 q1, q3, #4 @ encoding: [0x8c,0xfe,0x47,0x3f]203vqrshrnt.u16 q1, q3, #4204 205# CHECK: vqrshrnb.u32 q0, q1, #7 @ encoding: [0x99,0xfe,0x43,0x0f]206# CHECK-NOFP: vqrshrnb.u32 q0, q1, #7 @ encoding: [0x99,0xfe,0x43,0x0f]207vqrshrnb.u32 q0, q1, #7208 209# CHECK: vqrshrnt.s32 q0, q1, #11 @ encoding: [0x95,0xee,0x43,0x1f]210# CHECK-NOFP: vqrshrnt.s32 q0, q1, #11 @ encoding: [0x95,0xee,0x43,0x1f]211vqrshrnt.s32 q0, q1, #11212 213# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,8]214vqrshrnb.s16 q0, q7, #9215 216# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,16]217vqrshrnb.s32 q0, q7, #17218 219# CHECK: vqshrnb.s16 q0, q6, #5 @ encoding: [0x8b,0xee,0x4c,0x0f]220# CHECK-NOFP: vqshrnb.s16 q0, q6, #5 @ encoding: [0x8b,0xee,0x4c,0x0f]221vqshrnb.s16 q0, q6, #5222 223# CHECK: vqshrnt.s16 q0, q1, #4 @ encoding: [0x8c,0xee,0x42,0x1f]224# CHECK-NOFP: vqshrnt.s16 q0, q1, #4 @ encoding: [0x8c,0xee,0x42,0x1f]225vqshrnt.s16 q0, q1, #4226 227# CHECK: vqshrnb.u16 q0, q3, #7 @ encoding: [0x89,0xfe,0x46,0x0f]228# CHECK-NOFP: vqshrnb.u16 q0, q3, #7 @ encoding: [0x89,0xfe,0x46,0x0f]229vqshrnb.u16 q0, q3, #7230 231# CHECK: vqshrnt.u16 q0, q2, #8 @ encoding: [0x88,0xfe,0x44,0x1f]232# CHECK-NOFP: vqshrnt.u16 q0, q2, #8 @ encoding: [0x88,0xfe,0x44,0x1f]233vqshrnt.u16 q0, q2, #8234 235# CHECK: vqshrnt.s32 q1, q4, #3 @ encoding: [0x9d,0xee,0x48,0x3f]236# CHECK-NOFP: vqshrnt.s32 q1, q4, #3 @ encoding: [0x9d,0xee,0x48,0x3f]237vqshrnt.s32 q1, q4, #3238 239# CHECK: vqshrnb.u32 q0, q2, #14 @ encoding: [0x92,0xfe,0x44,0x0f]240# CHECK-NOFP: vqshrnb.u32 q0, q2, #14 @ encoding: [0x92,0xfe,0x44,0x0f]241vqshrnb.u32 q0, q2, #14242 243# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,8]244vqshrnb.s16 q0, q6, #9245 246# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,16]247vqshrnb.u32 q0, q6, #17248 249# CHECK: vshl.s8 q6, q6, q6 @ encoding: [0x0c,0xef,0x4c,0xc4]250# CHECK-NOFP: vshl.s8 q6, q6, q6 @ encoding: [0x0c,0xef,0x4c,0xc4]251vshl.s8 q6, q6, q6252 253# CHECK: vshl.s16 q0, q4, q2 @ encoding: [0x14,0xef,0x48,0x04]254# CHECK-NOFP: vshl.s16 q0, q4, q2 @ encoding: [0x14,0xef,0x48,0x04]255vshl.s16 q0, q4, q2256 257# CHECK: vshl.s32 q1, q1, q5 @ encoding: [0x2a,0xef,0x42,0x24]258# CHECK-NOFP: vshl.s32 q1, q1, q5 @ encoding: [0x2a,0xef,0x42,0x24]259vshl.s32 q1, q1, q5260 261# CHECK: vshl.u8 q1, q7, q2 @ encoding: [0x04,0xff,0x4e,0x24]262# CHECK-NOFP: vshl.u8 q1, q7, q2 @ encoding: [0x04,0xff,0x4e,0x24]263vshl.u8 q1, q7, q2264 265# CHECK: vshl.u16 q0, q4, q0 @ encoding: [0x10,0xff,0x48,0x04]266# CHECK-NOFP: vshl.u16 q0, q4, q0 @ encoding: [0x10,0xff,0x48,0x04]267vshl.u16 q0, q4, q0268 269# CHECK: vshl.u32 q2, q2, q4 @ encoding: [0x28,0xff,0x44,0x44]270# CHECK-NOFP: vshl.u32 q2, q2, q4 @ encoding: [0x28,0xff,0x44,0x44]271vshl.u32 q2, q2, q4272 273# CHECK: vqshl.s8 q0, q1, q6 @ encoding: [0x0c,0xef,0x52,0x04]274# CHECK-NOFP: vqshl.s8 q0, q1, q6 @ encoding: [0x0c,0xef,0x52,0x04]275vqshl.s8 q0, q1, q6276 277# CHECK: vqshl.s16 q4, q3, q7 @ encoding: [0x1e,0xef,0x56,0x84]278# CHECK-NOFP: vqshl.s16 q4, q3, q7 @ encoding: [0x1e,0xef,0x56,0x84]279vqshl.s16 q4, q3, q7280 281# CHECK: vqshl.s32 q0, q5, q5 @ encoding: [0x2a,0xef,0x5a,0x04]282# CHECK-NOFP: vqshl.s32 q0, q5, q5 @ encoding: [0x2a,0xef,0x5a,0x04]283vqshl.s32 q0, q5, q5284 285# CHECK: vqshl.u8 q0, q0, q6 @ encoding: [0x0c,0xff,0x50,0x04]286# CHECK-NOFP: vqshl.u8 q0, q0, q6 @ encoding: [0x0c,0xff,0x50,0x04]287vqshl.u8 q0, q0, q6288 289# CHECK: vqshl.u16 q0, q5, q4 @ encoding: [0x18,0xff,0x5a,0x04]290# CHECK-NOFP: vqshl.u16 q0, q5, q4 @ encoding: [0x18,0xff,0x5a,0x04]291vqshl.u16 q0, q5, q4292 293# CHECK: vqshl.u32 q1, q0, q4 @ encoding: [0x28,0xff,0x50,0x24]294# CHECK-NOFP: vqshl.u32 q1, q0, q4 @ encoding: [0x28,0xff,0x50,0x24]295vqshl.u32 q1, q0, q4296 297# CHECK: vqrshl.s8 q1, q6, q1 @ encoding: [0x02,0xef,0x5c,0x25]298# CHECK-NOFP: vqrshl.s8 q1, q6, q1 @ encoding: [0x02,0xef,0x5c,0x25]299vqrshl.s8 q1, q6, q1300 301# CHECK: vqrshl.s16 q2, q4, q6 @ encoding: [0x1c,0xef,0x58,0x45]302# CHECK-NOFP: vqrshl.s16 q2, q4, q6 @ encoding: [0x1c,0xef,0x58,0x45]303vqrshl.s16 q2, q4, q6304 305# CHECK: vqrshl.s32 q0, q0, q5 @ encoding: [0x2a,0xef,0x50,0x05]306# CHECK-NOFP: vqrshl.s32 q0, q0, q5 @ encoding: [0x2a,0xef,0x50,0x05]307vqrshl.s32 q0, q0, q5308 309# CHECK: vqrshl.u8 q0, q2, q1 @ encoding: [0x02,0xff,0x54,0x05]310# CHECK-NOFP: vqrshl.u8 q0, q2, q1 @ encoding: [0x02,0xff,0x54,0x05]311vqrshl.u8 q0, q2, q1312 313# CHECK: vqrshl.u16 q1, q6, q0 @ encoding: [0x10,0xff,0x5c,0x25]314# CHECK-NOFP: vqrshl.u16 q1, q6, q0 @ encoding: [0x10,0xff,0x5c,0x25]315vqrshl.u16 q1, q6, q0316 317# CHECK: vqrshl.u32 q0, q0, q0 @ encoding: [0x20,0xff,0x50,0x05]318# CHECK-NOFP: vqrshl.u32 q0, q0, q0 @ encoding: [0x20,0xff,0x50,0x05]319vqrshl.u32 q0, q0, q0320 321# CHECK: vrshl.s8 q0, q6, q4 @ encoding: [0x08,0xef,0x4c,0x05]322# CHECK-NOFP: vrshl.s8 q0, q6, q4 @ encoding: [0x08,0xef,0x4c,0x05]323vrshl.s8 q0, q6, q4324 325# CHECK: vrshl.s16 q1, q4, q7 @ encoding: [0x1e,0xef,0x48,0x25]326# CHECK-NOFP: vrshl.s16 q1, q4, q7 @ encoding: [0x1e,0xef,0x48,0x25]327vrshl.s16 q1, q4, q7328 329# CHECK: vrshl.s32 q1, q4, q4 @ encoding: [0x28,0xef,0x48,0x25]330# CHECK-NOFP: vrshl.s32 q1, q4, q4 @ encoding: [0x28,0xef,0x48,0x25]331vrshl.s32 q1, q4, q4332 333# CHECK: vrshl.u8 q0, q3, q5 @ encoding: [0x0a,0xff,0x46,0x05]334# CHECK-NOFP: vrshl.u8 q0, q3, q5 @ encoding: [0x0a,0xff,0x46,0x05]335vrshl.u8 q0, q3, q5336 337# CHECK: vrshl.u16 q5, q6, q5 @ encoding: [0x1a,0xff,0x4c,0xa5]338# CHECK-NOFP: vrshl.u16 q5, q6, q5 @ encoding: [0x1a,0xff,0x4c,0xa5]339vrshl.u16 q5, q6, q5340 341# CHECK: vrshl.u32 q1, q7, q3 @ encoding: [0x26,0xff,0x4e,0x25]342# CHECK-NOFP: vrshl.u32 q1, q7, q3 @ encoding: [0x26,0xff,0x4e,0x25]343vrshl.u32 q1, q7, q3344 345# CHECK: vsri.8 q0, q2, #3 @ encoding: [0x8d,0xff,0x54,0x04]346# CHECK-NOFP: vsri.8 q0, q2, #3 @ encoding: [0x8d,0xff,0x54,0x04]347vsri.8 q0, q2, #3348 349# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,8]350vsri.8 q0, q2, #9351 352# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,8]353vsri.8 q0, q2, #0354 355# CHECK: vsri.16 q0, q2, #5 @ encoding: [0x9b,0xff,0x54,0x04]356# CHECK-NOFP: vsri.16 q0, q2, #5 @ encoding: [0x9b,0xff,0x54,0x04]357vsri.16 q0, q2, #5358 359# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,16]360vsri.16 q0, q2, #17361 362# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,16]363vsri.16 q0, q2, #0364 365# CHECK: vsri.32 q0, q1, #15 @ encoding: [0xb1,0xff,0x52,0x04]366# CHECK-NOFP: vsri.32 q0, q1, #15 @ encoding: [0xb1,0xff,0x52,0x04]367vsri.32 q0, q1, #15368 369# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,32]370vsri.32 q0, q2, #33371 372# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,32]373vsri.32 q0, q2, #0374 375# CHECK: vsli.8 q0, q3, #3 @ encoding: [0x8b,0xff,0x56,0x05]376# CHECK-NOFP: vsli.8 q0, q3, #3 @ encoding: [0x8b,0xff,0x56,0x05]377vsli.8 q0, q3, #3378 379# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [0,7]380vsli.8 q0, q3, #8381 382# CHECK: vsli.16 q0, q1, #12 @ encoding: [0x9c,0xff,0x52,0x05]383# CHECK-NOFP: vsli.16 q0, q1, #12 @ encoding: [0x9c,0xff,0x52,0x05]384vsli.16 q0, q1, #12385 386# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [0,15]387vsli.16 q0, q3, #16388 389# CHECK: vsli.32 q0, q1, #8 @ encoding: [0xa8,0xff,0x52,0x05]390# CHECK-NOFP: vsli.32 q0, q1, #8 @ encoding: [0xa8,0xff,0x52,0x05]391vsli.32 q0, q1, #8392 393# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [0,31]394vsli.32 q0, q1, #32395 396# CHECK: vqshl.s8 q0, q4, #6 @ encoding: [0x8e,0xef,0x58,0x07]397# CHECK-NOFP: vqshl.s8 q0, q4, #6 @ encoding: [0x8e,0xef,0x58,0x07]398vqshl.s8 q0, q4, #6399 400# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [0,7]401vqshl.s8 q0, q4, #8402 403# CHECK: vqshl.u8 q0, q6, #6 @ encoding: [0x8e,0xff,0x5c,0x07]404# CHECK-NOFP: vqshl.u8 q0, q6, #6 @ encoding: [0x8e,0xff,0x5c,0x07]405vqshl.u8 q0, q6, #6406 407# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [0,7]408vqshl.u8 q0, q4, #8409 410# CHECK: vqshl.s16 q1, q2, #5 @ encoding: [0x95,0xef,0x54,0x27]411# CHECK-NOFP: vqshl.s16 q1, q2, #5 @ encoding: [0x95,0xef,0x54,0x27]412vqshl.s16 q1, q2, #5413 414# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [0,15]415vqshl.s16 q1, q2, #16416 417# CHECK: vqshl.u16 q0, q5, #3 @ encoding: [0x93,0xff,0x5a,0x07]418# CHECK-NOFP: vqshl.u16 q0, q5, #3 @ encoding: [0x93,0xff,0x5a,0x07]419vqshl.u16 q0, q5, #3420 421# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [0,15]422vqshl.u16 q1, q2, #16423 424# CHECK: vqshl.s32 q1, q3, #29 @ encoding: [0xbd,0xef,0x56,0x27]425# CHECK-NOFP: vqshl.s32 q1, q3, #29 @ encoding: [0xbd,0xef,0x56,0x27]426vqshl.s32 q1, q3, #29427 428# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [0,31]429vqshl.s32 q1, q3, #32430 431# CHECK: vqshl.u32 q0, q2, #19 @ encoding: [0xb3,0xff,0x54,0x07]432# CHECK-NOFP: vqshl.u32 q0, q2, #19 @ encoding: [0xb3,0xff,0x54,0x07]433vqshl.u32 q0, q2, #19434 435# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [0,31]436vqshl.u32 q0, q2, #32437 438# CHECK: vqshlu.s8 q0, q1, #0 @ encoding: [0x88,0xff,0x52,0x06]439# CHECK-NOFP: vqshlu.s8 q0, q1, #0 @ encoding: [0x88,0xff,0x52,0x06]440vqshlu.s8 q0, q1, #0441 442# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [0,7]443vqshlu.s8 q0, q1, #8444 445# CHECK: vqshlu.s16 q2, q1, #12 @ encoding: [0x9c,0xff,0x52,0x46]446# CHECK-NOFP: vqshlu.s16 q2, q1, #12 @ encoding: [0x9c,0xff,0x52,0x46]447vqshlu.s16 q2, q1, #12448 449# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [0,15]450vqshlu.s16 q0, q1, #16451 452# CHECK: vqshlu.s32 q0, q4, #26 @ encoding: [0xba,0xff,0x58,0x06]453# CHECK-NOFP: vqshlu.s32 q0, q4, #26 @ encoding: [0xba,0xff,0x58,0x06]454vqshlu.s32 q0, q4, #26455 456# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [0,31]457vqshlu.s32 q0, q1, #32458 459# CHECK: vrshr.s8 q1, q3, #7 @ encoding: [0x89,0xef,0x56,0x22]460# CHECK-NOFP: vrshr.s8 q1, q3, #7 @ encoding: [0x89,0xef,0x56,0x22]461vrshr.s8 q1, q3, #7462 463# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,8]464vrshr.s8 q1, q3, #9465 466# CHECK: vrshr.u8 q1, q3, #2 @ encoding: [0x8e,0xff,0x56,0x22]467# CHECK-NOFP: vrshr.u8 q1, q3, #2 @ encoding: [0x8e,0xff,0x56,0x22]468vrshr.u8 q1, q3, #2469 470# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,8]471vrshr.u8 q1, q3, #9472 473# CHECK: vrshr.s16 q0, q1, #10 @ encoding: [0x96,0xef,0x52,0x02]474# CHECK-NOFP: vrshr.s16 q0, q1, #10 @ encoding: [0x96,0xef,0x52,0x02]475vrshr.s16 q0, q1, #10476 477# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,16]478vrshr.s16 q0, q1, #17479 480# CHECK: vrshr.u16 q0, q5, #12 @ encoding: [0x94,0xff,0x5a,0x02]481# CHECK-NOFP: vrshr.u16 q0, q5, #12 @ encoding: [0x94,0xff,0x5a,0x02]482vrshr.u16 q0, q5, #12483 484# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,16]485vrshr.u16 q0, q5, #20486 487# CHECK: vrshr.s32 q0, q5, #23 @ encoding: [0xa9,0xef,0x5a,0x02]488# CHECK-NOFP: vrshr.s32 q0, q5, #23 @ encoding: [0xa9,0xef,0x5a,0x02]489vrshr.s32 q0, q5, #23490 491# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,32]492vrshr.s32 q0, q5, #33493 494# CHECK: vrshr.u32 q0, q1, #30 @ encoding: [0xa2,0xff,0x52,0x02]495# CHECK-NOFP: vrshr.u32 q0, q1, #30 @ encoding: [0xa2,0xff,0x52,0x02]496vrshr.u32 q0, q1, #30497 498# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,32]499vrshr.u32 q0, q1, #55500 501# CHECK: vshr.s8 q0, q7, #4 @ encoding: [0x8c,0xef,0x5e,0x00]502# CHECK-NOFP: vshr.s8 q0, q7, #4 @ encoding: [0x8c,0xef,0x5e,0x00]503vshr.s8 q0, q7, #4504 505# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,8]506vshr.s8 q0, q7, #9507 508# CHECK: vshr.u8 q0, q2, #5 @ encoding: [0x8b,0xff,0x54,0x00]509# CHECK-NOFP: vshr.u8 q0, q2, #5 @ encoding: [0x8b,0xff,0x54,0x00]510vshr.u8 q0, q2, #5511 512# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,8]513vshr.u8 q0, q2, #9514 515# CHECK: vshr.s16 q0, q3, #16 @ encoding: [0x90,0xef,0x56,0x00]516# CHECK-NOFP: vshr.s16 q0, q3, #16 @ encoding: [0x90,0xef,0x56,0x00]517vshr.s16 q0, q3, #16518 519# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,16]520vshr.s16 q0, q2, #17521 522# CHECK: vshr.u16 q7, q6, #8 @ encoding: [0x98,0xff,0x5c,0xe0]523# CHECK-NOFP: vshr.u16 q7, q6, #8 @ encoding: [0x98,0xff,0x5c,0xe0]524vshr.u16 q7, q6, #8525 526# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,16]527vshr.u16 q7, q6, #20528 529# CHECK: vshr.s32 q0, q6, #24 @ encoding: [0xa8,0xef,0x5c,0x00]530# CHECK-NOFP: vshr.s32 q0, q6, #24 @ encoding: [0xa8,0xef,0x5c,0x00]531vshr.s32 q0, q6, #24532 533# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,32]534vshr.s32 q0, q6, #33535 536# CHECK: vshr.u32 q2, q5, #30 @ encoding: [0xa2,0xff,0x5a,0x40]537# CHECK-NOFP: vshr.u32 q2, q5, #30 @ encoding: [0xa2,0xff,0x5a,0x40]538vshr.u32 q2, q5, #30539 540# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [1,32]541vshr.u32 q2, q5, #33542 543# CHECK: vshl.i8 q0, q6, #6 @ encoding: [0x8e,0xef,0x5c,0x05]544# CHECK-NOFP: vshl.i8 q0, q6, #6 @ encoding: [0x8e,0xef,0x5c,0x05]545vshl.i8 q0, q6, #6546 547# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [0,7]548vshl.i8 q0, q6, #8549 550# CHECK: vshl.i16 q1, q0, #12 @ encoding: [0x9c,0xef,0x50,0x25]551# CHECK-NOFP: vshl.i16 q1, q0, #12 @ encoding: [0x9c,0xef,0x50,0x25]552vshl.i16 q1, q0, #12553 554# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [0,15]555vshl.i16 q1, q0, #16556 557# CHECK: vshl.i32 q2, q2, #26 @ encoding: [0xba,0xef,0x54,0x45]558# CHECK-NOFP: vshl.i32 q2, q2, #26 @ encoding: [0xba,0xef,0x54,0x45]559vshl.i32 q2, q2, #26560 561# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an immediate in the range [0,31]562vshl.i32 q2, q2, #33563 564vshllt.s8 q0, q1, #1565# CHECK: vshllt.s8 q0, q1, #1 @ encoding: [0xa9,0xee,0x42,0x1f]566# CHECK-NOFP: vshllt.s8 q0, q1, #1 @ encoding: [0xa9,0xee,0x42,0x1f]567 568vpste569vshlltt.s16 q0, q1, #4570vshllbe.u16 q0, q1, #8571# CHECK: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]572# CHECK-NOFP: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]573# CHECK: vshlltt.s16 q0, q1, #4 @ encoding: [0xb4,0xee,0x42,0x1f]574# CHECK-NOFP: vshlltt.s16 q0, q1, #4 @ encoding: [0xb4,0xee,0x42,0x1f]575# CHECK: vshllbe.u16 q0, q1, #8 @ encoding: [0xb8,0xfe,0x42,0x0f]576# CHECK-NOFP: vshllbe.u16 q0, q1, #8 @ encoding: [0xb8,0xfe,0x42,0x0f]577