[llvm] [AMDGPU] Fix wrong MSB encoding for V_FMAMK instructions (PR #168107)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 14 11:26:22 PST 2025
================
@@ -3439,17 +3439,42 @@ getVGPRLoweringOperandTables(const MCInstrDesc &Desc) {
AMDGPU::OpName::src0Y, AMDGPU::OpName::vsrc1Y, AMDGPU::OpName::vsrc2Y,
AMDGPU::OpName::vdstY};
+ // VOP2 MADMK instructions use src0, imm, src1 scheme.
+ static const AMDGPU::OpName VOP2MADMKOps[4] = {
+ AMDGPU::OpName::src0, AMDGPU::OpName::imm, AMDGPU::OpName::src1,
+ AMDGPU::OpName::vdst};
+
unsigned TSFlags = Desc.TSFlags;
if (TSFlags &
(SIInstrFlags::VOP1 | SIInstrFlags::VOP2 | SIInstrFlags::VOP3 |
SIInstrFlags::VOP3P | SIInstrFlags::VOPC | SIInstrFlags::DPP)) {
+ switch (Desc.getOpcode()) {
// LD_SCALE operands ignore MSB.
- if (Desc.getOpcode() == AMDGPU::V_WMMA_LD_SCALE_PAIRED_B32 ||
- Desc.getOpcode() == AMDGPU::V_WMMA_LD_SCALE_PAIRED_B32_gfx1250 ||
- Desc.getOpcode() == AMDGPU::V_WMMA_LD_SCALE16_PAIRED_B64 ||
- Desc.getOpcode() == AMDGPU::V_WMMA_LD_SCALE16_PAIRED_B64_gfx1250)
+ case AMDGPU::V_WMMA_LD_SCALE_PAIRED_B32:
+ case AMDGPU::V_WMMA_LD_SCALE_PAIRED_B32_gfx1250:
+ case AMDGPU::V_WMMA_LD_SCALE16_PAIRED_B64:
+ case AMDGPU::V_WMMA_LD_SCALE16_PAIRED_B64_gfx1250:
return {};
+ case AMDGPU::V_FMAMK_F16_fake16_gfx11:
+ case AMDGPU::V_FMAMK_F16_fake16_gfx12:
+ case AMDGPU::V_FMAMK_F16_gfx10:
+ case AMDGPU::V_FMAMK_F16_t16_gfx11:
+ case AMDGPU::V_FMAMK_F16_t16_gfx12:
+ case AMDGPU::V_FMAMK_F32_gfx10:
+ case AMDGPU::V_FMAMK_F32_gfx11:
+ case AMDGPU::V_FMAMK_F32_gfx12:
+ case AMDGPU::V_FMAMK_F32_gfx940:
+ case AMDGPU::V_FMAMK_F64_gfx1250:
+ case AMDGPU::V_FMAMK_F16:
+ case AMDGPU::V_FMAMK_F16_t16:
+ case AMDGPU::V_FMAMK_F16_fake16:
+ case AMDGPU::V_FMAMK_F32:
----------------
arsenm wrote:
Test diff looks like only V_FMAMK_F32 is tested?
https://github.com/llvm/llvm-project/pull/168107
More information about the llvm-commits
mailing list