From 521263b200e62701d149a7f6410b9199cf46a9ba Mon Sep 17 00:00:00 2001 From: Jun Wang Date: Wed, 24 Jul 2024 16:49:12 -0700 Subject: [PATCH 1/6] [AMDGPU][MC] Disallow op_sel in v_dot4 and v_dot8 with 4- or 8-bit packed data In v_dot4 and v_dot8 instructions with 4- or 8-bit packed data (e.g., v_dot4_u32_u8, v_dot8_u32_u4), the op_sel modifier should not be allowed for GFX9 and GFX10. For GFX11 and GFX12, section 7.5.1 of the RDNS3 ISA doc seems to indicate that OPSEL is allowed. --- llvm/lib/Target/AMDGPU/VOP3PInstructions.td | 10 +- llvm/lib/Target/AMDGPU/VOPInstructions.td | 11 +- .../CodeGen/AMDGPU/mai-hazards-gfx90a.mir | 6 +- .../CodeGen/AMDGPU/mai-hazards-gfx940.mir | 6 +- llvm/test/MC/AMDGPU/dl-insts.s | 192 -------- llvm/test/MC/AMDGPU/gfx1030_err.s | 362 +++++++++++++++ llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s | 219 +++++++++ llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s | 218 +++++++++ llvm/test/MC/AMDGPU/gfx908_err.s | 436 ++++++++++++++++++ llvm/test/MC/AMDGPU/gfx90a_err.s | 435 +++++++++++++++++ .../Disassembler/AMDGPU/gfx908-dl-insts.txt | 276 ----------- 11 files changed, 1687 insertions(+), 484 deletions(-) create mode 100644 llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s create mode 100644 llvm/test/MC/AMDGPU/gfx908_err.s diff --git a/llvm/lib/Target/AMDGPU/VOP3PInstructions.td b/llvm/lib/Target/AMDGPU/VOP3PInstructions.td index 689f3b38a1723..1afd68767cd3b 100644 --- a/llvm/lib/Target/AMDGPU/VOP3PInstructions.td +++ b/llvm/lib/Target/AMDGPU/VOP3PInstructions.td @@ -405,16 +405,16 @@ defm V_DOT2_F32_F16 : VOP3PInst<"v_dot2_f32_f16", let OtherPredicates = [HasDot7Insts] in { defm V_DOT4_U32_U8 : VOP3PInst<"v_dot4_u32_u8", - VOP3P_Profile, int_amdgcn_udot4, 1>; + VOP3P_Profile, int_amdgcn_udot4, 1>; defm V_DOT8_U32_U4 : VOP3PInst<"v_dot8_u32_u4", - VOP3P_Profile, int_amdgcn_udot8, 1>; + VOP3P_Profile, int_amdgcn_udot8, 1>; } // End OtherPredicates = [HasDot7Insts] let OtherPredicates = [HasDot1Insts] in { defm V_DOT4_I32_I8 : VOP3PInst<"v_dot4_i32_i8", - VOP3P_Profile, int_amdgcn_sdot4, 1>; + VOP3P_Profile, int_amdgcn_sdot4, 1>; defm V_DOT8_I32_I4 : VOP3PInst<"v_dot8_i32_i4", - VOP3P_Profile, int_amdgcn_sdot8, 1>; + VOP3P_Profile, int_amdgcn_sdot8, 1>; } // End OtherPredicates = [HasDot1Insts] def DOT2_BF16_Profile @@ -433,7 +433,7 @@ defm V_DOT2_F32_BF16 : VOP3PInst<"v_dot2_f32_bf16", DOT2_BF16_Profile, multiclass VOP3PDOTIUInst { let IsDOT = 1 in - defm NAME : VOP3PInst, + defm NAME : VOP3PInst, null_frag, 1>; // Dot-iu instructions consider input as signed if imod neg bits are set. Thus // Dot-iu Intrinsics have extra operands and require separate codegen pattern. diff --git a/llvm/lib/Target/AMDGPU/VOPInstructions.td b/llvm/lib/Target/AMDGPU/VOPInstructions.td index 0f568ba90a9ef..9df1ebf694230 100644 --- a/llvm/lib/Target/AMDGPU/VOPInstructions.td +++ b/llvm/lib/Target/AMDGPU/VOPInstructions.td @@ -1454,11 +1454,12 @@ class VOP3Features { bit IsMAI = MAI; } -def VOP3_REGULAR : VOP3Features<0, 0, 0, 0>; -def VOP3_CLAMP : VOP3Features<1, 0, 0, 0>; -def VOP3_OPSEL : VOP3Features<1, 1, 0, 0>; -def VOP3_PACKED : VOP3Features<1, 1, 1, 0>; -def VOP3_MAI : VOP3Features<0, 0, 0, 1>; +def VOP3_REGULAR : VOP3Features<0, 0, 0, 0>; +def VOP3_CLAMP : VOP3Features<1, 0, 0, 0>; +def VOP3_OPSEL : VOP3Features<1, 1, 0, 0>; +def VOP3_PACKED : VOP3Features<1, 1, 1, 0>; +def VOP3_PACKED_NO_OPSEL : VOP3Features<1, 0, 1, 0>; +def VOP3_MAI : VOP3Features<0, 0, 0, 1>; def VOP3_OPSEL_ONLY : VOP3Features<0, 1, 0, 0>; // Packed is misleading, but it enables the appropriate op_sel diff --git a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx90a.mir b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx90a.mir index 8be7308c8a6e0..3feccff715bc1 100644 --- a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx90a.mir +++ b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx90a.mir @@ -746,7 +746,7 @@ name: smfma4x4_write_vgpr_dot_write body: | bb.0: $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec - $vgpr1 = V_DOT8_I32_I4 0, $vgpr4, 0, $vgpr4, 0, $vgpr4, 0, 0, 0, 0, 0, implicit $mode, implicit $exec + $vgpr1 = V_DOT8_I32_I4 0, $vgpr4, 0, $vgpr4, 0, $vgpr4, 0, 0, 0, implicit $mode, implicit $exec ... # GCN-LABEL: name: smfma4x4_read_srcc_vgpr_valu_write # GCN: V_MFMA @@ -945,7 +945,7 @@ name: dot_write_vgpr_different_dot_read_srcc body: | bb.0: $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec - $vgpr1 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr4, 0, 0, 0, 0, 0, implicit $mode, implicit $exec + $vgpr1 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr4, 0, 0, 0, implicit $mode, implicit $exec ... # GCN-LABEL: name: dot_write_vgpr_different_dot_write # GCN: V_DOT @@ -955,7 +955,7 @@ name: dot_write_vgpr_different_dot_write body: | bb.0: $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec - $vgpr4 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec + $vgpr4 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec ... # GCN-LABEL: name: dot_write_vgpr_different_valu_read # GCN: V_DOT diff --git a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir index d59bcfb16eece..52891989b88fb 100644 --- a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir +++ b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir @@ -1071,7 +1071,7 @@ name: xdl_smfma4x4_write_vgpr_dot_write body: | bb.0: $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_I32_4X4X4I8_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec - $vgpr1 = V_DOT8_I32_I4 0, $vgpr4, 0, $vgpr4, 0, $vgpr4, 0, 0, 0, 0, 0, implicit $mode, implicit $exec + $vgpr1 = V_DOT8_I32_I4 0, $vgpr4, 0, $vgpr4, 0, $vgpr4, 0, 0, 0, implicit $mode, implicit $exec ... # GCN-LABEL: name: nonxdl_smfma4x4_read_srcc_vgpr_valu_write # GCN: V_MFMA @@ -1265,7 +1265,7 @@ name: dot_write_vgpr_different_dot_read_srcc body: | bb.0: $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec - $vgpr1 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr4, 0, 0, 0, 0, 0, implicit $mode, implicit $exec + $vgpr1 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr4, 0, 0, 0, implicit $mode, implicit $exec ... # GCN-LABEL: name: dot_write_vgpr_different_dot_write # GCN: V_DOT @@ -1275,7 +1275,7 @@ name: dot_write_vgpr_different_dot_write body: | bb.0: $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec - $vgpr4 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec + $vgpr4 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec ... # GCN-LABEL: name: dot_write_vgpr_different_valu_read # GCN: V_DOT diff --git a/llvm/test/MC/AMDGPU/dl-insts.s b/llvm/test/MC/AMDGPU/dl-insts.s index 00e9bec7eb0a2..599734aac829d 100644 --- a/llvm/test/MC/AMDGPU/dl-insts.s +++ b/llvm/test/MC/AMDGPU/dl-insts.s @@ -536,198 +536,6 @@ v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] // CHECK: encoding: [0x00,0x18,0xa7,0xd3,0x01,0x05,0x0e,0x1c] v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x40,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] -// CHECK: encoding: [0x00,0x50,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] -// CHECK: encoding: [0x00,0x48,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] -// CHECK: encoding: [0x00,0x58,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] -// CHECK: encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x04] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x14] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x0c] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x04] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x14] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x0c] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x04] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x14] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x0c] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x04] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x14] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x0c] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x04] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x14] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x0c] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x40,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] -// CHECK: encoding: [0x00,0x50,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] -// CHECK: encoding: [0x00,0x48,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] -// CHECK: encoding: [0x00,0x58,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] -// CHECK: encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x04] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x14] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x0c] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x04] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x14] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x0c] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x04] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x14] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x0c] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x04] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x14] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x0c] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x04] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x14] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x0c] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x40,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] -// CHECK: encoding: [0x00,0x50,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] -// CHECK: encoding: [0x00,0x48,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] -// CHECK: encoding: [0x00,0x58,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] -// CHECK: encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x04] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x14] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x0c] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x04] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x14] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x0c] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x04] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x14] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x0c] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x04] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x14] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x0c] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x04] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x14] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x0c] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x40,0xab,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] -// CHECK: encoding: [0x00,0x50,0xab,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] -// CHECK: encoding: [0x00,0x48,0xab,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] -// CHECK: encoding: [0x00,0x58,0xab,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] -// CHECK: encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x04] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x14] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x0c] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x04] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x14] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x0c] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x04] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x14] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x0c] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x04] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x14] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x0c] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x04] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x14] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x0c] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] // // Test clamp. diff --git a/llvm/test/MC/AMDGPU/gfx1030_err.s b/llvm/test/MC/AMDGPU/gfx1030_err.s index 51498d3c86d7f..87a09875f75e9 100644 --- a/llvm/test/MC/AMDGPU/gfx1030_err.s +++ b/llvm/test/MC/AMDGPU/gfx1030_err.s @@ -211,3 +211,365 @@ image_bvh_intersect_ray v[39:42], [v50, v46, v23, v17, v16, v15, v21, v20], s[12 // missing dim image_msaa_load v[1:4], v[5:7], s[8:15] dmask:0xf glc // GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: missing dim operand + +// op_sel not allowed in dot opcodes with 4- or 8-bit packed data + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. diff --git a/llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s b/llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s new file mode 100644 index 0000000000000..451627eb93246 --- /dev/null +++ b/llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s @@ -0,0 +1,219 @@ +// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx1100 %s 2>&1 | FileCheck --check-prefix=GFX11 --implicit-check-not=error: %s + +// op_sel not allowed in dot opcodes with 4- or 8-bit packed data + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. diff --git a/llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s b/llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s index a7d42c6b923a4..5ed2091d37e43 100644 --- a/llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s +++ b/llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s @@ -131,3 +131,221 @@ v_dot4_f32_bf8_bf8 v0, v1, v2, v3 neg_hi:[1,0,0] v_dot4_f32_bf8_bf8 v0, v1, v2, v3 neg_hi:[0,1,0] // GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid neg_hi operand + +// op_sel not allowed in dot opcodes with 4- or 8-bit packed data + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. diff --git a/llvm/test/MC/AMDGPU/gfx908_err.s b/llvm/test/MC/AMDGPU/gfx908_err.s new file mode 100644 index 0000000000000..d39e9b5068a4f --- /dev/null +++ b/llvm/test/MC/AMDGPU/gfx908_err.s @@ -0,0 +1,436 @@ +// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx908 %s 2>&1 | FileCheck --check-prefix=GFX908 --implicit-check-not=error: %s + +// op_sel not allowed in dot opcodes with 4- or 8-bit packed data + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + diff --git a/llvm/test/MC/AMDGPU/gfx90a_err.s b/llvm/test/MC/AMDGPU/gfx90a_err.s index 7b2acc61cfa6f..a05c7fb1cc1c4 100644 --- a/llvm/test/MC/AMDGPU/gfx90a_err.s +++ b/llvm/test/MC/AMDGPU/gfx90a_err.s @@ -239,3 +239,438 @@ scratch_load_lds_dword v2, off ds_read_b32 v0, v1 gds // GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: gds modifier is not supported on this GPU + +// op_sel not allowed in dot opcodes with 4- or 8-bit packed data + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + diff --git a/llvm/test/MC/Disassembler/AMDGPU/gfx908-dl-insts.txt b/llvm/test/MC/Disassembler/AMDGPU/gfx908-dl-insts.txt index aa3b4c7f03837..310e23f642e89 100644 --- a/llvm/test/MC/Disassembler/AMDGPU/gfx908-dl-insts.txt +++ b/llvm/test/MC/Disassembler/AMDGPU/gfx908-dl-insts.txt @@ -778,291 +778,15 @@ # CHECK: v_dot4_i32_i8 v0, v1, v2, v3 ; encoding: [0x00,0x40,0xa8,0xd3,0x01,0x05,0x0e,0x1c] 0x00,0x40,0xa8,0xd3,0x01,0x05,0x0e,0x1c -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x00,0x50,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x50,0xa8,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x00,0x48,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x48,0xa8,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1,0] ; encoding: [0x00,0x58,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x58,0xa8,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x1c - # CHECK: v_dot4_u32_u8 v0, v1, v2, v3 ; encoding: [0x00,0x40,0xa9,0xd3,0x01,0x05,0x0e,0x1c] 0x00,0x40,0xa9,0xd3,0x01,0x05,0x0e,0x1c -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x00,0x50,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x50,0xa9,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x00,0x48,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x48,0xa9,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1,0] ; encoding: [0x00,0x58,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x58,0xa9,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x1c - # CHECK: v_dot8_i32_i4 v0, v1, v2, v3 ; encoding: [0x00,0x40,0xaa,0xd3,0x01,0x05,0x0e,0x1c] 0x00,0x40,0xaa,0xd3,0x01,0x05,0x0e,0x1c -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x00,0x50,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x50,0xaa,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x00,0x48,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x48,0xaa,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1,0] ; encoding: [0x00,0x58,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x58,0xaa,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x1c - # CHECK: v_dot8_u32_u4 v0, v1, v2, v3 ; encoding: [0x00,0x40,0xab,0xd3,0x01,0x05,0x0e,0x1c] 0x00,0x40,0xab,0xd3,0x01,0x05,0x0e,0x1c -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x00,0x50,0xab,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x50,0xab,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x00,0x48,0xab,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x48,0xab,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1,0] ; encoding: [0x00,0x58,0xab,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x58,0xab,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x1c - # CHECK: v_dot2_f32_f16 v0, v1, v2, v3 clamp ; encoding: [0x00,0xc0,0xa3,0xd3,0x01,0x05,0x0e,0x1c] 0x00,0xc0,0xa3,0xd3,0x01,0x05,0x0e,0x1c From 8893ea230936ee90cf6edd8a877a6317d3b858b5 Mon Sep 17 00:00:00 2001 From: Jun Wang Date: Thu, 26 Sep 2024 11:09:29 -0700 Subject: [PATCH 2/6] Allow OPSEL for GFX11 and GFX12. Section 7.5.1 of the RDNA3 ISA doc apparently indicates that OPSEL is allowed (although ignored) in the dot instructions in question. Therefore, we should allow it for GFX11 and GFX12. --- llvm/lib/Target/AMDGPU/VOP3PInstructions.td | 19 +- llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s | 219 -------------------- llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s | 218 ------------------- 3 files changed, 14 insertions(+), 442 deletions(-) delete mode 100644 llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s diff --git a/llvm/lib/Target/AMDGPU/VOP3PInstructions.td b/llvm/lib/Target/AMDGPU/VOP3PInstructions.td index 1afd68767cd3b..290047c7ed543 100644 --- a/llvm/lib/Target/AMDGPU/VOP3PInstructions.td +++ b/llvm/lib/Target/AMDGPU/VOP3PInstructions.td @@ -405,8 +405,15 @@ defm V_DOT2_F32_F16 : VOP3PInst<"v_dot2_f32_f16", let OtherPredicates = [HasDot7Insts] in { defm V_DOT4_U32_U8 : VOP3PInst<"v_dot4_u32_u8", + VOP3P_Profile, int_amdgcn_udot4, 1>; +// v_dot4_u32_u8 does not allow op_sel Pre-GFX11 +defm V_DOT4_U32_U8_PREGFX11 : VOP3PInst<"v_dot4_u32_u8", VOP3P_Profile, int_amdgcn_udot4, 1>; + defm V_DOT8_U32_U4 : VOP3PInst<"v_dot8_u32_u4", + VOP3P_Profile, int_amdgcn_udot8, 1>; +// v_dot8_u32_u4 does not allow op_sel Pre-GFX11 +defm V_DOT8_U32_U4_PREGFX11 : VOP3PInst<"v_dot8_u32_u4", VOP3P_Profile, int_amdgcn_udot8, 1>; } // End OtherPredicates = [HasDot7Insts] @@ -433,7 +440,7 @@ defm V_DOT2_F32_BF16 : VOP3PInst<"v_dot2_f32_bf16", DOT2_BF16_Profile, multiclass VOP3PDOTIUInst { let IsDOT = 1 in - defm NAME : VOP3PInst, + defm NAME : VOP3PInst, null_frag, 1>; // Dot-iu instructions consider input as signed if imod neg bits are set. Thus // Dot-iu Intrinsics have extra operands and require separate codegen pattern. @@ -2097,8 +2104,8 @@ defm V_DOT2_I32_I16 : VOP3P_Real_vi <0x26>; defm V_DOT2_U32_U16 : VOP3P_Real_vi <0x27>; defm V_DOT2_F32_F16 : VOP3P_Real_vi <0x23>; -defm V_DOT4_U32_U8 : VOP3P_Real_vi <0x29>; -defm V_DOT8_U32_U4 : VOP3P_Real_vi <0x2b>; +defm V_DOT4_U32_U8_PREGFX11 : VOP3P_Real_vi <0x29>; +defm V_DOT8_U32_U4_PREGFX11 : VOP3P_Real_vi <0x2b>; defm V_DOT4_I32_I8 : VOP3P_Real_vi <0x28>; defm V_DOT8_I32_I4 : VOP3P_Real_vi <0x2a>; @@ -2256,8 +2263,10 @@ defm V_DOT2_I32_I16 : VOP3P_Real_gfx10 <0x14>; defm V_DOT2_U32_U16 : VOP3P_Real_gfx10 <0x15>; defm V_DOT2_F32_F16 : VOP3P_Real_gfx10_gfx11_gfx12_Triple<0x13>; -defm V_DOT4_U32_U8 : VOP3P_Real_gfx10_gfx11_gfx12<0x17>; -defm V_DOT8_U32_U4 : VOP3P_Real_gfx10_gfx11_gfx12<0x19>; +defm V_DOT4_U32_U8 : VOP3P_Real_gfx11_gfx12<0x17>; +defm V_DOT4_U32_U8_PREGFX11 : VOP3P_Real_gfx10<0x17>; +defm V_DOT8_U32_U4 : VOP3P_Real_gfx11_gfx12<0x19>; +defm V_DOT8_U32_U4_PREGFX11 : VOP3P_Real_gfx10<0x19>; defm V_DOT4_I32_I8 : VOP3P_Real_gfx10 <0x16>; defm V_DOT8_I32_I4 : VOP3P_Real_gfx10 <0x18>; diff --git a/llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s b/llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s deleted file mode 100644 index 451627eb93246..0000000000000 --- a/llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s +++ /dev/null @@ -1,219 +0,0 @@ -// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx1100 %s 2>&1 | FileCheck --check-prefix=GFX11 --implicit-check-not=error: %s - -// op_sel not allowed in dot opcodes with 4- or 8-bit packed data - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. diff --git a/llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s b/llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s index 5ed2091d37e43..a7d42c6b923a4 100644 --- a/llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s +++ b/llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s @@ -131,221 +131,3 @@ v_dot4_f32_bf8_bf8 v0, v1, v2, v3 neg_hi:[1,0,0] v_dot4_f32_bf8_bf8 v0, v1, v2, v3 neg_hi:[0,1,0] // GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid neg_hi operand - -// op_sel not allowed in dot opcodes with 4- or 8-bit packed data - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. From f5d32b2dbf5f735bf35a78bdd0f890e3097e6018 Mon Sep 17 00:00:00 2001 From: Jun Wang Date: Fri, 18 Oct 2024 15:56:41 -0700 Subject: [PATCH 3/6] Allow op_sel for VOP3P DOT instructions, but value of op_sel must be 0 if present. --- .../AMDGPU/AsmParser/AMDGPUAsmParser.cpp | 5 +- llvm/lib/Target/AMDGPU/VOP3PInstructions.td | 21 +- llvm/lib/Target/AMDGPU/VOPInstructions.td | 11 +- .../CodeGen/AMDGPU/mai-hazards-gfx90a.mir | 6 +- .../CodeGen/AMDGPU/mai-hazards-gfx940.mir | 6 +- llvm/test/MC/AMDGPU/dl-insts.s | 148 +---- llvm/test/MC/AMDGPU/gfx1030_err.s | 475 +++++++++------ llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s | 417 +++++++++++++ llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s | 417 +++++++++++++ llvm/test/MC/AMDGPU/gfx908_err.s | 548 ++++++++++-------- llvm/test/MC/AMDGPU/gfx90a_err.s | 548 ++++++++++-------- .../Disassembler/AMDGPU/gfx908-dl-insts.txt | 276 +++++++++ 12 files changed, 2037 insertions(+), 841 deletions(-) create mode 100644 llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp index ed956a1f755c0..e1ed62e398802 100644 --- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp +++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp @@ -4626,7 +4626,9 @@ bool AMDGPUAsmParser::validateOpSel(const MCInst &Inst) { uint64_t TSFlags = MII.get(Opc).TSFlags; - if (isGFX940() && (TSFlags & SIInstrFlags::IsDOT)) { + // For VOP3P DOT instructions, op_sel must be 0 if present, and op_sel_hi + // cannot be present. + if ((TSFlags & SIInstrFlags::IsDOT) && (TSFlags & SIInstrFlags::VOP3P)) { int OpSelIdx = AMDGPU::getNamedOperandIdx(Opc, AMDGPU::OpName::op_sel); if (OpSelIdx != -1) { if (Inst.getOperand(OpSelIdx).getImm() != 0) @@ -4634,6 +4636,7 @@ bool AMDGPUAsmParser::validateOpSel(const MCInst &Inst) { } int OpSelHiIdx = AMDGPU::getNamedOperandIdx(Opc, AMDGPU::OpName::op_sel_hi); if (OpSelHiIdx != -1) { + // -1 is the default value for op_sel_hi if (Inst.getOperand(OpSelHiIdx).getImm() != -1) return false; } diff --git a/llvm/lib/Target/AMDGPU/VOP3PInstructions.td b/llvm/lib/Target/AMDGPU/VOP3PInstructions.td index 290047c7ed543..689f3b38a1723 100644 --- a/llvm/lib/Target/AMDGPU/VOP3PInstructions.td +++ b/llvm/lib/Target/AMDGPU/VOP3PInstructions.td @@ -406,22 +406,15 @@ defm V_DOT2_F32_F16 : VOP3PInst<"v_dot2_f32_f16", let OtherPredicates = [HasDot7Insts] in { defm V_DOT4_U32_U8 : VOP3PInst<"v_dot4_u32_u8", VOP3P_Profile, int_amdgcn_udot4, 1>; -// v_dot4_u32_u8 does not allow op_sel Pre-GFX11 -defm V_DOT4_U32_U8_PREGFX11 : VOP3PInst<"v_dot4_u32_u8", - VOP3P_Profile, int_amdgcn_udot4, 1>; - defm V_DOT8_U32_U4 : VOP3PInst<"v_dot8_u32_u4", VOP3P_Profile, int_amdgcn_udot8, 1>; -// v_dot8_u32_u4 does not allow op_sel Pre-GFX11 -defm V_DOT8_U32_U4_PREGFX11 : VOP3PInst<"v_dot8_u32_u4", - VOP3P_Profile, int_amdgcn_udot8, 1>; } // End OtherPredicates = [HasDot7Insts] let OtherPredicates = [HasDot1Insts] in { defm V_DOT4_I32_I8 : VOP3PInst<"v_dot4_i32_i8", - VOP3P_Profile, int_amdgcn_sdot4, 1>; + VOP3P_Profile, int_amdgcn_sdot4, 1>; defm V_DOT8_I32_I4 : VOP3PInst<"v_dot8_i32_i4", - VOP3P_Profile, int_amdgcn_sdot8, 1>; + VOP3P_Profile, int_amdgcn_sdot8, 1>; } // End OtherPredicates = [HasDot1Insts] def DOT2_BF16_Profile @@ -2104,8 +2097,8 @@ defm V_DOT2_I32_I16 : VOP3P_Real_vi <0x26>; defm V_DOT2_U32_U16 : VOP3P_Real_vi <0x27>; defm V_DOT2_F32_F16 : VOP3P_Real_vi <0x23>; -defm V_DOT4_U32_U8_PREGFX11 : VOP3P_Real_vi <0x29>; -defm V_DOT8_U32_U4_PREGFX11 : VOP3P_Real_vi <0x2b>; +defm V_DOT4_U32_U8 : VOP3P_Real_vi <0x29>; +defm V_DOT8_U32_U4 : VOP3P_Real_vi <0x2b>; defm V_DOT4_I32_I8 : VOP3P_Real_vi <0x28>; defm V_DOT8_I32_I4 : VOP3P_Real_vi <0x2a>; @@ -2263,10 +2256,8 @@ defm V_DOT2_I32_I16 : VOP3P_Real_gfx10 <0x14>; defm V_DOT2_U32_U16 : VOP3P_Real_gfx10 <0x15>; defm V_DOT2_F32_F16 : VOP3P_Real_gfx10_gfx11_gfx12_Triple<0x13>; -defm V_DOT4_U32_U8 : VOP3P_Real_gfx11_gfx12<0x17>; -defm V_DOT4_U32_U8_PREGFX11 : VOP3P_Real_gfx10<0x17>; -defm V_DOT8_U32_U4 : VOP3P_Real_gfx11_gfx12<0x19>; -defm V_DOT8_U32_U4_PREGFX11 : VOP3P_Real_gfx10<0x19>; +defm V_DOT4_U32_U8 : VOP3P_Real_gfx10_gfx11_gfx12<0x17>; +defm V_DOT8_U32_U4 : VOP3P_Real_gfx10_gfx11_gfx12<0x19>; defm V_DOT4_I32_I8 : VOP3P_Real_gfx10 <0x16>; defm V_DOT8_I32_I4 : VOP3P_Real_gfx10 <0x18>; diff --git a/llvm/lib/Target/AMDGPU/VOPInstructions.td b/llvm/lib/Target/AMDGPU/VOPInstructions.td index 9df1ebf694230..0f568ba90a9ef 100644 --- a/llvm/lib/Target/AMDGPU/VOPInstructions.td +++ b/llvm/lib/Target/AMDGPU/VOPInstructions.td @@ -1454,12 +1454,11 @@ class VOP3Features { bit IsMAI = MAI; } -def VOP3_REGULAR : VOP3Features<0, 0, 0, 0>; -def VOP3_CLAMP : VOP3Features<1, 0, 0, 0>; -def VOP3_OPSEL : VOP3Features<1, 1, 0, 0>; -def VOP3_PACKED : VOP3Features<1, 1, 1, 0>; -def VOP3_PACKED_NO_OPSEL : VOP3Features<1, 0, 1, 0>; -def VOP3_MAI : VOP3Features<0, 0, 0, 1>; +def VOP3_REGULAR : VOP3Features<0, 0, 0, 0>; +def VOP3_CLAMP : VOP3Features<1, 0, 0, 0>; +def VOP3_OPSEL : VOP3Features<1, 1, 0, 0>; +def VOP3_PACKED : VOP3Features<1, 1, 1, 0>; +def VOP3_MAI : VOP3Features<0, 0, 0, 1>; def VOP3_OPSEL_ONLY : VOP3Features<0, 1, 0, 0>; // Packed is misleading, but it enables the appropriate op_sel diff --git a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx90a.mir b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx90a.mir index 3feccff715bc1..8be7308c8a6e0 100644 --- a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx90a.mir +++ b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx90a.mir @@ -746,7 +746,7 @@ name: smfma4x4_write_vgpr_dot_write body: | bb.0: $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec - $vgpr1 = V_DOT8_I32_I4 0, $vgpr4, 0, $vgpr4, 0, $vgpr4, 0, 0, 0, implicit $mode, implicit $exec + $vgpr1 = V_DOT8_I32_I4 0, $vgpr4, 0, $vgpr4, 0, $vgpr4, 0, 0, 0, 0, 0, implicit $mode, implicit $exec ... # GCN-LABEL: name: smfma4x4_read_srcc_vgpr_valu_write # GCN: V_MFMA @@ -945,7 +945,7 @@ name: dot_write_vgpr_different_dot_read_srcc body: | bb.0: $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec - $vgpr1 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr4, 0, 0, 0, implicit $mode, implicit $exec + $vgpr1 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr4, 0, 0, 0, 0, 0, implicit $mode, implicit $exec ... # GCN-LABEL: name: dot_write_vgpr_different_dot_write # GCN: V_DOT @@ -955,7 +955,7 @@ name: dot_write_vgpr_different_dot_write body: | bb.0: $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec - $vgpr4 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec + $vgpr4 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec ... # GCN-LABEL: name: dot_write_vgpr_different_valu_read # GCN: V_DOT diff --git a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir index 52891989b88fb..d59bcfb16eece 100644 --- a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir +++ b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir @@ -1071,7 +1071,7 @@ name: xdl_smfma4x4_write_vgpr_dot_write body: | bb.0: $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_I32_4X4X4I8_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec - $vgpr1 = V_DOT8_I32_I4 0, $vgpr4, 0, $vgpr4, 0, $vgpr4, 0, 0, 0, implicit $mode, implicit $exec + $vgpr1 = V_DOT8_I32_I4 0, $vgpr4, 0, $vgpr4, 0, $vgpr4, 0, 0, 0, 0, 0, implicit $mode, implicit $exec ... # GCN-LABEL: name: nonxdl_smfma4x4_read_srcc_vgpr_valu_write # GCN: V_MFMA @@ -1265,7 +1265,7 @@ name: dot_write_vgpr_different_dot_read_srcc body: | bb.0: $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec - $vgpr1 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr4, 0, 0, 0, implicit $mode, implicit $exec + $vgpr1 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr4, 0, 0, 0, 0, 0, implicit $mode, implicit $exec ... # GCN-LABEL: name: dot_write_vgpr_different_dot_write # GCN: V_DOT @@ -1275,7 +1275,7 @@ name: dot_write_vgpr_different_dot_write body: | bb.0: $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec - $vgpr4 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec + $vgpr4 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec ... # GCN-LABEL: name: dot_write_vgpr_different_valu_read # GCN: V_DOT diff --git a/llvm/test/MC/AMDGPU/dl-insts.s b/llvm/test/MC/AMDGPU/dl-insts.s index 599734aac829d..c2c73b9f2ee9b 100644 --- a/llvm/test/MC/AMDGPU/dl-insts.s +++ b/llvm/test/MC/AMDGPU/dl-insts.s @@ -389,153 +389,23 @@ v_dot8_i32_i4 v0, v1, v2, v3 v_dot8_u32_u4 v0, v1, v2, v3 // -// Test op_sel/op_sel_hi. +// Test op_sel/op_sel_hi: in VOP3P dot, op_sel must be 0, op_sel_hi cannot appear // // CHECK: encoding: [0x00,0x40,0xa3,0xd3,0x01,0x05,0x0e,0x1c] v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] -// CHECK: encoding: [0x00,0x50,0xa3,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] -// CHECK: encoding: [0x00,0x48,0xa3,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] -// CHECK: encoding: [0x00,0x58,0xa3,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] -// CHECK: encoding: [0x00,0x00,0xa3,0xd3,0x01,0x05,0x0e,0x04] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x00,0xa3,0xd3,0x01,0x05,0x0e,0x14] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x00,0xa3,0xd3,0x01,0x05,0x0e,0x0c] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x00,0xa3,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x00,0xa3,0xd3,0x01,0x05,0x0e,0x04] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x00,0xa3,0xd3,0x01,0x05,0x0e,0x14] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x00,0xa3,0xd3,0x01,0x05,0x0e,0x0c] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x00,0xa3,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x10,0xa3,0xd3,0x01,0x05,0x0e,0x04] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x10,0xa3,0xd3,0x01,0x05,0x0e,0x14] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x10,0xa3,0xd3,0x01,0x05,0x0e,0x0c] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x10,0xa3,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x08,0xa3,0xd3,0x01,0x05,0x0e,0x04] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x08,0xa3,0xd3,0x01,0x05,0x0e,0x14] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x08,0xa3,0xd3,0x01,0x05,0x0e,0x0c] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x08,0xa3,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x18,0xa3,0xd3,0x01,0x05,0x0e,0x04] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x18,0xa3,0xd3,0x01,0x05,0x0e,0x14] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x18,0xa3,0xd3,0x01,0x05,0x0e,0x0c] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x18,0xa3,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] // CHECK: encoding: [0x00,0x40,0xa6,0xd3,0x01,0x05,0x0e,0x1c] v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] -// CHECK: encoding: [0x00,0x50,0xa6,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] -// CHECK: encoding: [0x00,0x48,0xa6,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] -// CHECK: encoding: [0x00,0x58,0xa6,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] -// CHECK: encoding: [0x00,0x00,0xa6,0xd3,0x01,0x05,0x0e,0x04] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x00,0xa6,0xd3,0x01,0x05,0x0e,0x14] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x00,0xa6,0xd3,0x01,0x05,0x0e,0x0c] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x00,0xa6,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x00,0xa6,0xd3,0x01,0x05,0x0e,0x04] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x00,0xa6,0xd3,0x01,0x05,0x0e,0x14] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x00,0xa6,0xd3,0x01,0x05,0x0e,0x0c] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x00,0xa6,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x10,0xa6,0xd3,0x01,0x05,0x0e,0x04] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x10,0xa6,0xd3,0x01,0x05,0x0e,0x14] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x10,0xa6,0xd3,0x01,0x05,0x0e,0x0c] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x10,0xa6,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x08,0xa6,0xd3,0x01,0x05,0x0e,0x04] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x08,0xa6,0xd3,0x01,0x05,0x0e,0x14] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x08,0xa6,0xd3,0x01,0x05,0x0e,0x0c] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x08,0xa6,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x18,0xa6,0xd3,0x01,0x05,0x0e,0x04] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x18,0xa6,0xd3,0x01,0x05,0x0e,0x14] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x18,0xa6,0xd3,0x01,0x05,0x0e,0x0c] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x18,0xa6,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] // CHECK: encoding: [0x00,0x40,0xa7,0xd3,0x01,0x05,0x0e,0x1c] v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] -// CHECK: encoding: [0x00,0x50,0xa7,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] -// CHECK: encoding: [0x00,0x48,0xa7,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] -// CHECK: encoding: [0x00,0x58,0xa7,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] -// CHECK: encoding: [0x00,0x00,0xa7,0xd3,0x01,0x05,0x0e,0x04] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x00,0xa7,0xd3,0x01,0x05,0x0e,0x14] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x00,0xa7,0xd3,0x01,0x05,0x0e,0x0c] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x00,0xa7,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x00,0xa7,0xd3,0x01,0x05,0x0e,0x04] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x00,0xa7,0xd3,0x01,0x05,0x0e,0x14] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x00,0xa7,0xd3,0x01,0x05,0x0e,0x0c] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x00,0xa7,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x10,0xa7,0xd3,0x01,0x05,0x0e,0x04] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x10,0xa7,0xd3,0x01,0x05,0x0e,0x14] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x10,0xa7,0xd3,0x01,0x05,0x0e,0x0c] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x10,0xa7,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x08,0xa7,0xd3,0x01,0x05,0x0e,0x04] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x08,0xa7,0xd3,0x01,0x05,0x0e,0x14] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x08,0xa7,0xd3,0x01,0x05,0x0e,0x0c] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x08,0xa7,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x18,0xa7,0xd3,0x01,0x05,0x0e,0x04] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// CHECK: encoding: [0x00,0x18,0xa7,0xd3,0x01,0x05,0x0e,0x14] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// CHECK: encoding: [0x00,0x18,0xa7,0xd3,0x01,0x05,0x0e,0x0c] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// CHECK: encoding: [0x00,0x18,0xa7,0xd3,0x01,0x05,0x0e,0x1c] -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// CHECK: encoding: [0x00,0x40,0xa8,0xd3,0x01,0x05,0x0e,0x1c] +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] +// CHECK: encoding: [0x00,0x40,0xa9,0xd3,0x01,0x05,0x0e,0x1c] +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] +// CHECK: encoding: [0x00,0x40,0xaa,0xd3,0x01,0x05,0x0e,0x1c] +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] +// CHECK: encoding: [0x00,0x40,0xab,0xd3,0x01,0x05,0x0e,0x1c] +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] // // Test clamp. diff --git a/llvm/test/MC/AMDGPU/gfx1030_err.s b/llvm/test/MC/AMDGPU/gfx1030_err.s index 87a09875f75e9..1e657831e28bf 100644 --- a/llvm/test/MC/AMDGPU/gfx1030_err.s +++ b/llvm/test/MC/AMDGPU/gfx1030_err.s @@ -212,364 +212,487 @@ image_bvh_intersect_ray v[39:42], [v50, v46, v23, v17, v16, v15, v21, v20], s[12 image_msaa_load v[1:4], v[5:7], s[8:15] dmask:0xf glc // GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: missing dim operand -// op_sel not allowed in dot opcodes with 4- or 8-bit packed data +// op_sel/op_sel_hi: in VOP3P dot, op_sel must be 0, op_sel_hi is not allowed -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand diff --git a/llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s b/llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s new file mode 100644 index 0000000000000..6026c12eab57e --- /dev/null +++ b/llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s @@ -0,0 +1,417 @@ +// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx1100 %s 2>&1 | FileCheck --check-prefix=GFX1100 --implicit-check-not=error: %s + +// op_sel/op_sel_hi: in VOP3P dot, op_sel must be 0 if specified, op_sel_hi cannot appear + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand diff --git a/llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s b/llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s index a7d42c6b923a4..0c2eeaa4b34da 100644 --- a/llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s +++ b/llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s @@ -131,3 +131,420 @@ v_dot4_f32_bf8_bf8 v0, v1, v2, v3 neg_hi:[1,0,0] v_dot4_f32_bf8_bf8 v0, v1, v2, v3 neg_hi:[0,1,0] // GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid neg_hi operand + + +// op_sel/op_sel_hi: in VOP3P dot, op_sel must be 0 if specified, op_sel_hi cannot appear + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand diff --git a/llvm/test/MC/AMDGPU/gfx908_err.s b/llvm/test/MC/AMDGPU/gfx908_err.s index d39e9b5068a4f..60730e82059ac 100644 --- a/llvm/test/MC/AMDGPU/gfx908_err.s +++ b/llvm/test/MC/AMDGPU/gfx908_err.s @@ -1,436 +1,486 @@ // RUN: not llvm-mc -triple=amdgcn -mcpu=gfx908 %s 2>&1 | FileCheck --check-prefix=GFX908 --implicit-check-not=error: %s -// op_sel not allowed in dot opcodes with 4- or 8-bit packed data +// op_sel/op_sel_hi: in VOP3P dot, op_sel must be 0, op_sel_hi cannot appear -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand diff --git a/llvm/test/MC/AMDGPU/gfx90a_err.s b/llvm/test/MC/AMDGPU/gfx90a_err.s index a05c7fb1cc1c4..84d0d9114e0e4 100644 --- a/llvm/test/MC/AMDGPU/gfx90a_err.s +++ b/llvm/test/MC/AMDGPU/gfx90a_err.s @@ -240,437 +240,487 @@ scratch_load_lds_dword v2, off ds_read_b32 v0, v1 gds // GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: gds modifier is not supported on this GPU -// op_sel not allowed in dot opcodes with 4- or 8-bit packed data +// op_sel/op_sel_hi: in VOP3P dot, op_sel must be 0 if specified, op_sel_hi cannot appear -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand + +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - -v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. - +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand diff --git a/llvm/test/MC/Disassembler/AMDGPU/gfx908-dl-insts.txt b/llvm/test/MC/Disassembler/AMDGPU/gfx908-dl-insts.txt index 310e23f642e89..aa3b4c7f03837 100644 --- a/llvm/test/MC/Disassembler/AMDGPU/gfx908-dl-insts.txt +++ b/llvm/test/MC/Disassembler/AMDGPU/gfx908-dl-insts.txt @@ -778,15 +778,291 @@ # CHECK: v_dot4_i32_i8 v0, v1, v2, v3 ; encoding: [0x00,0x40,0xa8,0xd3,0x01,0x05,0x0e,0x1c] 0x00,0x40,0xa8,0xd3,0x01,0x05,0x0e,0x1c +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x00,0x50,0xa8,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x50,0xa8,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x00,0x48,0xa8,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x48,0xa8,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1,0] ; encoding: [0x00,0x58,0xa8,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x58,0xa8,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x1c + # CHECK: v_dot4_u32_u8 v0, v1, v2, v3 ; encoding: [0x00,0x40,0xa9,0xd3,0x01,0x05,0x0e,0x1c] 0x00,0x40,0xa9,0xd3,0x01,0x05,0x0e,0x1c +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x00,0x50,0xa9,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x50,0xa9,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x00,0x48,0xa9,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x48,0xa9,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1,0] ; encoding: [0x00,0x58,0xa9,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x58,0xa9,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x1c + # CHECK: v_dot8_i32_i4 v0, v1, v2, v3 ; encoding: [0x00,0x40,0xaa,0xd3,0x01,0x05,0x0e,0x1c] 0x00,0x40,0xaa,0xd3,0x01,0x05,0x0e,0x1c +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x00,0x50,0xaa,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x50,0xaa,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x00,0x48,0xaa,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x48,0xaa,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1,0] ; encoding: [0x00,0x58,0xaa,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x58,0xaa,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x1c + # CHECK: v_dot8_u32_u4 v0, v1, v2, v3 ; encoding: [0x00,0x40,0xab,0xd3,0x01,0x05,0x0e,0x1c] 0x00,0x40,0xab,0xd3,0x01,0x05,0x0e,0x1c +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x00,0x50,0xab,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x50,0xab,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x00,0x48,0xab,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x48,0xab,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1,0] ; encoding: [0x00,0x58,0xab,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x58,0xab,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x1c + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x04] +0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x04 + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x14] +0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x14 + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x0c] +0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x0c + +# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x1c] +0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x1c + # CHECK: v_dot2_f32_f16 v0, v1, v2, v3 clamp ; encoding: [0x00,0xc0,0xa3,0xd3,0x01,0x05,0x0e,0x1c] 0x00,0xc0,0xa3,0xd3,0x01,0x05,0x0e,0x1c From 82f0f7c130b9d53ec057feb3b6186c94cebbe889 Mon Sep 17 00:00:00 2001 From: Jun Wang Date: Thu, 24 Oct 2024 16:33:23 -0700 Subject: [PATCH 4/6] Fix a problem in previous commit. For GFX940 keep the original behavior, i.e., op_sel should be 0 for all DOT instructions, not just the VOP3P DOTs. --- llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp index e1ed62e398802..e899269f8592b 100644 --- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp +++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp @@ -4626,9 +4626,10 @@ bool AMDGPUAsmParser::validateOpSel(const MCInst &Inst) { uint64_t TSFlags = MII.get(Opc).TSFlags; - // For VOP3P DOT instructions, op_sel must be 0 if present, and op_sel_hi - // cannot be present. - if ((TSFlags & SIInstrFlags::IsDOT) && (TSFlags & SIInstrFlags::VOP3P)) { + // For DOT instructions on GFX940, or VOP3P DOT instructions on all targets, + // op_sel must be 0 if present, and op_sel_hi cannot be present. + if ((TSFlags & SIInstrFlags::IsDOT) && + (isGFX940() || (TSFlags & SIInstrFlags::VOP3P))) { int OpSelIdx = AMDGPU::getNamedOperandIdx(Opc, AMDGPU::OpName::op_sel); if (OpSelIdx != -1) { if (Inst.getOperand(OpSelIdx).getImm() != 0) From f1728c7c569905d69fc1076ae0f6a1b2a3a67359 Mon Sep 17 00:00:00 2001 From: Jun Wang Date: Fri, 8 Nov 2024 12:16:04 -0800 Subject: [PATCH 5/6] For pre-GFX940 targets, v_dot2_* allow opsel. --- .../AMDGPU/AsmParser/AMDGPUAsmParser.cpp | 50 +++-- llvm/test/MC/AMDGPU/dl-insts.s | 140 +++++++++++- llvm/test/MC/AMDGPU/gfx908_err.s | 210 +----------------- llvm/test/MC/AMDGPU/gfx90a_err.s | 210 +----------------- 4 files changed, 172 insertions(+), 438 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp index e899269f8592b..209fd46c8fdcb 100644 --- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp +++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp @@ -4626,32 +4626,40 @@ bool AMDGPUAsmParser::validateOpSel(const MCInst &Inst) { uint64_t TSFlags = MII.get(Opc).TSFlags; - // For DOT instructions on GFX940, or VOP3P DOT instructions on all targets, - // op_sel must be 0 if present, and op_sel_hi cannot be present. - if ((TSFlags & SIInstrFlags::IsDOT) && - (isGFX940() || (TSFlags & SIInstrFlags::VOP3P))) { - int OpSelIdx = AMDGPU::getNamedOperandIdx(Opc, AMDGPU::OpName::op_sel); - if (OpSelIdx != -1) { - if (Inst.getOperand(OpSelIdx).getImm() != 0) - return false; + if (TSFlags & SIInstrFlags::IsDOT) { + // For all DOT instructions on GFX940, or VOP3P DOT instructions on all + // targets, i.e. v_dot2_*(except on pre-GFX940), v_dot4_* and v_dot8_*, + // op_sel must be 0 if present, and op_sel_hi cannot be present. + if (!isGFX10Plus() && !isGFX940()) + if (Opc == AMDGPU::V_DOT2_F32_F16_vi || + Opc == AMDGPU::V_DOT2_I32_I16_vi || Opc == AMDGPU::V_DOT2_U32_U16_vi) + return true; + + if (isGFX940() || (TSFlags & SIInstrFlags::VOP3P)) { + int OpSelIdx = AMDGPU::getNamedOperandIdx(Opc, AMDGPU::OpName::op_sel); + if (OpSelIdx != -1) { + if (Inst.getOperand(OpSelIdx).getImm() != 0) + return false; + } + int OpSelHiIdx = + AMDGPU::getNamedOperandIdx(Opc, AMDGPU::OpName::op_sel_hi); + if (OpSelHiIdx != -1) { + // -1 is the default value for op_sel_hi + if (Inst.getOperand(OpSelHiIdx).getImm() != -1) + return false; + } } - int OpSelHiIdx = AMDGPU::getNamedOperandIdx(Opc, AMDGPU::OpName::op_sel_hi); - if (OpSelHiIdx != -1) { - // -1 is the default value for op_sel_hi - if (Inst.getOperand(OpSelHiIdx).getImm() != -1) + + // op_sel[0:1] must be 0 for v_dot2_bf16_bf16 and v_dot2_f16_f16 (VOP3 Dot). + if (isGFX11Plus() && (TSFlags & SIInstrFlags::VOP3) && + !(TSFlags & SIInstrFlags::VOP3P)) { + int OpSelIdx = AMDGPU::getNamedOperandIdx(Opc, AMDGPU::OpName::op_sel); + unsigned OpSel = Inst.getOperand(OpSelIdx).getImm(); + if (OpSel & 3) return false; } } - // op_sel[0:1] must be 0 for v_dot2_bf16_bf16 and v_dot2_f16_f16 (VOP3 Dot). - if (isGFX11Plus() && (TSFlags & SIInstrFlags::IsDOT) && - (TSFlags & SIInstrFlags::VOP3) && !(TSFlags & SIInstrFlags::VOP3P)) { - int OpSelIdx = AMDGPU::getNamedOperandIdx(Opc, AMDGPU::OpName::op_sel); - unsigned OpSel = Inst.getOperand(OpSelIdx).getImm(); - if (OpSel & 3) - return false; - } - return true; } diff --git a/llvm/test/MC/AMDGPU/dl-insts.s b/llvm/test/MC/AMDGPU/dl-insts.s index c2c73b9f2ee9b..6797426b6a7cd 100644 --- a/llvm/test/MC/AMDGPU/dl-insts.s +++ b/llvm/test/MC/AMDGPU/dl-insts.s @@ -389,15 +389,153 @@ v_dot8_i32_i4 v0, v1, v2, v3 v_dot8_u32_u4 v0, v1, v2, v3 // -// Test op_sel/op_sel_hi: in VOP3P dot, op_sel must be 0, op_sel_hi cannot appear +// Test op_sel/op_sel_hi. // // CHECK: encoding: [0x00,0x40,0xa3,0xd3,0x01,0x05,0x0e,0x1c] v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] +// CHECK: encoding: [0x00,0x50,0xa3,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] +// CHECK: encoding: [0x00,0x48,0xa3,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] +// CHECK: encoding: [0x00,0x58,0xa3,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] +// CHECK: encoding: [0x00,0x00,0xa3,0xd3,0x01,0x05,0x0e,0x04] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,0] +// CHECK: encoding: [0x00,0x00,0xa3,0xd3,0x01,0x05,0x0e,0x14] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,1] +// CHECK: encoding: [0x00,0x00,0xa3,0xd3,0x01,0x05,0x0e,0x0c] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,0] +// CHECK: encoding: [0x00,0x00,0xa3,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,1] +// CHECK: encoding: [0x00,0x00,0xa3,0xd3,0x01,0x05,0x0e,0x04] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// CHECK: encoding: [0x00,0x00,0xa3,0xd3,0x01,0x05,0x0e,0x14] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// CHECK: encoding: [0x00,0x00,0xa3,0xd3,0x01,0x05,0x0e,0x0c] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// CHECK: encoding: [0x00,0x00,0xa3,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// CHECK: encoding: [0x00,0x10,0xa3,0xd3,0x01,0x05,0x0e,0x04] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// CHECK: encoding: [0x00,0x10,0xa3,0xd3,0x01,0x05,0x0e,0x14] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// CHECK: encoding: [0x00,0x10,0xa3,0xd3,0x01,0x05,0x0e,0x0c] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// CHECK: encoding: [0x00,0x10,0xa3,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// CHECK: encoding: [0x00,0x08,0xa3,0xd3,0x01,0x05,0x0e,0x04] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// CHECK: encoding: [0x00,0x08,0xa3,0xd3,0x01,0x05,0x0e,0x14] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// CHECK: encoding: [0x00,0x08,0xa3,0xd3,0x01,0x05,0x0e,0x0c] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// CHECK: encoding: [0x00,0x08,0xa3,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// CHECK: encoding: [0x00,0x18,0xa3,0xd3,0x01,0x05,0x0e,0x04] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// CHECK: encoding: [0x00,0x18,0xa3,0xd3,0x01,0x05,0x0e,0x14] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// CHECK: encoding: [0x00,0x18,0xa3,0xd3,0x01,0x05,0x0e,0x0c] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// CHECK: encoding: [0x00,0x18,0xa3,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] // CHECK: encoding: [0x00,0x40,0xa6,0xd3,0x01,0x05,0x0e,0x1c] v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] +// CHECK: encoding: [0x00,0x50,0xa6,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] +// CHECK: encoding: [0x00,0x48,0xa6,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] +// CHECK: encoding: [0x00,0x58,0xa6,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] +// CHECK: encoding: [0x00,0x00,0xa6,0xd3,0x01,0x05,0x0e,0x04] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,0] +// CHECK: encoding: [0x00,0x00,0xa6,0xd3,0x01,0x05,0x0e,0x14] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,1] +// CHECK: encoding: [0x00,0x00,0xa6,0xd3,0x01,0x05,0x0e,0x0c] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[1,0] +// CHECK: encoding: [0x00,0x00,0xa6,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[1,1] +// CHECK: encoding: [0x00,0x00,0xa6,0xd3,0x01,0x05,0x0e,0x04] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// CHECK: encoding: [0x00,0x00,0xa6,0xd3,0x01,0x05,0x0e,0x14] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// CHECK: encoding: [0x00,0x00,0xa6,0xd3,0x01,0x05,0x0e,0x0c] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// CHECK: encoding: [0x00,0x00,0xa6,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// CHECK: encoding: [0x00,0x10,0xa6,0xd3,0x01,0x05,0x0e,0x04] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// CHECK: encoding: [0x00,0x10,0xa6,0xd3,0x01,0x05,0x0e,0x14] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// CHECK: encoding: [0x00,0x10,0xa6,0xd3,0x01,0x05,0x0e,0x0c] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// CHECK: encoding: [0x00,0x10,0xa6,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// CHECK: encoding: [0x00,0x08,0xa6,0xd3,0x01,0x05,0x0e,0x04] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// CHECK: encoding: [0x00,0x08,0xa6,0xd3,0x01,0x05,0x0e,0x14] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// CHECK: encoding: [0x00,0x08,0xa6,0xd3,0x01,0x05,0x0e,0x0c] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// CHECK: encoding: [0x00,0x08,0xa6,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// CHECK: encoding: [0x00,0x18,0xa6,0xd3,0x01,0x05,0x0e,0x04] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// CHECK: encoding: [0x00,0x18,0xa6,0xd3,0x01,0x05,0x0e,0x14] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// CHECK: encoding: [0x00,0x18,0xa6,0xd3,0x01,0x05,0x0e,0x0c] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// CHECK: encoding: [0x00,0x18,0xa6,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] // CHECK: encoding: [0x00,0x40,0xa7,0xd3,0x01,0x05,0x0e,0x1c] v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] +// CHECK: encoding: [0x00,0x50,0xa7,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] +// CHECK: encoding: [0x00,0x48,0xa7,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] +// CHECK: encoding: [0x00,0x58,0xa7,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] +// CHECK: encoding: [0x00,0x00,0xa7,0xd3,0x01,0x05,0x0e,0x04] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,0] +// CHECK: encoding: [0x00,0x00,0xa7,0xd3,0x01,0x05,0x0e,0x14] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,1] +// CHECK: encoding: [0x00,0x00,0xa7,0xd3,0x01,0x05,0x0e,0x0c] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[1,0] +// CHECK: encoding: [0x00,0x00,0xa7,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[1,1] +// CHECK: encoding: [0x00,0x00,0xa7,0xd3,0x01,0x05,0x0e,0x04] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// CHECK: encoding: [0x00,0x00,0xa7,0xd3,0x01,0x05,0x0e,0x14] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// CHECK: encoding: [0x00,0x00,0xa7,0xd3,0x01,0x05,0x0e,0x0c] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// CHECK: encoding: [0x00,0x00,0xa7,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// CHECK: encoding: [0x00,0x10,0xa7,0xd3,0x01,0x05,0x0e,0x04] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// CHECK: encoding: [0x00,0x10,0xa7,0xd3,0x01,0x05,0x0e,0x14] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// CHECK: encoding: [0x00,0x10,0xa7,0xd3,0x01,0x05,0x0e,0x0c] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// CHECK: encoding: [0x00,0x10,0xa7,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// CHECK: encoding: [0x00,0x08,0xa7,0xd3,0x01,0x05,0x0e,0x04] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// CHECK: encoding: [0x00,0x08,0xa7,0xd3,0x01,0x05,0x0e,0x14] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// CHECK: encoding: [0x00,0x08,0xa7,0xd3,0x01,0x05,0x0e,0x0c] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// CHECK: encoding: [0x00,0x08,0xa7,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// CHECK: encoding: [0x00,0x18,0xa7,0xd3,0x01,0x05,0x0e,0x04] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// CHECK: encoding: [0x00,0x18,0xa7,0xd3,0x01,0x05,0x0e,0x14] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// CHECK: encoding: [0x00,0x18,0xa7,0xd3,0x01,0x05,0x0e,0x0c] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// CHECK: encoding: [0x00,0x18,0xa7,0xd3,0x01,0x05,0x0e,0x1c] +v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] // CHECK: encoding: [0x00,0x40,0xa8,0xd3,0x01,0x05,0x0e,0x1c] v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] // CHECK: encoding: [0x00,0x40,0xa9,0xd3,0x01,0x05,0x0e,0x1c] diff --git a/llvm/test/MC/AMDGPU/gfx908_err.s b/llvm/test/MC/AMDGPU/gfx908_err.s index 60730e82059ac..9e4ac5617738b 100644 --- a/llvm/test/MC/AMDGPU/gfx908_err.s +++ b/llvm/test/MC/AMDGPU/gfx908_err.s @@ -1,213 +1,7 @@ // RUN: not llvm-mc -triple=amdgcn -mcpu=gfx908 %s 2>&1 | FileCheck --check-prefix=GFX908 --implicit-check-not=error: %s -// op_sel/op_sel_hi: in VOP3P dot, op_sel must be 0, op_sel_hi cannot appear - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// op_sel/op_sel_hi: in VOP3P dot, except v_dot2_f32_f16, v_dot2_i32_i16, and +// v_dot2_u32_u16, op_sel must be 0 if specified, op_sel_hi cannot appear v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] // GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand diff --git a/llvm/test/MC/AMDGPU/gfx90a_err.s b/llvm/test/MC/AMDGPU/gfx90a_err.s index 84d0d9114e0e4..28627986e2a9f 100644 --- a/llvm/test/MC/AMDGPU/gfx90a_err.s +++ b/llvm/test/MC/AMDGPU/gfx90a_err.s @@ -240,214 +240,8 @@ scratch_load_lds_dword v2, off ds_read_b32 v0, v1 gds // GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: gds modifier is not supported on this GPU -// op_sel/op_sel_hi: in VOP3P dot, op_sel must be 0 if specified, op_sel_hi cannot appear - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// op_sel/op_sel_hi: in VOP3P dot, except v_dot2_f32_f16, v_dot2_i32_i16, and +// v_dot2_u32_u16, op_sel must be 0 if specified, op_sel_hi cannot appear v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] // GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand From dfde97343d3eb2b815b4cf7d760909a424cf53d4 Mon Sep 17 00:00:00 2001 From: Jun Wang Date: Tue, 17 Dec 2024 18:16:04 -0800 Subject: [PATCH 6/6] Revert to the 1st commit, 2753fd11e70600, which disallows OPSEL in v_dot4_* and v_dot8_* instructions for all targets. This reverts commit 7ae70f094f23872cbe7b5356044b93994555f562 and all later commits. --- .../AMDGPU/AsmParser/AMDGPUAsmParser.cpp | 46 +- llvm/lib/Target/AMDGPU/VOP3PInstructions.td | 10 +- llvm/lib/Target/AMDGPU/VOPInstructions.td | 13 +- .../CodeGen/AMDGPU/mai-hazards-gfx90a.mir | 6 +- .../CodeGen/AMDGPU/mai-hazards-gfx940.mir | 6 +- llvm/test/MC/AMDGPU/dl-insts.s | 8 - llvm/test/MC/AMDGPU/gfx1030_err.s | 475 +++++++----------- llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s | 354 +++---------- llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s | 353 +++---------- llvm/test/MC/AMDGPU/gfx908_err.s | 344 +++++++++---- llvm/test/MC/AMDGPU/gfx90a_err.s | 344 +++++++++---- .../Disassembler/AMDGPU/gfx908-dl-insts.txt | 276 ---------- 12 files changed, 866 insertions(+), 1369 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp index 209fd46c8fdcb..ed956a1f755c0 100644 --- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp +++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp @@ -4626,40 +4626,28 @@ bool AMDGPUAsmParser::validateOpSel(const MCInst &Inst) { uint64_t TSFlags = MII.get(Opc).TSFlags; - if (TSFlags & SIInstrFlags::IsDOT) { - // For all DOT instructions on GFX940, or VOP3P DOT instructions on all - // targets, i.e. v_dot2_*(except on pre-GFX940), v_dot4_* and v_dot8_*, - // op_sel must be 0 if present, and op_sel_hi cannot be present. - if (!isGFX10Plus() && !isGFX940()) - if (Opc == AMDGPU::V_DOT2_F32_F16_vi || - Opc == AMDGPU::V_DOT2_I32_I16_vi || Opc == AMDGPU::V_DOT2_U32_U16_vi) - return true; - - if (isGFX940() || (TSFlags & SIInstrFlags::VOP3P)) { - int OpSelIdx = AMDGPU::getNamedOperandIdx(Opc, AMDGPU::OpName::op_sel); - if (OpSelIdx != -1) { - if (Inst.getOperand(OpSelIdx).getImm() != 0) - return false; - } - int OpSelHiIdx = - AMDGPU::getNamedOperandIdx(Opc, AMDGPU::OpName::op_sel_hi); - if (OpSelHiIdx != -1) { - // -1 is the default value for op_sel_hi - if (Inst.getOperand(OpSelHiIdx).getImm() != -1) - return false; - } + if (isGFX940() && (TSFlags & SIInstrFlags::IsDOT)) { + int OpSelIdx = AMDGPU::getNamedOperandIdx(Opc, AMDGPU::OpName::op_sel); + if (OpSelIdx != -1) { + if (Inst.getOperand(OpSelIdx).getImm() != 0) + return false; } - - // op_sel[0:1] must be 0 for v_dot2_bf16_bf16 and v_dot2_f16_f16 (VOP3 Dot). - if (isGFX11Plus() && (TSFlags & SIInstrFlags::VOP3) && - !(TSFlags & SIInstrFlags::VOP3P)) { - int OpSelIdx = AMDGPU::getNamedOperandIdx(Opc, AMDGPU::OpName::op_sel); - unsigned OpSel = Inst.getOperand(OpSelIdx).getImm(); - if (OpSel & 3) + int OpSelHiIdx = AMDGPU::getNamedOperandIdx(Opc, AMDGPU::OpName::op_sel_hi); + if (OpSelHiIdx != -1) { + if (Inst.getOperand(OpSelHiIdx).getImm() != -1) return false; } } + // op_sel[0:1] must be 0 for v_dot2_bf16_bf16 and v_dot2_f16_f16 (VOP3 Dot). + if (isGFX11Plus() && (TSFlags & SIInstrFlags::IsDOT) && + (TSFlags & SIInstrFlags::VOP3) && !(TSFlags & SIInstrFlags::VOP3P)) { + int OpSelIdx = AMDGPU::getNamedOperandIdx(Opc, AMDGPU::OpName::op_sel); + unsigned OpSel = Inst.getOperand(OpSelIdx).getImm(); + if (OpSel & 3) + return false; + } + return true; } diff --git a/llvm/lib/Target/AMDGPU/VOP3PInstructions.td b/llvm/lib/Target/AMDGPU/VOP3PInstructions.td index 689f3b38a1723..1afd68767cd3b 100644 --- a/llvm/lib/Target/AMDGPU/VOP3PInstructions.td +++ b/llvm/lib/Target/AMDGPU/VOP3PInstructions.td @@ -405,16 +405,16 @@ defm V_DOT2_F32_F16 : VOP3PInst<"v_dot2_f32_f16", let OtherPredicates = [HasDot7Insts] in { defm V_DOT4_U32_U8 : VOP3PInst<"v_dot4_u32_u8", - VOP3P_Profile, int_amdgcn_udot4, 1>; + VOP3P_Profile, int_amdgcn_udot4, 1>; defm V_DOT8_U32_U4 : VOP3PInst<"v_dot8_u32_u4", - VOP3P_Profile, int_amdgcn_udot8, 1>; + VOP3P_Profile, int_amdgcn_udot8, 1>; } // End OtherPredicates = [HasDot7Insts] let OtherPredicates = [HasDot1Insts] in { defm V_DOT4_I32_I8 : VOP3PInst<"v_dot4_i32_i8", - VOP3P_Profile, int_amdgcn_sdot4, 1>; + VOP3P_Profile, int_amdgcn_sdot4, 1>; defm V_DOT8_I32_I4 : VOP3PInst<"v_dot8_i32_i4", - VOP3P_Profile, int_amdgcn_sdot8, 1>; + VOP3P_Profile, int_amdgcn_sdot8, 1>; } // End OtherPredicates = [HasDot1Insts] def DOT2_BF16_Profile @@ -433,7 +433,7 @@ defm V_DOT2_F32_BF16 : VOP3PInst<"v_dot2_f32_bf16", DOT2_BF16_Profile, multiclass VOP3PDOTIUInst { let IsDOT = 1 in - defm NAME : VOP3PInst, + defm NAME : VOP3PInst, null_frag, 1>; // Dot-iu instructions consider input as signed if imod neg bits are set. Thus // Dot-iu Intrinsics have extra operands and require separate codegen pattern. diff --git a/llvm/lib/Target/AMDGPU/VOPInstructions.td b/llvm/lib/Target/AMDGPU/VOPInstructions.td index 0f568ba90a9ef..d236907b0eec5 100644 --- a/llvm/lib/Target/AMDGPU/VOPInstructions.td +++ b/llvm/lib/Target/AMDGPU/VOPInstructions.td @@ -1454,12 +1454,13 @@ class VOP3Features { bit IsMAI = MAI; } -def VOP3_REGULAR : VOP3Features<0, 0, 0, 0>; -def VOP3_CLAMP : VOP3Features<1, 0, 0, 0>; -def VOP3_OPSEL : VOP3Features<1, 1, 0, 0>; -def VOP3_PACKED : VOP3Features<1, 1, 1, 0>; -def VOP3_MAI : VOP3Features<0, 0, 0, 1>; -def VOP3_OPSEL_ONLY : VOP3Features<0, 1, 0, 0>; +def VOP3_REGULAR : VOP3Features<0, 0, 0, 0>; +def VOP3_CLAMP : VOP3Features<1, 0, 0, 0>; +def VOP3_OPSEL : VOP3Features<1, 1, 0, 0>; +def VOP3_PACKED : VOP3Features<1, 1, 1, 0>; +def VOP3_PACKED_NO_OPSEL : VOP3Features<1, 0, 1, 0>; +def VOP3_MAI : VOP3Features<0, 0, 0, 1>; +def VOP3_OPSEL_ONLY : VOP3Features<0, 1, 0, 0>; // Packed is misleading, but it enables the appropriate op_sel // modifiers. diff --git a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx90a.mir b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx90a.mir index 8be7308c8a6e0..3feccff715bc1 100644 --- a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx90a.mir +++ b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx90a.mir @@ -746,7 +746,7 @@ name: smfma4x4_write_vgpr_dot_write body: | bb.0: $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_F32_4X4X1F32_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec - $vgpr1 = V_DOT8_I32_I4 0, $vgpr4, 0, $vgpr4, 0, $vgpr4, 0, 0, 0, 0, 0, implicit $mode, implicit $exec + $vgpr1 = V_DOT8_I32_I4 0, $vgpr4, 0, $vgpr4, 0, $vgpr4, 0, 0, 0, implicit $mode, implicit $exec ... # GCN-LABEL: name: smfma4x4_read_srcc_vgpr_valu_write # GCN: V_MFMA @@ -945,7 +945,7 @@ name: dot_write_vgpr_different_dot_read_srcc body: | bb.0: $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec - $vgpr1 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr4, 0, 0, 0, 0, 0, implicit $mode, implicit $exec + $vgpr1 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr4, 0, 0, 0, implicit $mode, implicit $exec ... # GCN-LABEL: name: dot_write_vgpr_different_dot_write # GCN: V_DOT @@ -955,7 +955,7 @@ name: dot_write_vgpr_different_dot_write body: | bb.0: $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec - $vgpr4 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec + $vgpr4 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec ... # GCN-LABEL: name: dot_write_vgpr_different_valu_read # GCN: V_DOT diff --git a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir index d59bcfb16eece..52891989b88fb 100644 --- a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir +++ b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir @@ -1071,7 +1071,7 @@ name: xdl_smfma4x4_write_vgpr_dot_write body: | bb.0: $vgpr0_vgpr1_vgpr2_vgpr3 = V_MFMA_I32_4X4X4I8_vgprcd_e64 $vgpr1, $vgpr0, $vgpr0_vgpr1_vgpr2_vgpr3, 0, 0, 0, implicit $mode, implicit $exec - $vgpr1 = V_DOT8_I32_I4 0, $vgpr4, 0, $vgpr4, 0, $vgpr4, 0, 0, 0, 0, 0, implicit $mode, implicit $exec + $vgpr1 = V_DOT8_I32_I4 0, $vgpr4, 0, $vgpr4, 0, $vgpr4, 0, 0, 0, implicit $mode, implicit $exec ... # GCN-LABEL: name: nonxdl_smfma4x4_read_srcc_vgpr_valu_write # GCN: V_MFMA @@ -1265,7 +1265,7 @@ name: dot_write_vgpr_different_dot_read_srcc body: | bb.0: $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec - $vgpr1 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr4, 0, 0, 0, 0, 0, implicit $mode, implicit $exec + $vgpr1 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr4, 0, 0, 0, implicit $mode, implicit $exec ... # GCN-LABEL: name: dot_write_vgpr_different_dot_write # GCN: V_DOT @@ -1275,7 +1275,7 @@ name: dot_write_vgpr_different_dot_write body: | bb.0: $vgpr4 = V_DOT4C_I32_I8_e32 $vgpr0, $vgpr1, $vgpr4, implicit $exec - $vgpr4 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec + $vgpr4 = V_DOT8_I32_I4 0, $vgpr0, 0, $vgpr0, 0, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec ... # GCN-LABEL: name: dot_write_vgpr_different_valu_read # GCN: V_DOT diff --git a/llvm/test/MC/AMDGPU/dl-insts.s b/llvm/test/MC/AMDGPU/dl-insts.s index 6797426b6a7cd..599734aac829d 100644 --- a/llvm/test/MC/AMDGPU/dl-insts.s +++ b/llvm/test/MC/AMDGPU/dl-insts.s @@ -536,14 +536,6 @@ v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] // CHECK: encoding: [0x00,0x18,0xa7,0xd3,0x01,0x05,0x0e,0x1c] v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// CHECK: encoding: [0x00,0x40,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] -// CHECK: encoding: [0x00,0x40,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] -// CHECK: encoding: [0x00,0x40,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] -// CHECK: encoding: [0x00,0x40,0xab,0xd3,0x01,0x05,0x0e,0x1c] -v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] // // Test clamp. diff --git a/llvm/test/MC/AMDGPU/gfx1030_err.s b/llvm/test/MC/AMDGPU/gfx1030_err.s index 1e657831e28bf..87a09875f75e9 100644 --- a/llvm/test/MC/AMDGPU/gfx1030_err.s +++ b/llvm/test/MC/AMDGPU/gfx1030_err.s @@ -212,487 +212,364 @@ image_bvh_intersect_ray v[39:42], [v50, v46, v23, v17, v16, v15, v21, v20], s[12 image_msaa_load v[1:4], v[5:7], s[8:15] dmask:0xf glc // GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: missing dim operand -// op_sel/op_sel_hi: in VOP3P dot, op_sel must be 0, op_sel_hi is not allowed +// op_sel not allowed in dot opcodes with 4- or 8-bit packed data -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX10: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. diff --git a/llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s b/llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s index 6026c12eab57e..451627eb93246 100644 --- a/llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s +++ b/llvm/test/MC/AMDGPU/gfx11_asm_vop3p_err.s @@ -1,417 +1,219 @@ -// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx1100 %s 2>&1 | FileCheck --check-prefix=GFX1100 --implicit-check-not=error: %s +// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx1100 %s 2>&1 | FileCheck --check-prefix=GFX11 --implicit-check-not=error: %s -// op_sel/op_sel_hi: in VOP3P dot, op_sel must be 0 if specified, op_sel_hi cannot appear +// op_sel not allowed in dot opcodes with 4- or 8-bit packed data -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX1100: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX11: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. diff --git a/llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s b/llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s index 0c2eeaa4b34da..5ed2091d37e43 100644 --- a/llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s +++ b/llvm/test/MC/AMDGPU/gfx12_asm_vop3p_err.s @@ -132,419 +132,220 @@ v_dot4_f32_bf8_bf8 v0, v1, v2, v3 neg_hi:[1,0,0] v_dot4_f32_bf8_bf8 v0, v1, v2, v3 neg_hi:[0,1,0] // GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid neg_hi operand +// op_sel not allowed in dot opcodes with 4- or 8-bit packed data -// op_sel/op_sel_hi: in VOP3P dot, op_sel must be 0 if specified, op_sel_hi cannot appear - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot2_f32_bf16 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_iu8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand - -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. -v_dot8_i32_iu4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX12: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. diff --git a/llvm/test/MC/AMDGPU/gfx908_err.s b/llvm/test/MC/AMDGPU/gfx908_err.s index 9e4ac5617738b..d39e9b5068a4f 100644 --- a/llvm/test/MC/AMDGPU/gfx908_err.s +++ b/llvm/test/MC/AMDGPU/gfx908_err.s @@ -1,280 +1,436 @@ // RUN: not llvm-mc -triple=amdgcn -mcpu=gfx908 %s 2>&1 | FileCheck --check-prefix=GFX908 --implicit-check-not=error: %s -// op_sel/op_sel_hi: in VOP3P dot, except v_dot2_f32_f16, v_dot2_i32_i16, and -// v_dot2_u32_u16, op_sel must be 0 if specified, op_sel_hi cannot appear +// op_sel not allowed in dot opcodes with 4- or 8-bit packed data + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX908: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + diff --git a/llvm/test/MC/AMDGPU/gfx90a_err.s b/llvm/test/MC/AMDGPU/gfx90a_err.s index 28627986e2a9f..a05c7fb1cc1c4 100644 --- a/llvm/test/MC/AMDGPU/gfx90a_err.s +++ b/llvm/test/MC/AMDGPU/gfx90a_err.s @@ -240,281 +240,437 @@ scratch_load_lds_dword v2, off ds_read_b32 v0, v1 gds // GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: gds modifier is not supported on this GPU -// op_sel/op_sel_hi: in VOP3P dot, except v_dot2_f32_f16, v_dot2_i32_i16, and -// v_dot2_u32_u16, op_sel must be 0 if specified, op_sel_hi cannot appear +// op_sel not allowed in dot opcodes with 4- or 8-bit packed data + +v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot4c_i32_i8 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] -// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: invalid op_sel operand +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[0,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,0] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + +v_dot8c_i32_i4 v0, v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1] +// GFX90A: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. + diff --git a/llvm/test/MC/Disassembler/AMDGPU/gfx908-dl-insts.txt b/llvm/test/MC/Disassembler/AMDGPU/gfx908-dl-insts.txt index aa3b4c7f03837..310e23f642e89 100644 --- a/llvm/test/MC/Disassembler/AMDGPU/gfx908-dl-insts.txt +++ b/llvm/test/MC/Disassembler/AMDGPU/gfx908-dl-insts.txt @@ -778,291 +778,15 @@ # CHECK: v_dot4_i32_i8 v0, v1, v2, v3 ; encoding: [0x00,0x40,0xa8,0xd3,0x01,0x05,0x0e,0x1c] 0x00,0x40,0xa8,0xd3,0x01,0x05,0x0e,0x1c -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x00,0x50,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x50,0xa8,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x00,0x48,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x48,0xa8,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1,0] ; encoding: [0x00,0x58,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x58,0xa8,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x00,0xa8,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x10,0xa8,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x08,0xa8,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_i32_i8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x18,0xa8,0xd3,0x01,0x05,0x0e,0x1c - # CHECK: v_dot4_u32_u8 v0, v1, v2, v3 ; encoding: [0x00,0x40,0xa9,0xd3,0x01,0x05,0x0e,0x1c] 0x00,0x40,0xa9,0xd3,0x01,0x05,0x0e,0x1c -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x00,0x50,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x50,0xa9,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x00,0x48,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x48,0xa9,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1,0] ; encoding: [0x00,0x58,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x58,0xa9,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x00,0xa9,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x10,0xa9,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x08,0xa9,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot4_u32_u8 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x18,0xa9,0xd3,0x01,0x05,0x0e,0x1c - # CHECK: v_dot8_i32_i4 v0, v1, v2, v3 ; encoding: [0x00,0x40,0xaa,0xd3,0x01,0x05,0x0e,0x1c] 0x00,0x40,0xaa,0xd3,0x01,0x05,0x0e,0x1c -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x00,0x50,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x50,0xaa,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x00,0x48,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x48,0xaa,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1,0] ; encoding: [0x00,0x58,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x58,0xaa,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x00,0xaa,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x10,0xaa,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x08,0xaa,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_i32_i4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x18,0xaa,0xd3,0x01,0x05,0x0e,0x1c - # CHECK: v_dot8_u32_u4 v0, v1, v2, v3 ; encoding: [0x00,0x40,0xab,0xd3,0x01,0x05,0x0e,0x1c] 0x00,0x40,0xab,0xd3,0x01,0x05,0x0e,0x1c -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x00,0x50,0xab,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x50,0xab,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x00,0x48,0xab,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x48,0xab,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1,0] ; encoding: [0x00,0x58,0xab,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x58,0xab,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,0,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[0,1,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel_hi:[1,1,0] ; encoding: [0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x00,0xab,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[0,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x10,0xab,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x08,0xab,0xd3,0x01,0x05,0x0e,0x1c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,0,0] ; encoding: [0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x04] -0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x04 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[0,1,0] ; encoding: [0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x14] -0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x14 - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,0,0] ; encoding: [0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x0c] -0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x0c - -# CHECK: v_dot8_u32_u4 v0, v1, v2, v3 op_sel:[1,1,0] op_sel_hi:[1,1,0] ; encoding: [0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x1c] -0x00,0x18,0xab,0xd3,0x01,0x05,0x0e,0x1c - # CHECK: v_dot2_f32_f16 v0, v1, v2, v3 clamp ; encoding: [0x00,0xc0,0xa3,0xd3,0x01,0x05,0x0e,0x1c] 0x00,0xc0,0xa3,0xd3,0x01,0x05,0x0e,0x1c