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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
:{{^
}} ^