-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[AMDGPU][True16][MC] added VOPC realtrue/faketrue flag and fake16 instructions #104739
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -87,6 +87,17 @@ class VOPC_Profile<list<SchedReadWrite> sched, ValueType vt0, ValueType vt1 = vt | |
multiclass VOPC_Profile_t16<list<SchedReadWrite> sched, ValueType vt0, ValueType vt1 = vt0> { | ||
def NAME : VOPC_Profile<sched, vt0, vt1>; | ||
def _t16 : VOPC_Profile<sched, vt0, vt1> { | ||
let IsTrue16 = 1; | ||
let IsRealTrue16 = 1; | ||
let Src1RC32 = getVregSrcForVT<Src1VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src0DPP = getVregSrcForVT<Src0VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src1DPP = getVregSrcForVT<Src1VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src2DPP = getVregSrcForVT<Src2VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src0ModDPP = getSrcModDPP_t16<Src0VT>.ret; | ||
let Src1ModDPP = getSrcModDPP_t16<Src1VT>.ret; | ||
let Src2ModDPP = getSrcModDPP_t16<Src2VT>.ret; | ||
} | ||
def _fake16: VOPC_Profile<sched, vt0, vt1> { | ||
let IsTrue16 = 1; | ||
let Src1RC32 = getVregSrcForVT<Src1VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src0DPP = getVregSrcForVT<Src0VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
|
@@ -117,6 +128,17 @@ class VOPC_NoSdst_Profile<list<SchedReadWrite> sched, ValueType vt0, | |
multiclass VOPC_NoSdst_Profile_t16<list<SchedReadWrite> sched, ValueType vt0, ValueType vt1 = vt0> { | ||
def NAME : VOPC_NoSdst_Profile<sched, vt0, vt1>; | ||
def _t16 : VOPC_NoSdst_Profile<sched, vt0, vt1> { | ||
let IsTrue16 = 1; | ||
let IsRealTrue16 = 1; | ||
let Src1RC32 = getVregSrcForVT<Src1VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src0DPP = getVregSrcForVT<Src0VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src1DPP = getVregSrcForVT<Src1VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src2DPP = getVregSrcForVT<Src2VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src0ModDPP = getSrcModDPP_t16<Src0VT>.ret; | ||
let Src1ModDPP = getSrcModDPP_t16<Src1VT>.ret; | ||
let Src2ModDPP = getSrcModDPP_t16<Src2VT>.ret; | ||
} | ||
def _fake16 : VOPC_NoSdst_Profile<sched, vt0, vt1> { | ||
let IsTrue16 = 1; | ||
let Src1RC32 = getVregSrcForVT<Src1VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src0DPP = getVregSrcForVT<Src0VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
|
@@ -412,9 +434,12 @@ multiclass VOPC_F16 <string opName, SDPatternOperator cond = COND_NULL, | |
let OtherPredicates = [Has16BitInsts], True16Predicate = NotHasTrue16BitInsts in { | ||
defm NAME : VOPC_Pseudos <opName, VOPC_I1_F16_F16, cond, revOp, 0>; | ||
} | ||
let OtherPredicates = [HasTrue16BitInsts] in { | ||
let True16Predicate = UseRealTrue16Insts in { | ||
defm _t16 : VOPC_Pseudos <opName#"_t16", VOPC_I1_F16_F16_t16, cond, revOp#"_t16", 0>; | ||
} | ||
let True16Predicate = UseFakeTrue16Insts in { | ||
defm _fake16 : VOPC_Pseudos <opName#"_fake16", VOPC_I1_F16_F16_fake16, cond, revOp#"_fake16", 0>; | ||
} | ||
} | ||
|
||
multiclass VOPC_F32 <string opName, SDPatternOperator cond = COND_NULL, string revOp = opName> : | ||
|
@@ -428,9 +453,12 @@ multiclass VOPC_I16 <string opName, SDPatternOperator cond = COND_NULL, | |
let OtherPredicates = [Has16BitInsts], True16Predicate = NotHasTrue16BitInsts in { | ||
defm NAME : VOPC_Pseudos <opName, VOPC_I1_I16_I16, cond, revOp, 0>; | ||
} | ||
let OtherPredicates = [HasTrue16BitInsts] in { | ||
let True16Predicate = UseRealTrue16Insts in { | ||
defm _t16 : VOPC_Pseudos <opName#"_t16", VOPC_I1_I16_I16_t16, cond, revOp#"_t16", 0>; | ||
} | ||
let True16Predicate = UseFakeTrue16Insts in { | ||
defm _fake16 : VOPC_Pseudos <opName#"_fake16", VOPC_I1_I16_I16_fake16, cond, revOp#"_fake16", 0>; | ||
} | ||
} | ||
|
||
multiclass VOPC_I32 <string opName, SDPatternOperator cond = COND_NULL, string revOp = opName> : | ||
|
@@ -445,9 +473,12 @@ multiclass VOPCX_F16<string opName, string revOp = opName> { | |
let OtherPredicates = [Has16BitInsts], True16Predicate = NotHasTrue16BitInsts in { | ||
defm NAME : VOPCX_Pseudos <opName, VOPC_I1_F16_F16, VOPC_F16_F16, COND_NULL, revOp>; | ||
} | ||
let OtherPredicates = [HasTrue16BitInsts] in { | ||
let True16Predicate = UseRealTrue16Insts in { | ||
defm _t16 : VOPCX_Pseudos <opName#"_t16", VOPC_I1_F16_F16_t16, VOPC_F16_F16_t16, COND_NULL, revOp#"_t16">; | ||
} | ||
let True16Predicate = UseFakeTrue16Insts in { | ||
defm _fake16 : VOPCX_Pseudos <opName#"_fake16", VOPC_I1_F16_F16_fake16, VOPC_F16_F16_fake16, COND_NULL, revOp#"_fake16">; | ||
} | ||
} | ||
|
||
multiclass VOPCX_F32 <string opName, string revOp = opName> : | ||
|
@@ -460,9 +491,12 @@ multiclass VOPCX_I16<string opName, string revOp = opName> { | |
let OtherPredicates = [Has16BitInsts], True16Predicate = NotHasTrue16BitInsts in { | ||
defm NAME : VOPCX_Pseudos <opName, VOPC_I1_I16_I16, VOPC_I16_I16, COND_NULL, revOp>; | ||
} | ||
let OtherPredicates = [HasTrue16BitInsts] in { | ||
let True16Predicate = UseRealTrue16Insts in { | ||
defm _t16 : VOPCX_Pseudos <opName#"_t16", VOPC_I1_I16_I16_t16, VOPC_I16_I16_t16, COND_NULL, revOp#"_t16">; | ||
} | ||
let True16Predicate = UseFakeTrue16Insts in { | ||
defm _fake16 : VOPCX_Pseudos <opName#"_fake16", VOPC_I1_I16_I16_fake16, VOPC_I16_I16_fake16, COND_NULL, revOp#"_fake16">; | ||
} | ||
} | ||
|
||
multiclass VOPCX_I32 <string opName, string revOp = opName> : | ||
|
@@ -795,6 +829,18 @@ class VOPC_Class_Profile<list<SchedReadWrite> sched, ValueType src0VT, ValueType | |
multiclass VOPC_Class_Profile_t16<list<SchedReadWrite> sched> { | ||
def NAME : VOPC_Class_Profile<sched, f16>; | ||
def _t16 : VOPC_Class_Profile<sched, f16, i16> { | ||
let IsTrue16 = 1; | ||
let IsRealTrue16 = 1; | ||
let Src1RC32 = getVregSrcForVT<Src1VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src1RC64 = VSrc_b32; | ||
let Src0DPP = getVregSrcForVT<Src0VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src1DPP = getVregSrcForVT<Src1VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src2DPP = getVregSrcForVT<Src2VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src0ModDPP = getSrcModDPP_t16<Src0VT>.ret; | ||
let Src1ModDPP = getSrcModDPP_t16<Src1VT>.ret; | ||
let Src2ModDPP = getSrcModDPP_t16<Src2VT>.ret; | ||
} | ||
def _fake16 : VOPC_Class_Profile<sched, f16, i16> { | ||
let IsTrue16 = 1; | ||
let Src1RC32 = getVregSrcForVT<Src1VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src1RC64 = VSrc_b32; | ||
|
@@ -822,6 +868,18 @@ class VOPC_Class_NoSdst_Profile<list<SchedReadWrite> sched, ValueType src0VT, Va | |
multiclass VOPC_Class_NoSdst_Profile_t16<list<SchedReadWrite> sched> { | ||
def NAME : VOPC_Class_NoSdst_Profile<sched, f16>; | ||
def _t16 : VOPC_Class_NoSdst_Profile<sched, f16, i16> { | ||
let IsTrue16 = 1; | ||
let IsRealTrue16 = 1; | ||
let Src1RC32 = getVregSrcForVT<Src1VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src1RC64 = VSrc_b32; | ||
let Src0DPP = getVregSrcForVT<Src0VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src1DPP = getVregSrcForVT<Src1VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src2DPP = getVregSrcForVT<Src2VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src0ModDPP = getSrcModDPP_t16<Src0VT>.ret; | ||
let Src1ModDPP = getSrcModDPP_t16<Src1VT>.ret; | ||
let Src2ModDPP = getSrcModDPP_t16<Src2VT>.ret; | ||
} | ||
def _fake16 : VOPC_Class_NoSdst_Profile<sched, f16, i16> { | ||
let IsTrue16 = 1; | ||
let Src1RC32 = getVregSrcForVT<Src1VT, 1/*IsTrue16*/, 1/*IsFake16*/>.ret; | ||
let Src1RC64 = VSrc_b32; | ||
|
@@ -948,18 +1006,24 @@ multiclass VOPC_CLASS_F16 <string opName> { | |
let OtherPredicates = [Has16BitInsts], True16Predicate = NotHasTrue16BitInsts in { | ||
defm NAME : VOPC_Class_Pseudos <opName, VOPC_I1_F16_I16, 0>; | ||
} | ||
let OtherPredicates = [HasTrue16BitInsts] in { | ||
let OtherPredicates = [UseRealTrue16Insts] in { | ||
defm _t16 : VOPC_Class_Pseudos <opName#"_t16", VOPC_I1_F16_I16_t16, 0>; | ||
} | ||
let OtherPredicates = [UseFakeTrue16Insts] in { | ||
defm _fake16 : VOPC_Class_Pseudos <opName#"_fake16", VOPC_I1_F16_I16_fake16, 0>; | ||
} | ||
} | ||
|
||
multiclass VOPCX_CLASS_F16 <string opName> { | ||
let OtherPredicates = [Has16BitInsts], True16Predicate = NotHasTrue16BitInsts in { | ||
defm NAME : VOPCX_Class_Pseudos <opName, VOPC_I1_F16_I16, VOPC_F16_I16>; | ||
} | ||
let OtherPredicates = [HasTrue16BitInsts] in { | ||
let OtherPredicates = [UseRealTrue16Insts] in { | ||
defm _t16 : VOPCX_Class_Pseudos <opName#"_t16", VOPC_I1_F16_I16_t16, VOPC_F16_I16_t16>; | ||
} | ||
let OtherPredicates = [UseFakeTrue16Insts] in { | ||
defm _fake16 : VOPCX_Class_Pseudos <opName#"_fake16", VOPC_I1_F16_I16_fake16, VOPC_F16_I16_fake16>; | ||
} | ||
} | ||
|
||
multiclass VOPC_CLASS_F32 <string opName> : | ||
|
@@ -1401,7 +1465,7 @@ multiclass VOPC_Real_with_name<GFXGen Gen, bits<9> op, string OpName, | |
pseudo_mnemonic), | ||
asm_name, ps64.AsmVariantName>; | ||
|
||
let DecoderNamespace = Gen.DecoderNamespace in { | ||
let DecoderNamespace = Gen.DecoderNamespace # !if(ps32.Pfl.IsRealTrue16, "", "_FAKE16") in { | ||
def _e32#Gen.Suffix : | ||
// 32 and 64 bit forms of the instruction have _e32 and _e64 | ||
// respectively appended to their assembly mnemonic. | ||
|
@@ -1530,7 +1594,7 @@ multiclass VOPCX_Real_with_name<GFXGen Gen, bits<9> op, string OpName, | |
pseudo_mnemonic), | ||
asm_name, ps64.AsmVariantName>; | ||
|
||
let DecoderNamespace = Gen.DecoderNamespace in { | ||
let DecoderNamespace = Gen.DecoderNamespace # !if(ps32.Pfl.IsRealTrue16, "", "_FAKE16") in { | ||
def _e32#Gen.Suffix | ||
: VOPC_Real<ps32, Gen.Subtarget, asm_name>, | ||
VOPCe<op{7-0}> { | ||
|
@@ -1623,7 +1687,25 @@ defm V_CMP_NGT_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x00b, "v_cmp_ngt_f16">; | |
defm V_CMP_NLE_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x00c, "v_cmp_nle_f16">; | ||
defm V_CMP_NEQ_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x00d, "v_cmp_neq_f16">; | ||
defm V_CMP_NLT_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x00e, "v_cmp_nlt_f16">; | ||
defm V_CMP_T_F16_t16 : VOPC_Real_with_name_gfx11<0x00f, "V_CMP_TRU_F16_t16", "v_cmp_t_f16", "v_cmp_tru_f16">; | ||
defm V_CMP_T_F16_t16 : VOPC_Real_t16_gfx11<0x00f, "v_cmp_t_f16", "V_CMP_TRU_F16_t16", "v_cmp_tru_f16">; | ||
|
||
defm V_CMP_F_F16_fake16 : VOPC_Real_t16_gfx11<0x000, "v_cmp_f_f16">; | ||
defm V_CMP_LT_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x001, "v_cmp_lt_f16">; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Just curious: how hard it would be to make the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think this is doable. let me try with this approach within another PR |
||
defm V_CMP_EQ_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x002, "v_cmp_eq_f16">; | ||
defm V_CMP_LE_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x003, "v_cmp_le_f16">; | ||
defm V_CMP_GT_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x004, "v_cmp_gt_f16">; | ||
defm V_CMP_LG_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x005, "v_cmp_lg_f16">; | ||
defm V_CMP_GE_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x006, "v_cmp_ge_f16">; | ||
defm V_CMP_O_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x007, "v_cmp_o_f16">; | ||
defm V_CMP_U_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x008, "v_cmp_u_f16">; | ||
defm V_CMP_NGE_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x009, "v_cmp_nge_f16">; | ||
defm V_CMP_NLG_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x00a, "v_cmp_nlg_f16">; | ||
defm V_CMP_NGT_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x00b, "v_cmp_ngt_f16">; | ||
defm V_CMP_NLE_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x00c, "v_cmp_nle_f16">; | ||
defm V_CMP_NEQ_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x00d, "v_cmp_neq_f16">; | ||
defm V_CMP_NLT_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x00e, "v_cmp_nlt_f16">; | ||
defm V_CMP_T_F16_fake16 : VOPC_Real_t16_gfx11<0x00f, "v_cmp_t_f16", "V_CMP_TRU_F16_fake16", "v_cmp_tru_f16">; | ||
|
||
defm V_CMP_F_F32 : VOPC_Real_gfx11<0x010>; | ||
defm V_CMP_LT_F32 : VOPC_Real_gfx11_gfx12<0x011>; | ||
defm V_CMP_EQ_F32 : VOPC_Real_gfx11_gfx12<0x012>; | ||
|
@@ -1641,6 +1723,7 @@ defm V_CMP_NEQ_F32 : VOPC_Real_gfx11_gfx12<0x01d>; | |
defm V_CMP_NLT_F32 : VOPC_Real_gfx11_gfx12<0x01e>; | ||
defm V_CMP_T_F32 : VOPC_Real_with_name_gfx11<0x01f, "V_CMP_TRU_F32", "v_cmp_t_f32">; | ||
defm V_CMP_T_F64 : VOPC_Real_with_name_gfx11<0x02f, "V_CMP_TRU_F64", "v_cmp_t_f64">; | ||
|
||
defm V_CMP_LT_I16_t16 : VOPC_Real_t16_gfx11_gfx12<0x031, "v_cmp_lt_i16">; | ||
defm V_CMP_EQ_I16_t16 : VOPC_Real_t16_gfx11_gfx12<0x032, "v_cmp_eq_i16">; | ||
defm V_CMP_LE_I16_t16 : VOPC_Real_t16_gfx11_gfx12<0x033, "v_cmp_le_i16">; | ||
|
@@ -1653,6 +1736,20 @@ defm V_CMP_LE_U16_t16 : VOPC_Real_t16_gfx11_gfx12<0x03b, "v_cmp_le_u16">; | |
defm V_CMP_GT_U16_t16 : VOPC_Real_t16_gfx11_gfx12<0x03c, "v_cmp_gt_u16">; | ||
defm V_CMP_NE_U16_t16 : VOPC_Real_t16_gfx11_gfx12<0x03d, "v_cmp_ne_u16">; | ||
defm V_CMP_GE_U16_t16 : VOPC_Real_t16_gfx11_gfx12<0x03e, "v_cmp_ge_u16">; | ||
|
||
defm V_CMP_LT_I16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x031, "v_cmp_lt_i16">; | ||
defm V_CMP_EQ_I16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x032, "v_cmp_eq_i16">; | ||
defm V_CMP_LE_I16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x033, "v_cmp_le_i16">; | ||
defm V_CMP_GT_I16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x034, "v_cmp_gt_i16">; | ||
defm V_CMP_NE_I16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x035, "v_cmp_ne_i16">; | ||
defm V_CMP_GE_I16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x036, "v_cmp_ge_i16">; | ||
defm V_CMP_LT_U16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x039, "v_cmp_lt_u16">; | ||
defm V_CMP_EQ_U16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x03a, "v_cmp_eq_u16">; | ||
defm V_CMP_LE_U16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x03b, "v_cmp_le_u16">; | ||
defm V_CMP_GT_U16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x03c, "v_cmp_gt_u16">; | ||
defm V_CMP_NE_U16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x03d, "v_cmp_ne_u16">; | ||
defm V_CMP_GE_U16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x03e, "v_cmp_ge_u16">; | ||
|
||
defm V_CMP_F_I32 : VOPC_Real_gfx11<0x040>; | ||
defm V_CMP_LT_I32 : VOPC_Real_gfx11_gfx12<0x041>; | ||
defm V_CMP_EQ_I32 : VOPC_Real_gfx11_gfx12<0x042>; | ||
|
@@ -1688,6 +1785,7 @@ defm V_CMP_GE_U64 : VOPC_Real_gfx11_gfx12<0x05e>; | |
defm V_CMP_T_U64 : VOPC_Real_gfx11<0x05f>; | ||
|
||
defm V_CMP_CLASS_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x07d, "v_cmp_class_f16">; | ||
defm V_CMP_CLASS_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x07d, "v_cmp_class_f16">; | ||
defm V_CMP_CLASS_F32 : VOPC_Real_gfx11_gfx12<0x07e>; | ||
defm V_CMP_CLASS_F64 : VOPC_Real_gfx11_gfx12<0x07f>; | ||
|
||
|
@@ -1707,6 +1805,24 @@ defm V_CMPX_NLE_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x08c, "v_cmpx_nle_f16">; | |
defm V_CMPX_NEQ_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x08d, "v_cmpx_neq_f16">; | ||
defm V_CMPX_NLT_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x08e, "v_cmpx_nlt_f16">; | ||
defm V_CMPX_T_F16_t16 : VOPCX_Real_with_name_gfx11<0x08f, "V_CMPX_TRU_F16_t16", "v_cmpx_t_f16", "v_cmpx_tru_f16">; | ||
|
||
defm V_CMPX_F_F16_fake16 : VOPCX_Real_t16_gfx11<0x080, "v_cmpx_f_f16">; | ||
defm V_CMPX_LT_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x081, "v_cmpx_lt_f16">; | ||
defm V_CMPX_EQ_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x082, "v_cmpx_eq_f16">; | ||
defm V_CMPX_LE_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x083, "v_cmpx_le_f16">; | ||
defm V_CMPX_GT_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x084, "v_cmpx_gt_f16">; | ||
defm V_CMPX_LG_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x085, "v_cmpx_lg_f16">; | ||
defm V_CMPX_GE_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x086, "v_cmpx_ge_f16">; | ||
defm V_CMPX_O_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x087, "v_cmpx_o_f16">; | ||
defm V_CMPX_U_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x088, "v_cmpx_u_f16">; | ||
defm V_CMPX_NGE_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x089, "v_cmpx_nge_f16">; | ||
defm V_CMPX_NLG_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x08a, "v_cmpx_nlg_f16">; | ||
defm V_CMPX_NGT_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x08b, "v_cmpx_ngt_f16">; | ||
defm V_CMPX_NLE_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x08c, "v_cmpx_nle_f16">; | ||
defm V_CMPX_NEQ_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x08d, "v_cmpx_neq_f16">; | ||
defm V_CMPX_NLT_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x08e, "v_cmpx_nlt_f16">; | ||
defm V_CMPX_T_F16_fake16 : VOPCX_Real_with_name_gfx11<0x08f, "V_CMPX_TRU_F16_fake16", "v_cmpx_t_f16", "v_cmpx_tru_f16">; | ||
|
||
defm V_CMPX_F_F32 : VOPCX_Real_gfx11<0x090>; | ||
defm V_CMPX_LT_F32 : VOPCX_Real_gfx11_gfx12<0x091>; | ||
defm V_CMPX_EQ_F32 : VOPCX_Real_gfx11_gfx12<0x092>; | ||
|
@@ -1753,6 +1869,20 @@ defm V_CMPX_LE_U16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x0bb, "v_cmpx_le_u16">; | |
defm V_CMPX_GT_U16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x0bc, "v_cmpx_gt_u16">; | ||
defm V_CMPX_NE_U16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x0bd, "v_cmpx_ne_u16">; | ||
defm V_CMPX_GE_U16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x0be, "v_cmpx_ge_u16">; | ||
|
||
defm V_CMPX_LT_I16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0b1, "v_cmpx_lt_i16">; | ||
defm V_CMPX_EQ_I16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0b2, "v_cmpx_eq_i16">; | ||
defm V_CMPX_LE_I16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0b3, "v_cmpx_le_i16">; | ||
defm V_CMPX_GT_I16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0b4, "v_cmpx_gt_i16">; | ||
defm V_CMPX_NE_I16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0b5, "v_cmpx_ne_i16">; | ||
defm V_CMPX_GE_I16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0b6, "v_cmpx_ge_i16">; | ||
defm V_CMPX_LT_U16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0b9, "v_cmpx_lt_u16">; | ||
defm V_CMPX_EQ_U16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0ba, "v_cmpx_eq_u16">; | ||
defm V_CMPX_LE_U16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0bb, "v_cmpx_le_u16">; | ||
defm V_CMPX_GT_U16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0bc, "v_cmpx_gt_u16">; | ||
defm V_CMPX_NE_U16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0bd, "v_cmpx_ne_u16">; | ||
defm V_CMPX_GE_U16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0be, "v_cmpx_ge_u16">; | ||
|
||
defm V_CMPX_F_I32 : VOPCX_Real_gfx11<0x0c0>; | ||
defm V_CMPX_LT_I32 : VOPCX_Real_gfx11_gfx12<0x0c1>; | ||
defm V_CMPX_EQ_I32 : VOPCX_Real_gfx11_gfx12<0x0c2>; | ||
|
@@ -1787,6 +1917,7 @@ defm V_CMPX_NE_U64 : VOPCX_Real_gfx11_gfx12<0x0dd>; | |
defm V_CMPX_GE_U64 : VOPCX_Real_gfx11_gfx12<0x0de>; | ||
defm V_CMPX_T_U64 : VOPCX_Real_gfx11<0x0df>; | ||
defm V_CMPX_CLASS_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x0fd, "v_cmpx_class_f16">; | ||
defm V_CMPX_CLASS_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0fd, "v_cmpx_class_f16">; | ||
defm V_CMPX_CLASS_F32 : VOPCX_Real_gfx11_gfx12<0x0fe>; | ||
defm V_CMPX_CLASS_F64 : VOPCX_Real_gfx11_gfx12<0x0ff>; | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess the
1/*IsFake*/
bits is what the description refers to explaining that the profiles are going to be updated later to use actual t16 operands?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes. The _t16 will be updated in the following patches to use true16 profile