1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve2  2>&1 < %s| FileCheck %s
2
3urshr z18.b, p0/m, z18.b, #0
4// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 8]
5// CHECK-NEXT: urshr z18.b, p0/m, z18.b, #0
6// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
7
8urshr z1.b, p0/m, z1.b, #9
9// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 8]
10// CHECK-NEXT: urshr z1.b, p0/m, z1.b, #9
11// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
12
13urshr z21.h, p0/m, z21.h, #0
14// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 16]
15// CHECK-NEXT: urshr z21.h, p0/m, z21.h, #0
16// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
17
18urshr z14.h, p0/m, z14.h, #17
19// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 16]
20// CHECK-NEXT: urshr z14.h, p0/m, z14.h, #17
21// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
22
23urshr z6.s, p0/m, z6.s, #0
24// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 32]
25// CHECK-NEXT: urshr z6.s, p0/m, z6.s, #0
26// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
27
28urshr z23.s, p0/m, z23.s, #33
29// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 32]
30// CHECK-NEXT: urshr z23.s, p0/m, z23.s, #33
31// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
32
33urshr z3.d, p0/m, z3.d, #0
34// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 64]
35// CHECK-NEXT: urshr z3.d, p0/m, z3.d, #0
36// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
37
38urshr z25.d, p0/m, z25.d, #65
39// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [1, 64]
40// CHECK-NEXT: urshr z25.d, p0/m, z25.d, #65
41// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
42
43
44// --------------------------------------------------------------------------//
45// Source and Destination Registers must match
46
47urshr z0.b, p0/m, z1.b, #1
48// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register
49// CHECK-NEXT: urshr z0.b, p0/m, z1.b, #1
50// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
51
52
53// --------------------------------------------------------------------------//
54// Element sizes must match
55
56urshr z0.b, p0/m, z0.d, #1
57// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
58// CHECK-NEXT: urshr z0.b, p0/m, z0.d, #1
59// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
60
61urshr z0.d, p0/m, z0.b, #1
62// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
63// CHECK-NEXT: urshr z0.d, p0/m, z0.b, #1
64// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
65
66
67// --------------------------------------------------------------------------//
68// Invalid predicate
69
70urshr z0.b, p0/z, z0.b, #1
71// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
72// CHECK-NEXT: urshr z0.b, p0/z, z0.b, #1
73// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
74
75urshr z0.b, p8/m, z0.b, #1
76// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
77// CHECK-NEXT: urshr z0.b, p8/m, z0.b, #1
78// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
79