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