| // RUN: not llvm-mc -o - -triple arm -mattr=+v8.6a -show-encoding %s 2>&1 | FileCheck %s |
| vfmat.bf16 d0, d0, d0 |
| vfmat.bf16 d0, d0, q0 |
| vfmat.bf16 d0, q0, d0 |
| vfmat.bf16 q0, d0, d0 |
| vfmat.bf16 q0, q0, d0 |
| vfmat.bf16 q0, d0, q0 |
| vfmat.bf16 d0, q0, q0 |
| vfmat.bf16 q0, q0, q0[3] |
| vfmat.bf16 q0, q0, q0[3] |
| vfmat.bf16 q0, d0, d0[0] |
| vfmat.bf16 d0, q0, d0[0] |
| vfmat.bf16 q0, d0, d0[9] |
| |
| vfmab.bf16 d0, d0, d0 |
| vfmab.bf16 d0, d0, q0 |
| vfmab.bf16 d0, q0, d0 |
| vfmab.bf16 q0, d0, d0 |
| vfmab.bf16 q0, q0, d0 |
| vfmab.bf16 q0, d0, q0 |
| vfmab.bf16 d0, q0, q0 |
| vfmab.bf16 q0, q0, q0[3] |
| vfmab.bf16 q0, q0, q0[3] |
| vfmab.bf16 q0, d0, d0[0] |
| vfmab.bf16 d0, q0, d0[0] |
| vfmab.bf16 q0, d0, d0[9] |
| |
| //CHECK:error: invalid instruction |
| //CHECK-NEXT:vfmat.bf16 d0, d0, d0 |
| //CHECK-NEXT:^ |
| //CHECK-NEXT:error: invalid instruction |
| //CHECK-NEXT:vfmat.bf16 d0, d0, q0 |
| //CHECK-NEXT:^ |
| //CHECK-NEXT:error: invalid instruction |
| //CHECK-NEXT:vfmat.bf16 d0, q0, d0 |
| //CHECK-NEXT:^ |
| //CHECK-NEXT:error: invalid instruction |
| //CHECK-NEXT:vfmat.bf16 q0, d0, d0 |
| //CHECK-NEXT:^ |
| //CHECK-NEXT:error: invalid instruction, any one of the following would fix this: |
| //CHECK-NEXT:vfmat.bf16 q0, q0, d0 |
| //CHECK-NEXT:^ |
| //CHECK-NEXT:note: too few operands for instruction |
| //CHECK-NEXT:vfmat.bf16 q0, q0, d0 |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:note: operand must be a register in range [q0, q15] |
| //CHECK-NEXT:vfmat.bf16 q0, q0, d0 |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:error: operand must be a register in range [q0, q15] |
| //CHECK-NEXT:vfmat.bf16 q0, d0, q0 |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:error: operand must be a register in range [q0, q15] |
| //CHECK-NEXT:vfmat.bf16 d0, q0, q0 |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:error: invalid instruction, any one of the following would fix this: |
| //CHECK-NEXT:vfmat.bf16 q0, q0, q0[3] |
| //CHECK-NEXT:^ |
| //CHECK-NEXT:note: operand must be a register in range [d0, d7] |
| //CHECK-NEXT:vfmat.bf16 q0, q0, q0[3] |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:note: too many operands for instruction |
| //CHECK-NEXT:vfmat.bf16 q0, q0, q0[3] |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:error: invalid instruction, any one of the following would fix this: |
| //CHECK-NEXT:vfmat.bf16 q0, q0, q0[3] |
| //CHECK-NEXT:^ |
| //CHECK-NEXT:note: operand must be a register in range [d0, d7] |
| //CHECK-NEXT:vfmat.bf16 q0, q0, q0[3] |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:note: too many operands for instruction |
| //CHECK-NEXT:vfmat.bf16 q0, q0, q0[3] |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:error: operand must be a register in range [q0, q15] |
| //CHECK-NEXT:vfmat.bf16 q0, d0, d0[0] |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:error: operand must be a register in range [q0, q15] |
| //CHECK-NEXT:vfmat.bf16 d0, q0, d0[0] |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:error: invalid instruction |
| //CHECK-NEXT:vfmat.bf16 q0, d0, d0[9] |
| //CHECK-NEXT:^ |
| //CHECK-NEXT:error: invalid instruction |
| //CHECK-NEXT:vfmab.bf16 d0, d0, d0 |
| //CHECK-NEXT:^ |
| //CHECK-NEXT:error: invalid instruction |
| //CHECK-NEXT:vfmab.bf16 d0, d0, q0 |
| //CHECK-NEXT:^ |
| //CHECK-NEXT:error: invalid instruction |
| //CHECK-NEXT:vfmab.bf16 d0, q0, d0 |
| //CHECK-NEXT:^ |
| //CHECK-NEXT:error: invalid instruction |
| //CHECK-NEXT:vfmab.bf16 q0, d0, d0 |
| //CHECK-NEXT:^ |
| //CHECK-NEXT:error: invalid instruction, any one of the following would fix this: |
| //CHECK-NEXT:vfmab.bf16 q0, q0, d0 |
| //CHECK-NEXT:^ |
| //CHECK-NEXT:note: too few operands for instruction |
| //CHECK-NEXT:vfmab.bf16 q0, q0, d0 |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:note: operand must be a register in range [q0, q15] |
| //CHECK-NEXT:vfmab.bf16 q0, q0, d0 |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:error: operand must be a register in range [q0, q15] |
| //CHECK-NEXT:vfmab.bf16 q0, d0, q0 |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:error: operand must be a register in range [q0, q15] |
| //CHECK-NEXT:vfmab.bf16 d0, q0, q0 |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:error: invalid instruction, any one of the following would fix this: |
| //CHECK-NEXT:vfmab.bf16 q0, q0, q0[3] |
| //CHECK-NEXT:^ |
| //CHECK-NEXT:note: operand must be a register in range [d0, d7] |
| //CHECK-NEXT:vfmab.bf16 q0, q0, q0[3] |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:note: too many operands for instruction |
| //CHECK-NEXT:vfmab.bf16 q0, q0, q0[3] |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:error: invalid instruction, any one of the following would fix this: |
| //CHECK-NEXT:vfmab.bf16 q0, q0, q0[3] |
| //CHECK-NEXT:^ |
| //CHECK-NEXT:note: operand must be a register in range [d0, d7] |
| //CHECK-NEXT:vfmab.bf16 q0, q0, q0[3] |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:note: too many operands for instruction |
| //CHECK-NEXT:vfmab.bf16 q0, q0, q0[3] |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:error: operand must be a register in range [q0, q15] |
| //CHECK-NEXT:vfmab.bf16 q0, d0, d0[0] |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:error: operand must be a register in range [q0, q15] |
| //CHECK-NEXT:vfmab.bf16 d0, q0, d0[0] |
| //CHECK-NEXT: ^ |
| //CHECK-NEXT:error: invalid instruction |
| //CHECK-NEXT:vfmab.bf16 q0, d0, d0[9] |