1// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx1100 %s 2>&1 | FileCheck %s -check-prefix=GFX11 --implicit-check-not=error: --strict-whitespace 2 3//===----------------------------------------------------------------------===// 4// A VOPD instruction can use only one literal. 5//===----------------------------------------------------------------------===// 6 7v_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:{{^}} ^ 11 12//===----------------------------------------------------------------------===// 13// When 2 different literals are specified, show the location 14// of the last literal which is not a KImm, if any. 15//===----------------------------------------------------------------------===// 16 17v_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:{{^}} ^ 21 22v_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:{{^}} ^ 26 27v_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:{{^}} ^ 31 32v_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:{{^}} ^ 36 37v_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:{{^}} ^ 41 42//===----------------------------------------------------------------------===// 43// Check that KImm operands are counted as literals 44// even if they look like inline constants. 45//===----------------------------------------------------------------------===// 46 47v_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:{{^}} ^ 51 52v_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:{{^}} ^ 56 57v_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:{{^}} ^ 61 62v_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:{{^}} ^ 66 67//===----------------------------------------------------------------------===// 68// Check that assembler detects a different literal regardless of its location. 69//===----------------------------------------------------------------------===// 70 71v_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:{{^}} ^ 75 76v_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:{{^}} ^ 80 81v_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:{{^}} ^ 85 86v_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:{{^}} ^ 90 91//===----------------------------------------------------------------------===// 92// When 2 different literals are specified and all literals are KImm, 93// show the location of the last KImm literal. 94//===----------------------------------------------------------------------===// 95 96v_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:{{^}} ^ 100 101//===----------------------------------------------------------------------===// 102// A VOPD instruction cannot use more than 2 scalar operands. 103//===----------------------------------------------------------------------===// 104 105// 2 different SGPRs + LITERAL 106 107v_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:{{^}} ^ 111 112v_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:{{^}} ^ 116 117v_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:{{^}} ^ 121 122// 2 different SGPRs + VCC 123 124v_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:{{^}} ^ 128 129v_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:{{^}} ^ 133 134v_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:{{^}} ^ 138 139// SGPR + LITERAL + VCC 140 141v_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:{{^}} ^ 145 146v_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:{{^}} ^ 150 151v_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:{{^}} ^ 155 156v_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:{{^}} ^ 160 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. 164 165v_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:{{^}} ^ 169 170//===----------------------------------------------------------------------===// 171// One dst register must be even and the other odd. 172//===----------------------------------------------------------------------===// 173 174v_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:{{^}} ^ 178 179v_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:{{^}} ^ 183 184v_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:{{^}} ^ 188 189v_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:{{^}} ^ 193 194v_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:{{^}} ^ 198 199v_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:{{^}} ^ 203 204//===----------------------------------------------------------------------===// 205// Src0 operands must use different VGPR banks. 206//===----------------------------------------------------------------------===// 207 208v_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:{{^}} ^ 212 213v_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:{{^}} ^ 217 218v_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:{{^}} ^ 222 223v_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:{{^}} ^ 227 228v_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:{{^}} ^ 232 233v_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:{{^}} ^ 237 238//===----------------------------------------------------------------------===// 239// Src1 operands must use different VGPR banks. 240//===----------------------------------------------------------------------===// 241 242v_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:{{^}} ^ 246 247v_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:{{^}} ^ 251 252v_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:{{^}} ^ 256 257v_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:{{^}} ^ 261 262v_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:{{^}} ^ 266 267v_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:{{^}} ^ 271 272v_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:{{^}} ^ 276 277//===----------------------------------------------------------------------===// 278// Src2 operands must use different VGPR banks. 279//===----------------------------------------------------------------------===// 280 281v_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:{{^}} ^ 285 286v_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:{{^}} ^ 290 291v_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:{{^}} ^ 295 296//===----------------------------------------------------------------------===// 297// Check invalid VOPD syntax. 298//===----------------------------------------------------------------------===// 299 300v_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:{{^}} ^ 304 305v_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:{{^}}^ 309 310v_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:{{^}}^ 314 315v_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:{{^}} ^ 319 320v_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:{{^}} ^ 324 325v_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:{{^}} ^ 329 330v_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:{{^}} ^ 334 335v_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:{{^}} ^ 339