[llvm] [AMDGPU] Add gfx13 MC support for v_cvt_scale_pk32_* instructions (PR #222616)

Mariusz Sikora via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 10 04:33:32 PDT 2026


https://github.com/mariusz-sikora-at-amd created https://github.com/llvm/llvm-project/pull/222616

None

>From 8ba1a8664c7443db9fa67026079fa0e3afa8a783 Mon Sep 17 00:00:00 2001
From: Mariusz Sikora <mariusz.sikora at amd.com>
Date: Thu, 3 Sep 2026 06:58:33 -0400
Subject: [PATCH] [AMDGPU] Add gfx13 MC support for v_cvt_scale_pk32_*
 instructions

---
 llvm/lib/Target/AMDGPU/AMDGPU.td            |   5 +
 llvm/lib/Target/AMDGPU/SIInstrInfo.td       |   3 +
 llvm/lib/Target/AMDGPU/VOP3Instructions.td  |  18 ++
 llvm/lib/Target/AMDGPU/VOPInstructions.td   |   7 +
 llvm/test/MC/AMDGPU/gfx13_asm_vop3-fake16.s | 120 +++++++++++
 llvm/test/MC/AMDGPU/gfx13_asm_vop3.s        | 121 +++++++++++
 llvm/test/MC/AMDGPU/gfx13_asm_vop3_err.s    | 220 ++++++++++++++++++++
 7 files changed, 494 insertions(+)
 create mode 100644 llvm/test/MC/AMDGPU/gfx13_asm_vop3_err.s

diff --git a/llvm/lib/Target/AMDGPU/AMDGPU.td b/llvm/lib/Target/AMDGPU/AMDGPU.td
index 855f29e94ab5b..70e29b4513f4a 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPU.td
+++ b/llvm/lib/Target/AMDGPU/AMDGPU.td
@@ -523,6 +523,10 @@ defm F32ToF16BF16ConversionSRInsts : AMDGPUSubtargetFeature<"f32-to-f16bf16-cvt-
   "Has f32 to f16bf16 conversion scale instructions"
 >;
 
+defm FP6BF6ToF16BF16F32ConversionScaleInsts : AMDGPUSubtargetFeature<"fp6bf6-to-f16bf16f32-cvt-scale-insts",
+  "Has fp6bf6 to f16bf16f32 conversion scale instructions"
+>;
+
 defm AshrPkInsts : AMDGPUSubtargetFeature<"ashr-pk-insts",
   "Has Arithmetic Shift Pack instructions"
 >;
@@ -2612,6 +2616,7 @@ def FeatureISAVersion13 : FeatureSet<
    FeatureCvtSrPkBF16F32Inst,
    FeatureF16BF16ToFP6BF6ConversionScaleInsts,
    FeatureF32ToFP6BF6ConversionScaleInsts,
+   FeatureFP6BF6ToF16BF16F32ConversionScaleInsts,
    FeatureIEEEMinimumMaximumInsts,
    FeatureSWakeupBarrier,
    FeatureClusters,
diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.td b/llvm/lib/Target/AMDGPU/SIInstrInfo.td
index 00e81b699be72..c70bed3fb2c50 100644
--- a/llvm/lib/Target/AMDGPU/SIInstrInfo.td
+++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.td
@@ -3155,6 +3155,9 @@ def VOP_V2BF16_F32_F32 : VOPProfile <[v2bf16, f32, f32, untyped]>;
 def VOP_V32F32_V6I32_F32 : VOPProfile <[v32f32, v6i32, f32, untyped]>;
 def VOP_V32F16_V6I32_F32 : VOPProfile <[v32f16, v6i32, f32, untyped]>;
 def VOP_V32BF16_V6I32_F32 : VOPProfile <[v32bf16, v6i32, f32, untyped]>;
+def VOP_V32F16_V6I32_I32 : VOPProfile <[v32f16, v6i32, i32, untyped]>;
+def VOP_V32F32_V6I32_I32 : VOPProfile <[v32f32, v6i32, i32, untyped]>;
+def VOP_V32BF16_V6I32_I32 : VOPProfile <[v32bf16, v6i32, i32, untyped]>;
 def VOP_V2BF16_F32_F32_I32 : VOPProfile <[v2bf16, f32, f32, i32]>;
 def VOP_V2F16_F32_F32_I32 : VOPProfile <[v2f16, f32, f32, i32]>;
 def VOP_V6I32_V32F16_F32 : VOPProfile<[v6i32, v32f16, f32, untyped]>;
diff --git a/llvm/lib/Target/AMDGPU/VOP3Instructions.td b/llvm/lib/Target/AMDGPU/VOP3Instructions.td
index b8ec4345ff84b..c50ea2067c010 100644
--- a/llvm/lib/Target/AMDGPU/VOP3Instructions.td
+++ b/llvm/lib/Target/AMDGPU/VOP3Instructions.td
@@ -1932,6 +1932,18 @@ let SubtargetPredicate = isGFX1250Plus in {
   }
 } // End SubtargetPredicate = isGFX1250Plus
 
