xref: /llvm-project/llvm/test/MC/Mips/crc/invalid.s (revision 252c42354eca54274ed7b10c32c73c6937478e8b)
1# Instructions that are invalid.
2#
3# RUN: not llvm-mc %s -triple=mips -mcpu=mips32r6 -mattr=+crc 2>%t1
4# RUN: FileCheck %s < %t1
5# RUN: not llvm-mc %s -triple=mips64 -mcpu=mips64r6 -mattr=+crc 2>%t1
6# RUN: FileCheck %s < %t1
7
8  .set noat
9  crc32b  $1, $2, $2      # CHECK: :[[@LINE]]:3: error: source and destination must match
10  crc32b  $1, $2, $3      # CHECK: :[[@LINE]]:3: error: source and destination must match
11  crc32b  $1, $2, 2       # CHECK: :[[@LINE]]:19: error: invalid operand for instruction
12  crc32b  $1, 2, $2       # CHECK: :[[@LINE]]:15: error: invalid operand for instruction
13  crc32b  1, $2, $2       # CHECK: :[[@LINE]]:11: error: invalid operand for instruction
14  crc32b  $1, $2          # CHECK: :[[@LINE]]:3: error: too few operands for instruction
15  crc32b  $1              # CHECK: :[[@LINE]]:3: error: too few operands for instruction
16  crc32b  $1, $2, 0($2)   # CHECK: :[[@LINE]]:19: error: invalid operand for instruction
17
18  crc32h  $1, $2, $2      # CHECK: :[[@LINE]]:3: error: source and destination must match
19  crc32h  $1, $2, $3      # CHECK: :[[@LINE]]:3: error: source and destination must match
20  crc32h  $1, $2, 2       # CHECK: :[[@LINE]]:19: error: invalid operand for instruction
21  crc32h  $1, 2, $2       # CHECK: :[[@LINE]]:15: error: invalid operand for instruction
22  crc32h  1, $2, $2       # CHECK: :[[@LINE]]:11: error: invalid operand for instruction
23  crc32h  $1, $2          # CHECK: :[[@LINE]]:3: error: too few operands for instruction
24  crc32h  $1              # CHECK: :[[@LINE]]:3: error: too few operands for instruction
25  crc32h  $1, $2, 0($2)   # CHECK: :[[@LINE]]:19: error: invalid operand for instruction
26
27  crc32w  $1, $2, $2      # CHECK: :[[@LINE]]:3: error: source and destination must match
28  crc32w  $1, $2, $3      # CHECK: :[[@LINE]]:3: error: source and destination must match
29  crc32w  $1, $2, 2       # CHECK: :[[@LINE]]:19: error: invalid operand for instruction
30  crc32w  $1, 2, $2       # CHECK: :[[@LINE]]:15: error: invalid operand for instruction
31  crc32w  1, $2, $2       # CHECK: :[[@LINE]]:11: error: invalid operand for instruction
32  crc32w  $1, $2          # CHECK: :[[@LINE]]:3: error: too few operands for instruction
33  crc32w  $1              # CHECK: :[[@LINE]]:3: error: too few operands for instruction
34  crc32w  $1, $2, 0($2)   # CHECK: :[[@LINE]]:19: error: invalid operand for instruction
35
36  crc32cb  $1, $2, $2     # CHECK: :[[@LINE]]:3: error: source and destination must match
37  crc32cb  $1, $2, $3     # CHECK: :[[@LINE]]:3: error: source and destination must match
38  crc32cb  $1, $2, 2      # CHECK: :[[@LINE]]:20: error: invalid operand for instruction
39  crc32cb  $1, 2, $2      # CHECK: :[[@LINE]]:16: error: invalid operand for instruction
40  crc32cb  1, $2, $2      # CHECK: :[[@LINE]]:12: error: invalid operand for instruction
41  crc32cb  $1, $2         # CHECK: :[[@LINE]]:3: error: too few operands for instruction
42  crc32cb  $1             # CHECK: :[[@LINE]]:3: error: too few operands for instruction
43  crc32cb  $1, $2, 0($2)  # CHECK: :[[@LINE]]:20: error: invalid operand for instruction
44
45  crc32ch  $1, $2, $2     # CHECK: :[[@LINE]]:3: error: source and destination must match
46  crc32ch  $1, $2, $3     # CHECK: :[[@LINE]]:3: error: source and destination must match
47  crc32ch  $1, $2, 2      # CHECK: :[[@LINE]]:20: error: invalid operand for instruction
48  crc32ch  $1, 2, $2      # CHECK: :[[@LINE]]:16: error: invalid operand for instruction
49  crc32ch  1, $2, $2      # CHECK: :[[@LINE]]:12: error: invalid operand for instruction
50  crc32ch  $1, $2         # CHECK: :[[@LINE]]:3: error: too few operands for instruction
51  crc32ch  $1             # CHECK: :[[@LINE]]:3: error: too few operands for instruction
52  crc32ch  $1, $2, 0($2)  # CHECK: :[[@LINE]]:20: error: invalid operand for instruction
53
54  crc32cw  $1, $2, $2     # CHECK: :[[@LINE]]:3: error: source and destination must match
55  crc32cw  $1, $2, $3     # CHECK: :[[@LINE]]:3: error: source and destination must match
56  crc32cw  $1, $2, 2      # CHECK: :[[@LINE]]:20: error: invalid operand for instruction
57  crc32cw  $1, 2, $2      # CHECK: :[[@LINE]]:16: error: invalid operand for instruction
58  crc32cw  1, $2, $2      # CHECK: :[[@LINE]]:12: error: invalid operand for instruction
59  crc32cw  $1, $2         # CHECK: :[[@LINE]]:3: error: too few operands for instruction
60  crc32cw  $1             # CHECK: :[[@LINE]]:3: error: too few operands for instruction
61  crc32cw  $1, $2, 0($2)  # CHECK: :[[@LINE]]:20: error: invalid operand for instruction
62
63  crc32 $1, $2, $2        # CHECK: :[[@LINE]]:3: error: unknown instruction
64  crcb $1, $2, $2         # CHECK: :[[@LINE]]:3: error: unknown instruction
65  crc $1, $2, $2          # CHECK: :[[@LINE]]:3: error: unknown instruction
66