xref: /llvm-project/llvm/test/MC/AMDGPU/dl-insts-err.s (revision 252c42354eca54274ed7b10c32c73c6937478e8b)
1// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx800 %s 2>&1 | FileCheck %s
2// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx900 %s 2>&1 | FileCheck %s
3// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx906 %s 2>&1 | FileCheck %s --check-prefix=GFX906-GFX908
4// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx908 %s 2>&1 | FileCheck %s --check-prefix=GFX906-GFX908
5// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx1013 %s 2>&1 | FileCheck %s --check-prefix=GFX1013
6
7//
8// Test unsupported GPUs.
9//
10
11// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: instruction not supported on this GPU
12v_fmac_f32 v0, v1, v2
13// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: instruction not supported on this GPU
14v_xnor_b32 v0, v1, v2
15// CHECK: :[[@LINE+2]]:{{[0-9]+}}: error: instruction not supported on this GPU
16// GFX1013: :[[@LINE+1]]:{{[0-9]+}}: error: instruction not supported on this GPU
17v_dot2_f32_f16 v0, v1, v2, v3
18// CHECK: :[[@LINE+2]]:{{[0-9]+}}: error: instruction not supported on this GPU
19// GFX1013: :[[@LINE+1]]:{{[0-9]+}}: error: instruction not supported on this GPU
20v_dot2_i32_i16 v0, v1, v2, v3
21// CHECK: :[[@LINE+2]]:{{[0-9]+}}: error: instruction not supported on this GPU
22// GFX1013: :[[@LINE+1]]:{{[0-9]+}}: error: instruction not supported on this GPU
23v_dot2_u32_u16 v0, v1, v2, v3
24// CHECK: :[[@LINE+2]]:{{[0-9]+}}: error: instruction not supported on this GPU
25// GFX1013: :[[@LINE+1]]:{{[0-9]+}}: error: instruction not supported on this GPU
26v_dot4_i32_i8 v0, v1, v2, v3
27// CHECK: :[[@LINE+2]]:{{[0-9]+}}: error: instruction not supported on this GPU
28// GFX1013: :[[@LINE+1]]:{{[0-9]+}}: error: instruction not supported on this GPU
29v_dot4_u32_u8 v0, v1, v2, v3
30// CHECK: :[[@LINE+2]]:{{[0-9]+}}: error: instruction not supported on this GPU
31// GFX1013: :[[@LINE+1]]:{{[0-9]+}}: error: instruction not supported on this GPU
32v_dot8_i32_i4 v0, v1, v2, v3
33// CHECK: :[[@LINE+2]]:{{[0-9]+}}: error: instruction not supported on this GPU
34// GFX1013: :[[@LINE+1]]:{{[0-9]+}}: error: instruction not supported on this GPU
35v_dot8_u32_u4 v0, v1, v2, v3
36
37//
38// Test invalid operands.
39//
40
41// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand for instruction
42v_dot2_f32_f16 v0, v1, v2, v3 op_sel
43// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a left square bracket
44v_dot2_f32_f16 v0, v1, v2, v3 op_sel:
45// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
46v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[
47// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a left square bracket
48v_dot2_f32_f16 v0, v1, v2, v3 op_sel:]
49// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
50v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[]
51// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
52v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[,]
53// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
54v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[,0]
55// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel value.
56v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,2]
57// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel value.
58v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[2,0]
59// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel value.
60v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[2,2]
61// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel value.
62v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,-1]
63// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel value.
64v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[-1,0]
65// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel value.
66v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[-1,-1]
67// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a closing square bracket
68v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0,0,0,0]
69// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand for instruction
70v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi
71// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a left square bracket
72v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:
73// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
74v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[
75// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a left square bracket
76v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:]
77// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
78v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[]
79// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
80v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[,]
81// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
82v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[,0]
83// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel_hi value.
84v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,2]
85// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel_hi value.
86v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[2,0]
87// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel_hi value.
88v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[2,2]
89// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel_hi value.
90v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,-1]
91// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel_hi value.
92v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[-1,0]
93// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel_hi value.
94v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[-1,-1]
95// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a closing square bracket
96v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,0,0,0,0]
97// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand for instruction
98v_dot2_f32_f16 v0, v1, v2, v3 neg_lo
99// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a left square bracket
100v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:
101// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
102v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[
103// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a left square bracket
104v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:]
105// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
106v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[]
107// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
108v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[,]
109// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
110v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[,0]
111// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid neg_lo value.
112v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[0,2]
113// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid neg_lo value.
114v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[2,0]
115// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid neg_lo value.
116v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[2,2]
117// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid neg_lo value.
118v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[0,-1]
119// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid neg_lo value.
120v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[-1,0]
121// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid neg_lo value.
122v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[-1,-1]
123// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a closing square bracket
124v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[0,0,0,0,0]
125// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand for instruction
126v_dot2_f32_f16 v0, v1, v2, v3 neg_hi
127// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a left square bracket
128v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:
129// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
130v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[
131// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a left square bracket
132v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:]
133// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
134v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[]
135// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
136v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[,]
137// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
138v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[,0]
139// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid neg_hi value.
140v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[0,2]
141// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid neg_hi value.
142v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[2,0]
143// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid neg_hi value.
144v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[2,2]
145// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid neg_hi value.
146v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[0,-1]
147// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid neg_hi value.
148v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[-1,0]
149// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid neg_hi value.
150v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[-1,-1]
151// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a closing square bracket
152v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[0,0,0,0,0]
153// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand for instruction
154v_dot2_i32_i16 v0, v1, v2, v3 op_sel
155// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a left square bracket
156v_dot2_i32_i16 v0, v1, v2, v3 op_sel:
157// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
158v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[
159// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a left square bracket
160v_dot2_i32_i16 v0, v1, v2, v3 op_sel:]
161// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
162v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[]
163// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
164v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[,]
165// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
166v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[,0]
167// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel value.
168v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,2]
169// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel value.
170v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[2,0]
171// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel value.
172v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[2,2]
173// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel value.
174v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,-1]
175// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel value.
176v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[-1,0]
177// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel value.
178v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[-1,-1]
179// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a closing square bracket
180v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0,0,0,0]
181// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand for instruction
182v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi
183// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a left square bracket
184v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:
185// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
186v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[
187// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a left square bracket
188v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:]
189// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
190v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[]
191// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
192v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[,]
193// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
194v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[,0]
195// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel_hi value.
196v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,2]
197// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel_hi value.
198v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[2,0]
199// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel_hi value.
200v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[2,2]
201// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel_hi value.
202v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,-1]
203// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel_hi value.
204v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[-1,0]
205// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel_hi value.
206v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[-1,-1]
207// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a closing square bracket
208v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,0,0,0,0]
209// FIXME-GFX906: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand for instruction
210v_dot2_i32_i16 v0, v1, v2, v3 neg_lo:[0,0]
211// FIXME-GFX906: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand for instruction
212v_dot2_i32_i16 v0, v1, v2, v3 neg_hi:[0,0]
213// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand for instruction
214v_dot2_u32_u16 v0, v1, v2, v3 op_sel
215// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a left square bracket
216v_dot2_u32_u16 v0, v1, v2, v3 op_sel:
217// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
218v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[
219// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a left square bracket
220v_dot2_u32_u16 v0, v1, v2, v3 op_sel:]
221// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
222v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[]
223// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
224v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[,]
225// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
226v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[,0]
227// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel value.
228v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,2]
229// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel value.
230v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[2,0]
231// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel value.
232v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[2,2]
233// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel value.
234v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,-1]
235// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel value.
236v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[-1,0]
237// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel value.
238v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[-1,-1]
239// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a closing square bracket
240v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0,0,0,0]
241// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand for instruction
242v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi
243// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a left square bracket
244v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:
245// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
246v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[
247// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a left square bracket
248v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:]
249// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
250v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[]
251// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
252v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[,]
253// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: unknown token in expression
254v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[,0]
255// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel_hi value
256v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,2]
257// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel_hi value.
258v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[2,0]
259// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel_hi value.
260v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[2,2]
261// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel_hi value.
262v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,-1]
263// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel_hi value.
264v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[-1,0]
265// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid op_sel_hi value.
266v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[-1,-1]
267// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: expected a closing square bracket
268v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,0,0,0,0]
269// FIXME-GFX906: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand for instruction
270v_dot2_u32_u16 v0, v1, v2, v3 neg_lo:[0,0]
271// FIXME-GFX906: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand for instruction
272v_dot2_u32_u16 v0, v1, v2, v3 neg_hi:[0,0]
273
274//
275// Test regular modifiers.
276//
277
278// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
279v_dot2_f32_f16 v0, |v1|, v2, v3
280// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
281v_dot2_f32_f16 v0, v1, |v2|, v3
282// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
283v_dot2_f32_f16 v0, v1, v2, |v3|
284// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
285v_dot2_f32_f16 v0, |v1|, |v2|, v3
286// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
287v_dot2_f32_f16 v0, |v1|, v2, |v3|
288// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
289v_dot2_f32_f16 v0, |v1|, |v2|, |v3|
290// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
291v_dot2_f32_f16 v0, abs(v1), v2, v3
292// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
293v_dot2_f32_f16 v0, v1, abs(v2), v3
294// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
295v_dot2_f32_f16 v0, v1, v2, abs(v3)
296// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
297v_dot2_f32_f16 v0, abs(v1), abs(v2), v3
298// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
299v_dot2_f32_f16 v0, abs(v1), v2, abs(v3)
300// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
301v_dot2_f32_f16 v0, abs(v1), abs(v2), abs(v3)
302// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
303v_dot2_f32_f16 v0, -v1, v2, v3
304// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
305v_dot2_f32_f16 v0, v1, -v2, v3
306// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
307v_dot2_f32_f16 v0, v1, v2, -v3
308// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
309v_dot2_f32_f16 v0, -v1, -v2, v3
310// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
311v_dot2_f32_f16 v0, -v1, v2, -v3
312// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
313v_dot2_f32_f16 v0, -v1, -v2, -v3
314// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
315v_dot2_i32_i16 v0, |v1|, v2, v3
316// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
317v_dot2_i32_i16 v0, v1, |v2|, v3
318// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
319v_dot2_i32_i16 v0, v1, v2, |v3|
320// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
321v_dot2_i32_i16 v0, |v1|, |v2|, v3
322// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
323v_dot2_i32_i16 v0, |v1|, v2, |v3|
324// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
325v_dot2_i32_i16 v0, |v1|, |v2|, |v3|
326// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
327v_dot2_i32_i16 v0, abs(v1), v2, v3
328// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
329v_dot2_i32_i16 v0, v1, abs(v2), v3
330// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
331v_dot2_i32_i16 v0, v1, v2, abs(v3)
332// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
333v_dot2_i32_i16 v0, abs(v1), abs(v2), v3
334// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
335v_dot2_i32_i16 v0, abs(v1), v2, abs(v3)
336// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
337v_dot2_i32_i16 v0, abs(v1), abs(v2), abs(v3)
338// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
339v_dot2_i32_i16 v0, -v1, v2, v3
340// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
341v_dot2_i32_i16 v0, v1, -v2, v3
342// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
343v_dot2_i32_i16 v0, v1, v2, -v3
344// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
345v_dot2_i32_i16 v0, -v1, -v2, v3
346// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
347v_dot2_i32_i16 v0, -v1, v2, -v3
348// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
349v_dot2_i32_i16 v0, -v1, -v2, -v3
350// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
351v_dot2_u32_u16 v0, |v1|, v2, v3
352// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
353v_dot2_u32_u16 v0, v1, |v2|, v3
354// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
355v_dot2_u32_u16 v0, v1, v2, |v3|
356// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
357v_dot2_u32_u16 v0, |v1|, |v2|, v3
358// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
359v_dot2_u32_u16 v0, |v1|, v2, |v3|
360// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
361v_dot2_u32_u16 v0, |v1|, |v2|, |v3|
362// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
363v_dot2_u32_u16 v0, abs(v1), v2, v3
364// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
365v_dot2_u32_u16 v0, v1, abs(v2), v3
366// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
367v_dot2_u32_u16 v0, v1, v2, abs(v3)
368// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
369v_dot2_u32_u16 v0, abs(v1), abs(v2), v3
370// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
371v_dot2_u32_u16 v0, abs(v1), v2, abs(v3)
372// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
373v_dot2_u32_u16 v0, abs(v1), abs(v2), abs(v3)
374// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
375v_dot2_u32_u16 v0, -v1, v2, v3
376// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
377v_dot2_u32_u16 v0, v1, -v2, v3
378// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
379v_dot2_u32_u16 v0, v1, v2, -v3
380// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
381v_dot2_u32_u16 v0, -v1, -v2, v3
382// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
383v_dot2_u32_u16 v0, -v1, v2, -v3
384// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: not a valid operand
385v_dot2_u32_u16 v0, -v1, -v2, -v3
386
387//
388// Test constant bus restrictions.
389//
390
391// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand (violates constant bus restrictions)
392v_dot2_f32_f16 v255, s1, s2, s3
393// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand (violates constant bus restrictions)
394v_dot2_i32_i16 v255, s1, s2, s3
395// GFX906-GFX908: :[[@LINE+1]]:{{[0-9]+}}: error: invalid operand (violates constant bus restrictions)
396v_dot2_u32_u16 v255, s1, s2, s3
397