[llvm] [AMDGPU] Add gfx13 MC support for v_cvt_scale_pk32_* instructions (PR #222616)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 10 04:34:12 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-amdgpu
Author: Mariusz Sikora (mariusz-sikora-at-amd)
<details>
<summary>Changes</summary>
---
Patch is 32.62 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/222616.diff
7 Files Affected:
- (modified) llvm/lib/Target/AMDGPU/AMDGPU.td (+5)
- (modified) llvm/lib/Target/AMDGPU/SIInstrInfo.td (+3)
- (modified) llvm/lib/Target/AMDGPU/VOP3Instructions.td (+18)
- (modified) llvm/lib/Target/AMDGPU/VOPInstructions.td (+7)
- (modified) llvm/test/MC/AMDGPU/gfx13_asm_vop3-fake16.s (+120)
- (modified) llvm/test/MC/AMDGPU/gfx13_asm_vop3.s (+121)
- (added) llvm/test/MC/AMDGPU/gfx13_asm_vop3_err.s (+220)
``````````diff
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 re...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/222616
More information about the llvm-commits
mailing list