1// RUN: not llvm-mc -triple arm -mattr=+fp16fml,+neon -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR 2 3VFMAL.F16 D0, S1, S2[2] 4vfmsl.f16 d0, s1, s2[2] 5vfmsl.f16 d0, s1, s2[-1] 6vfmal.f16 q0, d1, d2[4] 7VFMSL.F16 Q0, D1, D2[4] 8vfmal.f16 q0, d1, d2[-1] 9VFMSL.F16 D0, S1, S16[0] 10vfmal.f16 d0, s1, s16[0] 11VFMSL.F16 Q0, D1, D8[0] 12vfmal.f16 q0, d1, d8[0] 13 14//CHECK-ERROR: error: invalid operand for instruction 15//CHECK-ERROR-NEXT: VFMAL.F16 D0, S1, S2[2] 16//CHECK-ERROR-NEXT: ^ 17//CHECK-ERROR-NEXT: error: invalid operand for instruction 18//CHECK-ERROR-NEXT: vfmsl.f16 d0, s1, s2[2] 19//CHECK-ERROR-NEXT: ^ 20//CHECK-ERROR-NEXT: error: invalid operand for instruction 21//CHECK-ERROR-NEXT: vfmsl.f16 d0, s1, s2[-1] 22//CHECK-ERROR-NEXT: ^ 23//CHECK-ERROR-NEXT: error: invalid operand for instruction 24//CHECK-ERROR-NEXT: vfmal.f16 q0, d1, d2[4] 25//CHECK-ERROR-NEXT: ^ 26//CHECK-ERROR-NEXT: error: invalid operand for instruction 27//CHECK-ERROR-NEXT: VFMSL.F16 Q0, D1, D2[4] 28//CHECK-ERROR-NEXT: ^ 29//CHECK-ERROR-NEXT: error: invalid operand for instruction 30//CHECK-ERROR-NEXT: vfmal.f16 q0, d1, d2[-1] 31//CHECK-ERROR-NEXT: ^ 32//CHECK-ERROR-NEXT: error: invalid instruction, any one of the following would fix this: 33//CHECK-ERROR-NEXT: VFMSL.F16 D0, S1, S16[0] 34//CHECK-ERROR-NEXT: ^ 35//CHECK-ERROR-NEXT: note: operand must be a register in range [s0, s15] 36//CHECK-ERROR-NEXT: VFMSL.F16 D0, S1, S16[0] 37//CHECK-ERROR-NEXT: ^ 38//CHECK-ERROR-NEXT: note: too many operands for instruction 39//CHECK-ERROR-NEXT: VFMSL.F16 D0, S1, S16[0] 40//CHECK-ERROR-NEXT: ^ 41//CHECK-ERROR-NEXT: error: invalid instruction, any one of the following would fix this: 42//CHECK-ERROR-NEXT: vfmal.f16 d0, s1, s16[0] 43//CHECK-ERROR-NEXT: ^ 44//CHECK-ERROR-NEXT: note: operand must be a register in range [s0, s15] 45//CHECK-ERROR-NEXT: vfmal.f16 d0, s1, s16[0] 46//CHECK-ERROR-NEXT: ^ 47//CHECK-ERROR-NEXT: note: too many operands for instruction 48//CHECK-ERROR-NEXT: vfmal.f16 d0, s1, s16[0] 49//CHECK-ERROR-NEXT: ^ 50//CHECK-ERROR-NEXT: : error: invalid instruction, any one of the following would fix this: 51//CHECK-ERROR-NEXT: VFMSL.F16 Q0, D1, D8[0] 52//CHECK-ERROR-NEXT: ^ 53//CHECK-ERROR-NEXT: : note: operand must be a register in range [d0, d7] 54//CHECK-ERROR-NEXT: VFMSL.F16 Q0, D1, D8[0] 55//CHECK-ERROR-NEXT: ^ 56//CHECK-ERROR-NEXT: : note: too many operands for instruction 57//CHECK-ERROR-NEXT: VFMSL.F16 Q0, D1, D8[0] 58//CHECK-ERROR-NEXT: ^ 59//CHECK-ERROR-NEXT: : error: invalid instruction, any one of the following would fix this: 60//CHECK-ERROR-NEXT: vfmal.f16 q0, d1, d8[0] 61//CHECK-ERROR-NEXT: ^ 62//CHECK-ERROR-NEXT: : note: operand must be a register in range [d0, d7] 63//CHECK-ERROR-NEXT: vfmal.f16 q0, d1, d8[0] 64//CHECK-ERROR-NEXT: ^ 65//CHECK-ERROR-NEXT: 1: note: too many operands for instruction 66//CHECK-ERROR-NEXT: vfmal.f16 q0, d1, d8[0] 67//CHECK-ERROR-NEXT: ^ 68