321 lines · plain
1# RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+mve -show-encoding %s 2>%t \2# RUN: | FileCheck --check-prefix=CHECK %s3# RUN: FileCheck --check-prefix=ERROR %s < %t4 5# CHECK: vmov.i32 q0, #0x1bff @ encoding: [0x81,0xef,0x5b,0x0c]6vmov.i32 q0, #0x1bff7 8# CHECK: vmov.i16 q0, #0x5c @ encoding: [0x85,0xef,0x5c,0x08]9vmov.i16 q0, #0x5c10 11# CHECK: vmov.i8 q0, #0x4c @ encoding: [0x84,0xef,0x5c,0x0e]12vmov.i8 q0, #0x4c13 14# CHECK: vmov.f32 q0, #-3.625000e+00 @ encoding: [0x80,0xff,0x5d,0x0f]15vmov.f32 q0, #-3.625000e+0016 17# CHECK: vmov.f32 q0, #1.250000e-01 @ encoding: [0x84,0xef,0x50,0x0f]18vmov.f32 q0, #0.12519 20# CHECK: vmov.f32 q0, #1.328125e-01 @ encoding: [0x84,0xef,0x51,0x0f]21vmov.f32 q0, #0.132812522 23# CHECK: vmov.f32 q0, #3.100000e+01 @ encoding: [0x83,0xef,0x5f,0x0f]24vmov.f32 q0, #31.025 26# CHECK: vmov.f32 s16, s1 @ encoding: [0xb0,0xee,0x60,0x8a]27vmov.f32 s16, s128 29# CHECK: vmov.f64 d0, d1 @ encoding: [0xb0,0xee,0x41,0x0b]30vmov.f64 d0, d131 32# CHECK: vmov.i64 q0, #0xff0000ffffffffff @ encoding: [0x81,0xff,0x7f,0x0e]33vmov.i64 q0, #0xff0000ffffffffff34 35# ERROR: [[@LINE+1]]:14: error: invalid operand for instruction36vmov.i32 q0, #0xabcd37 38# ERROR: [[@LINE+1]]:14: error: invalid operand for instruction39vmov.i16 q0, #0xabcd40 41# ERROR: [[@LINE+1]]:14: error: invalid operand for instruction42vmov.i32 q0, #0xabffffff43 44# ERROR: [[@LINE+1]]:14: error: invalid operand for instruction45vmov.i32 q0, #0xabffffff46 47# ERROR: [[@LINE+1]]:14: error: invalid operand for instruction48vmov.f32 q0, #0.062549 50# ERROR: [[@LINE+1]]:14: error: invalid operand for instruction51vmov.f32 q0, #33.052 53# CHECK: vmul.i8 q0, q0, q3 @ encoding: [0x00,0xef,0x56,0x09]54vmul.i8 q0, q0, q355 56# CHECK: vmul.i16 q6, q0, q3 @ encoding: [0x10,0xef,0x56,0xc9]57vmul.i16 q6, q0, q358 59# CHECK: vmul.i32 q7, q3, q6 @ encoding: [0x26,0xef,0x5c,0xe9]60vmul.i32 q7, q3, q661 62# CHECK: vqrdmulh.s8 q0, q5, q5 @ encoding: [0x0a,0xff,0x4a,0x0b]63vqrdmulh.s8 q0, q5, q564 65# CHECK: vqrdmulh.s16 q1, q4, q2 @ encoding: [0x18,0xff,0x44,0x2b]66vqrdmulh.s16 q1, q4, q267 68# CHECK: vqrdmulh.s32 q0, q5, q0 @ encoding: [0x2a,0xff,0x40,0x0b]69vqrdmulh.s32 q0, q5, q070 71# CHECK: vqdmulh.s8 q0, q4, q5 @ encoding: [0x08,0xef,0x4a,0x0b]72vqdmulh.s8 q0, q4, q573 74# CHECK: vqdmulh.s16 q6, q4, q0 @ encoding: [0x18,0xef,0x40,0xcb]75vqdmulh.s16 q6, q4, q076 77# CHECK: vqdmulh.s32 q5, q0, q6 @ encoding: [0x20,0xef,0x4c,0xab]78vqdmulh.s32 q5, q0, q679 80# CHECK: vsub.i8 q3, q2, q5 @ encoding: [0x04,0xff,0x4a,0x68]81vsub.i8 q3, q2, q582 83# CHECK: vsub.i16 q0, q3, q6 @ encoding: [0x16,0xff,0x4c,0x08]84vsub.i16 q0, q3, q685 86# CHECK: vsub.i32 q0, q0, q6 @ encoding: [0x20,0xff,0x4c,0x08]87vsub.i32 q0, q0, q688 89# CHECK: vadd.i8 q0, q2, q2 @ encoding: [0x04,0xef,0x44,0x08]90vadd.i8 q0, q2, q291 92# CHECK: vadd.i16 q2, q2, q1 @ encoding: [0x14,0xef,0x42,0x48]93vadd.i16 q2, q2, q194 95# CHECK: vadd.i32 q0, q0, q6 @ encoding: [0x20,0xef,0x4c,0x08]96vadd.i32 q0, q0, q697 98# CHECK: vqsub.s8 q1, q6, q0 @ encoding: [0x0c,0xef,0x50,0x22]99vqsub.s8 q1, q6, q0100 101# CHECK: vqsub.s16 q0, q6, q1 @ encoding: [0x1c,0xef,0x52,0x02]102vqsub.s16 q0, q6, q1103 104# CHECK: vqsub.s32 q0, q0, q5 @ encoding: [0x20,0xef,0x5a,0x02]105vqsub.s32 q0, q0, q5106 107# CHECK: vqsub.u8 q0, q2, q6 @ encoding: [0x04,0xff,0x5c,0x02]108vqsub.u8 q0, q2, q6109 110# CHECK: vqsub.u16 q0, q7, q1 @ encoding: [0x1e,0xff,0x52,0x02]111vqsub.u16 q0, q7, q1112 113# CHECK: vqsub.u32 q1, q4, q7 @ encoding: [0x28,0xff,0x5e,0x22]114vqsub.u32 q1, q4, q7115 116# CHECK: vqadd.s8 q0, q1, q2 @ encoding: [0x02,0xef,0x54,0x00]117vqadd.s8 q0, q1, q2118 119# CHECK: vqadd.s8 q0, q4, q6 @ encoding: [0x08,0xef,0x5c,0x00]120vqadd.s8 q0, q4, q6121 122# CHECK: vqadd.s16 q0, q5, q5 @ encoding: [0x1a,0xef,0x5a,0x00]123vqadd.s16 q0, q5, q5124 125# CHECK: vqadd.s32 q0, q0, q4 @ encoding: [0x20,0xef,0x58,0x00]126vqadd.s32 q0, q0, q4127 128# CHECK: vqadd.u8 q0, q4, q2 @ encoding: [0x08,0xff,0x54,0x00]129vqadd.u8 q0, q4, q2130 131# CHECK: vqadd.u16 q4, q6, q6 @ encoding: [0x1c,0xff,0x5c,0x80]132vqadd.u16 q4, q6, q6133 134# CHECK: vqadd.u32 q0, q1, q2 @ encoding: [0x22,0xff,0x54,0x00]135vqadd.u32 q0, q1, q2136 137# CHECK: vabd.s8 q0, q0, q2 @ encoding: [0x00,0xef,0x44,0x07]138vabd.s8 q0, q0, q2139 140# CHECK: vabd.s16 q1, q5, q4 @ encoding: [0x1a,0xef,0x48,0x27]141vabd.s16 q1, q5, q4142 143# CHECK: vabd.s32 q2, q3, q2 @ encoding: [0x26,0xef,0x44,0x47]144vabd.s32 q2, q3, q2145 146# CHECK: vabd.u8 q1, q6, q4 @ encoding: [0x0c,0xff,0x48,0x27]147vabd.u8 q1, q6, q4148 149# CHECK: vabd.u16 q0, q6, q2 @ encoding: [0x1c,0xff,0x44,0x07]150vabd.u16 q0, q6, q2151 152# CHECK: vabd.u32 q0, q7, q4 @ encoding: [0x2e,0xff,0x48,0x07]153vabd.u32 q0, q7, q4154 155# CHECK: vrhadd.s8 q0, q1, q1 @ encoding: [0x02,0xef,0x42,0x01]156vrhadd.s8 q0, q1, q1157 158# CHECK: vrhadd.s16 q0, q1, q0 @ encoding: [0x12,0xef,0x40,0x01]159vrhadd.s16 q0, q1, q0160 161# CHECK: vrhadd.s32 q0, q4, q1 @ encoding: [0x28,0xef,0x42,0x01]162vrhadd.s32 q0, q4, q1163 164# CHECK: vrhadd.u8 q1, q0, q6 @ encoding: [0x00,0xff,0x4c,0x21]165vrhadd.u8 q1, q0, q6166 167# CHECK: vrhadd.u16 q2, q2, q5 @ encoding: [0x14,0xff,0x4a,0x41]168vrhadd.u16 q2, q2, q5169 170# CHECK: vrhadd.u32 q2, q3, q0 @ encoding: [0x26,0xff,0x40,0x41]171vrhadd.u32 q2, q3, q0172 173# CHECK: vhsub.s8 q0, q0, q2 @ encoding: [0x00,0xef,0x44,0x02]174vhsub.s8 q0, q0, q2175 176# CHECK: vhsub.s16 q1, q3, q1 @ encoding: [0x16,0xef,0x42,0x22]177vhsub.s16 q1, q3, q1178 179# CHECK: vhsub.s32 q0, q2, q5 @ encoding: [0x24,0xef,0x4a,0x02]180vhsub.s32 q0, q2, q5181 182# CHECK: vhsub.u8 q0, q4, q2 @ encoding: [0x08,0xff,0x44,0x02]183vhsub.u8 q0, q4, q2184 185# CHECK: vhsub.u16 q0, q7, q5 @ encoding: [0x1e,0xff,0x4a,0x02]186vhsub.u16 q0, q7, q5187 188# CHECK: vhsub.u32 q2, q6, q4 @ encoding: [0x2c,0xff,0x48,0x42]189vhsub.u32 q2, q6, q4190 191# CHECK: vhadd.s8 q0, q7, q0 @ encoding: [0x0e,0xef,0x40,0x00]192vhadd.s8 q0, q7, q0193 194# CHECK: vhadd.s16 q4, q0, q2 @ encoding: [0x10,0xef,0x44,0x80]195vhadd.s16 q4, q0, q2196 197# CHECK: vhadd.s32 q0, q3, q1 @ encoding: [0x26,0xef,0x42,0x00]198vhadd.s32 q0, q3, q1199 200# CHECK: vhadd.u8 q3, q0, q3 @ encoding: [0x00,0xff,0x46,0x60]201vhadd.u8 q3, q0, q3202 203# CHECK: vhadd.u16 q0, q1, q3 @ encoding: [0x12,0xff,0x46,0x00]204vhadd.u16 q0, q1, q3205 206# CHECK: vhadd.u32 q0, q1, q3 @ encoding: [0x22,0xff,0x46,0x00]207vhadd.u32 q0, q1, q3208 209# CHECK: vdup.8 q6, r8 @ encoding: [0xec,0xee,0x10,0x8b]210vdup.8 q6, r8211 212# CHECK: vdup.16 q7, lr @ encoding: [0xae,0xee,0x30,0xeb]213vdup.16 q7, lr214 215# CHECK: vdup.32 q1, r9 @ encoding: [0xa2,0xee,0x10,0x9b]216vdup.32 q1, r9217 218# CHECK: vpte.i8 eq, q0, q0219# CHECK: vdupt.16 q0, r1 @ encoding: [0xa0,0xee,0x30,0x1b]220# CHECK: vdupe.16 q0, r1 @ encoding: [0xa0,0xee,0x30,0x1b]221vpte.i8 eq, q0, q0222vdupt.16 q0, r1223vdupe.16 q0, r1224 225# CHECK: vcls.s8 q2, q1 @ encoding: [0xb0,0xff,0x42,0x44]226vcls.s8 q2, q1227 228# CHECK: vcls.s16 q0, q4 @ encoding: [0xb4,0xff,0x48,0x04]229vcls.s16 q0, q4230 231# CHECK: vcls.s32 q0, q0 @ encoding: [0xb8,0xff,0x40,0x04]232vcls.s32 q0, q0233 234# CHECK: vclz.i8 q0, q7 @ encoding: [0xb0,0xff,0xce,0x04]235vclz.i8 q0, q7236 237# CHECK: vclz.i16 q4, q7 @ encoding: [0xb4,0xff,0xce,0x84]238vclz.i16 q4, q7239 240# CHECK: vclz.i32 q7, q5 @ encoding: [0xb8,0xff,0xca,0xe4]241vclz.i32 q7, q5242 243# CHECK: vneg.s8 q1, q0 @ encoding: [0xb1,0xff,0xc0,0x23]244vneg.s8 q1, q0245 246# CHECK: vneg.s16 q0, q1 @ encoding: [0xb5,0xff,0xc2,0x03]247vneg.s16 q0, q1248 249# CHECK: vneg.s32 q7, q2 @ encoding: [0xb9,0xff,0xc4,0xe3]250vneg.s32 q7, q2251 252# CHECK: vabs.s8 q1, q1 @ encoding: [0xb1,0xff,0x42,0x23]253vabs.s8 q1, q1254 255# CHECK: vabs.s16 q0, q2 @ encoding: [0xb5,0xff,0x44,0x03]256vabs.s16 q0, q2257 258# CHECK: vabs.s32 q0, q7 @ encoding: [0xb9,0xff,0x4e,0x03]259vabs.s32 q0, q7260 261# CHECK: vqneg.s8 q0, q0 @ encoding: [0xb0,0xff,0xc0,0x07]262vqneg.s8 q0, q0263 264# CHECK: vqneg.s16 q6, q2 @ encoding: [0xb4,0xff,0xc4,0xc7]265vqneg.s16 q6, q2266 267# CHECK: vqneg.s32 q7, q2 @ encoding: [0xb8,0xff,0xc4,0xe7]268vqneg.s32 q7, q2269 270# CHECK: vqabs.s8 q2, q4 @ encoding: [0xb0,0xff,0x48,0x47]271vqabs.s8 q2, q4272 273# CHECK: vqabs.s16 q0, q2 @ encoding: [0xb4,0xff,0x44,0x07]274vqabs.s16 q0, q2275 276# CHECK: vqabs.s32 q0, q5 @ encoding: [0xb8,0xff,0x4a,0x07]277vqabs.s32 q0, q5278 279vpste280vnegt.s8 q0, q1281vnege.s8 q0, q1282# CHECK: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]283# CHECK: vnegt.s8 q0, q1 @ encoding: [0xb1,0xff,0xc2,0x03]284# CHECK: vnege.s8 q0, q1 @ encoding: [0xb1,0xff,0xc2,0x03]285 286vpst287vqaddt.s16 q0, q1, q2288# CHECK: vpst @ encoding: [0x71,0xfe,0x4d,0x0f]289# CHECK: vqaddt.s16 q0, q1, q2 @ encoding: [0x12,0xef,0x54,0x00]290 291vpste292vqnegt.s8 q0, q1293vqnege.s16 q0, q1294# CHECK: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]295# CHECK: vqnegt.s8 q0, q1 @ encoding: [0xb0,0xff,0xc2,0x07]296# CHECK: vqnege.s16 q0, q1 @ encoding: [0xb4,0xff,0xc2,0x07]297 298# CHECK: vmina.s8 q1, q7 @ encoding: [0x33,0xee,0x8f,0x3e]299# CHECK-NOFP: vmina.s8 q1, q7 @ encoding: [0x33,0xee,0x8f,0x3e]300vmina.s8 q1, q7301 302# CHECK: vmina.s16 q1, q4 @ encoding: [0x37,0xee,0x89,0x3e]303# CHECK-NOFP: vmina.s16 q1, q4 @ encoding: [0x37,0xee,0x89,0x3e]304vmina.s16 q1, q4305 306# CHECK: vmina.s32 q0, q7 @ encoding: [0x3b,0xee,0x8f,0x1e]307# CHECK-NOFP: vmina.s32 q0, q7 @ encoding: [0x3b,0xee,0x8f,0x1e]308vmina.s32 q0, q7309 310# CHECK: vmaxa.s8 q0, q7 @ encoding: [0x33,0xee,0x8f,0x0e]311# CHECK-NOFP: vmaxa.s8 q0, q7 @ encoding: [0x33,0xee,0x8f,0x0e]312vmaxa.s8 q0, q7313 314# CHECK: vmaxa.s16 q1, q0 @ encoding: [0x37,0xee,0x81,0x2e]315# CHECK-NOFP: vmaxa.s16 q1, q0 @ encoding: [0x37,0xee,0x81,0x2e]316vmaxa.s16 q1, q0317 318# CHECK: vmaxa.s32 q1, q0 @ encoding: [0x3b,0xee,0x81,0x2e]319# CHECK-NOFP: vmaxa.s32 q1, q0 @ encoding: [0x3b,0xee,0x81,0x2e]320vmaxa.s32 q1, q0321