Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / MC / AMDGPU / gfx11_asm_vopd_err.s
blob3c5905b14e06cf1760809a3e5a1b08e8f6940cd6
1 // RUN: not llvm-mc -triple=amdgcn -mcpu=gfx1100 %s 2>&1 | FileCheck %s -check-prefix=GFX11 --implicit-check-not=error: --strict-whitespace
3 //===----------------------------------------------------------------------===//
4 // A VOPD instruction can use only one literal.
5 //===----------------------------------------------------------------------===//
7 v_dual_mul_f32 v11, 0x24681357, v2 :: v_dual_mul_f32 v10, 0xbabe, v5
8 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed
9 // GFX11-NEXT:{{^}}v_dual_mul_f32 v11, 0x24681357, v2 :: v_dual_mul_f32 v10, 0xbabe, v5
10 // GFX11-NEXT:{{^}} ^
12 //===----------------------------------------------------------------------===//
13 // When 2 different literals are specified, show the location
14 // of the last literal which is not a KImm, if any.
15 //===----------------------------------------------------------------------===//
17 v_dual_fmamk_f32 v122, v74, 0xa0172923, v161 :: v_dual_lshlrev_b32 v247, 0xbabe, v99
18 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed
19 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v122, v74, 0xa0172923, v161 :: v_dual_lshlrev_b32 v247, 0xbabe, v99
20 // GFX11-NEXT:{{^}} ^
22 v_dual_add_f32 v5, 0xaf123456, v2 :: v_dual_fmaak_f32 v6, v3, v1, 0xbabe
23 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed
24 // GFX11-NEXT:{{^}}v_dual_add_f32 v5, 0xaf123456, v2 :: v_dual_fmaak_f32 v6, v3, v1, 0xbabe
25 // GFX11-NEXT:{{^}} ^
27 v_dual_add_f32 v5, 0xaf123456, v2 :: v_dual_fmaak_f32 v6, 0xbabe, v1, 0xbabe
28 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed
29 // GFX11-NEXT:{{^}}v_dual_add_f32 v5, 0xaf123456, v2 :: v_dual_fmaak_f32 v6, 0xbabe, v1, 0xbabe
30 // GFX11-NEXT:{{^}} ^
32 v_dual_fmamk_f32 v122, 0xdeadbeef, 0xdeadbeef, v161 :: v_dual_fmamk_f32 v123, 0xdeadbeef, 0x1234, v162
33 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed
34 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v122, 0xdeadbeef, 0xdeadbeef, v161 :: v_dual_fmamk_f32 v123, 0xdeadbeef, 0x1234, v162
35 // GFX11-NEXT:{{^}} ^
37 v_dual_fmamk_f32 v122, 0xdeadbeef, 0xdeadbeef, v161 :: v_dual_fmamk_f32 v123, s0, 0x1234, v162
38 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed
39 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v122, 0xdeadbeef, 0xdeadbeef, v161 :: v_dual_fmamk_f32 v123, s0, 0x1234, v162
40 // GFX11-NEXT:{{^}} ^
42 //===----------------------------------------------------------------------===//
43 // Check that KImm operands are counted as literals
44 // even if they look like inline constants.
45 //===----------------------------------------------------------------------===//
47 v_dual_fmamk_f32 v122, v74, 0, v161 :: v_dual_lshlrev_b32 v247, 0xbabe, v99
48 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed
49 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v122, v74, 0, v161 :: v_dual_lshlrev_b32 v247, 0xbabe, v99
50 // GFX11-NEXT:{{^}} ^
52 v_dual_add_f32 v5, 0xaf123456, v2 :: v_dual_fmaak_f32 v6, v3, v1, 1.0
53 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed
54 // GFX11-NEXT:{{^}}v_dual_add_f32 v5, 0xaf123456, v2 :: v_dual_fmaak_f32 v6, v3, v1, 1.0
55 // GFX11-NEXT:{{^}} ^
57 v_dual_fmamk_f32 v122, 0xdeadbeef, 2, v161 :: v_dual_fmamk_f32 v123, s0, 1, v162
58 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed
59 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v122, 0xdeadbeef, 2, v161 :: v_dual_fmamk_f32 v123, s0, 1, v162
60 // GFX11-NEXT:{{^}} ^
62 v_dual_fmamk_f32 v122, v1, 2, v161 :: v_dual_fmamk_f32 v123, s0, 1, v162
63 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed
64 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v122, v1, 2, v161 :: v_dual_fmamk_f32 v123, s0, 1, v162
65 // GFX11-NEXT:{{^}} ^
67 //===----------------------------------------------------------------------===//
68 // Check that assembler detects a different literal regardless of its location.
69 //===----------------------------------------------------------------------===//
71 v_dual_fmamk_f32 v122, 0xdeadbeef, 0xdeadbeef, v161 :: v_dual_fmamk_f32 v123, 0xdeadbeef, 0x1234, v162
72 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed
73 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v122, 0xdeadbeef, 0xdeadbeef, v161 :: v_dual_fmamk_f32 v123, 0xdeadbeef, 0x1234, v162
74 // GFX11-NEXT:{{^}} ^
76 v_dual_fmamk_f32 v122, 0xdeadbeef, 0xdeadbeef, v161 :: v_dual_fmamk_f32 v123, 0x1234, 0xdeadbeef, v162
77 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed
78 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v122, 0xdeadbeef, 0xdeadbeef, v161 :: v_dual_fmamk_f32 v123, 0x1234, 0xdeadbeef, v162
79 // GFX11-NEXT:{{^}} ^
81 v_dual_fmamk_f32 v122, 0xdeadbeef, 0x1234, v161 :: v_dual_fmamk_f32 v123, 0xdeadbeef, 0xdeadbeef, v162
82 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed
83 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v122, 0xdeadbeef, 0x1234, v161 :: v_dual_fmamk_f32 v123, 0xdeadbeef, 0xdeadbeef, v162
84 // GFX11-NEXT:{{^}} ^
86 v_dual_fmamk_f32 v122, 0x1234, 0xdeadbeef, v161 :: v_dual_fmamk_f32 v123, 0xdeadbeef, 0xdeadbeef, v162
87 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed
88 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v122, 0x1234, 0xdeadbeef, v161 :: v_dual_fmamk_f32 v123, 0xdeadbeef, 0xdeadbeef, v162
89 // GFX11-NEXT:{{^}} ^
91 //===----------------------------------------------------------------------===//
92 // When 2 different literals are specified and all literals are KImm,
93 // show the location of the last KImm literal.
94 //===----------------------------------------------------------------------===//
96 v_dual_fmamk_f32 v122, s0, 0xdeadbeef, v161 :: v_dual_fmamk_f32 v123, s0, 0x1234, v162
97 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed
98 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v122, s0, 0xdeadbeef, v161 :: v_dual_fmamk_f32 v123, s0, 0x1234, v162
99 // GFX11-NEXT:{{^}} ^
101 //===----------------------------------------------------------------------===//
102 // A VOPD instruction cannot use more than 2 scalar operands.
103 //===----------------------------------------------------------------------===//
105 // 2 different SGPRs + LITERAL
107 v_dual_fmaak_f32 v122, s74, v161, 2.741 :: v_dual_and_b32 v247, s75, v98
108 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand (violates constant bus restrictions)
109 // GFX11-NEXT:{{^}}v_dual_fmaak_f32 v122, s74, v161, 2.741 :: v_dual_and_b32 v247, s75, v98
110 // GFX11-NEXT:{{^}} ^
112 v_dual_mov_b32 v247, s73 :: v_dual_fmaak_f32 v122, s74, v161, 2.741
113 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand (violates constant bus restrictions)
114 // GFX11-NEXT:{{^}}v_dual_mov_b32 v247, s73 :: v_dual_fmaak_f32 v122, s74, v161, 2.741
115 // GFX11-NEXT:{{^}} ^
117 v_dual_fmamk_f32 v122, s0, 0xbabe, v161 :: v_dual_fmamk_f32 v123, s1, 0xbabe, v162
118 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand (violates constant bus restrictions)
119 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v122, s0, 0xbabe, v161 :: v_dual_fmamk_f32 v123, s1, 0xbabe, v162
120 // GFX11-NEXT:{{^}} ^
122 // 2 different SGPRs + VCC
124 v_dual_add_f32 v255, s1, v2 :: v_dual_cndmask_b32 v6, s2, v3
125 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand (violates constant bus restrictions)
126 // GFX11-NEXT:{{^}}v_dual_add_f32 v255, s1, v2 :: v_dual_cndmask_b32 v6, s2, v3
127 // GFX11-NEXT:{{^}} ^
129 v_dual_cndmask_b32 v6, s1, v3 :: v_dual_add_f32 v255, s2, v2
130 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand (violates constant bus restrictions)
131 // GFX11-NEXT:{{^}}v_dual_cndmask_b32 v6, s1, v3 :: v_dual_add_f32 v255, s2, v2
132 // GFX11-NEXT:{{^}} ^
134 v_dual_cndmask_b32 v255, s1, v2 :: v_dual_cndmask_b32 v6, s2, v3
135 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand (violates constant bus restrictions)
136 // GFX11-NEXT:{{^}}v_dual_cndmask_b32 v255, s1, v2 :: v_dual_cndmask_b32 v6, s2, v3
137 // GFX11-NEXT:{{^}} ^
139 // SGPR + LITERAL + VCC
141 v_dual_cndmask_b32 v255, s1, v2 :: v_dual_mov_b32 v254, 0xbabe
142 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand (violates constant bus restrictions)
143 // GFX11-NEXT:{{^}}v_dual_cndmask_b32 v255, s1, v2 :: v_dual_mov_b32 v254, 0xbabe
144 // GFX11-NEXT:{{^}} ^
146 v_dual_cndmask_b32 v255, 0xbabe, v2 :: v_dual_mov_b32 v254, s1
147 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand (violates constant bus restrictions)
148 // GFX11-NEXT:{{^}}v_dual_cndmask_b32 v255, 0xbabe, v2 :: v_dual_mov_b32 v254, s1
149 // GFX11-NEXT:{{^}} ^
151 v_dual_cndmask_b32 v255, s3, v2 :: v_dual_fmamk_f32 v254, v1, 0xbabe, v162
152 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand (violates constant bus restrictions)
153 // GFX11-NEXT:{{^}}v_dual_cndmask_b32 v255, s3, v2 :: v_dual_fmamk_f32 v254, v1, 0xbabe, v162
154 // GFX11-NEXT:{{^}} ^
156 v_dual_cndmask_b32 v255, v1, v2 :: v_dual_fmamk_f32 v254, s3, 0xbabe, v162
157 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand (violates constant bus restrictions)
158 // GFX11-NEXT:{{^}}v_dual_cndmask_b32 v255, v1, v2 :: v_dual_fmamk_f32 v254, s3, 0xbabe, v162
159 // GFX11-NEXT:{{^}} ^
161 // SGPR + VCC + VCC_LO
162 // This is a special case because implicit VCC operand has 64 bit size.
163 // SP3 does not accept this instruction as well.
165 v_dual_add_f32 v255, vcc_lo, v2 :: v_dual_cndmask_b32 v6, s1, v3
166 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand (violates constant bus restrictions)
167 // GFX11-NEXT:{{^}}v_dual_add_f32 v255, vcc_lo, v2 :: v_dual_cndmask_b32 v6, s1, v3
168 // GFX11-NEXT:{{^}} ^
170 //===----------------------------------------------------------------------===//
171 // One dst register must be even and the other odd.
172 //===----------------------------------------------------------------------===//
174 v_dual_add_f32 v0, v4, v2 :: v_dual_add_f32 v2, v1, v3
175 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: one dst register must be even and the other odd
176 // GFX11-NEXT:{{^}}v_dual_add_f32 v0, v4, v2 :: v_dual_add_f32 v2, v1, v3
177 // GFX11-NEXT:{{^}} ^
179 v_dual_mov_b32 v1, v4 :: v_dual_add_f32 v5, v1, v3
180 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: one dst register must be even and the other odd
181 // GFX11-NEXT:{{^}}v_dual_mov_b32 v1, v4 :: v_dual_add_f32 v5, v1, v3
182 // GFX11-NEXT:{{^}} ^
184 v_dual_cndmask_b32 v2, v4, v5 :: v_dual_add_f32 v8, v5, v6
185 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: one dst register must be even and the other odd
186 // GFX11-NEXT:{{^}}v_dual_cndmask_b32 v2, v4, v5 :: v_dual_add_f32 v8, v5, v6
187 // GFX11-NEXT:{{^}} ^
189 v_dual_fmac_f32 v3, v4, v5 :: v_dual_add_f32 v9, v5, v6
190 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: one dst register must be even and the other odd
191 // GFX11-NEXT:{{^}}v_dual_fmac_f32 v3, v4, v5 :: v_dual_add_f32 v9, v5, v6
192 // GFX11-NEXT:{{^}} ^
194 v_dual_fmaak_f32 v4, v4, v5, 0xaf123456 :: v_dual_add_f32 v0, v5, v6
195 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: one dst register must be even and the other odd
196 // GFX11-NEXT:{{^}}v_dual_fmaak_f32 v4, v4, v5, 0xaf123456 :: v_dual_add_f32 v0, v5, v6
197 // GFX11-NEXT:{{^}} ^
199 v_dual_fmamk_f32 v5, v4, 0xaf123456, v6 :: v_dual_add_f32 v1, v5, v6
200 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: one dst register must be even and the other odd
201 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v5, v4, 0xaf123456, v6 :: v_dual_add_f32 v1, v5, v6
202 // GFX11-NEXT:{{^}} ^
204 //===----------------------------------------------------------------------===//
205 // Src0 operands must use different VGPR banks.
206 //===----------------------------------------------------------------------===//
208 v_dual_add_f32 v1, v1, v5 :: v_dual_mov_b32 v2, v1
209 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: src0 operands must use different VGPR banks
210 // GFX11-NEXT:{{^}}v_dual_add_f32 v1, v1, v5 :: v_dual_mov_b32 v2, v1
211 // GFX11-NEXT:{{^}} ^
213 v_dual_mov_b32 v1, v2 :: v_dual_add_f32 v2, v6, v6
214 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: src0 operands must use different VGPR banks
215 // GFX11-NEXT:{{^}}v_dual_mov_b32 v1, v2 :: v_dual_add_f32 v2, v6, v6
216 // GFX11-NEXT:{{^}} ^
218 v_dual_cndmask_b32 v1, v3, v5 :: v_dual_add_f32 v2, v11, v6
219 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: src0 operands must use different VGPR banks
220 // GFX11-NEXT:{{^}}v_dual_cndmask_b32 v1, v3, v5 :: v_dual_add_f32 v2, v11, v6
221 // GFX11-NEXT:{{^}} ^
223 v_dual_fmac_f32 v1, v4, v5 :: v_dual_add_f32 v2, v44, v6
224 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: src0 operands must use different VGPR banks
225 // GFX11-NEXT:{{^}}v_dual_fmac_f32 v1, v4, v5 :: v_dual_add_f32 v2, v44, v6
226 // GFX11-NEXT:{{^}} ^
228 v_dual_fmaak_f32 v1, v5, v5, 0xaf123456 :: v_dual_add_f32 v2, v25, v6
229 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: src0 operands must use different VGPR banks
230 // GFX11-NEXT:{{^}}v_dual_fmaak_f32 v1, v5, v5, 0xaf123456 :: v_dual_add_f32 v2, v25, v6
231 // GFX11-NEXT:{{^}} ^
233 v_dual_fmamk_f32 v1, v6, 0xaf123456, v6 :: v_dual_add_f32 v2, v2, v6
234 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: src0 operands must use different VGPR banks
235 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v1, v6, 0xaf123456, v6 :: v_dual_add_f32 v2, v2, v6
236 // GFX11-NEXT:{{^}} ^
238 //===----------------------------------------------------------------------===//
239 // Src1 operands must use different VGPR banks.
240 //===----------------------------------------------------------------------===//
242 v_dual_add_f32 v1, v4, v0 :: v_dual_add_f32 v2, v5, v4
243 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: src1 operands must use different VGPR banks
244 // GFX11-NEXT:{{^}}v_dual_add_f32 v1, v4, v0 :: v_dual_add_f32 v2, v5, v4
245 // GFX11-NEXT:{{^}} ^
247 v_dual_cndmask_b32 v1, v4, v1 :: v_dual_add_f32 v2, v5, v9
248 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: src1 operands must use different VGPR banks
249 // GFX11-NEXT:{{^}}v_dual_cndmask_b32 v1, v4, v1 :: v_dual_add_f32 v2, v5, v9
250 // GFX11-NEXT:{{^}} ^
252 v_dual_fmac_f32 v1, v4, v2 :: v_dual_add_f32 v2, v5, v14
253 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: src1 operands must use different VGPR banks
254 // GFX11-NEXT:{{^}}v_dual_fmac_f32 v1, v4, v2 :: v_dual_add_f32 v2, v5, v14
255 // GFX11-NEXT:{{^}} ^
257 v_dual_fmaak_f32 v1, v4, v3, 0xaf123456 :: v_dual_add_f32 v2, v5, v23
258 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: src1 operands must use different VGPR banks
259 // GFX11-NEXT:{{^}}v_dual_fmaak_f32 v1, v4, v3, 0xaf123456 :: v_dual_add_f32 v2, v5, v23
260 // GFX11-NEXT:{{^}} ^
262 v_dual_add_f32 v2, v4, v4 :: v_dual_cndmask_b32 v1, v5, v0
263 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: src1 operands must use different VGPR banks
264 // GFX11-NEXT:{{^}}v_dual_add_f32 v2, v4, v4 :: v_dual_cndmask_b32 v1, v5, v0
265 // GFX11-NEXT:{{^}} ^
267 v_dual_add_f32 v2, v4, v5 :: v_dual_fmac_f32 v1, v5, v1
268 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: src1 operands must use different VGPR banks
269 // GFX11-NEXT:{{^}}v_dual_add_f32 v2, v4, v5 :: v_dual_fmac_f32 v1, v5, v1
270 // GFX11-NEXT:{{^}} ^
272 v_dual_fmaak_f32 v1, v4, v3, 0xaf123456 :: v_dual_fmaak_f32 v2, v5, v23, 0xaf123456
273 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: src1 operands must use different VGPR banks
274 // GFX11-NEXT:{{^}}v_dual_fmaak_f32 v1, v4, v3, 0xaf123456 :: v_dual_fmaak_f32 v2, v5, v23, 0xaf123456
275 // GFX11-NEXT:{{^}} ^
277 //===----------------------------------------------------------------------===//
278 // Src2 operands must use different VGPR banks.
279 //===----------------------------------------------------------------------===//
281 v_dual_fmamk_f32 v6, v1, 0xaf123456, v3 :: v_dual_fmamk_f32 v5, v2, 0xaf123456, v5
282 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: src2 operands must use different VGPR banks
283 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v6, v1, 0xaf123456, v3 :: v_dual_fmamk_f32 v5, v2, 0xaf123456, v5
284 // GFX11-NEXT:{{^}} ^
286 v_dual_fmac_f32 v7, v1, v2 :: v_dual_fmamk_f32 v6, v2, 0xaf123456, v3
287 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: src2 operands must use different VGPR banks
288 // GFX11-NEXT:{{^}}v_dual_fmac_f32 v7, v1, v2 :: v_dual_fmamk_f32 v6, v2, 0xaf123456, v3
289 // GFX11-NEXT:{{^}} ^
291 v_dual_fmamk_f32 v6, v1, 0xaf123456, v3 :: v_dual_fmac_f32 v5, v2, v3
292 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: src2 operands must use different VGPR banks
293 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v6, v1, 0xaf123456, v3 :: v_dual_fmac_f32 v5, v2, v3
294 // GFX11-NEXT:{{^}} ^
296 //===----------------------------------------------------------------------===//
297 // Check invalid VOPD syntax.
298 //===----------------------------------------------------------------------===//
300 v_dual_fmamk_f32 v6, v1, 0xaf123456, v2 : : v_dual_fmac_f32 v5, v2, v3
301 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: unknown token in expression
302 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v6, v1, 0xaf123456, v2 : : v_dual_fmac_f32 v5, v2, v3
303 // GFX11-NEXT:{{^}} ^
305 v_dual_fmamk_f32 v6, v1, 0xaf123456, v3
306 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: too few operands for instruction
307 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v6, v1, 0xaf123456, v3
308 // GFX11-NEXT:{{^}}^
310 v_dual_fmamk_f32 v6, v1, 0xaf123456, v2 :: v_dual_fmac_f32
311 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: too few operands for instruction
312 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v6, v1, 0xaf123456, v2 :: v_dual_fmac_f32
313 // GFX11-NEXT:{{^}}^
315 v_dual_add_f32 v255, v4 :: v_add_f32 v6, v1, v3
316 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
317 // GFX11-NEXT:{{^}}v_dual_add_f32 v255, v4 :: v_add_f32 v6, v1, v3
318 // GFX11-NEXT:{{^}} ^
320 v_dual_fmamk_f32 v6, v1, 0xaf123456, v3 ::
321 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: expected a VOPDY instruction after ::
322 // GFX11-NEXT:{{^}}v_dual_fmamk_f32 v6, v1, 0xaf123456, v3 ::
323 // GFX11-NEXT:{{^}} ^
325 v_add_f32 v6, v1, v3 ::
326 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: expected a VOPDY instruction after ::
327 // GFX11-NEXT:{{^}}v_add_f32 v6, v1, v3 ::
328 // GFX11-NEXT:{{^}} ^
330 v_dual_add_f32 v255::
331 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: expected a VOPDY instruction after ::
332 // GFX11-NEXT:{{^}}v_dual_add_f32 v255::
333 // GFX11-NEXT:{{^}} ^
335 v_dual_add_f32 v255, v4, v2 :: v_add_f32 v6, v1, v3
336 // GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: invalid VOPDY instruction
337 // GFX11-NEXT:{{^}}v_dual_add_f32 v255, v4, v2 :: v_add_f32 v6, v1, v3
338 // GFX11-NEXT:{{^}} ^