+let SubtargetPredicate = HasFP6BF6ToF16BF16F32ConversionScaleInsts,
+    ReadsModeReg = 0, Constraints = "@earlyclobber $vdst" in {
+  let WaveSizePredicate = isWave32 in {
+    defm V_CVT_SCALE_PK32_BF16_BF6 : VOP3CvtScaleSelInst<"v_cvt_scale_pk32_bf16_bf6", VOP_V32BF16_V6I32_I32, null_frag>;
+    defm V_CVT_SCALE_PK32_BF16_FP6 : VOP3CvtScaleSelInst<"v_cvt_scale_pk32_bf16_fp6", VOP_V32BF16_V6I32_I32, null_frag>;
+    defm V_CVT_SCALE_PK32_F16_BF6  : VOP3CvtScaleSelInst<"v_cvt_scale_pk32_f16_bf6",  VOP_V32F16_V6I32_I32,  null_frag>;
+    defm V_CVT_SCALE_PK32_F16_FP6  : VOP3CvtScaleSelInst<"v_cvt_scale_pk32_f16_fp6",  VOP_V32F16_V6I32_I32,  null_frag>;
+    defm V_CVT_SCALE_PK32_F32_BF6  : VOP3CvtScaleSelInst<"v_cvt_scale_pk32_f32_bf6",  VOP_V32F32_V6I32_I32,  null_frag>;
+    defm V_CVT_SCALE_PK32_F32_FP6  : VOP3CvtScaleSelInst<"v_cvt_scale_pk32_f32_fp6",  VOP_V32F32_V6I32_I32,  null_frag>;
+  } // End WaveSizePredicate = isWave32
+} // End SubtargetPredicate = HasFP6BF6ToF16BF16F32ConversionScaleInsts
+
 let SubtargetPredicate = HasTensorCvtLutInsts in {
   defm V_PERM_PK16_B4_U4 : VOP3Inst<"v_perm_pk16_b4_u4", VOP3_V2I32_I32_I32_V2I32, int_amdgcn_perm_pk16_b4_u4>;
   defm V_PERM_PK16_B6_U4 : VOP3Inst<"v_perm_pk16_b6_u4", VOP3_V3I32_I32_I64_V2I32, int_amdgcn_perm_pk16_b6_u4>;
@@ -2510,6 +2522,12 @@ let WaveSizePredicate = isWave32 in {
   defm V_CVT_SCALEF32_SR_PK32_FP6_BF16 : VOP3Only_Real_Base_gfx13<0x2a7>;
   defm V_CVT_SCALEF32_SR_PK32_FP6_F16  : VOP3Only_Real_Base_gfx13<0x2a8>;
   defm V_CVT_SCALEF32_SR_PK32_FP6_F32  : VOP3Only_Real_Base_gfx13<0x2a9>;
+  defm V_CVT_SCALE_PK32_BF16_BF6       : VOP3Only_ScaleSel_Real_gfx13<0x2b3>;
+  defm V_CVT_SCALE_PK32_BF16_FP6       : VOP3Only_ScaleSel_Real_gfx13<0x2b4>;
+  defm V_CVT_SCALE_PK32_F16_BF6        : VOP3Only_ScaleSel_Real_gfx13<0x2b5>;
+  defm V_CVT_SCALE_PK32_F16_FP6        : VOP3Only_ScaleSel_Real_gfx13<0x2b6>;
+  defm V_CVT_SCALE_PK32_F32_BF6        : VOP3Only_ScaleSel_Real_gfx13<0x2b7>;
+  defm V_CVT_SCALE_PK32_F32_FP6        : VOP3Only_ScaleSel_Real_gfx13<0x2b8>;
 } // End WaveSizePredicate = isWave32
 
 //===----------------------------------------------------------------------===//
diff --git a/llvm/lib/Target/AMDGPU/VOPInstructions.td b/llvm/lib/Target/AMDGPU/VOPInstructions.td
index a379785616c6c..be47521637113 100644
--- a/llvm/lib/Target/AMDGPU/VOPInstructions.td
+++ b/llvm/lib/Target/AMDGPU/VOPInstructions.td
@@ -2111,6 +2111,13 @@ multiclass VOP3Only_ScaleSel_Real_gfx1250_gfx13<bits<10> preGFX13, bits<10> op =
     VOP3a_ScaleSel_gfx1250_gfx13<op, ps.Pfl>;
 }
 
