627 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: vsub.i8 q0, q3, r3 @ encoding: [0x07,0xee,0x43,0x1f]8# CHECK-NOFP: vsub.i8 q0, q3, r3 @ encoding: [0x07,0xee,0x43,0x1f]9vsub.i8 q0, q3, r310 11# CHECK: vsub.i16 q0, q7, lr @ encoding: [0x1f,0xee,0x4e,0x1f]12# CHECK-NOFP: vsub.i16 q0, q7, lr @ encoding: [0x1f,0xee,0x4e,0x1f]13vsub.i16 q0, q7, lr14 15# CHECK: vsub.i32 q1, q5, r10 @ encoding: [0x2b,0xee,0x4a,0x3f]16# CHECK-NOFP: vsub.i32 q1, q5, r10 @ encoding: [0x2b,0xee,0x4a,0x3f]17vsub.i32 q1, q5, r1018 19# CHECK: vadd.i8 q1, q4, r7 @ encoding: [0x09,0xee,0x47,0x2f]20# CHECK-NOFP: vadd.i8 q1, q4, r7 @ encoding: [0x09,0xee,0x47,0x2f]21vadd.i8 q1, q4, r722 23# CHECK: vadd.i16 q0, q6, r11 @ encoding: [0x1d,0xee,0x4b,0x0f]24# CHECK-NOFP: vadd.i16 q0, q6, r11 @ encoding: [0x1d,0xee,0x4b,0x0f]25vadd.i16 q0, q6, r1126 27# CHECK: vadd.i32 q0, q1, r6 @ encoding: [0x23,0xee,0x46,0x0f]28# CHECK-NOFP: vadd.i32 q0, q1, r6 @ encoding: [0x23,0xee,0x46,0x0f]29vadd.i32 q0, q1, r630 31# CHECK: vqsub.s8 q2, q2, r8 @ encoding: [0x04,0xee,0x68,0x5f]32# CHECK-NOFP: vqsub.s8 q2, q2, r8 @ encoding: [0x04,0xee,0x68,0x5f]33vqsub.s8 q2, q2, r834 35# CHECK: vqsub.s16 q1, q4, r0 @ encoding: [0x18,0xee,0x60,0x3f]36# CHECK-NOFP: vqsub.s16 q1, q4, r0 @ encoding: [0x18,0xee,0x60,0x3f]37vqsub.s16 q1, q4, r038 39# CHECK: vqsub.s32 q0, q2, r0 @ encoding: [0x24,0xee,0x60,0x1f]40# CHECK-NOFP: vqsub.s32 q0, q2, r0 @ encoding: [0x24,0xee,0x60,0x1f]41vqsub.s32 q0, q2, r042 43# CHECK: vqsub.u8 q0, q1, r2 @ encoding: [0x02,0xfe,0x62,0x1f]44# CHECK-NOFP: vqsub.u8 q0, q1, r2 @ encoding: [0x02,0xfe,0x62,0x1f]45vqsub.u8 q0, q1, r246 47# CHECK: vqsub.u16 q0, q2, r6 @ encoding: [0x14,0xfe,0x66,0x1f]48# CHECK-NOFP: vqsub.u16 q0, q2, r6 @ encoding: [0x14,0xfe,0x66,0x1f]49vqsub.u16 q0, q2, r650 51# CHECK: vqsub.u32 q0, q2, r2 @ encoding: [0x24,0xfe,0x62,0x1f]52# CHECK-NOFP: vqsub.u32 q0, q2, r2 @ encoding: [0x24,0xfe,0x62,0x1f]53vqsub.u32 q0, q2, r254 55# CHECK: vqadd.s8 q0, q6, r1 @ encoding: [0x0c,0xee,0x61,0x0f]56# CHECK-NOFP: vqadd.s8 q0, q6, r1 @ encoding: [0x0c,0xee,0x61,0x0f]57vqadd.s8 q0, q6, r158 59# CHECK: vqadd.s16 q3, q4, r2 @ encoding: [0x18,0xee,0x62,0x6f]60# CHECK-NOFP: vqadd.s16 q3, q4, r2 @ encoding: [0x18,0xee,0x62,0x6f]61vqadd.s16 q3, q4, r262 63# CHECK: vqadd.s32 q0, q5, r11 @ encoding: [0x2a,0xee,0x6b,0x0f]64# CHECK-NOFP: vqadd.s32 q0, q5, r11 @ encoding: [0x2a,0xee,0x6b,0x0f]65vqadd.s32 q0, q5, r1166 67# CHECK: vqadd.u8 q0, q1, r8 @ encoding: [0x02,0xfe,0x68,0x0f]68# CHECK-NOFP: vqadd.u8 q0, q1, r8 @ encoding: [0x02,0xfe,0x68,0x0f]69vqadd.u8 q0, q1, r870 71# CHECK: vqadd.u16 q0, q5, r9 @ encoding: [0x1a,0xfe,0x69,0x0f]72# CHECK-NOFP: vqadd.u16 q0, q5, r9 @ encoding: [0x1a,0xfe,0x69,0x0f]73vqadd.u16 q0, q5, r974 75# CHECK: vqadd.u32 q0, q0, r7 @ encoding: [0x20,0xfe,0x67,0x0f]76# CHECK-NOFP: vqadd.u32 q0, q0, r7 @ encoding: [0x20,0xfe,0x67,0x0f]77vqadd.u32 q0, q0, r778 79# CHECK: vqdmullb.s16 q0, q1, r6 @ encoding: [0x32,0xee,0x66,0x0f]80# CHECK-NOFP: vqdmullb.s16 q0, q1, r6 @ encoding: [0x32,0xee,0x66,0x0f]81vqdmullb.s16 q0, q1, r682 83# CHECK: vqdmullb.s32 q0, q3, q7 @ encoding: [0x36,0xfe,0x0f,0x0f]84# CHECK-NOFP: vqdmullb.s32 q0, q3, q7 @ encoding: [0x36,0xfe,0x0f,0x0f]85vqdmullb.s32 q0, q3, q786 87# CHECK: vqdmullt.s16 q0, q1, r0 @ encoding: [0x32,0xee,0x60,0x1f]88# CHECK-NOFP: vqdmullt.s16 q0, q1, r0 @ encoding: [0x32,0xee,0x60,0x1f]89vqdmullt.s16 q0, q1, r090 91# CHECK: vqdmullt.s32 q0, q4, r5 @ encoding: [0x38,0xfe,0x65,0x1f]92# CHECK-NOFP: vqdmullt.s32 q0, q4, r5 @ encoding: [0x38,0xfe,0x65,0x1f]93vqdmullt.s32 q0, q4, r594 95# CHECK: vsub.f16 q0, q3, r7 @ encoding: [0x36,0xfe,0x47,0x1f]96# CHECK-NOFP-NOT: vsub.f16 q0, q3, r7 @ encoding: [0x36,0xfe,0x47,0x1f]97vsub.f16 q0, q3, r798 99# CHECK: vsub.f32 q1, q1, r10 @ encoding: [0x32,0xee,0x4a,0x3f]100# CHECK-NOFP-NOT: vsub.f32 q1, q1, r10 @ encoding: [0x32,0xee,0x4a,0x3f]101vsub.f32 q1, q1, r10102 103# CHECK: vadd.f16 q0, q1, lr @ encoding: [0x32,0xfe,0x4e,0x0f]104# CHECK-NOFP-NOT: vadd.f16 q0, q1, lr @ encoding: [0x32,0xfe,0x4e,0x0f]105vadd.f16 q0, q1, lr106 107# CHECK: vadd.f32 q1, q4, r4 @ encoding: [0x38,0xee,0x44,0x2f]108# CHECK-NOFP-NOT: vadd.f32 q1, q4, r4 @ encoding: [0x38,0xee,0x44,0x2f]109vadd.f32 q1, q4, r4110 111# CHECK: vhsub.s8 q0, q3, lr @ encoding: [0x06,0xee,0x4e,0x1f]112# CHECK-NOFP: vhsub.s8 q0, q3, lr @ encoding: [0x06,0xee,0x4e,0x1f]113vhsub.s8 q0, q3, lr114 115# CHECK: vhsub.s16 q0, q0, r6 @ encoding: [0x10,0xee,0x46,0x1f]116# CHECK-NOFP: vhsub.s16 q0, q0, r6 @ encoding: [0x10,0xee,0x46,0x1f]117vhsub.s16 q0, q0, r6118 119# CHECK: vhsub.s32 q1, q2, r7 @ encoding: [0x24,0xee,0x47,0x3f]120# CHECK-NOFP: vhsub.s32 q1, q2, r7 @ encoding: [0x24,0xee,0x47,0x3f]121vhsub.s32 q1, q2, r7122 123# CHECK: vhsub.u8 q1, q6, r5 @ encoding: [0x0c,0xfe,0x45,0x3f]124# CHECK-NOFP: vhsub.u8 q1, q6, r5 @ encoding: [0x0c,0xfe,0x45,0x3f]125vhsub.u8 q1, q6, r5126 127# CHECK: vhsub.u16 q0, q4, r10 @ encoding: [0x18,0xfe,0x4a,0x1f]128# CHECK-NOFP: vhsub.u16 q0, q4, r10 @ encoding: [0x18,0xfe,0x4a,0x1f]129vhsub.u16 q0, q4, r10130 131# CHECK: vhsub.u32 q0, q4, r12 @ encoding: [0x28,0xfe,0x4c,0x1f]132# CHECK-NOFP: vhsub.u32 q0, q4, r12 @ encoding: [0x28,0xfe,0x4c,0x1f]133vhsub.u32 q0, q4, r12134 135# CHECK: vhadd.s8 q0, q2, r1 @ encoding: [0x04,0xee,0x41,0x0f]136# CHECK-NOFP: vhadd.s8 q0, q2, r1 @ encoding: [0x04,0xee,0x41,0x0f]137vhadd.s8 q0, q2, r1138 139# CHECK: vhadd.s16 q0, q2, r1 @ encoding: [0x14,0xee,0x41,0x0f]140# CHECK-NOFP: vhadd.s16 q0, q2, r1 @ encoding: [0x14,0xee,0x41,0x0f]141vhadd.s16 q0, q2, r1142 143# CHECK: vhadd.s32 q0, q0, r10 @ encoding: [0x20,0xee,0x4a,0x0f]144# CHECK-NOFP: vhadd.s32 q0, q0, r10 @ encoding: [0x20,0xee,0x4a,0x0f]145vhadd.s32 q0, q0, r10146 147# CHECK: vhadd.u8 q0, q5, lr @ encoding: [0x0a,0xfe,0x4e,0x0f]148# CHECK-NOFP: vhadd.u8 q0, q5, lr @ encoding: [0x0a,0xfe,0x4e,0x0f]149vhadd.u8 q0, q5, lr150 151# CHECK: vhadd.u16 q1, q2, r2 @ encoding: [0x14,0xfe,0x42,0x2f]152# CHECK-NOFP: vhadd.u16 q1, q2, r2 @ encoding: [0x14,0xfe,0x42,0x2f]153vhadd.u16 q1, q2, r2154 155# CHECK: vhadd.u32 q0, q2, r11 @ encoding: [0x24,0xfe,0x4b,0x0f]156# CHECK-NOFP: vhadd.u32 q0, q2, r11 @ encoding: [0x24,0xfe,0x4b,0x0f]157vhadd.u32 q0, q2, r11158 159# CHECK: vqrshl.s8 q0, r0 @ encoding: [0x33,0xee,0xe0,0x1e]160# CHECK-NOFP: vqrshl.s8 q0, r0 @ encoding: [0x33,0xee,0xe0,0x1e]161vqrshl.s8 q0, r0162 163# CHECK: vqrshl.s16 q0, r3 @ encoding: [0x37,0xee,0xe3,0x1e]164# CHECK-NOFP: vqrshl.s16 q0, r3 @ encoding: [0x37,0xee,0xe3,0x1e]165vqrshl.s16 q0, r3166 167# CHECK: vqrshl.s32 q0, lr @ encoding: [0x3b,0xee,0xee,0x1e]168# CHECK-NOFP: vqrshl.s32 q0, lr @ encoding: [0x3b,0xee,0xee,0x1e]169vqrshl.s32 q0, lr170 171# CHECK: vqrshl.u8 q0, r0 @ encoding: [0x33,0xfe,0xe0,0x1e]172# CHECK-NOFP: vqrshl.u8 q0, r0 @ encoding: [0x33,0xfe,0xe0,0x1e]173vqrshl.u8 q0, r0174 175# CHECK: vqrshl.u16 q0, r2 @ encoding: [0x37,0xfe,0xe2,0x1e]176# CHECK-NOFP: vqrshl.u16 q0, r2 @ encoding: [0x37,0xfe,0xe2,0x1e]177vqrshl.u16 q0, r2178 179# CHECK: vqrshl.u32 q0, r3 @ encoding: [0x3b,0xfe,0xe3,0x1e]180# CHECK-NOFP: vqrshl.u32 q0, r3 @ encoding: [0x3b,0xfe,0xe3,0x1e]181vqrshl.u32 q0, r3182 183# CHECK: vqshl.s8 q0, r0 @ encoding: [0x31,0xee,0xe0,0x1e]184# CHECK-NOFP: vqshl.s8 q0, r0 @ encoding: [0x31,0xee,0xe0,0x1e]185vqshl.s8 q0, r0186 187# CHECK: vqshl.s16 q1, r1 @ encoding: [0x35,0xee,0xe1,0x3e]188# CHECK-NOFP: vqshl.s16 q1, r1 @ encoding: [0x35,0xee,0xe1,0x3e]189vqshl.s16 q1, r1190 191# CHECK: vqshl.s32 q0, r3 @ encoding: [0x39,0xee,0xe3,0x1e]192# CHECK-NOFP: vqshl.s32 q0, r3 @ encoding: [0x39,0xee,0xe3,0x1e]193vqshl.s32 q0, r3194 195# CHECK: vqshl.u8 q0, r1 @ encoding: [0x31,0xfe,0xe1,0x1e]196# CHECK-NOFP: vqshl.u8 q0, r1 @ encoding: [0x31,0xfe,0xe1,0x1e]197vqshl.u8 q0, r1198 199# CHECK: vqshl.u16 q0, r11 @ encoding: [0x35,0xfe,0xeb,0x1e]200# CHECK-NOFP: vqshl.u16 q0, r11 @ encoding: [0x35,0xfe,0xeb,0x1e]201vqshl.u16 q0, r11202 203# CHECK: vqshl.u32 q0, lr @ encoding: [0x39,0xfe,0xee,0x1e]204# CHECK-NOFP: vqshl.u32 q0, lr @ encoding: [0x39,0xfe,0xee,0x1e]205vqshl.u32 q0, lr206 207# CHECK: vrshl.s8 q0, r6 @ encoding: [0x33,0xee,0x66,0x1e]208# CHECK-NOFP: vrshl.s8 q0, r6 @ encoding: [0x33,0xee,0x66,0x1e]209vrshl.s8 q0, r6210 211# CHECK: vrshl.s16 q0, lr @ encoding: [0x37,0xee,0x6e,0x1e]212# CHECK-NOFP: vrshl.s16 q0, lr @ encoding: [0x37,0xee,0x6e,0x1e]213vrshl.s16 q0, lr214 215# CHECK: vrshl.s32 q0, r4 @ encoding: [0x3b,0xee,0x64,0x1e]216# CHECK-NOFP: vrshl.s32 q0, r4 @ encoding: [0x3b,0xee,0x64,0x1e]217vrshl.s32 q0, r4218 219# CHECK: vrshl.u8 q0, r0 @ encoding: [0x33,0xfe,0x60,0x1e]220# CHECK-NOFP: vrshl.u8 q0, r0 @ encoding: [0x33,0xfe,0x60,0x1e]221vrshl.u8 q0, r0222 223# CHECK: vrshl.u16 q0, r10 @ encoding: [0x37,0xfe,0x6a,0x1e]224# CHECK-NOFP: vrshl.u16 q0, r10 @ encoding: [0x37,0xfe,0x6a,0x1e]225vrshl.u16 q0, r10226 227# CHECK: vrshl.u32 q0, r1 @ encoding: [0x3b,0xfe,0x61,0x1e]228# CHECK-NOFP: vrshl.u32 q0, r1 @ encoding: [0x3b,0xfe,0x61,0x1e]229vrshl.u32 q0, r1230 231# CHECK: vshl.s8 q0, lr @ encoding: [0x31,0xee,0x6e,0x1e]232# CHECK-NOFP: vshl.s8 q0, lr @ encoding: [0x31,0xee,0x6e,0x1e]233vshl.s8 q0, lr234 235# CHECK: vshl.s16 q0, lr @ encoding: [0x35,0xee,0x6e,0x1e]236# CHECK-NOFP: vshl.s16 q0, lr @ encoding: [0x35,0xee,0x6e,0x1e]237vshl.s16 q0, lr238 239# CHECK: vshl.s32 q0, r1 @ encoding: [0x39,0xee,0x61,0x1e]240# CHECK-NOFP: vshl.s32 q0, r1 @ encoding: [0x39,0xee,0x61,0x1e]241vshl.s32 q0, r1242 243# CHECK: vshl.u8 q0, r10 @ encoding: [0x31,0xfe,0x6a,0x1e]244# CHECK-NOFP: vshl.u8 q0, r10 @ encoding: [0x31,0xfe,0x6a,0x1e]245vshl.u8 q0, r10246 247# CHECK: vshl.u16 q1, r10 @ encoding: [0x35,0xfe,0x6a,0x3e]248# CHECK-NOFP: vshl.u16 q1, r10 @ encoding: [0x35,0xfe,0x6a,0x3e]249vshl.u16 q1, r10250 251# CHECK: vshl.u32 q0, r12 @ encoding: [0x39,0xfe,0x6c,0x1e]252# CHECK-NOFP: vshl.u32 q0, r12 @ encoding: [0x39,0xfe,0x6c,0x1e]253vshl.u32 q0, r12254 255# CHECK: vbrsr.8 q0, q4, r8 @ encoding: [0x09,0xfe,0x68,0x1e]256# CHECK-NOFP: vbrsr.8 q0, q4, r8 @ encoding: [0x09,0xfe,0x68,0x1e]257vbrsr.8 q0, q4, r8258 259# CHECK: vbrsr.16 q0, q1, r1 @ encoding: [0x13,0xfe,0x61,0x1e]260# CHECK-NOFP: vbrsr.16 q0, q1, r1 @ encoding: [0x13,0xfe,0x61,0x1e]261vbrsr.16 q0, q1, r1262 263# CHECK: vbrsr.32 q0, q6, r0 @ encoding: [0x2d,0xfe,0x60,0x1e]264# CHECK-NOFP: vbrsr.32 q0, q6, r0 @ encoding: [0x2d,0xfe,0x60,0x1e]265vbrsr.32 q0, q6, r0266 267# CHECK: vmul.i8 q0, q0, r12 @ encoding: [0x01,0xee,0x6c,0x1e]268# CHECK-NOFP: vmul.i8 q0, q0, r12 @ encoding: [0x01,0xee,0x6c,0x1e]269vmul.i8 q0, q0, r12270 271# CHECK: vmul.i16 q0, q4, r7 @ encoding: [0x19,0xee,0x67,0x1e]272# CHECK-NOFP: vmul.i16 q0, q4, r7 @ encoding: [0x19,0xee,0x67,0x1e]273vmul.i16 q0, q4, r7274 275# CHECK: vmul.i32 q0, q1, r11 @ encoding: [0x23,0xee,0x6b,0x1e]276# CHECK-NOFP: vmul.i32 q0, q1, r11 @ encoding: [0x23,0xee,0x6b,0x1e]277vmul.i32 q0, q1, r11278 279# CHECK: vmul.f16 q0, q0, r10 @ encoding: [0x31,0xfe,0x6a,0x0e]280# CHECK-NOFP-NOT: vmul.f16 q0, q0, r10 @ encoding: [0x31,0xfe,0x6a,0x0e]281vmul.f16 q0, q0, r10282 283# CHECK: vmul.f32 q0, q1, r7 @ encoding: [0x33,0xee,0x67,0x0e]284# CHECK-NOFP-NOT: vmul.f32 q0, q1, r7 @ encoding: [0x33,0xee,0x67,0x0e]285vmul.f32 q0, q1, r7286 287# CHECK: vqdmulh.s8 q0, q1, r6 @ encoding: [0x03,0xee,0x66,0x0e]288# CHECK-NOFP: vqdmulh.s8 q0, q1, r6 @ encoding: [0x03,0xee,0x66,0x0e]289vqdmulh.s8 q0, q1, r6290 291# CHECK: vqdmulh.s16 q0, q2, r2 @ encoding: [0x15,0xee,0x62,0x0e]292# CHECK-NOFP: vqdmulh.s16 q0, q2, r2 @ encoding: [0x15,0xee,0x62,0x0e]293vqdmulh.s16 q0, q2, r2294 295# CHECK: vqdmulh.s32 q1, q3, r8 @ encoding: [0x27,0xee,0x68,0x2e]296# CHECK-NOFP: vqdmulh.s32 q1, q3, r8 @ encoding: [0x27,0xee,0x68,0x2e]297vqdmulh.s32 q1, q3, r8298 299# CHECK: vqrdmulh.s8 q0, q2, r6 @ encoding: [0x05,0xfe,0x66,0x0e]300# CHECK-NOFP: vqrdmulh.s8 q0, q2, r6 @ encoding: [0x05,0xfe,0x66,0x0e]301vqrdmulh.s8 q0, q2, r6302 303# CHECK: vqrdmulh.s16 q0, q0, r2 @ encoding: [0x11,0xfe,0x62,0x0e]304# CHECK-NOFP: vqrdmulh.s16 q0, q0, r2 @ encoding: [0x11,0xfe,0x62,0x0e]305vqrdmulh.s16 q0, q0, r2306 307# CHECK: vqrdmulh.s32 q0, q0, r2 @ encoding: [0x21,0xfe,0x62,0x0e]308# CHECK-NOFP: vqrdmulh.s32 q0, q0, r2 @ encoding: [0x21,0xfe,0x62,0x0e]309vqrdmulh.s32 q0, q0, r2310 311# CHECK: vfmas.f16 q0, q0, r12 @ encoding: [0x31,0xfe,0x4c,0x1e]312# CHECK-NOFP-NOT: vfmas.f16 q0, q0, r12 @ encoding: [0x31,0xfe,0x4c,0x1e]313vfmas.f16 q0, q0, r12314 315# CHECK: vfmas.f32 q0, q3, lr @ encoding: [0x37,0xee,0x4e,0x1e]316# CHECK-NOFP-NOT: vfmas.f32 q0, q3, lr @ encoding: [0x37,0xee,0x4e,0x1e]317vfmas.f32 q0, q3, lr318 319# CHECK: vmlas.i8 q0, q0, r6 @ encoding: [0x01,0xee,0x46,0x1e]320# CHECK-NOFP: vmlas.i8 q0, q0, r6 @ encoding: [0x01,0xee,0x46,0x1e]321vmlas.i8 q0, q0, r6322 323# CHECK: vmlas.i16 q0, q2, r9 @ encoding: [0x15,0xee,0x49,0x1e]324# CHECK-NOFP: vmlas.i16 q0, q2, r9 @ encoding: [0x15,0xee,0x49,0x1e]325vmlas.i16 q0, q2, r9326 327# CHECK: vmlas.i32 q0, q7, r6 @ encoding: [0x2f,0xee,0x46,0x1e]328# CHECK-NOFP: vmlas.i32 q0, q7, r6 @ encoding: [0x2f,0xee,0x46,0x1e]329vmlas.i32 q0, q7, r6330 331# CHECK: vmlas.i8 q0, q0, r6 @ encoding: [0x01,0xee,0x46,0x1e]332# CHECK-NOFP: vmlas.i8 q0, q0, r6 @ encoding: [0x01,0xee,0x46,0x1e]333vmlas.s8 q0, q0, r6334 335# CHECK: vmlas.i16 q0, q2, r9 @ encoding: [0x15,0xee,0x49,0x1e]336# CHECK-NOFP: vmlas.i16 q0, q2, r9 @ encoding: [0x15,0xee,0x49,0x1e]337vmlas.s16 q0, q2, r9338 339# CHECK: vmlas.i32 q0, q7, r6 @ encoding: [0x2f,0xee,0x46,0x1e]340# CHECK-NOFP: vmlas.i32 q0, q7, r6 @ encoding: [0x2f,0xee,0x46,0x1e]341vmlas.s32 q0, q7, r6342 343# CHECK: vmlas.i8 q0, q5, lr @ encoding: [0x0b,0xee,0x4e,0x1e]344# CHECK-NOFP: vmlas.i8 q0, q5, lr @ encoding: [0x0b,0xee,0x4e,0x1e]345vmlas.u8 q0, q5, lr346 347# CHECK: vmlas.i16 q0, q3, r12 @ encoding: [0x17,0xee,0x4c,0x1e]348# CHECK-NOFP: vmlas.i16 q0, q3, r12 @ encoding: [0x17,0xee,0x4c,0x1e]349vmlas.u16 q0, q3, r12350 351# CHECK: vmlas.i32 q1, q1, r11 @ encoding: [0x23,0xee,0x4b,0x3e]352# CHECK-NOFP: vmlas.i32 q1, q1, r11 @ encoding: [0x23,0xee,0x4b,0x3e]353vmlas.u32 q1, q1, r11354 355# CHECK: vfma.f16 q1, q1, r6 @ encoding: [0x33,0xfe,0x46,0x2e]356# CHECK-NOFP-NOT: vfma.f16 q1, q1, r6 @ encoding: [0x33,0xfe,0x46,0x2e]357vfma.f16 q1, q1, r6358 359# CHECK: vfmas.f32 q7, q4, r6 @ encoding: [0x39,0xee,0x46,0xfe]360# CHECK-NOFP-NOT: vfmas.f32 q7, q4, r6 @ encoding: [0x39,0xee,0x46,0xfe]361vfmas.f32 q7, q4, r6362 363# CHECK: vmla.i8 q0, q3, r8 @ encoding: [0x07,0xee,0x48,0x0e]364# CHECK-NOFP: vmla.i8 q0, q3, r8 @ encoding: [0x07,0xee,0x48,0x0e]365vmla.i8 q0, q3, r8366 367# CHECK: vmla.i16 q1, q3, r10 @ encoding: [0x17,0xee,0x4a,0x2e]368# CHECK-NOFP: vmla.i16 q1, q3, r10 @ encoding: [0x17,0xee,0x4a,0x2e]369vmla.i16 q1, q3, r10370 371# CHECK: vmla.i32 q1, q3, r1 @ encoding: [0x27,0xee,0x41,0x2e]372# CHECK-NOFP: vmla.i32 q1, q3, r1 @ encoding: [0x27,0xee,0x41,0x2e]373vmla.i32 q1, q3, r1374 375# CHECK: vmla.i8 q0, q3, r8 @ encoding: [0x07,0xee,0x48,0x0e]376# CHECK-NOFP: vmla.i8 q0, q3, r8 @ encoding: [0x07,0xee,0x48,0x0e]377vmla.s8 q0, q3, r8378 379# CHECK: vmla.i16 q1, q3, r10 @ encoding: [0x17,0xee,0x4a,0x2e]380# CHECK-NOFP: vmla.i16 q1, q3, r10 @ encoding: [0x17,0xee,0x4a,0x2e]381vmla.s16 q1, q3, r10382 383# CHECK: vmla.i32 q1, q3, r1 @ encoding: [0x27,0xee,0x41,0x2e]384# CHECK-NOFP: vmla.i32 q1, q3, r1 @ encoding: [0x27,0xee,0x41,0x2e]385vmla.s32 q1, q3, r1386 387# CHECK: vmla.i8 q0, q7, r10 @ encoding: [0x0f,0xee,0x4a,0x0e]388# CHECK-NOFP: vmla.i8 q0, q7, r10 @ encoding: [0x0f,0xee,0x4a,0x0e]389vmla.u8 q0, q7, r10390 391# CHECK: vmla.i16 q0, q0, r7 @ encoding: [0x11,0xee,0x47,0x0e]392# CHECK-NOFP: vmla.i16 q0, q0, r7 @ encoding: [0x11,0xee,0x47,0x0e]393vmla.u16 q0, q0, r7394 395# CHECK: vmla.i32 q1, q6, r10 @ encoding: [0x2d,0xee,0x4a,0x2e]396# CHECK-NOFP: vmla.i32 q1, q6, r10 @ encoding: [0x2d,0xee,0x4a,0x2e]397vmla.u32 q1, q6, r10398 399# CHECK: vqdmlash.s8 q0, q0, r5 @ encoding: [0x00,0xee,0x65,0x1e]400# CHECK-NOFP: vqdmlash.s8 q0, q0, r5 @ encoding: [0x00,0xee,0x65,0x1e]401vqdmlash.s8 q0, q0, r5402 403# CHECK: vqdmlash.s16 q0, q5, lr @ encoding: [0x1a,0xee,0x6e,0x1e]404# CHECK-NOFP: vqdmlash.s16 q0, q5, lr @ encoding: [0x1a,0xee,0x6e,0x1e]405vqdmlash.s16 q0, q5, lr406 407# CHECK: vqdmlash.s32 q0, q2, r3 @ encoding: [0x24,0xee,0x63,0x1e]408# CHECK-NOFP: vqdmlash.s32 q0, q2, r3 @ encoding: [0x24,0xee,0x63,0x1e]409vqdmlash.s32 q0, q2, r3410 411# ERROR: [[@LINE+2]]:9: error: invalid operand for instruction412# ERROR-NOFP: [[@LINE+1]]:9: error: invalid operand for instruction413vqdmlash.u8 q0, q4, r2414 415# ERROR: [[@LINE+2]]:9: error: invalid operand for instruction416# ERROR-NOFP: [[@LINE+1]]:9: error: invalid operand for instruction417vqdmlash.u16 q1, q4, r2418 419# ERROR: [[@LINE+2]]:9: error: invalid operand for instruction420# ERROR-NOFP: [[@LINE+1]]:9: error: invalid operand for instruction421vqdmlash.u32 q1, q5, r0422 423# CHECK: vqdmlah.s8 q0, q3, r3 @ encoding: [0x06,0xee,0x63,0x0e]424# CHECK-NOFP: vqdmlah.s8 q0, q3, r3 @ encoding: [0x06,0xee,0x63,0x0e]425vqdmlah.s8 q0, q3, r3426 427# CHECK: vqdmlah.s16 q5, q3, r9 @ encoding: [0x16,0xee,0x69,0xae]428# CHECK-NOFP: vqdmlah.s16 q5, q3, r9 @ encoding: [0x16,0xee,0x69,0xae]429vqdmlah.s16 q5, q3, r9430 431# CHECK: vqdmlah.s32 q0, q1, r11 @ encoding: [0x22,0xee,0x6b,0x0e]432# CHECK-NOFP: vqdmlah.s32 q0, q1, r11 @ encoding: [0x22,0xee,0x6b,0x0e]433vqdmlah.s32 q0, q1, r11434 435# ERROR: [[@LINE+2]]:8: error: invalid operand for instruction436# ERROR-NOFP: [[@LINE+1]]:8: error: invalid operand for instruction437vqdmlah.u8 q0, q2, lr438 439# ERROR: [[@LINE+2]]:8: error: invalid operand for instruction440# ERROR-NOFP: [[@LINE+1]]:8: error: invalid operand for instruction441vqdmlah.u16 q0, q3, r10442 443# ERROR: [[@LINE+2]]:8: error: invalid operand for instruction444# ERROR-NOFP: [[@LINE+1]]:8: error: invalid operand for instruction445vqdmlah.u32 q1, q5, r2446 447# CHECK: vqrdmlash.s8 q0, q5, r10 @ encoding: [0x0a,0xee,0x4a,0x1e]448# CHECK-NOFP: vqrdmlash.s8 q0, q5, r10 @ encoding: [0x0a,0xee,0x4a,0x1e]449vqrdmlash.s8 q0, q5, r10450 451# CHECK: vqrdmlash.s16 q0, q3, r2 @ encoding: [0x16,0xee,0x42,0x1e]452# CHECK-NOFP: vqrdmlash.s16 q0, q3, r2 @ encoding: [0x16,0xee,0x42,0x1e]453vqrdmlash.s16 q0, q3, r2454 455# CHECK: vqrdmlash.s32 q0, q0, r4 @ encoding: [0x20,0xee,0x44,0x1e]456# CHECK-NOFP: vqrdmlash.s32 q0, q0, r4 @ encoding: [0x20,0xee,0x44,0x1e]457vqrdmlash.s32 q0, q0, r4458 459# ERROR: [[@LINE+2]]:10: error: invalid operand for instruction460# ERROR-NOFP: [[@LINE+1]]:10: error: invalid operand for instruction461vqrdmlash.u8 q0, q4, r9462 463# ERROR: [[@LINE+2]]:10: error: invalid operand for instruction464# ERROR-NOFP: [[@LINE+1]]:10: error: invalid operand for instruction465vqrdmlash.u16 q0, q6, r12466 467# ERROR: [[@LINE+2]]:10: error: invalid operand for instruction468# ERROR-NOFP: [[@LINE+1]]:10: error: invalid operand for instruction469vqrdmlash.u32 q0, q3, r7470 471# CHECK: vqrdmlah.s8 q0, q5, r11 @ encoding: [0x0a,0xee,0x4b,0x0e]472# CHECK-NOFP: vqrdmlah.s8 q0, q5, r11 @ encoding: [0x0a,0xee,0x4b,0x0e]473vqrdmlah.s8 q0, q5, r11474 475# CHECK: vqrdmlah.s16 q0, q2, r10 @ encoding: [0x14,0xee,0x4a,0x0e]476# CHECK-NOFP: vqrdmlah.s16 q0, q2, r10 @ encoding: [0x14,0xee,0x4a,0x0e]477vqrdmlah.s16 q0, q2, r10478 479# CHECK: vqrdmlah.s32 q0, q4, r11 @ encoding: [0x28,0xee,0x4b,0x0e]480# CHECK-NOFP: vqrdmlah.s32 q0, q4, r11 @ encoding: [0x28,0xee,0x4b,0x0e]481vqrdmlah.s32 q0, q4, r11482 483# ERROR: [[@LINE+2]]:9: error: invalid operand for instruction484# ERROR-NOFP: [[@LINE+1]]:9: error: invalid operand for instruction485vqrdmlah.u8 q0, q4, r2486 487# ERROR: [[@LINE+2]]:9: error: invalid operand for instruction488# ERROR-NOFP: [[@LINE+1]]:9: error: invalid operand for instruction489vqrdmlah.u16 q0, q6, r1490 491# ERROR: [[@LINE+2]]:9: error: invalid operand for instruction492# ERROR-NOFP: [[@LINE+1]]:9: error: invalid operand for instruction493vqrdmlah.u32 q0, q4, r2494 495# CHECK: viwdup.u8 q0, lr, r1, #1 @ encoding: [0x0f,0xee,0x60,0x0f]496# CHECK-NOFP: viwdup.u8 q0, lr, r1, #1 @ encoding: [0x0f,0xee,0x60,0x0f]497viwdup.u8 q0, lr, r1, #1498 499# CHECK: viwdup.u16 q1, r10, r1, #8 @ encoding: [0x1b,0xee,0xe1,0x2f]500# CHECK-NOFP: viwdup.u16 q1, r10, r1, #8 @ encoding: [0x1b,0xee,0xe1,0x2f]501viwdup.u16 q1, r10, r1, #8502 503# CHECK: viwdup.u32 q6, r10, r5, #4 @ encoding: [0x2b,0xee,0xe4,0xcf]504# CHECK-NOFP: viwdup.u32 q6, r10, r5, #4 @ encoding: [0x2b,0xee,0xe4,0xcf]505viwdup.u32 q6, r10, r5, #4506 507# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: vector increment immediate must be 1, 2, 4 or 8508viwdup.u32 q6, r10, r5, #3509 510# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an even-numbered register511viwdup.u32 q6, r3, r5, #4512 513# CHECK: vdwdup.u8 q0, r12, r11, #8 @ encoding: [0x0d,0xee,0xeb,0x1f]514# CHECK-NOFP: vdwdup.u8 q0, r12, r11, #8 @ encoding: [0x0d,0xee,0xeb,0x1f]515vdwdup.u8 q0, r12, r11, #8516 517# CHECK: vdwdup.u16 q0, r12, r1, #2 @ encoding: [0x1d,0xee,0x61,0x1f]518# CHECK-NOFP: vdwdup.u16 q0, r12, r1, #2 @ encoding: [0x1d,0xee,0x61,0x1f]519vdwdup.u16 q0, r12, r1, #2520 521# CHECK: vdwdup.u32 q0, r0, r7, #8 @ encoding: [0x21,0xee,0xe7,0x1f]522# CHECK-NOFP: vdwdup.u32 q0, r0, r7, #8 @ encoding: [0x21,0xee,0xe7,0x1f]523vdwdup.u32 q0, r0, r7, #8524 525# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: vector increment immediate must be 1, 2, 4 or 8526vdwdup.u32 q0, r0, r7, #9527 528# CHECK: vidup.u8 q0, lr, #2 @ encoding: [0x0f,0xee,0x6f,0x0f]529# CHECK-NOFP: vidup.u8 q0, lr, #2 @ encoding: [0x0f,0xee,0x6f,0x0f]530vidup.u8 q0, lr, #2531 532# CHECK: vidup.u16 q0, lr, #4 @ encoding: [0x1f,0xee,0xee,0x0f]533# CHECK-NOFP: vidup.u16 q0, lr, #4 @ encoding: [0x1f,0xee,0xee,0x0f]534vidup.u16 q0, lr, #4535 536# CHECK: vidup.u32 q0, r12, #1 @ encoding: [0x2d,0xee,0x6e,0x0f]537# CHECK-NOFP: vidup.u32 q0, r12, #1 @ encoding: [0x2d,0xee,0x6e,0x0f]538vidup.u32 q0, r12, #1539 540# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: vector increment immediate must be 1, 2, 4 or 8541vidup.u32 q0, r12, #3542 543# CHECK: vddup.u8 q0, r4, #4 @ encoding: [0x05,0xee,0xee,0x1f]544# CHECK-NOFP: vddup.u8 q0, r4, #4 @ encoding: [0x05,0xee,0xee,0x1f]545vddup.u8 q0, r4, #4546 547# CHECK: vddup.u16 q0, r10, #4 @ encoding: [0x1b,0xee,0xee,0x1f]548# CHECK-NOFP: vddup.u16 q0, r10, #4 @ encoding: [0x1b,0xee,0xee,0x1f]549vddup.u16 q0, r10, #4550 551# CHECK: vddup.u32 q2, r0, #8 @ encoding: [0x21,0xee,0xef,0x5f]552# CHECK-NOFP: vddup.u32 q2, r0, #8 @ encoding: [0x21,0xee,0xef,0x5f]553vddup.u32 q2, r0, #8554 555# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: vector increment immediate must be 1, 2, 4 or 8556vddup.u32 q2, r0, #5557 558# CHECK: vctp.8 lr @ encoding: [0x0e,0xf0,0x01,0xe8]559# CHECK-NOFP: vctp.8 lr @ encoding: [0x0e,0xf0,0x01,0xe8]560vctp.8 lr561 562# CHECK: vctp.16 r0 @ encoding: [0x10,0xf0,0x01,0xe8]563# CHECK-NOFP: vctp.16 r0 @ encoding: [0x10,0xf0,0x01,0xe8]564vctp.16 r0565 566# CHECK: vctp.32 r10 @ encoding: [0x2a,0xf0,0x01,0xe8]567# CHECK-NOFP: vctp.32 r10 @ encoding: [0x2a,0xf0,0x01,0xe8]568vctp.32 r10569 570# CHECK: vctp.64 r1 @ encoding: [0x31,0xf0,0x01,0xe8]571# CHECK-NOFP: vctp.64 r1 @ encoding: [0x31,0xf0,0x01,0xe8]572vctp.64 r1573 574vpste575vmult.i8 q0, q1, q2576vmule.i16 q0, q1, q2577# CHECK: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]578# CHECK-NOFP: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]579# CHECK: vmult.i8 q0, q1, q2 @ encoding: [0x02,0xef,0x54,0x09]580# CHECK-NOFP: vmult.i8 q0, q1, q2 @ encoding: [0x02,0xef,0x54,0x09]581# CHECK: vmule.i16 q0, q1, q2 @ encoding: [0x12,0xef,0x54,0x09]582# CHECK-NOFP: vmule.i16 q0, q1, q2 @ encoding: [0x12,0xef,0x54,0x09]583 584vpste585vmult.i16 q0, q1, q2586vmule.i16 q1, q2, q3587# CHECK: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]588# CHECK-NOFP: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]589# CHECK: vmult.i16 q0, q1, q2 @ encoding: [0x12,0xef,0x54,0x09]590# CHECK-NOFP: vmult.i16 q0, q1, q2 @ encoding: [0x12,0xef,0x54,0x09]591# CHECK: vmule.i16 q1, q2, q3 @ encoding: [0x14,0xef,0x56,0x29]592# CHECK-NOFP: vmule.i16 q1, q2, q3 @ encoding: [0x14,0xef,0x56,0x29]593 594vqrshl.u32 q0, r0595# CHECK: vqrshl.u32 q0, r0 @ encoding: [0x3b,0xfe,0xe0,0x1e]596# CHECK-NOFP: vqrshl.u32 q0, r0 @ encoding: [0x3b,0xfe,0xe0,0x1e]597 598vpste599vqrshlt.u16 q0, r0600vqrshle.s16 q0, q1, q2601# CHECK: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]602# CHECK-NOFP: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]603# CHECK: vqrshlt.u16 q0, r0 @ encoding: [0x37,0xfe,0xe0,0x1e]604# CHECK-NOFP: vqrshlt.u16 q0, r0 @ encoding: [0x37,0xfe,0xe0,0x1e]605# CHECK: vqrshle.s16 q0, q1, q2 @ encoding: [0x14,0xef,0x52,0x05]606# CHECK-NOFP: vqrshle.s16 q0, q1, q2 @ encoding: [0x14,0xef,0x52,0x05]607 608vpste609vrshlt.u16 q0, q1, q2610vrshle.s32 q0, r0611# CHECK: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]612# CHECK-NOFP: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]613# CHECK: vrshlt.u16 q0, q1, q2 @ encoding: [0x14,0xff,0x42,0x05]614# CHECK-NOFP: vrshlt.u16 q0, q1, q2 @ encoding: [0x14,0xff,0x42,0x05]615# CHECK: vrshle.s32 q0, r0 @ encoding: [0x3b,0xee,0x60,0x1e]616# CHECK-NOFP: vrshle.s32 q0, r0 @ encoding: [0x3b,0xee,0x60,0x1e]617 618vpste619vshlt.s8 q0, r0620vshle.u32 q0, r0621# CHECK: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]622# CHECK-NOFP: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]623# CHECK: vshlt.s8 q0, r0 @ encoding: [0x31,0xee,0x60,0x1e]624# CHECK-NOFP: vshlt.s8 q0, r0 @ encoding: [0x31,0xee,0x60,0x1e]625# CHECK: vshle.u32 q0, r0 @ encoding: [0x39,0xfe,0x60,0x1e]626# CHECK-NOFP: vshle.u32 q0, r0 @ encoding: [0x39,0xfe,0x60,0x1e]627