1// RUN: not llvm-mc -o - -triple arm -mattr=+v8.6a -show-encoding %s 2>&1 | FileCheck %s 2vfmat.bf16 d0, d0, d0 3vfmat.bf16 d0, d0, q0 4vfmat.bf16 d0, q0, d0 5vfmat.bf16 q0, d0, d0 6vfmat.bf16 q0, q0, d0 7vfmat.bf16 q0, d0, q0 8vfmat.bf16 d0, q0, q0 9vfmat.bf16 q0, q0, q0[3] 10vfmat.bf16 q0, q0, q0[3] 11vfmat.bf16 q0, d0, d0[0] 12vfmat.bf16 d0, q0, d0[0] 13vfmat.bf16 q0, d0, d0[9] 14 15vfmab.bf16 d0, d0, d0 16vfmab.bf16 d0, d0, q0 17vfmab.bf16 d0, q0, d0 18vfmab.bf16 q0, d0, d0 19vfmab.bf16 q0, q0, d0 20vfmab.bf16 q0, d0, q0 21vfmab.bf16 d0, q0, q0 22vfmab.bf16 q0, q0, q0[3] 23vfmab.bf16 q0, q0, q0[3] 24vfmab.bf16 q0, d0, d0[0] 25vfmab.bf16 d0, q0, d0[0] 26vfmab.bf16 q0, d0, d0[9] 27 28//CHECK:error: invalid instruction 29//CHECK-NEXT:vfmat.bf16 d0, d0, d0 30//CHECK-NEXT:^ 31//CHECK-NEXT:error: invalid instruction 32//CHECK-NEXT:vfmat.bf16 d0, d0, q0 33//CHECK-NEXT:^ 34//CHECK-NEXT:error: invalid instruction 35//CHECK-NEXT:vfmat.bf16 d0, q0, d0 36//CHECK-NEXT:^ 37//CHECK-NEXT:error: invalid instruction 38//CHECK-NEXT:vfmat.bf16 q0, d0, d0 39//CHECK-NEXT:^ 40//CHECK-NEXT:error: invalid instruction, any one of the following would fix this: 41//CHECK-NEXT:vfmat.bf16 q0, q0, d0 42//CHECK-NEXT:^ 43//CHECK-NEXT:note: too few operands for instruction 44//CHECK-NEXT:vfmat.bf16 q0, q0, d0 45//CHECK-NEXT: ^ 46//CHECK-NEXT:note: operand must be a register in range [q0, q15] 47//CHECK-NEXT:vfmat.bf16 q0, q0, d0 48//CHECK-NEXT: ^ 49//CHECK-NEXT:error: operand must be a register in range [q0, q15] 50//CHECK-NEXT:vfmat.bf16 q0, d0, q0 51//CHECK-NEXT: ^ 52//CHECK-NEXT:error: operand must be a register in range [q0, q15] 53//CHECK-NEXT:vfmat.bf16 d0, q0, q0 54//CHECK-NEXT: ^ 55//CHECK-NEXT:error: invalid instruction, any one of the following would fix this: 56//CHECK-NEXT:vfmat.bf16 q0, q0, q0[3] 57//CHECK-NEXT:^ 58//CHECK-NEXT:note: operand must be a register in range [d0, d7] 59//CHECK-NEXT:vfmat.bf16 q0, q0, q0[3] 60//CHECK-NEXT: ^ 61//CHECK-NEXT:note: too many operands for instruction 62//CHECK-NEXT:vfmat.bf16 q0, q0, q0[3] 63//CHECK-NEXT: ^ 64//CHECK-NEXT:error: invalid instruction, any one of the following would fix this: 65//CHECK-NEXT:vfmat.bf16 q0, q0, q0[3] 66//CHECK-NEXT:^ 67//CHECK-NEXT:note: operand must be a register in range [d0, d7] 68//CHECK-NEXT:vfmat.bf16 q0, q0, q0[3] 69//CHECK-NEXT: ^ 70//CHECK-NEXT:note: too many operands for instruction 71//CHECK-NEXT:vfmat.bf16 q0, q0, q0[3] 72//CHECK-NEXT: ^ 73//CHECK-NEXT:error: operand must be a register in range [q0, q15] 74//CHECK-NEXT:vfmat.bf16 q0, d0, d0[0] 75//CHECK-NEXT: ^ 76//CHECK-NEXT:error: operand must be a register in range [q0, q15] 77//CHECK-NEXT:vfmat.bf16 d0, q0, d0[0] 78//CHECK-NEXT: ^ 79//CHECK-NEXT:error: invalid instruction 80//CHECK-NEXT:vfmat.bf16 q0, d0, d0[9] 81//CHECK-NEXT:^ 82//CHECK-NEXT:error: invalid instruction 83//CHECK-NEXT:vfmab.bf16 d0, d0, d0 84//CHECK-NEXT:^ 85//CHECK-NEXT:error: invalid instruction 86//CHECK-NEXT:vfmab.bf16 d0, d0, q0 87//CHECK-NEXT:^ 88//CHECK-NEXT:error: invalid instruction 89//CHECK-NEXT:vfmab.bf16 d0, q0, d0 90//CHECK-NEXT:^ 91//CHECK-NEXT:error: invalid instruction 92//CHECK-NEXT:vfmab.bf16 q0, d0, d0 93//CHECK-NEXT:^ 94//CHECK-NEXT:error: invalid instruction, any one of the following would fix this: 95//CHECK-NEXT:vfmab.bf16 q0, q0, d0 96//CHECK-NEXT:^ 97//CHECK-NEXT:note: too few operands for instruction 98//CHECK-NEXT:vfmab.bf16 q0, q0, d0 99//CHECK-NEXT: ^ 100//CHECK-NEXT:note: operand must be a register in range [q0, q15] 101//CHECK-NEXT:vfmab.bf16 q0, q0, d0 102//CHECK-NEXT: ^ 103//CHECK-NEXT:error: operand must be a register in range [q0, q15] 104//CHECK-NEXT:vfmab.bf16 q0, d0, q0 105//CHECK-NEXT: ^ 106//CHECK-NEXT:error: operand must be a register in range [q0, q15] 107//CHECK-NEXT:vfmab.bf16 d0, q0, q0 108//CHECK-NEXT: ^ 109//CHECK-NEXT:error: invalid instruction, any one of the following would fix this: 110//CHECK-NEXT:vfmab.bf16 q0, q0, q0[3] 111//CHECK-NEXT:^ 112//CHECK-NEXT:note: operand must be a register in range [d0, d7] 113//CHECK-NEXT:vfmab.bf16 q0, q0, q0[3] 114//CHECK-NEXT: ^ 115//CHECK-NEXT:note: too many operands for instruction 116//CHECK-NEXT:vfmab.bf16 q0, q0, q0[3] 117//CHECK-NEXT: ^ 118//CHECK-NEXT:error: invalid instruction, any one of the following would fix this: 119//CHECK-NEXT:vfmab.bf16 q0, q0, q0[3] 120//CHECK-NEXT:^ 121//CHECK-NEXT:note: operand must be a register in range [d0, d7] 122//CHECK-NEXT:vfmab.bf16 q0, q0, q0[3] 123//CHECK-NEXT: ^ 124//CHECK-NEXT:note: too many operands for instruction 125//CHECK-NEXT:vfmab.bf16 q0, q0, q0[3] 126//CHECK-NEXT: ^ 127//CHECK-NEXT:error: operand must be a register in range [q0, q15] 128//CHECK-NEXT:vfmab.bf16 q0, d0, d0[0] 129//CHECK-NEXT: ^ 130//CHECK-NEXT:error: operand must be a register in range [q0, q15] 131//CHECK-NEXT:vfmab.bf16 d0, q0, d0[0] 132//CHECK-NEXT: ^ 133//CHECK-NEXT:error: invalid instruction 134//CHECK-NEXT:vfmab.bf16 q0, d0, d0[9] 135