+multiclass VOP3Only_ScaleSel_Real_gfx13<bits<10> op> {
+  defvar ps = !cast<VOP_Pseudo>(NAME#"_e64");
+  def _e64_gfx13 :
+    VOP3_Real_Gen<ps, GFX13Gen>,
+    VOP3a_ScaleSel_gfx1250_gfx13<op, ps.Pfl>;
+}
+
 multiclass VOP3Only_Realtriple_t16_gfx11_gfx12_not_gfx1250_gfx13<bits<10> preGFX13Op, bits<10> op, string asmName, string opName = NAME,
                                                        string pseudo_mnemonic = "", bit isSingle = 0> :
   VOP3_Realtriple_with_name<GFX11Gen, preGFX13Op, opName, asmName, pseudo_mnemonic, isSingle>,
diff --git a/llvm/test/MC/AMDGPU/gfx13_asm_vop3-fake16.s b/llvm/test/MC/AMDGPU/gfx13_asm_vop3-fake16.s
index 80065bee77c9c..0589e1e41cc0f 100644
--- a/llvm/test/MC/AMDGPU/gfx13_asm_vop3-fake16.s
+++ b/llvm/test/MC/AMDGPU/gfx13_asm_vop3-fake16.s
@@ -8124,6 +8124,126 @@ v_cvt_scalef32_sr_pk32_fp6_f32 v[0:5], v[6:37], v38, v39
 v_cvt_scalef32_sr_pk32_fp6_f32 v[0:5], v[6:37], s3, 100.0
 // W32: v_cvt_scalef32_sr_pk32_fp6_f32 v[0:5], v[6:37], s3, 0x42c80000 ; encoding: [0x00,0x00,0xa9,0xd6,0x06,0x07,0xfc,0x03,0x00,0x00,0xc8,0x42]
 // W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], v8
+// W32: v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], v8 ; encoding: [0x0a,0x00,0xb3,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], 0xcf00
+// W32: v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], 0xcf00 ; encoding: [0x0a,0x00,0xb3,0xd6,0x14,0xff,0x01,0x02,0x00,0xcf,0x00,0x00]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], v8 scale_sel:15
+// W32: v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], v8 scale_sel:15 ; encoding: [0x0a,0x78,0xb3,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_bf6 v[0:15], v[16:21], s8 scale_sel:1
+// W32: v_cvt_scale_pk32_bf16_bf6 v[0:15], v[16:21], s8 scale_sel:1 ; encoding: [0x00,0x08,0xb3,0xd6,0x10,0x11,0x00,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], 1
+// W32: v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], 1 ; encoding: [0x0a,0x00,0xb3,0xd6,0x14,0x03,0x01,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], v8
+// W32: v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], v8 ; encoding: [0x0a,0x00,0xb4,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], 0xcf00
+// W32: v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], 0xcf00 ; encoding: [0x0a,0x00,0xb4,0xd6,0x14,0xff,0x01,0x02,0x00,0xcf,0x00,0x00]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], v8 scale_sel:15
+// W32: v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], v8 scale_sel:15 ; encoding: [0x0a,0x78,0xb4,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_fp6 v[0:15], v[16:21], s8 scale_sel:1
+// W32: v_cvt_scale_pk32_bf16_fp6 v[0:15], v[16:21], s8 scale_sel:1 ; encoding: [0x00,0x08,0xb4,0xd6,0x10,0x11,0x00,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], -1
+// W32: v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], -1 ; encoding: [0x0a,0x00,0xb4,0xd6,0x14,0x83,0x01,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], v8
+// W32: v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], v8 ; encoding: [0x0a,0x00,0xb5,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], 0xcf00
+// W32: v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], 0xcf00 ; encoding: [0x0a,0x00,0xb5,0xd6,0x14,0xff,0x01,0x02,0x00,0xcf,0x00,0x00]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], v8 scale_sel:15
+// W32: v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], v8 scale_sel:15 ; encoding: [0x0a,0x78,0xb5,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_bf6 v[0:15], v[16:21], s2 scale_sel:4
+// W32: v_cvt_scale_pk32_f16_bf6 v[0:15], v[16:21], s2 scale_sel:4 ; encoding: [0x00,0x20,0xb5,0xd6,0x10,0x05,0x00,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], 64
+// W32: v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], 64 ; encoding: [0x0a,0x00,0xb5,0xd6,0x14,0x81,0x01,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], v8
+// W32: v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], v8 ; encoding: [0x0a,0x00,0xb6,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], 0xcf00
+// W32: v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], 0xcf00 ; encoding: [0x0a,0x00,0xb6,0xd6,0x14,0xff,0x01,0x02,0x00,0xcf,0x00,0x00]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], v8 scale_sel:15
+// W32: v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], v8 scale_sel:15 ; encoding: [0x0a,0x78,0xb6,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_fp6 v[0:15], v[16:21], s2 scale_sel:4
+// W32: v_cvt_scale_pk32_f16_fp6 v[0:15], v[16:21], s2 scale_sel:4 ; encoding: [0x00,0x20,0xb6,0xd6,0x10,0x05,0x00,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], -4
+// W32: v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], -4 ; encoding: [0x0a,0x00,0xb6,0xd6,0x14,0x89,0x01,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], v8
+// W32: v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], v8 ; encoding: [0x00,0x00,0xb7,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], 0xcf00
+// W32: v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], 0xcf00 ; encoding: [0x00,0x00,0xb7,0xd6,0x14,0xff,0x01,0x02,0x00,0xcf,0x00,0x00]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], v8 scale_sel:15
+// W32: v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], v8 scale_sel:15 ; encoding: [0x00,0x78,0xb7,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_bf6 v[0:31], v[32:37], s2 scale_sel:2
+// W32: v_cvt_scale_pk32_f32_bf6 v[0:31], v[32:37], s2 scale_sel:2 ; encoding: [0x00,0x10,0xb7,0xd6,0x20,0x05,0x00,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], 0
+// W32: v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], 0 ; encoding: [0x00,0x00,0xb7,0xd6,0x14,0x01,0x01,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], v8
+// W32: v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], v8 ; encoding: [0x00,0x00,0xb8,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], 0xcf00
+// W32: v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], 0xcf00 ; encoding: [0x00,0x00,0xb8,0xd6,0x14,0xff,0x01,0x02,0x00,0xcf,0x00,0x00]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], v8 scale_sel:15
+// W32: v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], v8 scale_sel:15 ; encoding: [0x00,0x78,0xb8,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_fp6 v[0:31], v[32:37], s8 scale_sel:2
+// W32: v_cvt_scale_pk32_f32_fp6 v[0:31], v[32:37], s8 scale_sel:2 ; encoding: [0x00,0x10,0xb8,0xd6,0x20,0x11,0x00,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], -16
+// W32: v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], -16 ; encoding: [0x00,0x00,0xb8,0xd6,0x14,0xa1,0x01,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
 //// NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
 // GFX13-ASM: {{.*}}
 // GFX13-DIS: {{.*}}
diff --git a/llvm/test/MC/AMDGPU/gfx13_asm_vop3.s b/llvm/test/MC/AMDGPU/gfx13_asm_vop3.s
index 05cf0b553b184..76ed1390b85ae 100644
--- a/llvm/test/MC/AMDGPU/gfx13_asm_vop3.s
+++ b/llvm/test/MC/AMDGPU/gfx13_asm_vop3.s
@@ -8259,6 +8259,127 @@ v_cvt_scalef32_sr_pk32_fp6_f32 v[0:5], v[6:37], v38, v39
 v_cvt_scalef32_sr_pk32_fp6_f32 v[0:5], v[6:37], s3, 100.0
 // W32: v_cvt_scalef32_sr_pk32_fp6_f32 v[0:5], v[6:37], s3, 0x42c80000 ; encoding: [0x00,0x00,0xa9,0xd6,0x06,0x07,0xfc,0x03,0x00,0x00,0xc8,0x42]
 // W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], v8
+// W32: v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], v8 ; encoding: [0x0a,0x00,0xb3,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], 0xcf00
+// W32: v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], 0xcf00 ; encoding: [0x0a,0x00,0xb3,0xd6,0x14,0xff,0x01,0x02,0x00,0xcf,0x00,0x00]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], v8 scale_sel:15
+// W32: v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], v8 scale_sel:15 ; encoding: [0x0a,0x78,0xb3,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_bf6 v[0:15], v[16:21], s8 scale_sel:1
+// W32: v_cvt_scale_pk32_bf16_bf6 v[0:15], v[16:21], s8 scale_sel:1 ; encoding: [0x00,0x08,0xb3,0xd6,0x10,0x11,0x00,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], 1
+// W32: v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], 1 ; encoding: [0x0a,0x00,0xb3,0xd6,0x14,0x03,0x01,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], v8
+// W32: v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], v8 ; encoding: [0x0a,0x00,0xb4,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], 0xcf00
+// W32: v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], 0xcf00 ; encoding: [0x0a,0x00,0xb4,0xd6,0x14,0xff,0x01,0x02,0x00,0xcf,0x00,0x00]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], v8 scale_sel:15
+// W32: v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], v8 scale_sel:15 ; encoding: [0x0a,0x78,0xb4,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_fp6 v[0:15], v[16:21], s8 scale_sel:1
+// W32: v_cvt_scale_pk32_bf16_fp6 v[0:15], v[16:21], s8 scale_sel:1 ; encoding: [0x00,0x08,0xb4,0xd6,0x10,0x11,0x00,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], -1
+// W32: v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], -1 ; encoding: [0x0a,0x00,0xb4,0xd6,0x14,0x83,0x01,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], v8
+// W32: v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], v8 ; encoding: [0x0a,0x00,0xb5,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], 0xcf00
+// W32: v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], 0xcf00 ; encoding: [0x0a,0x00,0xb5,0xd6,0x14,0xff,0x01,0x02,0x00,0xcf,0x00,0x00]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], v8 scale_sel:15
+// W32: v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], v8 scale_sel:15 ; encoding: [0x0a,0x78,0xb5,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_bf6 v[0:15], v[16:21], s2 scale_sel:4
+// W32: v_cvt_scale_pk32_f16_bf6 v[0:15], v[16:21], s2 scale_sel:4 ; encoding: [0x00,0x20,0xb5,0xd6,0x10,0x05,0x00,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], 64
+// W32: v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], 64 ; encoding: [0x0a,0x00,0xb5,0xd6,0x14,0x81,0x01,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], v8
+// W32: v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], v8 ; encoding: [0x0a,0x00,0xb6,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], 0xcf00
+// W32: v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], 0xcf00 ; encoding: [0x0a,0x00,0xb6,0xd6,0x14,0xff,0x01,0x02,0x00,0xcf,0x00,0x00]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], v8 scale_sel:15
+// W32: v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], v8 scale_sel:15 ; encoding: [0x0a,0x78,0xb6,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_fp6 v[0:15], v[16:21], s2 scale_sel:4
+// W32: v_cvt_scale_pk32_f16_fp6 v[0:15], v[16:21], s2 scale_sel:4 ; encoding: [0x00,0x20,0xb6,0xd6,0x10,0x05,0x00,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], -4
+// W32: v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], -4 ; encoding: [0x0a,0x00,0xb6,0xd6,0x14,0x89,0x01,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], v8
+// W32: v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], v8 ; encoding: [0x00,0x00,0xb7,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], 0xcf00
+// W32: v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], 0xcf00 ; encoding: [0x00,0x00,0xb7,0xd6,0x14,0xff,0x01,0x02,0x00,0xcf,0x00,0x00]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], v8 scale_sel:15
+// W32: v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], v8 scale_sel:15 ; encoding: [0x00,0x78,0xb7,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_bf6 v[0:31], v[32:37], s2 scale_sel:2
+// W32: v_cvt_scale_pk32_f32_bf6 v[0:31], v[32:37], s2 scale_sel:2 ; encoding: [0x00,0x10,0xb7,0xd6,0x20,0x05,0x00,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], 0
+// W32: v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], 0 ; encoding: [0x00,0x00,0xb7,0xd6,0x14,0x01,0x01,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], v8
+// W32: v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], v8 ; encoding: [0x00,0x00,0xb8,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], 0xcf00
+// W32: v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], 0xcf00 ; encoding: [0x00,0x00,0xb8,0xd6,0x14,0xff,0x01,0x02,0x00,0xcf,0x00,0x00]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], v8 scale_sel:15
+// W32: v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], v8 scale_sel:15 ; encoding: [0x00,0x78,0xb8,0xd6,0x14,0x11,0x02,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_fp6 v[0:31], v[32:37], s8 scale_sel:2
+// W32: v_cvt_scale_pk32_f32_fp6 v[0:31], v[32:37], s8 scale_sel:2 ; encoding: [0x00,0x10,0xb8,0xd6,0x20,0x11,0x00,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], -16
+// W32: v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], -16 ; encoding: [0x00,0x00,0xb8,0xd6,0x14,0xa1,0x01,0x02]
+// W64-ERR: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
 //// NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
 // GFX13-ASM: {{.*}}
 // GFX13-DIS: {{.*}}
diff --git a/llvm/test/MC/AMDGPU/gfx13_asm_vop3_err.s b/llvm/test/MC/AMDGPU/gfx13_asm_vop3_err.s
new file mode 100644
index 0000000000000..8b96b954fa8bb
--- /dev/null
+++ b/llvm/test/MC/AMDGPU/gfx13_asm_vop3_err.s
@@ -0,0 +1,220 @@
+// NOTE: Assertions have been autogenerated by utils/update_mc_test_checks.py UTC_ARGS: --version 6
+// RUN: not llvm-mc -triple=amdgpu13.10 -mattr=+wavefrontsize32,+real-true16 -show-encoding %s 2>&1 | FileCheck --check-prefix=W32 --strict-whitespace --implicit-check-not=error %s
+// RUN: not llvm-mc -triple=amdgpu13.10 -mattr=+wavefrontsize64,+real-true16 -show-encoding %s 2>&1 | FileCheck --check-prefix=W64 --strict-whitespace --implicit-check-not=error %s
+
+v_cvt_scale_pk32_bf16_bf6 v[10:25], s[20:25], v8
+// W32: :[[@LINE-1]]:37: error: invalid operand for instruction
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], v8 scale_sel:16
+// W32: :[[@LINE-1]]:50: error: invalid scale_sel value.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_bf6 v[10:25], |v[20:25]|, v8
+// W32: :[[@LINE-1]]:37: error: not a valid operand.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], v8 clamp
+// W32: :[[@LINE-1]]:50: error: invalid operand for instruction
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_bf6 -v[10:25], v[20:25], v8
+// W32: :[[@LINE-1]]:27: error: not a valid operand.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_bf6 v[10:25], v[20:25], v8 mul:2
+// W32: :[[@LINE-1]]:50: error: not a valid operand.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_bf6_dpp v[10:25], v[20:25], v8 row_share:1
+// W32: :[[@LINE-1]]:1: error: dpp variant of this instruction is not supported
+// W64: :[[@LINE-2]]:1: error: instruction not supported on this GPU (gfx1310): v_cvt_scale_pk32_bf16_bf6
+
+v_cvt_scale_pk32_bf16_bf6_dpp v[10:25], v[20:25], v8 dpp8:[7,6,5,4,3,2,1,0]
+// W32: :[[@LINE-1]]:1: error: dpp variant of this instruction is not supported
+// W64: :[[@LINE-2]]:1: error: instruction not supported on this GPU (gfx1310): v_cvt_scale_pk32_bf16_bf6
+
+v_cvt_scale_pk32_bf16_bf6_e64_dpp v[10:25], v[20:25], v8
+// W32: :[[@LINE-1]]:1: error: e64_dpp variant of this instruction is not supported
+// W64: :[[@LINE-2]]:1: error: instruction not supported on this GPU (gfx1310): v_cvt_scale_pk32_bf16_bf6
+
+v_cvt_scale_pk32_bf16_fp6 v[10:25], s[20:25], v8
+// W32: :[[@LINE-1]]:37: error: invalid operand for instruction
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], v8 scale_sel:16
+// W32: :[[@LINE-1]]:50: error: invalid scale_sel value.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_fp6 v[10:25], |v[20:25]|, v8
+// W32: :[[@LINE-1]]:37: error: not a valid operand.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], v8 clamp
+// W32: :[[@LINE-1]]:50: error: invalid operand for instruction
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_fp6 -v[10:25], v[20:25], v8
+// W32: :[[@LINE-1]]:27: error: not a valid operand.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_fp6 v[10:25], v[20:25], v8 mul:2
+// W32: :[[@LINE-1]]:50: error: not a valid operand.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_bf16_fp6_dpp v[10:25], v[20:25], v8 row_share:1
+// W32: :[[@LINE-1]]:1: error: dpp variant of this instruction is not supported
+// W64: :[[@LINE-2]]:1: error: instruction not supported on this GPU (gfx1310): v_cvt_scale_pk32_bf16_fp6
+
+v_cvt_scale_pk32_bf16_fp6_dpp v[10:25], v[20:25], v8 dpp8:[7,6,5,4,3,2,1,0]
+// W32: :[[@LINE-1]]:1: error: dpp variant of this instruction is not supported
+// W64: :[[@LINE-2]]:1: error: instruction not supported on this GPU (gfx1310): v_cvt_scale_pk32_bf16_fp6
+
+v_cvt_scale_pk32_bf16_fp6_e64_dpp v[10:25], v[20:25], v8
+// W32: :[[@LINE-1]]:1: error: e64_dpp variant of this instruction is not supported
+// W64: :[[@LINE-2]]:1: error: instruction not supported on this GPU (gfx1310): v_cvt_scale_pk32_bf16_fp6
+
+v_cvt_scale_pk32_f16_bf6 v[10:25], s[20:25], v8
+// W32: :[[@LINE-1]]:36: error: invalid operand for instruction
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], v8 scale_sel:16
+// W32: :[[@LINE-1]]:49: error: invalid scale_sel value.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_bf6 v[10:25], |v[20:25]|, v8
+// W32: :[[@LINE-1]]:36: error: not a valid operand.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], v8 clamp
+// W32: :[[@LINE-1]]:49: error: invalid operand for instruction
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_bf6 -v[10:25], v[20:25], v8
+// W32: :[[@LINE-1]]:26: error: not a valid operand.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_bf6 v[10:25], v[20:25], v8 mul:2
+// W32: :[[@LINE-1]]:49: error: not a valid operand.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_bf6_dpp v[10:25], v[20:25], v8 row_share:1
+// W32: :[[@LINE-1]]:1: error: dpp variant of this instruction is not supported
+// W64: :[[@LINE-2]]:1: error: instruction not supported on this GPU (gfx1310): v_cvt_scale_pk32_f16_bf6
+
+v_cvt_scale_pk32_f16_bf6_dpp v[10:25], v[20:25], v8 dpp8:[7,6,5,4,3,2,1,0]
+// W32: :[[@LINE-1]]:1: error: dpp variant of this instruction is not supported
+// W64: :[[@LINE-2]]:1: error: instruction not supported on this GPU (gfx1310): v_cvt_scale_pk32_f16_bf6
+
+v_cvt_scale_pk32_f16_bf6_e64_dpp v[10:25], v[20:25], v8
+// W32: :[[@LINE-1]]:1: error: e64_dpp variant of this instruction is not supported
+// W64: :[[@LINE-2]]:1: error: instruction not supported on this GPU (gfx1310): v_cvt_scale_pk32_f16_bf6
+
+v_cvt_scale_pk32_f16_fp6 v[10:25], s[20:25], v8
+// W32: :[[@LINE-1]]:36: error: invalid operand for instruction
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], v8 scale_sel:16
+// W32: :[[@LINE-1]]:49: error: invalid scale_sel value.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_fp6 v[10:25], |v[20:25]|, v8
+// W32: :[[@LINE-1]]:36: error: not a valid operand.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], v8 clamp
+// W32: :[[@LINE-1]]:49: error: invalid operand for instruction
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_fp6 -v[10:25], v[20:25], v8
+// W32: :[[@LINE-1]]:26: error: not a valid operand.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_fp6 v[10:25], v[20:25], v8 mul:2
+// W32: :[[@LINE-1]]:49: error: not a valid operand.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f16_fp6_dpp v[10:25], v[20:25], v8 row_share:1
+// W32: :[[@LINE-1]]:1: error: dpp variant of this instruction is not supported
+// W64: :[[@LINE-2]]:1: error: instruction not supported on this GPU (gfx1310): v_cvt_scale_pk32_f16_fp6
+
+v_cvt_scale_pk32_f16_fp6_dpp v[10:25], v[20:25], v8 dpp8:[7,6,5,4,3,2,1,0]
+// W32: :[[@LINE-1]]:1: error: dpp variant of this instruction is not supported
+// W64: :[[@LINE-2]]:1: error: instruction not supported on this GPU (gfx1310): v_cvt_scale_pk32_f16_fp6
+
+v_cvt_scale_pk32_f16_fp6_e64_dpp v[10:25], v[20:25], v8
+// W32: :[[@LINE-1]]:1: error: e64_dpp variant of this instruction is not supported
+// W64: :[[@LINE-2]]:1: error: instruction not supported on this GPU (gfx1310): v_cvt_scale_pk32_f16_fp6
+
+v_cvt_scale_pk32_f32_bf6 v[0:31], s[20:25], v8
+// W32: :[[@LINE-1]]:35: error: invalid operand for instruction
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], v8 scale_sel:16
+// W32: :[[@LINE-1]]:48: error: invalid scale_sel value.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_bf6 v[0:31], |v[20:25]|, v8
+// W32: :[[@LINE-1]]:35: error: not a valid operand.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], v8 clamp
+// W32: :[[@LINE-1]]:48: error: invalid operand for instruction
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_bf6 -v[0:31], v[20:25], v8
+// W32: :[[@LINE-1]]:26: error: not a valid operand.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_bf6 v[0:31], v[20:25], v8 mul:2
+// W32: :[[@LINE-1]]:48: error: not a valid operand.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_bf6_dpp v[0:31], v[20:25], v8 row_share:1
+// W32: :[[@LINE-1]]:1: error: dpp variant of this instruction is not supported
+// W64: :[[@LINE-2]]:1: error: instruction not supported on this GPU (gfx1310): v_cvt_scale_pk32_f32_bf6
+
+v_cvt_scale_pk32_f32_bf6_dpp v[0:31], v[20:25], v8 dpp8:[7,6,5,4,3,2,1,0]
+// W32: :[[@LINE-1]]:1: error: dpp variant of this instruction is not supported
+// W64: :[[@LINE-2]]:1: error: instruction not supported on this GPU (gfx1310): v_cvt_scale_pk32_f32_bf6
+
+v_cvt_scale_pk32_f32_bf6_e64_dpp v[0:31], v[20:25], v8
+// W32: :[[@LINE-1]]:1: error: e64_dpp variant of this instruction is not supported
+// W64: :[[@LINE-2]]:1: error: instruction not supported on this GPU (gfx1310): v_cvt_scale_pk32_f32_bf6
+
+v_cvt_scale_pk32_f32_fp6 v[0:31], s[20:25], v8
+// W32: :[[@LINE-1]]:35: error: invalid operand for instruction
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], v8 scale_sel:16
+// W32: :[[@LINE-1]]:48: error: invalid scale_sel value.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_fp6 v[0:31], |v[20:25]|, v8
+// W32: :[[@LINE-1]]:35: error: not a valid operand.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], v8 clamp
+// W32: :[[@LINE-1]]:48: error: invalid operand for instruction
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_fp6 -v[0:31], v[20:25], v8
+// W32: :[[@LINE-1]]:26: error: not a valid operand.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_fp6 v[0:31], v[20:25], v8 mul:2
+// W32: :[[@LINE-1]]:48: error: not a valid operand.
+// W64: :[[@LINE-2]]:1: error: instruction requires wavesize=32
+
+v_cvt_scale_pk32_f32_fp6_dpp v[0:31], v[20:25], v8 row_share:1
+// W32: :[[@LINE-1]]:1: error: dpp variant of this instruction is not supported
+// W64: :[[@LINE-2]]:1: error: instruction not supported on this GPU (gfx1310): v_cvt_scale_pk32_f32_fp6
+
+v_cvt_scale_pk32_f32_fp6_dpp v[0:31], v[20:25], v8 dpp8:[7,6,5,4,3,2,1,0]
+// W32: :[[@LINE-1]]:1: error: dpp variant of this instruction is not supported
+// W64: :[[@LINE-2]]:1: error: instruction not supported on this GPU (gfx1310): v_cvt_scale_pk32_f32_fp6
+
+v_cvt_scale_pk32_f32_fp6_e64_dpp v[0:31], v[20:25], v8
+// W32: :[[@LINE-1]]:1: error: e64_dpp variant of this instruction is not supported
+// W64: :[[@LINE-2]]:1: error: instruction not supported on this GPU (gfx1310): v_cvt_scale_pk32_f32_fp6
+



More information about the llvm-commits mailing list