[llvm] [AMDGPU][MC] Restrict op_sel in VOP3P dot instructions (PR #100485)

Jun Wang via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 17 18:20:24 PST 2024


https://github.com/jwanggit86 updated https://github.com/llvm/llvm-project/pull/100485

>From 2753fd11e70600b0543c99634b14a4236cadb399 Mon Sep 17 00:00:00 2001
From: Jun Wang <jwang86 at yahoo.com>
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 5eee71887964ad..58c0af23e48928 100644
--- a/llvm/lib/Target/AMDGPU/VOP3PInstructions.td
+++ b/llvm/lib/Target/AMDGPU/VOP3PInstructions.td
@@ -383,16 +383,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<VOP_I32_I32_I32_I32, VOP3_PACKED>, int_amdgcn_udot4, 1>;
+  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED_NO_OPSEL>, int_amdgcn_udot4, 1>;
 defm V_DOT8_U32_U4  : VOP3PInst<"v_dot8_u32_u4",
-  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED>, int_amdgcn_udot8, 1>;
+  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED_NO_OPSEL>, int_amdgcn_udot8, 1>;
 } // End OtherPredicates = [HasDot7Insts]
 
 let OtherPredicates = [HasDot1Insts] in {
 defm V_DOT4_I32_I8  : VOP3PInst<"v_dot4_i32_i8",
-  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED>, int_amdgcn_sdot4, 1>;
+  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED_NO_OPSEL>, int_amdgcn_sdot4, 1>;
 defm V_DOT8_I32_I4  : VOP3PInst<"v_dot8_i32_i4",
-  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED>, int_amdgcn_sdot8, 1>;
+  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED_NO_OPSEL>, int_amdgcn_sdot8, 1>;
 } // End OtherPredicates = [HasDot1Insts]
 
 def DOT2_BF16_Profile
