summaryrefslogtreecommitdiffstats
path: root/llvm/test/MC/AMDGPU
diff options
context:
space:
mode:
authorStanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com>2019-07-11 00:00:27 +0000
committerStanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com>2019-07-11 00:00:27 +0000
commitc0ae1be06637ef4e0a4b5047e7856523550e4bdc (patch)
treed4fe3e422cc6d85cde7184da04b665755633f089 /llvm/test/MC/AMDGPU
parent3daf58faa2cf7776cc912990868f83a746c63d1a (diff)
downloadbcm5719-llvm-c0ae1be06637ef4e0a4b5047e7856523550e4bdc.tar.gz
bcm5719-llvm-c0ae1be06637ef4e0a4b5047e7856523550e4bdc.zip
[AMDGPU] gfx908 dot instruction support
Differential Revision: https://reviews.llvm.org/D64431 llvm-svn: 365715
Diffstat (limited to 'llvm/test/MC/AMDGPU')
-rw-r--r--llvm/test/MC/AMDGPU/dl-insts-err.s341
-rw-r--r--llvm/test/MC/AMDGPU/xdl-insts-err.s41
-rw-r--r--llvm/test/MC/AMDGPU/xdl-insts-gfx908.s372
3 files changed, 584 insertions, 170 deletions
diff --git a/llvm/test/MC/AMDGPU/dl-insts-err.s b/llvm/test/MC/AMDGPU/dl-insts-err.s
index a6ebde52874..3f6d4fd8611 100644
--- a/llvm/test/MC/AMDGPU/dl-insts-err.s
+++ b/llvm/test/MC/AMDGPU/dl-insts-err.s
@@ -1,6 +1,7 @@
// RUN: not llvm-mc -arch=amdgcn -mcpu=gfx800 -show-encoding %s 2>&1 | FileCheck %s
// RUN: not llvm-mc -arch=amdgcn -mcpu=gfx900 -show-encoding %s 2>&1 | FileCheck %s
-// RUN: not llvm-mc -arch=amdgcn -mcpu=gfx906 -show-encoding %s 2>&1 | FileCheck %s --check-prefix=GFX906
+// RUN: not llvm-mc -arch=amdgcn -mcpu=gfx906 -show-encoding %s 2>&1 | FileCheck %s --check-prefix=GFX906-GFX908
+// RUN: not llvm-mc -arch=amdgcn -mcpu=gfx908 -show-encoding %s 2>&1 | FileCheck %s --check-prefix=GFX906-GFX908
//
// Test unsupported GPUs.
@@ -29,233 +30,233 @@ v_dot8_u32_u4 v0, v1, v2, v3
// Test invalid operands.
//
-// GFX906: error: invalid operand for instruction
+// GFX906-GFX908: error: invalid operand for instruction
v_dot2_f32_f16 v0, v1, v2, v3 op_sel
-// GFX906: error: expected a left square bracket
+// GFX906-GFX908: error: expected a left square bracket
v_dot2_f32_f16 v0, v1, v2, v3 op_sel:
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[
-// GFX906: error: expected a left square bracket
+// GFX906-GFX908: error: expected a left square bracket
v_dot2_f32_f16 v0, v1, v2, v3 op_sel:]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[,]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,2]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[2,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[2,2]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,-1]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[-1,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[-1,-1]
-// GFX906: error: expected a closing square bracket
+// GFX906-GFX908: error: expected a closing square bracket
v_dot2_f32_f16 v0, v1, v2, v3 op_sel:[0,0,0,0,0]
-// GFX906: error: invalid operand for instruction
+// GFX906-GFX908: error: invalid operand for instruction
v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi
-// GFX906: error: expected a left square bracket
+// GFX906-GFX908: error: expected a left square bracket
v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[
-// GFX906: error: expected a left square bracket
+// GFX906-GFX908: error: expected a left square bracket
v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[,]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,2]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[2,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[2,2]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,-1]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[-1,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[-1,-1]
-// GFX906: error: expected a closing square bracket
+// GFX906-GFX908: error: expected a closing square bracket
v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[0,0,0,0,0]
-// GFX906: error: invalid operand for instruction
+// GFX906-GFX908: error: invalid operand for instruction
v_dot2_f32_f16 v0, v1, v2, v3 neg_lo
-// GFX906: error: expected a left square bracket
+// GFX906-GFX908: error: expected a left square bracket
v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[
-// GFX906: error: expected a left square bracket
+// GFX906-GFX908: error: expected a left square bracket
v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[,]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[0,2]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[2,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[2,2]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[0,-1]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[-1,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[-1,-1]
-// GFX906: error: expected a closing square bracket
+// GFX906-GFX908: error: expected a closing square bracket
v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[0,0,0,0,0]
-// GFX906: error: invalid operand for instruction
+// GFX906-GFX908: error: invalid operand for instruction
v_dot2_f32_f16 v0, v1, v2, v3 neg_hi
-// GFX906: error: expected a left square bracket
+// GFX906-GFX908: error: expected a left square bracket
v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[
-// GFX906: error: expected a left square bracket
+// GFX906-GFX908: error: expected a left square bracket
v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[,]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[0,2]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[2,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[2,2]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[0,-1]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[-1,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[-1,-1]
-// GFX906: error: expected a closing square bracket
+// GFX906-GFX908: error: expected a closing square bracket
v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[0,0,0,0,0]
-// GFX906: error: invalid operand for instruction
+// GFX906-GFX908: error: invalid operand for instruction
v_dot2_i32_i16 v0, v1, v2, v3 op_sel
-// GFX906: error: expected a left square bracket
+// GFX906-GFX908: error: expected a left square bracket
v_dot2_i32_i16 v0, v1, v2, v3 op_sel:
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[
-// GFX906: error: expected a left square bracket
+// GFX906-GFX908: error: expected a left square bracket
v_dot2_i32_i16 v0, v1, v2, v3 op_sel:]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[,]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,2]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[2,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[2,2]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,-1]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[-1,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[-1,-1]
-// GFX906: error: expected a closing square bracket
+// GFX906-GFX908: error: expected a closing square bracket
v_dot2_i32_i16 v0, v1, v2, v3 op_sel:[0,0,0,0,0]
-// GFX906: error: invalid operand for instruction
+// GFX906-GFX908: error: invalid operand for instruction
v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi
-// GFX906: error: expected a left square bracket
+// GFX906-GFX908: error: expected a left square bracket
v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[
-// GFX906: error: expected a left square bracket
+// GFX906-GFX908: error: expected a left square bracket
v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[,]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,2]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[2,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[2,2]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,-1]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[-1,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[-1,-1]
-// GFX906: error: expected a closing square bracket
+// GFX906-GFX908: error: expected a closing square bracket
v_dot2_i32_i16 v0, v1, v2, v3 op_sel_hi:[0,0,0,0,0]
// FIXME-GFX906: error: invalid operand for instruction
v_dot2_i32_i16 v0, v1, v2, v3 neg_lo:[0,0]
// FIXME-GFX906: error: invalid operand for instruction
v_dot2_i32_i16 v0, v1, v2, v3 neg_hi:[0,0]
-// GFX906: error: invalid operand for instruction
+// GFX906-GFX908: error: invalid operand for instruction
v_dot2_u32_u16 v0, v1, v2, v3 op_sel
-// GFX906: error: expected a left square bracket
+// GFX906-GFX908: error: expected a left square bracket
v_dot2_u32_u16 v0, v1, v2, v3 op_sel:
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[
-// GFX906: error: expected a left square bracket
+// GFX906-GFX908: error: expected a left square bracket
v_dot2_u32_u16 v0, v1, v2, v3 op_sel:]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[,]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,2]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[2,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[2,2]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,-1]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[-1,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[-1,-1]
-// GFX906: error: expected a closing square bracket
+// GFX906-GFX908: error: expected a closing square bracket
v_dot2_u32_u16 v0, v1, v2, v3 op_sel:[0,0,0,0,0]
-// GFX906: error: invalid operand for instruction
+// GFX906-GFX908: error: invalid operand for instruction
v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi
-// GFX906: error: expected a left square bracket
+// GFX906-GFX908: error: expected a left square bracket
v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[
-// GFX906: error: expected a left square bracket
+// GFX906-GFX908: error: expected a left square bracket
v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[,]
-// GFX906: error: unknown token in expression
+// GFX906-GFX908: error: unknown token in expression
v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[,0]
-// GFX906: error: invalid op_sel_hi value
+// GFX906-GFX908: error: invalid op_sel_hi value
v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,2]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[2,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[2,2]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,-1]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[-1,0]
-// GFX906: error: failed parsing operand
+// GFX906-GFX908: error: failed parsing operand
v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[-1,-1]
-// GFX906: error: expected a closing square bracket
+// GFX906-GFX908: error: expected a closing square bracket
v_dot2_u32_u16 v0, v1, v2, v3 op_sel_hi:[0,0,0,0,0]
// FIXME-GFX906: error: invalid operand for instruction
v_dot2_u32_u16 v0, v1, v2, v3 neg_lo:[0,0]
@@ -266,122 +267,122 @@ v_dot2_u32_u16 v0, v1, v2, v3 neg_hi:[0,0]
// Test regular modifiers.
//
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_f32_f16 v0, |v1|, v2, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_f32_f16 v0, v1, |v2|, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_f32_f16 v0, v1, v2, |v3|
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_f32_f16 v0, |v1|, |v2|, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_f32_f16 v0, |v1|, v2, |v3|
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_f32_f16 v0, |v1|, |v2|, |v3|
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_f32_f16 v0, abs(v1), v2, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_f32_f16 v0, v1, abs(v2), v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_f32_f16 v0, v1, v2, abs(v3)
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_f32_f16 v0, abs(v1), abs(v2), v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_f32_f16 v0, abs(v1), v2, abs(v3)
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_f32_f16 v0, abs(v1), abs(v2), abs(v3)
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_f32_f16 v0, -v1, v2, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_f32_f16 v0, v1, -v2, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_f32_f16 v0, v1, v2, -v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_f32_f16 v0, -v1, -v2, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_f32_f16 v0, -v1, v2, -v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_f32_f16 v0, -v1, -v2, -v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_i32_i16 v0, |v1|, v2, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_i32_i16 v0, v1, |v2|, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_i32_i16 v0, v1, v2, |v3|
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_i32_i16 v0, |v1|, |v2|, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_i32_i16 v0, |v1|, v2, |v3|
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_i32_i16 v0, |v1|, |v2|, |v3|
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_i32_i16 v0, abs(v1), v2, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_i32_i16 v0, v1, abs(v2), v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_i32_i16 v0, v1, v2, abs(v3)
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_i32_i16 v0, abs(v1), abs(v2), v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_i32_i16 v0, abs(v1), v2, abs(v3)
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_i32_i16 v0, abs(v1), abs(v2), abs(v3)
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_i32_i16 v0, -v1, v2, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_i32_i16 v0, v1, -v2, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_i32_i16 v0, v1, v2, -v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_i32_i16 v0, -v1, -v2, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_i32_i16 v0, -v1, v2, -v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_i32_i16 v0, -v1, -v2, -v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_u32_u16 v0, |v1|, v2, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_u32_u16 v0, v1, |v2|, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_u32_u16 v0, v1, v2, |v3|
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_u32_u16 v0, |v1|, |v2|, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_u32_u16 v0, |v1|, v2, |v3|
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_u32_u16 v0, |v1|, |v2|, |v3|
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_u32_u16 v0, abs(v1), v2, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_u32_u16 v0, v1, abs(v2), v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_u32_u16 v0, v1, v2, abs(v3)
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_u32_u16 v0, abs(v1), abs(v2), v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_u32_u16 v0, abs(v1), v2, abs(v3)
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_u32_u16 v0, abs(v1), abs(v2), abs(v3)
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_u32_u16 v0, -v1, v2, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_u32_u16 v0, v1, -v2, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_u32_u16 v0, v1, v2, -v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_u32_u16 v0, -v1, -v2, v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_u32_u16 v0, -v1, v2, -v3
-// GFX906: error: not a valid operand
+// GFX906-GFX908: error: not a valid operand
v_dot2_u32_u16 v0, -v1, -v2, -v3
//
// Test constant bus restrictions.
//
-// GFX906: error: invalid operand (violates constant bus restrictions)
+// GFX906-GFX908: error: invalid operand (violates constant bus restrictions)
v_dot2_f32_f16 v255, s1, s2, s3
-// GFX906: error: invalid operand (violates constant bus restrictions)
+// GFX906-GFX908: error: invalid operand (violates constant bus restrictions)
v_dot2_i32_i16 v255, s1, s2, s3
-// GFX906: error: invalid operand (violates constant bus restrictions)
+// GFX906-GFX908: error: invalid operand (violates constant bus restrictions)
v_dot2_u32_u16 v255, s1, s2, s3
diff --git a/llvm/test/MC/AMDGPU/xdl-insts-err.s b/llvm/test/MC/AMDGPU/xdl-insts-err.s
new file mode 100644
index 00000000000..8f596bea7aa
--- /dev/null
+++ b/llvm/test/MC/AMDGPU/xdl-insts-err.s
@@ -0,0 +1,41 @@
+// RUN: not llvm-mc -arch=amdgcn -mcpu=gfx906 -show-encoding %s 2>&1 | FileCheck --check-prefixes=GCN-ERR,GFX906-ERR %s
+// RUN: not llvm-mc -arch=amdgcn -mcpu=gfx908 -show-encoding %s 2>&1 | FileCheck --check-prefixes=GCN-ERR,GFX908-ERR %s
+
+// GFX906-ERR: error: instruction not supported on this GPU
+v_dot2c_f32_f16 v0, v1, v2
+
+// GCN-ERR: error: invalid instruction
+v_dot2c_f32_f16_e64 v0, v1, v2
+
+// GCN-ERR: error: invalid instruction
+v_dot2c_f32_f16_sdwa v0, v1, v2
+
+// GFX906-ERR: error: instruction not supported on this GPU
+v_dot2c_i32_i16 v0, v1, v2
+
+// GCN-ERR: error: invalid instruction
+v_dot2c_i32_i16_e64 v0, v1, v2
+
+// GCN-ERR: error: invalid instruction
+v_dot2c_i32_i16_sdwa v0, v1, v2
+
+// GFX906-ERR: error: instruction not supported on this GPU
+v_dot4c_i32_i8 v0, v1, v2
+
+// GCN-ERR: error: invalid instruction
+v_dot4c_i32_i8_e64 v0, v1, v2
+
+// GCN-ERR: error: invalid instruction
+v_dot4c_i32_i8_sdwa v0, v1, v2
+
+// GFX906-ERR: error: instruction not supported on this GPU
+v_dot8c_i32_i4 v0, v1, v2
+
+// GCN-ERR: error: invalid instruction
+v_dot8c_i32_i4_e64 v0, v1, v2
+
+// GCN-ERR: error: invalid instruction
+v_dot8c_i32_i4_sdwa v0, v1, v2
+
+// GFX906-ERR: error: instruction not supported on this GPU
+v_pk_fmac_f16 v0, v1, v2
diff --git a/llvm/test/MC/AMDGPU/xdl-insts-gfx908.s b/llvm/test/MC/AMDGPU/xdl-insts-gfx908.s
index 81a788258ef..36ec8404da6 100644
--- a/llvm/test/MC/AMDGPU/xdl-insts-gfx908.s
+++ b/llvm/test/MC/AMDGPU/xdl-insts-gfx908.s
@@ -1,5 +1,377 @@
// RUN: llvm-mc -arch=amdgcn -mcpu=gfx908 -show-encoding %s | FileCheck %s
+// CHECK: encoding: [0x01,0x05,0x0a,0x6e]
+v_dot2c_f32_f16 v5, v1, v2
+
+// CHECK: encoding: [0x01,0x05,0xfe,0x6f]
+v_dot2c_f32_f16 v255, v1, v2
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0xe4,0x00,0x00]
+v_dot2c_f32_f16_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0xfe,0x6f,0x01,0xe4,0x00,0x00]
+v_dot2c_f32_f16_dpp v255, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0xff,0xe4,0x00,0x00]
+v_dot2c_f32_f16_dpp v5, v255, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0xfe,0x0b,0x6e,0x01,0xe4,0x00,0x00]
+v_dot2c_f32_f16_dpp v5, v1, v255 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0x1b,0x00,0x00]
+v_dot2c_f32_f16_dpp v5, v1, v2 quad_perm:[3,2,1,0] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0x40,0x01,0x00]
+v_dot2c_f32_f16_dpp v5, v1, v2 row_mirror row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0x41,0x01,0x00]
+v_dot2c_f32_f16_dpp v5, v1, v2 row_half_mirror row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0x42,0x01,0x00]
+v_dot2c_f32_f16_dpp v5, v1, v2 row_bcast:15 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0x43,0x01,0x00]
+v_dot2c_f32_f16_dpp v5, v1, v2 row_bcast:31 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0x30,0x01,0x00]
+v_dot2c_f32_f16_dpp v5, v1, v2 wave_shl:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0x34,0x01,0x00]
+v_dot2c_f32_f16_dpp v5, v1, v2 wave_rol:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0x38,0x01,0x00]
+v_dot2c_f32_f16_dpp v5, v1, v2 wave_shr:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0x3c,0x01,0x00]
+v_dot2c_f32_f16_dpp v5, v1, v2 wave_ror:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0x01,0x01,0x00]
+v_dot2c_f32_f16_dpp v5, v1, v2 row_shl:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0x0f,0x01,0x00]
+v_dot2c_f32_f16_dpp v5, v1, v2 row_shl:15 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0x11,0x01,0x00]
+v_dot2c_f32_f16_dpp v5, v1, v2 row_shr:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0x1f,0x01,0x00]
+v_dot2c_f32_f16_dpp v5, v1, v2 row_shr:15 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0x21,0x01,0x00]
+v_dot2c_f32_f16_dpp v5, v1, v2 row_ror:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0x2f,0x01,0x00]
+v_dot2c_f32_f16_dpp v5, v1, v2 row_ror:15 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0xe4,0x00,0x10]
+v_dot2c_f32_f16_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x1 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0xe4,0x00,0x30]
+v_dot2c_f32_f16_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x3 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0xe4,0x00,0xf0]
+v_dot2c_f32_f16_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0xf bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0xe4,0x00,0xf0]
+v_dot2c_f32_f16_dpp v5, v1, v2 quad_perm:[0,1,2,3] bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0xe4,0x00,0x01]
+v_dot2c_f32_f16_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x1
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0xe4,0x00,0x03]
+v_dot2c_f32_f16_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x3
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0xe4,0x00,0x0f]
+v_dot2c_f32_f16_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0xf
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0xe4,0x00,0x0f]
+v_dot2c_f32_f16_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0xe4,0x08,0x00]
+v_dot2c_f32_f16_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0 bound_ctrl:0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0xe4,0x10,0x00]
+v_dot2c_f32_f16_dpp v5, -v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0xe4,0x20,0x00]
+v_dot2c_f32_f16_dpp v5, |v1|, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0xe4,0x40,0x00]
+v_dot2c_f32_f16_dpp v5, v1, -v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x6e,0x01,0xe4,0x80,0x00]
+v_dot2c_f32_f16_dpp v5, v1, |v2| quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0x01,0x05,0x0a,0x70]
+v_dot2c_i32_i16 v5, v1, v2
+
+// CHECK: encoding: [0x01,0x05,0xfe,0x71]
+v_dot2c_i32_i16 v255, v1, v2
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0xe4,0x00,0x00]
+v_dot2c_i32_i16_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0xfe,0x71,0x01,0xe4,0x00,0x00]
+v_dot2c_i32_i16_dpp v255, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0xff,0xe4,0x00,0x00]
+v_dot2c_i32_i16_dpp v5, v255, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0xfe,0x0b,0x70,0x01,0xe4,0x00,0x00]
+v_dot2c_i32_i16_dpp v5, v1, v255 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0x1b,0x00,0x00]
+v_dot2c_i32_i16_dpp v5, v1, v2 quad_perm:[3,2,1,0] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0x40,0x01,0x00]
+v_dot2c_i32_i16_dpp v5, v1, v2 row_mirror row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0x41,0x01,0x00]
+v_dot2c_i32_i16_dpp v5, v1, v2 row_half_mirror row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0x42,0x01,0x00]
+v_dot2c_i32_i16_dpp v5, v1, v2 row_bcast:15 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0x43,0x01,0x00]
+v_dot2c_i32_i16_dpp v5, v1, v2 row_bcast:31 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0x30,0x01,0x00]
+v_dot2c_i32_i16_dpp v5, v1, v2 wave_shl:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0x34,0x01,0x00]
+v_dot2c_i32_i16_dpp v5, v1, v2 wave_rol:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0x38,0x01,0x00]
+v_dot2c_i32_i16_dpp v5, v1, v2 wave_shr:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0x3c,0x01,0x00]
+v_dot2c_i32_i16_dpp v5, v1, v2 wave_ror:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0x01,0x01,0x00]
+v_dot2c_i32_i16_dpp v5, v1, v2 row_shl:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0x0f,0x01,0x00]
+v_dot2c_i32_i16_dpp v5, v1, v2 row_shl:15 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0x11,0x01,0x00]
+v_dot2c_i32_i16_dpp v5, v1, v2 row_shr:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0x1f,0x01,0x00]
+v_dot2c_i32_i16_dpp v5, v1, v2 row_shr:15 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0x21,0x01,0x00]
+v_dot2c_i32_i16_dpp v5, v1, v2 row_ror:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0x2f,0x01,0x00]
+v_dot2c_i32_i16_dpp v5, v1, v2 row_ror:15 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0xe4,0x00,0x10]
+v_dot2c_i32_i16_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x1 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0xe4,0x00,0x30]
+v_dot2c_i32_i16_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x3 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0xe4,0x00,0xf0]
+v_dot2c_i32_i16_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0xf bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0xe4,0x00,0xf0]
+v_dot2c_i32_i16_dpp v5, v1, v2 quad_perm:[0,1,2,3] bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0xe4,0x00,0x01]
+v_dot2c_i32_i16_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x1
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0xe4,0x00,0x03]
+v_dot2c_i32_i16_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x3
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0xe4,0x00,0x0f]
+v_dot2c_i32_i16_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0xf
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0xe4,0x00,0x0f]
+v_dot2c_i32_i16_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x70,0x01,0xe4,0x08,0x00]
+v_dot2c_i32_i16_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0 bound_ctrl:0
+
+// CHECK: encoding: [0x01,0x05,0x0a,0x72]
+v_dot4c_i32_i8 v5, v1, v2
+
+// CHECK: encoding: [0x01,0x05,0xfe,0x73]
+v_dot4c_i32_i8 v255, v1, v2
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0xe4,0x00,0x00]
+v_dot4c_i32_i8_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0xfe,0x73,0x01,0xe4,0x00,0x00]
+v_dot4c_i32_i8_dpp v255, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0xff,0xe4,0x00,0x00]
+v_dot4c_i32_i8_dpp v5, v255, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0xfe,0x0b,0x72,0x01,0xe4,0x00,0x00]
+v_dot4c_i32_i8_dpp v5, v1, v255 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0x1b,0x00,0x00]
+v_dot4c_i32_i8_dpp v5, v1, v2 quad_perm:[3,2,1,0] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0x40,0x01,0x00]
+v_dot4c_i32_i8_dpp v5, v1, v2 row_mirror row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0x41,0x01,0x00]
+v_dot4c_i32_i8_dpp v5, v1, v2 row_half_mirror row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0x42,0x01,0x00]
+v_dot4c_i32_i8_dpp v5, v1, v2 row_bcast:15 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0x43,0x01,0x00]
+v_dot4c_i32_i8_dpp v5, v1, v2 row_bcast:31 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0x30,0x01,0x00]
+v_dot4c_i32_i8_dpp v5, v1, v2 wave_shl:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0x34,0x01,0x00]
+v_dot4c_i32_i8_dpp v5, v1, v2 wave_rol:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0x38,0x01,0x00]
+v_dot4c_i32_i8_dpp v5, v1, v2 wave_shr:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0x3c,0x01,0x00]
+v_dot4c_i32_i8_dpp v5, v1, v2 wave_ror:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0x01,0x01,0x00]
+v_dot4c_i32_i8_dpp v5, v1, v2 row_shl:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0x0f,0x01,0x00]
+v_dot4c_i32_i8_dpp v5, v1, v2 row_shl:15 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0x11,0x01,0x00]
+v_dot4c_i32_i8_dpp v5, v1, v2 row_shr:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0x1f,0x01,0x00]
+v_dot4c_i32_i8_dpp v5, v1, v2 row_shr:15 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0x21,0x01,0x00]
+v_dot4c_i32_i8_dpp v5, v1, v2 row_ror:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0x2f,0x01,0x00]
+v_dot4c_i32_i8_dpp v5, v1, v2 row_ror:15 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0xe4,0x00,0x10]
+v_dot4c_i32_i8_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x1 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0xe4,0x00,0x30]
+v_dot4c_i32_i8_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x3 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0xe4,0x00,0xf0]
+v_dot4c_i32_i8_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0xf bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0xe4,0x00,0xf0]
+v_dot4c_i32_i8_dpp v5, v1, v2 quad_perm:[0,1,2,3] bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0xe4,0x00,0x01]
+v_dot4c_i32_i8_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x1
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0xe4,0x00,0x03]
+v_dot4c_i32_i8_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x3
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0xe4,0x00,0x0f]
+v_dot4c_i32_i8_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0xf
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0xe4,0x00,0x0f]
+v_dot4c_i32_i8_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x72,0x01,0xe4,0x08,0x00]
+v_dot4c_i32_i8_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0 bound_ctrl:0
+
+// CHECK: encoding: [0x01,0x05,0x0a,0x74]
+v_dot8c_i32_i4 v5, v1, v2
+
+// CHECK: encoding: [0x01,0x05,0xfe,0x75]
+v_dot8c_i32_i4 v255, v1, v2
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0xe4,0x00,0x00]
+v_dot8c_i32_i4_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0xfe,0x75,0x01,0xe4,0x00,0x00]
+v_dot8c_i32_i4_dpp v255, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0xff,0xe4,0x00,0x00]
+v_dot8c_i32_i4_dpp v5, v255, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0xfe,0x0b,0x74,0x01,0xe4,0x00,0x00]
+v_dot8c_i32_i4_dpp v5, v1, v255 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0x1b,0x00,0x00]
+v_dot8c_i32_i4_dpp v5, v1, v2 quad_perm:[3,2,1,0] row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0x40,0x01,0x00]
+v_dot8c_i32_i4_dpp v5, v1, v2 row_mirror row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0x41,0x01,0x00]
+v_dot8c_i32_i4_dpp v5, v1, v2 row_half_mirror row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0x42,0x01,0x00]
+v_dot8c_i32_i4_dpp v5, v1, v2 row_bcast:15 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0x43,0x01,0x00]
+v_dot8c_i32_i4_dpp v5, v1, v2 row_bcast:31 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0x30,0x01,0x00]
+v_dot8c_i32_i4_dpp v5, v1, v2 wave_shl:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0x34,0x01,0x00]
+v_dot8c_i32_i4_dpp v5, v1, v2 wave_rol:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0x38,0x01,0x00]
+v_dot8c_i32_i4_dpp v5, v1, v2 wave_shr:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0x3c,0x01,0x00]
+v_dot8c_i32_i4_dpp v5, v1, v2 wave_ror:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0x01,0x01,0x00]
+v_dot8c_i32_i4_dpp v5, v1, v2 row_shl:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0x0f,0x01,0x00]
+v_dot8c_i32_i4_dpp v5, v1, v2 row_shl:15 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0x11,0x01,0x00]
+v_dot8c_i32_i4_dpp v5, v1, v2 row_shr:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0x1f,0x01,0x00]
+v_dot8c_i32_i4_dpp v5, v1, v2 row_shr:15 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0x21,0x01,0x00]
+v_dot8c_i32_i4_dpp v5, v1, v2 row_ror:1 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0x2f,0x01,0x00]
+v_dot8c_i32_i4_dpp v5, v1, v2 row_ror:15 row_mask:0x0 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0xe4,0x00,0x10]
+v_dot8c_i32_i4_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x1 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0xe4,0x00,0x30]
+v_dot8c_i32_i4_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x3 bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0xe4,0x00,0xf0]
+v_dot8c_i32_i4_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0xf bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0xe4,0x00,0xf0]
+v_dot8c_i32_i4_dpp v5, v1, v2 quad_perm:[0,1,2,3] bank_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0xe4,0x00,0x01]
+v_dot8c_i32_i4_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x1
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0xe4,0x00,0x03]
+v_dot8c_i32_i4_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x3
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0xe4,0x00,0x0f]
+v_dot8c_i32_i4_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0xf
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0xe4,0x00,0x0f]
+v_dot8c_i32_i4_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0
+
+// CHECK: encoding: [0xfa,0x04,0x0a,0x74,0x01,0xe4,0x08,0x00]
+v_dot8c_i32_i4_dpp v5, v1, v2 quad_perm:[0,1,2,3] row_mask:0x0 bank_mask:0x0 bound_ctrl:0
+
// CHECK: encoding: [0x01,0x05,0x0a,0x78]
v_pk_fmac_f16 v5, v1, v2
OpenPOWER on IntegriCloud