1# RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+mve -show-encoding < %s \ 2# RUN: | FileCheck --check-prefix=CHECK-NOFP %s 3# 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 %s 5# RUN: FileCheck --check-prefix=ERROR < %t %s 6 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, r3 10 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, lr 14 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, r10 18 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, r7 22 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, r11 26 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, r6 30 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, r8 34 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, r0 38 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, r0 42 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, r2 46 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, r6 50 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, r2 54 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, r1 58 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, r2 62 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, r11 66 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, r8 70 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, r9 74 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, r7 78 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, r6 82 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, q7 86 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, r0 90 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, r5 94 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, r7 98 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, r10 102 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, lr 106 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, r4 110 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, lr 114 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, r6 118 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, r7 122 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, r5 126 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, r10 130 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, r12 134 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, r1 138 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, r1 142 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, r10 146 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, lr 150 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, r2 154 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, r11 158 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, r0 162 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, r3 166 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, lr 170 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, r0 174 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, r2 178 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, r3 182 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, r0 186 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, r1 190 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, r3 194 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, r1 198 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, r11 202 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, lr 206 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, r6 210 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, lr 214 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, r4 218 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, r0 222 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, r10 226 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, r1 230 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, lr 234 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, lr 238 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, r1 242 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, r10 246 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, r10 250 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, r12 254 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, r8 258 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, r1 262 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, r0 266 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, r12 270 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, r7 274 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, r11 278 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, r10 282 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, r7 286 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, r6 290 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, r2 294 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, r8 298 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, r6 302 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, r2 306 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, r2 310 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, r12 314 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, lr 318 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, r6 322 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, r9 326 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, r6 330 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, r6 334 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, r9 338 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, r6 342 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, lr 346 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, r12 350 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, r11 354 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, r6 358 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, r6 362 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, r8 366 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, r10 370 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, r1 374 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, r8 378 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, r10 382 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, r1 386 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, r10 390 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, r7 394 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, r10 398 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, r5 402 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, lr 406 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, r3 410 411# ERROR: [[@LINE+2]]:9: error: invalid operand for instruction 412# ERROR-NOFP: [[@LINE+1]]:9: error: invalid operand for instruction 413vqdmlash.u8 q0, q4, r2 414 415# ERROR: [[@LINE+2]]:9: error: invalid operand for instruction 416# ERROR-NOFP: [[@LINE+1]]:9: error: invalid operand for instruction 417vqdmlash.u16 q1, q4, r2 418 419# ERROR: [[@LINE+2]]:9: error: invalid operand for instruction 420# ERROR-NOFP: [[@LINE+1]]:9: error: invalid operand for instruction 421vqdmlash.u32 q1, q5, r0 422 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, r3 426 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, r9 430 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, r11 434 435# ERROR: [[@LINE+2]]:8: error: invalid operand for instruction 436# ERROR-NOFP: [[@LINE+1]]:8: error: invalid operand for instruction 437vqdmlah.u8 q0, q2, lr 438 439# ERROR: [[@LINE+2]]:8: error: invalid operand for instruction 440# ERROR-NOFP: [[@LINE+1]]:8: error: invalid operand for instruction 441vqdmlah.u16 q0, q3, r10 442 443# ERROR: [[@LINE+2]]:8: error: invalid operand for instruction 444# ERROR-NOFP: [[@LINE+1]]:8: error: invalid operand for instruction 445vqdmlah.u32 q1, q5, r2 446 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, r10 450 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, r2 454 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, r4 458 459# ERROR: [[@LINE+2]]:10: error: invalid operand for instruction 460# ERROR-NOFP: [[@LINE+1]]:10: error: invalid operand for instruction 461vqrdmlash.u8 q0, q4, r9 462 463# ERROR: [[@LINE+2]]:10: error: invalid operand for instruction 464# ERROR-NOFP: [[@LINE+1]]:10: error: invalid operand for instruction 465vqrdmlash.u16 q0, q6, r12 466 467# ERROR: [[@LINE+2]]:10: error: invalid operand for instruction 468# ERROR-NOFP: [[@LINE+1]]:10: error: invalid operand for instruction 469vqrdmlash.u32 q0, q3, r7 470 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, r11 474 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, r10 478 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, r11 482 483# ERROR: [[@LINE+2]]:9: error: invalid operand for instruction 484# ERROR-NOFP: [[@LINE+1]]:9: error: invalid operand for instruction 485vqrdmlah.u8 q0, q4, r2 486 487# ERROR: [[@LINE+2]]:9: error: invalid operand for instruction 488# ERROR-NOFP: [[@LINE+1]]:9: error: invalid operand for instruction 489vqrdmlah.u16 q0, q6, r1 490 491# ERROR: [[@LINE+2]]:9: error: invalid operand for instruction 492# ERROR-NOFP: [[@LINE+1]]:9: error: invalid operand for instruction 493vqrdmlah.u32 q0, q4, r2 494 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, #1 498 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, #8 502 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, #4 506 507# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: vector increment immediate must be 1, 2, 4 or 8 508viwdup.u32 q6, r10, r5, #3 509 510# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: operand must be an even-numbered register 511viwdup.u32 q6, r3, r5, #4 512 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, #8 516 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, #2 520 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, #8 524 525# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: vector increment immediate must be 1, 2, 4 or 8 526vdwdup.u32 q0, r0, r7, #9 527 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, #2 531 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, #4 535 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, #1 539 540# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: vector increment immediate must be 1, 2, 4 or 8 541vidup.u32 q0, r12, #3 542 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, #4 546 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, #4 550 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, #8 554 555# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: vector increment immediate must be 1, 2, 4 or 8 556vddup.u32 q2, r0, #5 557 558# CHECK: vctp.8 lr @ encoding: [0x0e,0xf0,0x01,0xe8] 559# CHECK-NOFP: vctp.8 lr @ encoding: [0x0e,0xf0,0x01,0xe8] 560vctp.8 lr 561 562# CHECK: vctp.16 r0 @ encoding: [0x10,0xf0,0x01,0xe8] 563# CHECK-NOFP: vctp.16 r0 @ encoding: [0x10,0xf0,0x01,0xe8] 564vctp.16 r0 565 566# CHECK: vctp.32 r10 @ encoding: [0x2a,0xf0,0x01,0xe8] 567# CHECK-NOFP: vctp.32 r10 @ encoding: [0x2a,0xf0,0x01,0xe8] 568vctp.32 r10 569 570# CHECK: vctp.64 r1 @ encoding: [0x31,0xf0,0x01,0xe8] 571# CHECK-NOFP: vctp.64 r1 @ encoding: [0x31,0xf0,0x01,0xe8] 572vctp.64 r1 573 574vpste 575vmult.i8 q0, q1, q2 576vmule.i16 q0, q1, q2 577# 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 584vpste 585vmult.i16 q0, q1, q2 586vmule.i16 q1, q2, q3 587# 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, r0 595# CHECK: vqrshl.u32 q0, r0 @ encoding: [0x3b,0xfe,0xe0,0x1e] 596# CHECK-NOFP: vqrshl.u32 q0, r0 @ encoding: [0x3b,0xfe,0xe0,0x1e] 597 598vpste 599vqrshlt.u16 q0, r0 600vqrshle.s16 q0, q1, q2 601# 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 608vpste 609vrshlt.u16 q0, q1, q2 610vrshle.s32 q0, r0 611# 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 618vpste 619vshlt.s8 q0, r0 620vshle.u32 q0, r0 621# 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