@@ -411,7 +411,7 @@ defm V_DOT2_F32_BF16 : VOP3PInst<"v_dot2_f32_bf16", DOT2_BF16_Profile,
 
 multiclass VOP3PDOTIUInst <string OpName, SDPatternOperator intrinsic_node> {
   let IsDOT = 1 in
-  defm NAME : VOP3PInst<OpName, VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED>,
+  defm NAME : VOP3PInst<OpName, VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED_NO_OPSEL>,
                         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 aab5dc7465d938..45f542f2781db1 100644
--- a/llvm/lib/Target/AMDGPU/VOPInstructions.td
+++ b/llvm/lib/Target/AMDGPU/VOPInstructions.td
@@ -1360,11 +1360,12 @@ class VOP3Features<bit Clamp, bit OpSel, bit Packed, bit MAI> {
   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>;
 
 class VOP3_Profile_Base<VOPProfile P, VOP3Features Features = VOP3_REGULAR> : VOPProfile<P.ArgVT> {
 
diff --git a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx90a.mir b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx90a.mir
index 8be7308c8a6e00..3feccff715bc16 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 a98b02d792d984..9fb6a7b6b5e55c 100644
--- a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir
+++ b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir
@@ -1014,7 +1014,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
@@ -1208,7 +1208,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
@@ -1218,7 +1218,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 00e9bec7eb0a23..599734aac829dd 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 51498d3c86d7fe..87a09875f75e98 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 00000000000000..451627eb93246a
--- /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 a7d42c6b923a4f..5ed2091d37e433 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 00000000000000..d39e9b5068a4fe
--- /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 7b2acc61cfa6f1..a05c7fb1cc1c48 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 aa3b4c7f03837a..310e23f642e895 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 7ae70f094f23872cbe7b5356044b93994555f562 Mon Sep 17 00:00:00 2001
From: Jun Wang <jwang86 at yahoo.com>
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 58c0af23e48928..bd221331a4afa3 100644
--- a/llvm/lib/Target/AMDGPU/VOP3PInstructions.td
+++ b/llvm/lib/Target/AMDGPU/VOP3PInstructions.td
@@ -383,8 +383,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<VOP_I32_I32_I32_I32, VOP3_PACKED>, 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<VOP_I32_I32_I32_I32, VOP3_PACKED_NO_OPSEL>, int_amdgcn_udot4, 1>;
+
 defm V_DOT8_U32_U4  : VOP3PInst<"v_dot8_u32_u4",
+  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED>, 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<VOP_I32_I32_I32_I32, VOP3_PACKED_NO_OPSEL>, int_amdgcn_udot8, 1>;
 } // End OtherPredicates = [HasDot7Insts]
 
@@ -411,7 +418,7 @@ defm V_DOT2_F32_BF16 : VOP3PInst<"v_dot2_f32_bf16", DOT2_BF16_Profile,
 
 multiclass VOP3PDOTIUInst <string OpName, SDPatternOperator intrinsic_node> {
   let IsDOT = 1 in
-  defm NAME : VOP3PInst<OpName, VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED_NO_OPSEL>,
+  defm NAME : VOP3PInst<OpName, VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED>,
                         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.
@@ -1712,8 +1719,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>;
@@ -1845,8 +1852,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 451627eb93246a..00000000000000
--- 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 5ed2091d37e433..a7d42c6b923a4f 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 a3c2493dcd4e7ed141eb8245035aef39a41c01ed Mon Sep 17 00:00:00 2001
From: Jun Wang <jwang86 at yahoo.com>
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 758f864fd20e6a..3a64ea6521238a 100644
--- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
@@ -4588,7 +4588,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)
@@ -4596,6 +4598,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 bd221331a4afa3..5eee71887964ad 100644
--- a/llvm/lib/Target/AMDGPU/VOP3PInstructions.td
+++ b/llvm/lib/Target/AMDGPU/VOP3PInstructions.td
@@ -384,22 +384,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<VOP_I32_I32_I32_I32, VOP3_PACKED>, 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<VOP_I32_I32_I32_I32, VOP3_PACKED_NO_OPSEL>, int_amdgcn_udot4, 1>;
-
 defm V_DOT8_U32_U4  : VOP3PInst<"v_dot8_u32_u4",
   VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED>, 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<VOP_I32_I32_I32_I32, VOP3_PACKED_NO_OPSEL>, int_amdgcn_udot8, 1>;
 } // End OtherPredicates = [HasDot7Insts]
 
 let OtherPredicates = [HasDot1Insts] in {
 defm V_DOT4_I32_I8  : VOP3PInst<"v_dot4_i32_i8",
-  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED_NO_OPSEL>, int_amdgcn_sdot4, 1>;
+  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED>, int_amdgcn_sdot4, 1>;
 defm V_DOT8_I32_I4  : VOP3PInst<"v_dot8_i32_i4",
-  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED_NO_OPSEL>, int_amdgcn_sdot8, 1>;
+  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED>, int_amdgcn_sdot8, 1>;
 } // End OtherPredicates = [HasDot1Insts]
 
 def DOT2_BF16_Profile
@@ -1719,8 +1712,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>;
@@ -1852,10 +1845,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 45f542f2781db1..aab5dc7465d938 100644
--- a/llvm/lib/Target/AMDGPU/VOPInstructions.td
+++ b/llvm/lib/Target/AMDGPU/VOPInstructions.td
@@ -1360,12 +1360,11 @@ class VOP3Features<bit Clamp, bit OpSel, bit Packed, bit MAI> {
   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>;
 
 class VOP3_Profile_Base<VOPProfile P, VOP3Features Features = VOP3_REGULAR> : VOPProfile<P.ArgVT> {
 
diff --git a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx90a.mir b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx90a.mir
index 3feccff715bc16..8be7308c8a6e00 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 9fb6a7b6b5e55c..a98b02d792d984 100644
--- a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir
+++ b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir
@@ -1014,7 +1014,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
@@ -1208,7 +1208,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
@@ -1218,7 +1218,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 599734aac829dd..c2c73b9f2ee9b9 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 87a09875f75e98..1e657831e28bf8 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 00000000000000..6026c12eab57ec
--- /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 a7d42c6b923a4f..0c2eeaa4b34da7 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 d39e9b5068a4fe..60730e82059acc 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 a05c7fb1cc1c48..84d0d9114e0e42 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 310e23f642e895..aa3b4c7f03837a 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 f7e9331039e16bcf229f1d23176a865614d0958f Mon Sep 17 00:00:00 2001
From: Jun Wang <jwang86 at yahoo.com>
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 3a64ea6521238a..5fdac4dd999478 100644
--- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
@@ -4588,9 +4588,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 67fea8ef6d56fd31ef783a1fa4a40914885033b5 Mon Sep 17 00:00:00 2001
From: Jun Wang <jwang86 at yahoo.com>
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 5fdac4dd999478..010696826b6c63 100644
--- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
@@ -4588,32 +4588,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 c2c73b9f2ee9b9..6797426b6a7cde 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 60730e82059acc..9e4ac5617738b6 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 84d0d9114e0e42..28627986e2a9f9 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 4fc4ac6cb630065c160d243734a4c920a41fce39 Mon Sep 17 00:00:00 2001
From: Jun Wang <jwang86 at yahoo.com>
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     |  11 +-
 .../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, 865 insertions(+), 1368 deletions(-)

diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
index 010696826b6c63..758f864fd20e6a 100644
--- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
@@ -4588,40 +4588,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 5eee71887964ad..58c0af23e48928 100644
--- a/llvm/lib/Target/AMDGPU/VOP3PInstructions.td
+++ b/llvm/lib/Target/AMDGPU/VOP3PInstructions.td
@@ -383,16 +383,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<VOP_I32_I32_I32_I32, VOP3_PACKED>, int_amdgcn_udot4, 1>;
+  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED_NO_OPSEL>, int_amdgcn_udot4, 1>;
 defm V_DOT8_U32_U4  : VOP3PInst<"v_dot8_u32_u4",
-  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED>, int_amdgcn_udot8, 1>;
+  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED_NO_OPSEL>, int_amdgcn_udot8, 1>;
 } // End OtherPredicates = [HasDot7Insts]
 
 let OtherPredicates = [HasDot1Insts] in {
 defm V_DOT4_I32_I8  : VOP3PInst<"v_dot4_i32_i8",
-  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED>, int_amdgcn_sdot4, 1>;
+  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED_NO_OPSEL>, int_amdgcn_sdot4, 1>;
 defm V_DOT8_I32_I4  : VOP3PInst<"v_dot8_i32_i4",
-  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED>, int_amdgcn_sdot8, 1>;
+  VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED_NO_OPSEL>, int_amdgcn_sdot8, 1>;
 } // End OtherPredicates = [HasDot1Insts]
 
 def DOT2_BF16_Profile
@@ -411,7 +411,7 @@ defm V_DOT2_F32_BF16 : VOP3PInst<"v_dot2_f32_bf16", DOT2_BF16_Profile,
 
 multiclass VOP3PDOTIUInst <string OpName, SDPatternOperator intrinsic_node> {
   let IsDOT = 1 in
-  defm NAME : VOP3PInst<OpName, VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED>,
+  defm NAME : VOP3PInst<OpName, VOP3P_Profile<VOP_I32_I32_I32_I32, VOP3_PACKED_NO_OPSEL>,
                         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 aab5dc7465d938..45f542f2781db1 100644
--- a/llvm/lib/Target/AMDGPU/VOPInstructions.td
+++ b/llvm/lib/Target/AMDGPU/VOPInstructions.td
@@ -1360,11 +1360,12 @@ class VOP3Features<bit Clamp, bit OpSel, bit Packed, bit MAI> {
   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>;
 
 class VOP3_Profile_Base<VOPProfile P, VOP3Features Features = VOP3_REGULAR> : VOPProfile<P.ArgVT> {
 
diff --git a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx90a.mir b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx90a.mir
index 8be7308c8a6e00..3feccff715bc16 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 a98b02d792d984..9fb6a7b6b5e55c 100644
--- a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir
+++ b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir
@@ -1014,7 +1014,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
@@ -1208,7 +1208,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
@@ -1218,7 +1218,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 6797426b6a7cde..599734aac829dd 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 1e657831e28bf8..87a09875f75e98 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 6026c12eab57ec..451627eb93246a 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 0c2eeaa4b34da7..5ed2091d37e433 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 9e4ac5617738b6..d39e9b5068a4fe 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 28627986e2a9f9..a05c7fb1cc1c48 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 aa3b4c7f03837a..310e23f642e895 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
 



More information about the llvm-commits mailing list