diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp index abfa4a3531e8e..4ab3aa5a0240a 100644 --- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp +++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp @@ -709,6 +709,7 @@ bool AMDGPUInstPrinter::needsImpliedVcc(const MCInstrDesc &Desc, unsigned OpNo) const { return OpNo == 0 && (Desc.TSFlags & SIInstrFlags::DPP) && (Desc.TSFlags & SIInstrFlags::VOPC) && + !isVOPCAsmOnly(Desc.getOpcode()) && (Desc.hasImplicitDefOfPhysReg(AMDGPU::VCC) || Desc.hasImplicitDefOfPhysReg(AMDGPU::VCC_LO)); } @@ -725,7 +726,7 @@ void AMDGPUInstPrinter::printOperand(const MCInst *MI, unsigned OpNo, // printOperandAndIntInputMods will be called instead if ((OpNo == 0 || (OpNo == 1 && (Desc.TSFlags & SIInstrFlags::DPP) && ModIdx != -1)) && - (Desc.TSFlags & SIInstrFlags::VOPC) && + (Desc.TSFlags & SIInstrFlags::VOPC) && !isVOPCAsmOnly(Desc.getOpcode()) && (Desc.hasImplicitDefOfPhysReg(AMDGPU::VCC) || Desc.hasImplicitDefOfPhysReg(AMDGPU::VCC_LO))) printDefaultVccOperand(true, STI, O); diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp index 33335ac75df76..800dfcf3076dd 100644 --- a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp +++ b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp @@ -342,6 +342,14 @@ struct VOPC64DPPInfo { uint16_t Opcode; }; +struct VOPCDPPAsmOnlyInfo { + uint16_t Opcode; +}; + +struct VOP3CDPPAsmOnlyInfo { + uint16_t Opcode; +}; + struct VOPDComponentInfo { uint16_t BaseVOP; uint16_t VOPDOp; @@ -376,6 +384,10 @@ struct VOPTrue16Info { #define GET_VOPC64DPPTable_IMPL #define GET_VOPC64DPP8Table_DECL #define GET_VOPC64DPP8Table_IMPL +#define GET_VOPCAsmOnlyInfoTable_DECL +#define GET_VOPCAsmOnlyInfoTable_IMPL +#define GET_VOP3CAsmOnlyInfoTable_DECL +#define GET_VOP3CAsmOnlyInfoTable_IMPL #define GET_VOPDComponentTable_DECL #define GET_VOPDComponentTable_IMPL #define GET_VOPDPairs_DECL @@ -477,6 +489,10 @@ bool isVOPC64DPP(unsigned Opc) { return isVOPC64DPPOpcodeHelper(Opc) || isVOPC64DPP8OpcodeHelper(Opc); } +bool isVOPCAsmOnly(unsigned Opc) { + return isVOPCAsmOnlyOpcodeHelper(Opc) || isVOP3CAsmOnlyOpcodeHelper(Opc); +} + bool getMAIIsDGEMM(unsigned Opc) { const MAIInstInfo *Info = getMAIInstInfoHelper(Opc); return Info ? Info->is_dgemm : false; diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h index ded252c81af3e..b56025f55519a 100644 --- a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h +++ b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h @@ -500,6 +500,9 @@ bool getVOP3IsSingle(unsigned Opc); LLVM_READONLY bool isVOPC64DPP(unsigned Opc); +LLVM_READONLY +bool isVOPCAsmOnly(unsigned Opc); + /// Returns true if MAI operation is a double precision GEMM. LLVM_READONLY bool getMAIIsDGEMM(unsigned Opc); diff --git a/llvm/lib/Target/AMDGPU/VOPCInstructions.td b/llvm/lib/Target/AMDGPU/VOPCInstructions.td index 861c9f75e866d..fe52a0e39e4f1 100644 --- a/llvm/lib/Target/AMDGPU/VOPCInstructions.td +++ b/llvm/lib/Target/AMDGPU/VOPCInstructions.td @@ -1165,6 +1165,8 @@ class VOPC_DPPe_Common op> : Enc64 { class VOPC_DPP_Base op, string OpName, VOPProfile P> : VOP_DPP_Base, VOPC_DPPe_Common { + Instruction Opcode = !cast(NAME); + bits<2> src0_modifiers; bits<8> src0; bits<2> src1_modifiers; @@ -1194,6 +1196,8 @@ class VOPC_DPP_Base op, string OpName, VOPProfile P> class VOPC_DPP8_Base op, string OpName, VOPProfile P> : VOP_DPP8_Base, VOPC_DPPe_Common { + Instruction Opcode = !cast(NAME); + bits<8> src0; bits<24> dpp8; bits<9> fi; diff --git a/llvm/lib/Target/AMDGPU/VOPInstructions.td b/llvm/lib/Target/AMDGPU/VOPInstructions.td index 20d7c88fb7e59..e8f85cb7d5f79 100644 --- a/llvm/lib/Target/AMDGPU/VOPInstructions.td +++ b/llvm/lib/Target/AMDGPU/VOPInstructions.td @@ -1669,6 +1669,19 @@ class VOPC64Table : GenericTable { def VOPC64DPPTable : VOPC64Table<"DPP">; def VOPC64DPP8Table : VOPC64Table<"DPP8">; +class AsmOnlyInfoTable : GenericTable { + let FilterClass = Class; + let FilterClassField = "isAsmParserOnly"; + let CppTypeName = Format # "DPPAsmOnlyInfo"; + let Fields = ["Opcode"]; + + let PrimaryKey = ["Opcode"]; + let PrimaryKeyName = "is" # Format # "AsmOnlyOpcodeHelper"; +} + +def VOPCAsmOnlyInfoTable : AsmOnlyInfoTable <"VOPC", "VOPC_DPPe_Common">; +def VOP3CAsmOnlyInfoTable : AsmOnlyInfoTable <"VOP3C", "VOP3_DPPe_Common_Base">; + def VOPTrue16Table : GenericTable { let FilterClass = "VOP_Pseudo"; let CppTypeName = "VOPTrue16Info"; diff --git a/llvm/test/MC/AMDGPU/gfx11-promotions.s b/llvm/test/MC/AMDGPU/gfx11-promotions.s index 6be33afb5671b..0bd90266457ee 100644 --- a/llvm/test/MC/AMDGPU/gfx11-promotions.s +++ b/llvm/test/MC/AMDGPU/gfx11-promotions.s @@ -11,343 +11,343 @@ //===----------------------------------------------------------------------===// v_mov_b32 v0, v1 -// GFX11: encoding: [0x01,0x03,0x00,0x7e] +// GFX11: v_mov_b32_e32 v0, v1 ; encoding: [0x01,0x03,0x00,0x7e] v_mov_b32_e32 v0, v1 -// GFX11: encoding: [0x01,0x03,0x00,0x7e] +// GFX11: v_mov_b32_e32 v0, v1 ; encoding: [0x01,0x03,0x00,0x7e] //===----------------------------------------------------------------------===// // VOP2. //===----------------------------------------------------------------------===// v_add_f16 v5, v1, v2 -// GFX11: encoding: [0x01,0x05,0x0a,0x64] +// GFX11: v_add_f16_e32 v5, v1, v2 ; encoding: [0x01,0x05,0x0a,0x64] v_add_f16_e32 v5, v1, v2 -// GFX11: encoding: [0x01,0x05,0x0a,0x64] +// GFX11: v_add_f16_e32 v5, v1, v2 ; encoding: [0x01,0x05,0x0a,0x64] //===----------------------------------------------------------------------===// // VOPC. //===----------------------------------------------------------------------===// v_cmp_lt_f32 vcc_lo, v1, v2 -// GFX11: encoding: [0x01,0x05,0x22,0x7c] +// GFX11: v_cmp_lt_f32_e32 vcc_lo, v1, v2 ; encoding: [0x01,0x05,0x22,0x7c] v_cmp_lt_f32_e32 vcc_lo, v1, v2 -// GFX11: encoding: [0x01,0x05,0x22,0x7c] +// GFX11: v_cmp_lt_f32_e32 vcc_lo, v1, v2 ; encoding: [0x01,0x05,0x22,0x7c] //===----------------------------------------------------------------------===// // VOPCX. //===----------------------------------------------------------------------===// v_cmpx_class_f16 v1, v2 -// GFX11: encoding: [0x01,0x05,0xfa,0x7d] +// GFX11: v_cmpx_class_f16_e32 v1, v2 ; encoding: [0x01,0x05,0xfa,0x7d] v_cmpx_class_f16_e32 v1, v2 -// GFX11: encoding: [0x01,0x05,0xfa,0x7d] +// GFX11: v_cmpx_class_f16_e32 v1, v2 ; encoding: [0x01,0x05,0xfa,0x7d] //===----------------------------------------------------------------------===// // VOP1.DPP8. //===----------------------------------------------------------------------===// v_bfrev_b32 v5, v1 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0xe9,0x70,0x0a,0x7e,0x01,0x77,0x39,0x05] +// GFX11: v_bfrev_b32_dpp v5, v1 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xe9,0x70,0x0a,0x7e,0x01,0x77,0x39,0x05] v_bfrev_b32_dpp v5, v1 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0xe9,0x70,0x0a,0x7e,0x01,0x77,0x39,0x05] +// GFX11: v_bfrev_b32_dpp v5, v1 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xe9,0x70,0x0a,0x7e,0x01,0x77,0x39,0x05] //===----------------------------------------------------------------------===// // VOP1.DPP16. //===----------------------------------------------------------------------===// v_bfrev_b32 v5, v1 quad_perm:[3,2,1,0] -// GFX11: encoding: [0xfa,0x70,0x0a,0x7e,0x01,0x1b,0x00,0xff] +// GFX11: v_bfrev_b32_dpp v5, v1 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x70,0x0a,0x7e,0x01,0x1b,0x00,0xff] v_bfrev_b32_dpp v5, v1 quad_perm:[3,2,1,0] -// GFX11: encoding: [0xfa,0x70,0x0a,0x7e,0x01,0x1b,0x00,0xff] +// GFX11: v_bfrev_b32_dpp v5, v1 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x70,0x0a,0x7e,0x01,0x1b,0x00,0xff] //===----------------------------------------------------------------------===// // VOP2.DPP8. //===----------------------------------------------------------------------===// v_add_f16 v5, v1, v2 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0xe9,0x04,0x0a,0x64,0x01,0x77,0x39,0x05] +// GFX11: v_add_f16_dpp v5, v1, v2 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xe9,0x04,0x0a,0x64,0x01,0x77,0x39,0x05] v_add_f16_dpp v5, v1, v2 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0xe9,0x04,0x0a,0x64,0x01,0x77,0x39,0x05] +// GFX11: v_add_f16_dpp v5, v1, v2 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xe9,0x04,0x0a,0x64,0x01,0x77,0x39,0x05] //===----------------------------------------------------------------------===// // VOP2.DPP16. //===----------------------------------------------------------------------===// v_add_f16 v5, v1, v2 quad_perm:[3,2,1,0] -// GFX11: encoding: [0xfa,0x04,0x0a,0x64,0x01,0x1b,0x00,0xff] +// GFX11: v_add_f16_dpp v5, v1, v2 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x04,0x0a,0x64,0x01,0x1b,0x00,0xff] v_add_f16_dpp v5, v1, v2 quad_perm:[3,2,1,0] -// GFX11: encoding: [0xfa,0x04,0x0a,0x64,0x01,0x1b,0x00,0xff] +// GFX11: v_add_f16_dpp v5, v1, v2 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x04,0x0a,0x64,0x01,0x1b,0x00,0xff] //===----------------------------------------------------------------------===// // VOPC.DPP8. //===----------------------------------------------------------------------===// v_cmp_le_u16 v1, v2 dpp8:[7,7,7,3,4,4,6,7] fi:1 -// GFX11: encoding: [0xea,0x04,0x76,0x7c,0x01,0xff,0x47,0xfa] +// GFX11: v_cmp_le_u16 vcc_lo, v1, v2 dpp8:[7,7,7,3,4,4,6,7] fi:1 ; encoding: [0xea,0x04,0x76,0x7c,0x01,0xff,0x47,0xfa] v_cmp_le_u16_dpp v1, v2 dpp8:[7,7,7,3,4,4,6,7] fi:1 -// GFX11: encoding: [0xea,0x04,0x76,0x7c,0x01,0xff,0x47,0xfa] +// GFX11: v_cmp_le_u16 vcc_lo, v1, v2 dpp8:[7,7,7,3,4,4,6,7] fi:1 ; encoding: [0xea,0x04,0x76,0x7c,0x01,0xff,0x47,0xfa] //===----------------------------------------------------------------------===// // VOPC.DPP16. //===----------------------------------------------------------------------===// v_cmp_gt_u16 v1, v2 row_shl:0x7 row_mask:0x0 bank_mask:0x0 fi:1 -// GFX11: encoding: [0xfa,0x04,0x78,0x7c,0x01,0x07,0x05,0x00] +// GFX11: v_cmp_gt_u16 vcc_lo, v1, v2 row_shl:7 row_mask:0x0 bank_mask:0x0 fi:1 ; encoding: [0xfa,0x04,0x78,0x7c,0x01,0x07,0x05,0x00] v_cmp_gt_u16_dpp v1, v2 row_shl:0x7 row_mask:0x0 bank_mask:0x0 fi:1 -// GFX11: encoding: [0xfa,0x04,0x78,0x7c,0x01,0x07,0x05,0x00] +// GFX11: v_cmp_gt_u16 vcc_lo, v1, v2 row_shl:7 row_mask:0x0 bank_mask:0x0 fi:1 ; encoding: [0xfa,0x04,0x78,0x7c,0x01,0x07,0x05,0x00] //===----------------------------------------------------------------------===// // VOPCX.DPP8. //===----------------------------------------------------------------------===// v_cmpx_class_f16 v1, v2 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0xe9,0x04,0xfa,0x7d,0x01,0x77,0x39,0x05] +// GFX11: v_cmpx_class_f16 v1, v2 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xe9,0x04,0xfa,0x7d,0x01,0x77,0x39,0x05] v_cmpx_class_f16_dpp v1, v2 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0xe9,0x04,0xfa,0x7d,0x01,0x77,0x39,0x05] +// GFX11: v_cmpx_class_f16 v1, v2 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xe9,0x04,0xfa,0x7d,0x01,0x77,0x39,0x05] //===----------------------------------------------------------------------===// // VOPCX.DPP16. //===----------------------------------------------------------------------===// v_cmpx_class_f16 v1, v2 quad_perm:[3,2,1,0] -// GFX11: encoding: [0xfa,0x04,0xfa,0x7d,0x01,0x1b,0x00,0xff] +// GFX11: v_cmpx_class_f16 v1, v2 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x04,0xfa,0x7d,0x01,0x1b,0x00,0xff] v_cmpx_class_f16_dpp v1, v2 quad_perm:[3,2,1,0] -// GFX11: encoding: [0xfa,0x04,0xfa,0x7d,0x01,0x1b,0x00,0xff] +// GFX11: v_cmpx_class_f16 v1, v2 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x04,0xfa,0x7d,0x01,0x1b,0x00,0xff] //===----------------------------------------------------------------------===// // VOP1 -> VOP3. //===----------------------------------------------------------------------===// v_sin_f32 v5, 0.5 mul:2 -// GFX11: encoding: [0x05,0x00,0xb5,0xd5,0xf0,0x00,0x00,0x08] +// GFX11: v_sin_f32_e64 v5, 0.5 mul:2 ; encoding: [0x05,0x00,0xb5,0xd5,0xf0,0x00,0x00,0x08] v_sin_f32_e64 v5, 0.5 mul:2 -// GFX11: encoding: [0x05,0x00,0xb5,0xd5,0xf0,0x00,0x00,0x08] +// GFX11: v_sin_f32_e64 v5, 0.5 mul:2 ; encoding: [0x05,0x00,0xb5,0xd5,0xf0,0x00,0x00,0x08] v_sin_f32_e64 v5, v1 -// GFX11: encoding: [0x05,0x00,0xb5,0xd5,0x01,0x01,0x00,0x00] +// GFX11: v_sin_f32_e64 v5, v1 ; encoding: [0x05,0x00,0xb5,0xd5,0x01,0x01,0x00,0x00] v_sin_f32 v5, v1 -// GFX11: encoding: [0x01,0x6b,0x0a,0x7e] +// GFX11: v_sin_f32_e32 v5, v1 ; encoding: [0x01,0x6b,0x0a,0x7e] //===----------------------------------------------------------------------===// // VOP2 -> VOP3. //===----------------------------------------------------------------------===// v_add_f32 v5, v1, -v2 -// GFX11: encoding: [0x05,0x00,0x03,0xd5,0x01,0x05,0x02,0x40] +// GFX11: v_add_f32_e64 v5, v1, -v2 ; encoding: [0x05,0x00,0x03,0xd5,0x01,0x05,0x02,0x40] v_add_f32_e64 v5, v1, -v2 -// GFX11: encoding: [0x05,0x00,0x03,0xd5,0x01,0x05,0x02,0x40] +// GFX11: v_add_f32_e64 v5, v1, -v2 ; encoding: [0x05,0x00,0x03,0xd5,0x01,0x05,0x02,0x40] v_add_f32_e64 v5, v1, v2 -// GFX11: encoding: [0x05,0x00,0x03,0xd5,0x01,0x05,0x02,0x00] +// GFX11: v_add_f32_e64 v5, v1, v2 ; encoding: [0x05,0x00,0x03,0xd5,0x01,0x05,0x02,0x00] v_add_f32 v5, v1, v2 -// GFX11: encoding: [0x01,0x05,0x0a,0x06] +// GFX11: v_add_f32_e32 v5, v1, v2 ; encoding: [0x01,0x05,0x0a,0x06] //===----------------------------------------------------------------------===// // VOPC -> VOP3. //===----------------------------------------------------------------------===// v_cmp_f_f32 s10, -v1, v2 -// GFX11: encoding: [0x0a,0x00,0x10,0xd4,0x01,0x05,0x02,0x20] +// GFX11: v_cmp_f_f32_e64 s10, -v1, v2 ; encoding: [0x0a,0x00,0x10,0xd4,0x01,0x05,0x02,0x20] v_cmp_f_f32_e64 s10, -v1, v2 -// GFX11: encoding: [0x0a,0x00,0x10,0xd4,0x01,0x05,0x02,0x20] +// GFX11: v_cmp_f_f32_e64 s10, -v1, v2 ; encoding: [0x0a,0x00,0x10,0xd4,0x01,0x05,0x02,0x20] v_cmp_f_f32_e64 vcc_lo, v1, v2 -// GFX11: encoding: [0x6a,0x00,0x10,0xd4,0x01,0x05,0x02,0x00] +// GFX11: v_cmp_f_f32_e64 vcc_lo, v1, v2 ; encoding: [0x6a,0x00,0x10,0xd4,0x01,0x05,0x02,0x00] v_cmp_f_f32 vcc_lo, v1, v2 -// GFX11: encoding: [0x01,0x05,0x20,0x7c] +// GFX11: v_cmp_f_f32_e32 vcc_lo, v1, v2 ; encoding: [0x01,0x05,0x20,0x7c] //===----------------------------------------------------------------------===// // VOPCX -> VOP3. //===----------------------------------------------------------------------===// v_cmpx_f_f32 -v1, v2 -// GFX11: encoding: [0x7e,0x00,0x90,0xd4,0x01,0x05,0x02,0x20] +// GFX11: v_cmpx_f_f32_e64 -v1, v2 ; encoding: [0x7e,0x00,0x90,0xd4,0x01,0x05,0x02,0x20] v_cmpx_f_f32_e64 -v1, v2 -// GFX11: encoding: [0x7e,0x00,0x90,0xd4,0x01,0x05,0x02,0x20] +// GFX11: v_cmpx_f_f32_e64 -v1, v2 ; encoding: [0x7e,0x00,0x90,0xd4,0x01,0x05,0x02,0x20] v_cmpx_f_f32_e64 v1, v2 -// GFX11: encoding: [0x7e,0x00,0x90,0xd4,0x01,0x05,0x02,0x00] +// GFX11: v_cmpx_f_f32_e64 v1, v2 ; encoding: [0x7e,0x00,0x90,0xd4,0x01,0x05,0x02,0x00] v_cmpx_f_f32 v1, v2 -// GFX11: encoding: [0x01,0x05,0x20,0x7d] +// GFX11: v_cmpx_f_f32_e32 v1, v2 ; encoding: [0x01,0x05,0x20,0x7d] //===----------------------------------------------------------------------===// // VOP3. //===----------------------------------------------------------------------===// v_add3_u32 v5, v1, v2, s3 -// GFX11: encoding: [0x05,0x00,0x55,0xd6,0x01,0x05,0x0e,0x00] +// GFX11: v_add3_u32 v5, v1, v2, s3 ; encoding: [0x05,0x00,0x55,0xd6,0x01,0x05,0x0e,0x00] v_add3_u32_e64 v5, v1, v2, s3 -// GFX11: encoding: [0x05,0x00,0x55,0xd6,0x01,0x05,0x0e,0x00] +// GFX11: v_add3_u32 v5, v1, v2, s3 ; encoding: [0x05,0x00,0x55,0xd6,0x01,0x05,0x0e,0x00] //===----------------------------------------------------------------------===// // VOP1 -> VOP3.DPP8. //===----------------------------------------------------------------------===// v_sin_f32 v5, v1 div:2 dpp8:[0,0,0,0,0,0,0,0] -// GFX11: encoding: [0x05,0x00,0xb5,0xd5,0xe9,0x00,0x00,0x18,0x01,0x00,0x00,0x00] +// GFX11: v_sin_f32_e64_dpp v5, v1 div:2 dpp8:[0,0,0,0,0,0,0,0] ; encoding: [0x05,0x00,0xb5,0xd5,0xe9,0x00,0x00,0x18,0x01,0x00,0x00,0x00] v_sin_f32_e64_dpp v5, v1 div:2 dpp8:[0,0,0,0,0,0,0,0] -// GFX11: encoding: [0x05,0x00,0xb5,0xd5,0xe9,0x00,0x00,0x18,0x01,0x00,0x00,0x00] +// GFX11: v_sin_f32_e64_dpp v5, v1 div:2 dpp8:[0,0,0,0,0,0,0,0] ; encoding: [0x05,0x00,0xb5,0xd5,0xe9,0x00,0x00,0x18,0x01,0x00,0x00,0x00] v_sin_f32_e64_dpp v5, v1 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0x05,0x00,0xb5,0xd5,0xe9,0x00,0x00,0x00,0x01,0x77,0x39,0x05] +// GFX11: v_sin_f32_e64_dpp v5, v1 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0x05,0x00,0xb5,0xd5,0xe9,0x00,0x00,0x00,0x01,0x77,0x39,0x05] v_sin_f32 v5, v1 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0xe9,0x6a,0x0a,0x7e,0x01,0x77,0x39,0x05] +// GFX11: v_sin_f32_dpp v5, v1 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xe9,0x6a,0x0a,0x7e,0x01,0x77,0x39,0x05] //===----------------------------------------------------------------------===// // VOP2 -> VOP3.DPP8. //===----------------------------------------------------------------------===// v_add_f32 v5, v1, v2 mul:4 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0x05,0x00,0x03,0xd5,0xe9,0x04,0x02,0x10,0x01,0x77,0x39,0x05] +// GFX11: v_add_f32_e64_dpp v5, v1, v2 mul:4 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0x05,0x00,0x03,0xd5,0xe9,0x04,0x02,0x10,0x01,0x77,0x39,0x05] v_add_f32_e64_dpp v5, v1, v2 mul:4 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0x05,0x00,0x03,0xd5,0xe9,0x04,0x02,0x10,0x01,0x77,0x39,0x05] +// GFX11: v_add_f32_e64_dpp v5, v1, v2 mul:4 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0x05,0x00,0x03,0xd5,0xe9,0x04,0x02,0x10,0x01,0x77,0x39,0x05] v_add_f32_e64_dpp v5, v1, v2 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0x05,0x00,0x03,0xd5,0xe9,0x04,0x02,0x00,0x01,0x77,0x39,0x05] +// GFX11: v_add_f32_e64_dpp v5, v1, v2 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0x05,0x00,0x03,0xd5,0xe9,0x04,0x02,0x00,0x01,0x77,0x39,0x05] v_add_f32 v5, v1, v2 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0xe9,0x04,0x0a,0x06,0x01,0x77,0x39,0x05] +// GFX11: v_add_f32_dpp v5, v1, v2 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xe9,0x04,0x0a,0x06,0x01,0x77,0x39,0x05] //===----------------------------------------------------------------------===// // VOPC -> VOP3.DPP8. //===----------------------------------------------------------------------===// v_cmp_class_f32 s5, v1, v2 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0x05,0x00,0x7e,0xd4,0xe9,0x04,0x02,0x00,0x01,0x77,0x39,0x05] +// GFX11: v_cmp_class_f32_e64_dpp s5, v1, v2 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0x05,0x00,0x7e,0xd4,0xe9,0x04,0x02,0x00,0x01,0x77,0x39,0x05] v_cmp_class_f32_e64_dpp s5, v1, v2 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0x05,0x00,0x7e,0xd4,0xe9,0x04,0x02,0x00,0x01,0x77,0x39,0x05] +// GFX11: v_cmp_class_f32_e64_dpp s5, v1, v2 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0x05,0x00,0x7e,0xd4,0xe9,0x04,0x02,0x00,0x01,0x77,0x39,0x05] v_cmp_class_f32_e64_dpp vcc_lo, v1, v2 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0x6a,0x00,0x7e,0xd4,0xe9,0x04,0x02,0x00,0x01,0x77,0x39,0x05] +// GFX11: v_cmp_class_f32_e64_dpp vcc_lo, v1, v2 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0x6a,0x00,0x7e,0xd4,0xe9,0x04,0x02,0x00,0x01,0x77,0x39,0x05] v_cmp_class_f32 vcc_lo, v1, v2 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0xe9,0x04,0xfc,0x7c,0x01,0x77,0x39,0x05] +// GFX11: v_cmp_class_f32 vcc_lo, v1, v2 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xe9,0x04,0xfc,0x7c,0x01,0x77,0x39,0x05] //===----------------------------------------------------------------------===// // VOPCX -> VOP3.DPP8. //===----------------------------------------------------------------------===// v_cmpx_class_f32 -v1, v2 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0x7e,0x00,0xfe,0xd4,0xe9,0x04,0x02,0x20,0x01,0x77,0x39,0x05] +// GFX11: v_cmpx_class_f32_e64_dpp -v1, v2 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0x7e,0x00,0xfe,0xd4,0xe9,0x04,0x02,0x20,0x01,0x77,0x39,0x05] v_cmpx_class_f32_e64_dpp -v1, v2 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0x7e,0x00,0xfe,0xd4,0xe9,0x04,0x02,0x20,0x01,0x77,0x39,0x05] +// GFX11: v_cmpx_class_f32_e64_dpp -v1, v2 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0x7e,0x00,0xfe,0xd4,0xe9,0x04,0x02,0x20,0x01,0x77,0x39,0x05] v_cmpx_class_f32_e64_dpp v1, v2 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0x7e,0x00,0xfe,0xd4,0xe9,0x04,0x02,0x00,0x01,0x77,0x39,0x05] +// GFX11: v_cmpx_class_f32_e64_dpp v1, v2 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0x7e,0x00,0xfe,0xd4,0xe9,0x04,0x02,0x00,0x01,0x77,0x39,0x05] v_cmpx_class_f32 v1, v2 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0xe9,0x04,0xfc,0x7d,0x01,0x77,0x39,0x05] +// GFX11: v_cmpx_class_f32 v1, v2 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xe9,0x04,0xfc,0x7d,0x01,0x77,0x39,0x05] //===----------------------------------------------------------------------===// // VOP1 -> VOP3.DPP16. //===----------------------------------------------------------------------===// v_sin_f32 v5, v1 div:2 row_xmask:15 -// GFX11: encoding: [0x05,0x00,0xb5,0xd5,0xfa,0x00,0x00,0x18,0x01,0x6f,0x01,0xff] +// GFX11: v_sin_f32_e64_dpp v5, v1 div:2 row_xmask:15 row_mask:0xf bank_mask:0xf ; encoding: [0x05,0x00,0xb5,0xd5,0xfa,0x00,0x00,0x18,0x01,0x6f,0x01,0xff] v_sin_f32_e64_dpp v5, v1 div:2 row_xmask:15 -// GFX11: encoding: [0x05,0x00,0xb5,0xd5,0xfa,0x00,0x00,0x18,0x01,0x6f,0x01,0xff] +// GFX11: v_sin_f32_e64_dpp v5, v1 div:2 row_xmask:15 row_mask:0xf bank_mask:0xf ; encoding: [0x05,0x00,0xb5,0xd5,0xfa,0x00,0x00,0x18,0x01,0x6f,0x01,0xff] v_sin_f32_e64_dpp v5, v1 quad_perm:[3,2,1,0] -// GFX11: encoding: [0x05,0x00,0xb5,0xd5,0xfa,0x00,0x00,0x00,0x01,0x1b,0x00,0xff] +// GFX11: v_sin_f32_e64_dpp v5, v1 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0x05,0x00,0xb5,0xd5,0xfa,0x00,0x00,0x00,0x01,0x1b,0x00,0xff] v_sin_f32 v5, v1 quad_perm:[3,2,1,0] -// GFX11: encoding: [0xfa,0x6a,0x0a,0x7e,0x01,0x1b,0x00,0xff] +// GFX11: v_sin_f32_dpp v5, v1 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x6a,0x0a,0x7e,0x01,0x1b,0x00,0xff] //===----------------------------------------------------------------------===// // VOP2 -> VOP3.DPP16. //===----------------------------------------------------------------------===// v_add_f32 v5, v1, v2 div:2 quad_perm:[3,2,1,0] -// GFX11: encoding: [0x05,0x00,0x03,0xd5,0xfa,0x04,0x02,0x18,0x01,0x1b,0x00,0xff] +// GFX11: v_add_f32_e64_dpp v5, v1, v2 div:2 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0x05,0x00,0x03,0xd5,0xfa,0x04,0x02,0x18,0x01,0x1b,0x00,0xff] v_add_f32_e64_dpp v5, v1, v2 div:2 quad_perm:[3,2,1,0] -// GFX11: encoding: [0x05,0x00,0x03,0xd5,0xfa,0x04,0x02,0x18,0x01,0x1b,0x00,0xff] +// GFX11: v_add_f32_e64_dpp v5, v1, v2 div:2 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0x05,0x00,0x03,0xd5,0xfa,0x04,0x02,0x18,0x01,0x1b,0x00,0xff] v_add_f32_e64_dpp v5, v1, v2 quad_perm:[3,2,1,0] -// GFX11: encoding: [0x05,0x00,0x03,0xd5,0xfa,0x04,0x02,0x00,0x01,0x1b,0x00,0xff] +// GFX11: v_add_f32_e64_dpp v5, v1, v2 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0x05,0x00,0x03,0xd5,0xfa,0x04,0x02,0x00,0x01,0x1b,0x00,0xff] v_add_f32 v5, v1, v2 quad_perm:[3,2,1,0] -// GFX11: encoding: [0xfa,0x04,0x0a,0x06,0x01,0x1b,0x00,0xff] +// GFX11: v_add_f32_dpp v5, v1, v2 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x04,0x0a,0x06,0x01,0x1b,0x00,0xff] //===----------------------------------------------------------------------===// // VOPC -> VOP3.DPP16. //===----------------------------------------------------------------------===// v_cmp_class_f32 s5, v1, v2 quad_perm:[3,2,1,0] -// GFX11: encoding: [0x05,0x00,0x7e,0xd4,0xfa,0x04,0x02,0x00,0x01,0x1b,0x00,0xff] +// GFX11: v_cmp_class_f32_e64_dpp s5, v1, v2 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0x05,0x00,0x7e,0xd4,0xfa,0x04,0x02,0x00,0x01,0x1b,0x00,0xff] v_cmp_class_f32_e64_dpp s5, v1, v2 quad_perm:[3,2,1,0] -// GFX11: encoding: [0x05,0x00,0x7e,0xd4,0xfa,0x04,0x02,0x00,0x01,0x1b,0x00,0xff] +// GFX11: v_cmp_class_f32_e64_dpp s5, v1, v2 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0x05,0x00,0x7e,0xd4,0xfa,0x04,0x02,0x00,0x01,0x1b,0x00,0xff] v_cmp_class_f32_e64_dpp vcc_lo, v1, v2 row_share:0 row_mask:0xf bank_mask:0xf -// GFX11: encoding: [0x6a,0x00,0x7e,0xd4,0xfa,0x04,0x02,0x00,0x01,0x50,0x01,0xff] +// GFX11: v_cmp_class_f32_e64_dpp vcc_lo, v1, v2 row_share:0 row_mask:0xf bank_mask:0xf ; encoding: [0x6a,0x00,0x7e,0xd4,0xfa,0x04,0x02,0x00,0x01,0x50,0x01,0xff] v_cmp_class_f32 vcc_lo, v1, v2 row_share:0 row_mask:0xf bank_mask:0xf -// GFX11: encoding: [0xfa,0x04,0xfc,0x7c,0x01,0x50,0x01,0xff] +// GFX11: v_cmp_class_f32 vcc_lo, v1, v2 row_share:0 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x04,0xfc,0x7c,0x01,0x50,0x01,0xff] //===----------------------------------------------------------------------===// // VOPCX -> VOP3.DPP16. //===----------------------------------------------------------------------===// v_cmpx_class_f32_e64_dpp v1, v2 quad_perm:[3,2,1,0] -// GFX11: encoding: [0x7e,0x00,0xfe,0xd4,0xfa,0x04,0x02,0x00,0x01,0x1b,0x00,0xff] +// GFX11: v_cmpx_class_f32_e64_dpp v1, v2 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0x7e,0x00,0xfe,0xd4,0xfa,0x04,0x02,0x00,0x01,0x1b,0x00,0xff] v_cmpx_class_f32 v1, v2 quad_perm:[3,2,1,0] -// GFX11: encoding: [0xfa,0x04,0xfc,0x7d,0x01,0x1b,0x00,0xff] +// GFX11: v_cmpx_class_f32 v1, v2 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x04,0xfc,0x7d,0x01,0x1b,0x00,0xff] //===----------------------------------------------------------------------===// // VOP3P. //===----------------------------------------------------------------------===// v_dot2_f32_f16 v0, v1, v2, v3 -// GFX11: encoding: [0x00,0x40,0x13,0xcc,0x01,0x05,0x0e,0x1c] +// GFX11: v_dot2_f32_f16 v0, v1, v2, v3 ; encoding: [0x00,0x40,0x13,0xcc,0x01,0x05,0x0e,0x1c] v_dot2_f32_f16_e64 v0, v1, v2, v3 -// GFX11: encoding: [0x00,0x40,0x13,0xcc,0x01,0x05,0x0e,0x1c] +// GFX11: v_dot2_f32_f16 v0, v1, v2, v3 ; encoding: [0x00,0x40,0x13,0xcc,0x01,0x05,0x0e,0x1c] //===----------------------------------------------------------------------===// // VOP3P.DPP8. //===----------------------------------------------------------------------===// v_dot2_f32_f16 v0, v1, v2, v3 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0x00,0x00,0x13,0xcc,0xe9,0x04,0x0e,0x04,0x01,0x77,0x39,0x05] +// GFX11: v_dot2_f32_f16_e64_dpp v0, v1, v2, v3 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0x00,0x00,0x13,0xcc,0xe9,0x04,0x0e,0x04,0x01,0x77,0x39,0x05] v_dot2_f32_f16_e64_dpp v0, v1, v2, v3 dpp8:[7,6,5,4,3,2,1,0] -// GFX11: encoding: [0x00,0x00,0x13,0xcc,0xe9,0x04,0x0e,0x04,0x01,0x77,0x39,0x05] +// GFX11: v_dot2_f32_f16_e64_dpp v0, v1, v2, v3 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0x00,0x00,0x13,0xcc,0xe9,0x04,0x0e,0x04,0x01,0x77,0x39,0x05] //===----------------------------------------------------------------------===// // VOP3P.DPP16. //===----------------------------------------------------------------------===// v_dot2_f32_f16 v0, v1, v2, v3 quad_perm:[1,2,3,0] -// GFX11: encoding: [0x00,0x00,0x13,0xcc,0xfa,0x04,0x0e,0x04,0x01,0x39,0x00,0xff] +// GFX11: v_dot2_f32_f16_e64_dpp v0, v1, v2, v3 quad_perm:[1,2,3,0] row_mask:0xf bank_mask:0xf ; encoding: [0x00,0x00,0x13,0xcc,0xfa,0x04,0x0e,0x04,0x01,0x39,0x00,0xff] v_dot2_f32_f16_e64_dpp v0, v1, v2, v3 quad_perm:[1,2,3,0] -// GFX11: encoding: [0x00,0x00,0x13,0xcc,0xfa,0x04,0x0e,0x04,0x01,0x39,0x00,0xff] +// GFX11: v_dot2_f32_f16_e64_dpp v0, v1, v2, v3 quad_perm:[1,2,3,0] row_mask:0xf bank_mask:0xf ; encoding: [0x00,0x00,0x13,0xcc,0xfa,0x04,0x0e,0x04,0x01,0x39,0x00,0xff]