@@ -3439,17 +3439,42 @@ getVGPRLoweringOperandTables(const MCInstrDesc &Desc) {
34393439 AMDGPU::OpName::src0Y, AMDGPU::OpName::vsrc1Y, AMDGPU::OpName::vsrc2Y,
34403440 AMDGPU::OpName::vdstY};
34413441
3442+ // VOP2 MADMK instructions use src0, imm, src1 scheme.
3443+ static const AMDGPU::OpName VOP2MADMKOps[4 ] = {
3444+ AMDGPU::OpName::src0, AMDGPU::OpName::imm, AMDGPU::OpName::src1,
3445+ AMDGPU::OpName::vdst};
3446+
34423447 unsigned TSFlags = Desc.TSFlags ;
34433448
34443449 if (TSFlags &
34453450 (SIInstrFlags::VOP1 | SIInstrFlags::VOP2 | SIInstrFlags::VOP3 |
34463451 SIInstrFlags::VOP3P | SIInstrFlags::VOPC | SIInstrFlags::DPP)) {
3452+ switch (Desc.getOpcode ()) {
34473453 // LD_SCALE operands ignore MSB.
3448- if (Desc. getOpcode () == AMDGPU::V_WMMA_LD_SCALE_PAIRED_B32 ||
3449- Desc. getOpcode () == AMDGPU::V_WMMA_LD_SCALE_PAIRED_B32_gfx1250 ||
3450- Desc. getOpcode () == AMDGPU::V_WMMA_LD_SCALE16_PAIRED_B64 ||
3451- Desc. getOpcode () == AMDGPU::V_WMMA_LD_SCALE16_PAIRED_B64_gfx1250)
3454+ case AMDGPU::V_WMMA_LD_SCALE_PAIRED_B32:
3455+ case AMDGPU::V_WMMA_LD_SCALE_PAIRED_B32_gfx1250:
3456+ case AMDGPU::V_WMMA_LD_SCALE16_PAIRED_B64:
3457+ case AMDGPU::V_WMMA_LD_SCALE16_PAIRED_B64_gfx1250:
34523458 return {};
3459+ case AMDGPU::V_FMAMK_F16_fake16_gfx11:
3460+ case AMDGPU::V_FMAMK_F16_fake16_gfx12:
3461+ case AMDGPU::V_FMAMK_F16_gfx10:
3462+ case AMDGPU::V_FMAMK_F16_t16_gfx11:
3463+ case AMDGPU::V_FMAMK_F16_t16_gfx12:
3464+ case AMDGPU::V_FMAMK_F32_gfx10:
3465+ case AMDGPU::V_FMAMK_F32_gfx11:
3466+ case AMDGPU::V_FMAMK_F32_gfx12:
3467+ case AMDGPU::V_FMAMK_F32_gfx940:
3468+ case AMDGPU::V_FMAMK_F64_gfx1250:
3469+ case AMDGPU::V_FMAMK_F16:
3470+ case AMDGPU::V_FMAMK_F16_t16:
3471+ case AMDGPU::V_FMAMK_F16_fake16:
3472+ case AMDGPU::V_FMAMK_F32:
3473+ case AMDGPU::V_FMAMK_F64:
3474+ return {VOP2MADMKOps, nullptr };
3475+ default :
3476+ break ;
3477+ }
34533478 return {VOPOps, nullptr };
34543479 }
34553480
0 commit comments