Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / MC / AArch64 / SME / usmopa-diagnostics.s
blob5f453379c77f0a9b0a0dc9b7987acea43b25ba49
1 // RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sme,+sme-i16i64 2>&1 < %s| FileCheck %s
3 // ------------------------------------------------------------------------- //
4 // Invalid tile
5 //
6 // expected: .s => za0-za3, .d => za0-za7
8 usmopa za4.s, p0/m, p0/m, z0.b, z0.b
9 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
10 // CHECK-NEXT: usmopa za4.s, p0/m, p0/m, z0.b, z0.b
11 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
13 usmopa za8.d, p0/m, p0/m, z0.h, z0.h
14 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
15 // CHECK-NEXT: usmopa za8.d, p0/m, p0/m, z0.h, z0.h
16 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
18 // ------------------------------------------------------------------------- //
19 // Invalid predicate (expected: p0-p7)
21 usmopa za0.s, p8/m, p0/m, z0.b, z0.b
22 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
23 // CHECK-NEXT: usmopa za0.s, p8/m, p0/m, z0.b, z0.b
24 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
26 usmopa za0.s, p0/m, p8/m, z0.b, z0.b
27 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
28 // CHECK-NEXT: usmopa za0.s, p0/m, p8/m, z0.b, z0.b
29 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
31 usmopa za0.d, p8/m, p0/m, z0.h, z0.h
32 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
33 // CHECK-NEXT: usmopa za0.d, p8/m, p0/m, z0.h, z0.h
34 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
36 usmopa za0.d, p0/m, p8/m, z0.h, z0.h
37 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
38 // CHECK-NEXT: usmopa za0.d, p0/m, p8/m, z0.h, z0.h
39 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
41 // ------------------------------------------------------------------------- //
42 // Invalid predicate qualifier (expected: /m)
44 usmopa za0.s, p0/z, p0/m, z0.b, z0.b
45 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
46 // CHECK-NEXT: usmopa za0.s, p0/z, p0/m, z0.b, z0.b
47 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
49 usmopa za0.s, p0/m, p0/z, z0.b, z0.b
50 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
51 // CHECK-NEXT: usmopa za0.s, p0/m, p0/z, z0.b, z0.b
52 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
54 usmopa za0.d, p0/z, p0/m, z0.h, z0.h
55 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
56 // CHECK-NEXT: usmopa za0.d, p0/z, p0/m, z0.h, z0.h
57 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
59 usmopa za0.d, p0/m, p0/z, z0.h, z0.h
60 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
61 // CHECK-NEXT: usmopa za0.d, p0/m, p0/z, z0.h, z0.h
62 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
64 // ------------------------------------------------------------------------- //
65 // Invalid ZPR type suffix
67 // expected: .s => .b, .d => .h
69 usmopa za0.s, p0/m, p0/m, z0.h, z0.b
70 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
71 // CHECK-NEXT: usmopa za0.s, p0/m, p0/m, z0.h, z0.b
72 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
74 usmopa za0.s, p0/m, p0/m, z0.b, z0.s
75 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
76 // CHECK-NEXT: usmopa za0.s, p0/m, p0/m, z0.b, z0.s
77 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
79 usmopa za0.d, p0/m, p0/m, z0.b, z0.h
80 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
81 // CHECK-NEXT: usmopa za0.d, p0/m, p0/m, z0.b, z0.h
82 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
84 usmopa za0.d, p0/m, p0/m, z0.h, z0.s
85 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
86 // CHECK-NEXT: usmopa za0.d, p0/m, p0/m, z0.h, z0.s
87 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: