1// RUN: not llvm-mc -arch=amdgcn %s 2>&1 | FileCheck --implicit-check-not=error: %s
2// RUN: not llvm-mc -arch=amdgcn -mcpu=tahiti %s 2>&1 | FileCheck --implicit-check-not=error: %s
3
4// offset too big
5// CHECK: error: invalid operand for instruction
6ds_add_u32 v2, v4 offset:1000000000
7
8// offset too big
9// CHECK: error: invalid operand for instruction
10ds_add_u32 v2, v4 offset:0x10000
11
12// offset0 twice
13// CHECK:  error: invalid operand for instruction
14ds_write2_b32 v2, v4, v6 offset0:4 offset0:8
15
16// offset1 twice
17// CHECK:  error: invalid operand for instruction
18ds_write2_b32 v2, v4, v6 offset1:4 offset1:8
19
20// offset0 too big
21// CHECK: error: invalid operand for instruction
22ds_write2_b32 v2, v4, v6 offset0:1000000000
23
24// offset0 too big
25// CHECK: error: invalid operand for instruction
26ds_write2_b32 v2, v4, v6 offset0:0x100
27
28// offset1 too big
29// CHECK: error: invalid operand for instruction
30ds_write2_b32 v2, v4, v6 offset1:1000000000
31
32// offset1 too big
33// CHECK: error: invalid operand for instruction
34ds_write2_b32 v2, v4, v6 offset1:0x100
35
36//===----------------------------------------------------------------------===//
37// swizzle
38//===----------------------------------------------------------------------===//
39
40// CHECK: error: expected a colon
41ds_swizzle_b32 v8, v2 offset
42
43// CHECK: error: unknown token in expression
44ds_swizzle_b32 v8, v2 offset:
45
46// CHECK: error: expected a colon
47ds_swizzle_b32 v8, v2 offset-
48
49// CHECK: error: expected absolute expression
50ds_swizzle_b32 v8, v2 offset:SWIZZLE(QUAD_PERM, 0, 1, 2, 3)
51
52// CHECK: error: expected a swizzle mode
53ds_swizzle_b32 v8, v2 offset:swizzle(quad_perm, 0, 1, 2, 3)
54
55// CHECK: error: expected a swizzle mode
56ds_swizzle_b32 v8, v2 offset:swizzle(XXX,1)
57
58// CHECK: error: expected a comma
59ds_swizzle_b32 v8, v2 offset:swizzle(QUAD_PERM
60
61// CHECK: error: expected a comma
62ds_swizzle_b32 v8, v2 offset:swizzle(QUAD_PERM, 0, 1, 2)
63
64// CHECK: error: expected a closing parentheses
65ds_swizzle_b32 v8, v2 offset:swizzle(QUAD_PERM, 0, 1, 2, 3
66
67// CHECK: error: expected a closing parentheses
68ds_swizzle_b32 v8, v2 offset:swizzle(QUAD_PERM, 0, 1, 2, 3, 4)
69
70// CHECK: error: expected a 2-bit lane id
71ds_swizzle_b32 v8, v2 offset:swizzle(QUAD_PERM, -1, 1, 2, 3)
72
73// CHECK: error: expected a 2-bit lane id
74ds_swizzle_b32 v8, v2 offset:swizzle(QUAD_PERM, 4, 1, 2, 3)
75
76// CHECK: error: group size must be in the interval [1,16]
77ds_swizzle_b32 v8, v2 offset:swizzle(SWAP,0)
78
79// CHECK: error: group size must be a power of two
80ds_swizzle_b32 v8, v2 offset:swizzle(SWAP,3)
81
82// CHECK: error: group size must be in the interval [1,16]
83ds_swizzle_b32 v8, v2 offset:swizzle(SWAP,17)
84
85// CHECK: error: group size must be in the interval [1,16]
86ds_swizzle_b32 v8, v2 offset:swizzle(SWAP,32)
87
88// CHECK: error: group size must be in the interval [2,32]
89ds_swizzle_b32 v8, v2 offset:swizzle(REVERSE,1)
90
91// CHECK: error: group size must be a power of two
92ds_swizzle_b32 v8, v2 offset:swizzle(REVERSE,3)
93
94// CHECK: error: group size must be in the interval [2,32]
95ds_swizzle_b32 v8, v2 offset:swizzle(REVERSE,33)
96
97// CHECK: error: group size must be in the interval [2,32]
98ds_swizzle_b32 v8, v2 offset:swizzle(BROADCAST,1,0)
99
100// CHECK: error: group size must be a power of two
101ds_swizzle_b32 v8, v2 offset:swizzle(BROADCAST,3,1)
102
103// CHECK: error: group size must be in the interval [2,32]
104ds_swizzle_b32 v8, v2 offset:swizzle(BROADCAST,33,1)
105
106// CHECK: error: lane id must be in the interval [0,group size - 1]
107ds_swizzle_b32 v8, v2 offset:swizzle(BROADCAST,2,-1)
108
109// CHECK: error: lane id must be in the interval [0,group size - 1]
110ds_swizzle_b32 v8, v2 offset:swizzle(BROADCAST,2,2)
111
112// CHECK: error: expected a string
113ds_swizzle_b32 v8, v2 offset:swizzle(BITMASK_PERM, pppii)
114
115// CHECK: error: expected a 5-character mask
116ds_swizzle_b32 v8, v2 offset:swizzle(BITMASK_PERM, "")
117
118// CHECK: error: expected a 5-character mask
119ds_swizzle_b32 v8, v2 offset:swizzle(BITMASK_PERM, "ppii")
120
121// CHECK: error: expected a 5-character mask
122ds_swizzle_b32 v8, v2 offset:swizzle(BITMASK_PERM, "pppiii")
123
124// CHECK: error: invalid mask
125ds_swizzle_b32 v8, v2 offset:swizzle(BITMASK_PERM, "pppi2")
126