| @ RUN: not llvm-mc -triple=arm -show-encoding < %s 2>&1 | FileCheck %s |
| @ RUN: not llvm-mc -triple=thumb -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=CHECK-THUMB |
| |
| @ This tests the mnemonic spell checker. |
| |
| @ First check what happens when an instruction is omitted: |
| |
| r1, r2, r3 |
| |
| @ CHECK: error: unexpected token in operand |
| @ CHECK-NEXT: r1, r2, r3 |
| @ CHECK-NEXT: ^ |
| |
| @ We don't want to see a suggestion here; the edit distance is too large to |
| @ give sensible suggestions: |
| |
| aaaaaaaaaaaaaaa r1, r2, r3 |
| |
| @ CHECK: error: invalid instruction |
| @ CHECK-NEXT: aaaaaaaaaaaaaaa r1, r2, r3 |
| @ CHECK-NEXT: ^ |
| |
| @ Check that we get one suggestion: 'pushh' is 1 edit away, i.e. an deletion. |
| |
| pushh r1, r2, r3 |
| |
| @CHECK: error: invalid instruction, did you mean: push? |
| @CHECK-NEXT: pushh r1, r2, r3 |
| @CHECK-NEXT: ^ |
| |
| adXd r1, r2, r3 |
| |
| @ Check edit distance 1 and 2: 'add' has edit distance of 1 (a deletion), |
| @ and 'qadd' a distance of 2 (a deletion and an insertion) |
| |
| @ CHECK: error: invalid instruction, did you mean: add, qadd? |
| @ CHECK-NEXT: adXd r1, r2, r3 |
| @ CHECK-NEXT: ^ |
| |
| @ Check edit distance 1 and 2, just insertions: |
| |
| ad r1, r2, r3 |
| |
| @ CHECK: error: invalid instruction, did you mean: adc, add, adr, and, qadd? |
| @ CHECK-NEXT: ad r1, r2, r3 |
| @ CHECK-NEXT: ^ |
| |
| @ Check an instruction that is 2 edits away, and also has a lot of candidates: |
| |
| ldre r1, r2, r3 |
| |
| @ CHECK: error: invalid instruction, did you mean: ldr, ldrb, ldrd, ldrex, ldrexb, ldrexd, ldrexh, ldrh, ldrt? |
| @ CHECK-NEXT: ldre r1, r2, r3 |
| @ CHECK-NEXT: ^ |
| |
| @ Here it is checked that we don't suggest instructions that are not supported. |
| @ For example, in Thumb mode we don't want to see suggestions 'faddd' of 'qadd' |
| @ because they are not supported. |
| |
| fadd r1, r2, r3 |
| |
| @ CHECK-THUMB: error: invalid instruction, did you mean: add? |
| @ CHECK-THUMB: fadd r1, r2, r3 |
| @ CHECK-THUMB: ^ |
| |
| @ CHECK: error: invalid instruction, did you mean: add, qadd? |
| @ CHECK-NEXT: fadd r1, r2, r3 |
| @ CHECK-NEXT: ^ |