@@ -1130,20 +1130,20 @@ defm : ICMP_Pattern <COND_SGE, V_CMP_GE_I64_e64, i64>;
11301130defm : ICMP_Pattern <COND_SLT, V_CMP_LT_I64_e64, i64>;
11311131defm : ICMP_Pattern <COND_SLE, V_CMP_LE_I64_e64, i64>;
11321132
1133- let OtherPredicates = [HasTrue16BitInsts] in {
1134- defm : ICMP_Pattern <COND_EQ, V_CMP_EQ_U16_t16_e64 , i16>;
1135- defm : ICMP_Pattern <COND_NE, V_CMP_NE_U16_t16_e64 , i16>;
1136- defm : ICMP_Pattern <COND_UGT, V_CMP_GT_U16_t16_e64 , i16>;
1137- defm : ICMP_Pattern <COND_UGE, V_CMP_GE_U16_t16_e64 , i16>;
1138- defm : ICMP_Pattern <COND_ULT, V_CMP_LT_U16_t16_e64 , i16>;
1139- defm : ICMP_Pattern <COND_ULE, V_CMP_LE_U16_t16_e64 , i16>;
1140- defm : ICMP_Pattern <COND_SGT, V_CMP_GT_I16_t16_e64 , i16>;
1141- defm : ICMP_Pattern <COND_SGE, V_CMP_GE_I16_t16_e64 , i16>;
1142- defm : ICMP_Pattern <COND_SLT, V_CMP_LT_I16_t16_e64 , i16>;
1143- defm : ICMP_Pattern <COND_SLE, V_CMP_LE_I16_t16_e64 , i16>;
1144- } // End OtherPredicates = [HasTrue16BitInsts]
1145-
1146- let OtherPredicates = [ NotHasTrue16BitInsts] in {
1133+ let True16Predicate = UseFakeTrue16Insts in {
1134+ defm : ICMP_Pattern <COND_EQ, V_CMP_EQ_U16_fake16_e64 , i16>;
1135+ defm : ICMP_Pattern <COND_NE, V_CMP_NE_U16_fake16_e64 , i16>;
1136+ defm : ICMP_Pattern <COND_UGT, V_CMP_GT_U16_fake16_e64 , i16>;
1137+ defm : ICMP_Pattern <COND_UGE, V_CMP_GE_U16_fake16_e64 , i16>;
1138+ defm : ICMP_Pattern <COND_ULT, V_CMP_LT_U16_fake16_e64 , i16>;
1139+ defm : ICMP_Pattern <COND_ULE, V_CMP_LE_U16_fake16_e64 , i16>;
1140+ defm : ICMP_Pattern <COND_SGT, V_CMP_GT_I16_fake16_e64 , i16>;
1141+ defm : ICMP_Pattern <COND_SGE, V_CMP_GE_I16_fake16_e64 , i16>;
1142+ defm : ICMP_Pattern <COND_SLT, V_CMP_LT_I16_fake16_e64 , i16>;
1143+ defm : ICMP_Pattern <COND_SLE, V_CMP_LE_I16_fake16_e64 , i16>;
1144+ } // End True16Predicate = UseFakeTrue16Insts
1145+
1146+ let True16Predicate = NotHasTrue16BitInsts in {
11471147defm : ICMP_Pattern <COND_EQ, V_CMP_EQ_U16_e64, i16>;
11481148defm : ICMP_Pattern <COND_NE, V_CMP_NE_U16_e64, i16>;
11491149defm : ICMP_Pattern <COND_UGT, V_CMP_GT_U16_e64, i16>;
@@ -1154,7 +1154,7 @@ defm : ICMP_Pattern <COND_SGT, V_CMP_GT_I16_e64, i16>;
11541154defm : ICMP_Pattern <COND_SGE, V_CMP_GE_I16_e64, i16>;
11551155defm : ICMP_Pattern <COND_SLT, V_CMP_LT_I16_e64, i16>;
11561156defm : ICMP_Pattern <COND_SLE, V_CMP_LE_I16_e64, i16>;
1157- } // End OtherPredicates = [ NotHasTrue16BitInsts]
1157+ } // End True16Predicate = NotHasTrue16BitInsts
11581158
11591159multiclass FCMP_Pattern <PatFrags cond, Instruction inst, ValueType vt> {
11601160 let WaveSizePredicate = isWave64 in
@@ -1215,25 +1215,25 @@ defm : FCMP_Pattern <COND_UGE, V_CMP_NLT_F64_e64, f64>;
12151215defm : FCMP_Pattern <COND_ULT, V_CMP_NGE_F64_e64, f64>;
12161216defm : FCMP_Pattern <COND_ULE, V_CMP_NGT_F64_e64, f64>;
12171217
1218- let OtherPredicates = [HasTrue16BitInsts] in {
1219- defm : FCMP_Pattern <COND_O, V_CMP_O_F16_t16_e64 , f16>;
1220- defm : FCMP_Pattern <COND_UO, V_CMP_U_F16_t16_e64 , f16>;
1221- defm : FCMP_Pattern <COND_OEQ, V_CMP_EQ_F16_t16_e64 , f16>;
1222- defm : FCMP_Pattern <COND_ONE, V_CMP_NEQ_F16_t16_e64 , f16>;
1223- defm : FCMP_Pattern <COND_OGT, V_CMP_GT_F16_t16_e64 , f16>;
1224- defm : FCMP_Pattern <COND_OGE, V_CMP_GE_F16_t16_e64 , f16>;
1225- defm : FCMP_Pattern <COND_OLT, V_CMP_LT_F16_t16_e64 , f16>;
1226- defm : FCMP_Pattern <COND_OLE, V_CMP_LE_F16_t16_e64 , f16>;
1227-
1228- defm : FCMP_Pattern <COND_UEQ, V_CMP_NLG_F16_t16_e64 , f16>;
1229- defm : FCMP_Pattern <COND_UNE, V_CMP_NEQ_F16_t16_e64 , f16>;
1230- defm : FCMP_Pattern <COND_UGT, V_CMP_NLE_F16_t16_e64 , f16>;
1231- defm : FCMP_Pattern <COND_UGE, V_CMP_NLT_F16_t16_e64 , f16>;
1232- defm : FCMP_Pattern <COND_ULT, V_CMP_NGE_F16_t16_e64 , f16>;
1233- defm : FCMP_Pattern <COND_ULE, V_CMP_NGT_F16_t16_e64 , f16>;
1234- } // End OtherPredicates = [HasTrue16BitInsts]
1235-
1236- let OtherPredicates = [ NotHasTrue16BitInsts] in {
1218+ let True16Predicate = UseFakeTrue16Insts in {
1219+ defm : FCMP_Pattern <COND_O, V_CMP_O_F16_fake16_e64 , f16>;
1220+ defm : FCMP_Pattern <COND_UO, V_CMP_U_F16_fake16_e64 , f16>;
1221+ defm : FCMP_Pattern <COND_OEQ, V_CMP_EQ_F16_fake16_e64 , f16>;
1222+ defm : FCMP_Pattern <COND_ONE, V_CMP_NEQ_F16_fake16_e64 , f16>;
1223+ defm : FCMP_Pattern <COND_OGT, V_CMP_GT_F16_fake16_e64 , f16>;
1224+ defm : FCMP_Pattern <COND_OGE, V_CMP_GE_F16_fake16_e64 , f16>;
1225+ defm : FCMP_Pattern <COND_OLT, V_CMP_LT_F16_fake16_e64 , f16>;
1226+ defm : FCMP_Pattern <COND_OLE, V_CMP_LE_F16_fake16_e64 , f16>;
1227+
1228+ defm : FCMP_Pattern <COND_UEQ, V_CMP_NLG_F16_fake16_e64 , f16>;
1229+ defm : FCMP_Pattern <COND_UNE, V_CMP_NEQ_F16_fake16_e64 , f16>;
1230+ defm : FCMP_Pattern <COND_UGT, V_CMP_NLE_F16_fake16_e64 , f16>;
1231+ defm : FCMP_Pattern <COND_UGE, V_CMP_NLT_F16_fake16_e64 , f16>;
1232+ defm : FCMP_Pattern <COND_ULT, V_CMP_NGE_F16_fake16_e64 , f16>;
1233+ defm : FCMP_Pattern <COND_ULE, V_CMP_NGT_F16_fake16_e64 , f16>;
1234+ } // End True16Predicate = UseFakeTrue16Insts
1235+
1236+ let True16Predicate = NotHasTrue16BitInsts in {
12371237defm : FCMP_Pattern <COND_O, V_CMP_O_F16_e64, f16>;
12381238defm : FCMP_Pattern <COND_UO, V_CMP_U_F16_e64, f16>;
12391239defm : FCMP_Pattern <COND_OEQ, V_CMP_EQ_F16_e64, f16>;
@@ -1249,7 +1249,7 @@ defm : FCMP_Pattern <COND_UGT, V_CMP_NLE_F16_e64, f16>;
12491249defm : FCMP_Pattern <COND_UGE, V_CMP_NLT_F16_e64, f16>;
12501250defm : FCMP_Pattern <COND_ULT, V_CMP_NGE_F16_e64, f16>;
12511251defm : FCMP_Pattern <COND_ULE, V_CMP_NGT_F16_e64, f16>;
1252- } // End OtherPredicates = [ NotHasTrue16BitInsts]
1252+ } // End True16Predicate = NotHasTrue16BitInsts
12531253
12541254//===----------------------------------------------------------------------===//
12551255// DPP Encodings
@@ -1707,23 +1707,6 @@ multiclass VOPCX_Real_t16_gfx11_gfx12<bits<9> op, string asm_name,
17071707 VOPCX_Real_t16<GFX11Gen, op, asm_name, OpName, pseudo_mnemonic>,
17081708 VOPCX_Real_t16<GFX12Gen, op, asm_name, OpName, pseudo_mnemonic>;
17091709
1710- defm V_CMP_F_F16_t16 : VOPC_Real_t16_gfx11<0x000, "v_cmp_f_f16">;
1711- defm V_CMP_LT_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x001, "v_cmp_lt_f16">;
1712- defm V_CMP_EQ_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x002, "v_cmp_eq_f16">;
1713- defm V_CMP_LE_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x003, "v_cmp_le_f16">;
1714- defm V_CMP_GT_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x004, "v_cmp_gt_f16">;
1715- defm V_CMP_LG_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x005, "v_cmp_lg_f16">;
1716- defm V_CMP_GE_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x006, "v_cmp_ge_f16">;
1717- defm V_CMP_O_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x007, "v_cmp_o_f16">;
1718- defm V_CMP_U_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x008, "v_cmp_u_f16">;
1719- defm V_CMP_NGE_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x009, "v_cmp_nge_f16">;
1720- defm V_CMP_NLG_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x00a, "v_cmp_nlg_f16">;
1721- defm V_CMP_NGT_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x00b, "v_cmp_ngt_f16">;
1722- defm V_CMP_NLE_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x00c, "v_cmp_nle_f16">;
1723- defm V_CMP_NEQ_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x00d, "v_cmp_neq_f16">;
1724- defm V_CMP_NLT_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x00e, "v_cmp_nlt_f16">;
1725- defm V_CMP_T_F16_t16 : VOPC_Real_t16_gfx11<0x00f, "v_cmp_t_f16", "V_CMP_TRU_F16_t16", "v_cmp_tru_f16">;
1726-
17271710defm V_CMP_F_F16_fake16 : VOPC_Real_t16_gfx11<0x000, "v_cmp_f_f16">;
17281711defm V_CMP_LT_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x001, "v_cmp_lt_f16">;
17291712defm V_CMP_EQ_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x002, "v_cmp_eq_f16">;
@@ -1759,19 +1742,6 @@ defm V_CMP_NLT_F32 : VOPC_Real_gfx11_gfx12<0x01e>;
17591742defm V_CMP_T_F32 : VOPC_Real_with_name_gfx11<0x01f, "V_CMP_TRU_F32", "v_cmp_t_f32">;
17601743defm V_CMP_T_F64 : VOPC_Real_with_name_gfx11<0x02f, "V_CMP_TRU_F64", "v_cmp_t_f64">;
17611744
1762- defm V_CMP_LT_I16_t16 : VOPC_Real_t16_gfx11_gfx12<0x031, "v_cmp_lt_i16">;
1763- defm V_CMP_EQ_I16_t16 : VOPC_Real_t16_gfx11_gfx12<0x032, "v_cmp_eq_i16">;
1764- defm V_CMP_LE_I16_t16 : VOPC_Real_t16_gfx11_gfx12<0x033, "v_cmp_le_i16">;
1765- defm V_CMP_GT_I16_t16 : VOPC_Real_t16_gfx11_gfx12<0x034, "v_cmp_gt_i16">;
1766- defm V_CMP_NE_I16_t16 : VOPC_Real_t16_gfx11_gfx12<0x035, "v_cmp_ne_i16">;
1767- defm V_CMP_GE_I16_t16 : VOPC_Real_t16_gfx11_gfx12<0x036, "v_cmp_ge_i16">;
1768- defm V_CMP_LT_U16_t16 : VOPC_Real_t16_gfx11_gfx12<0x039, "v_cmp_lt_u16">;
1769- defm V_CMP_EQ_U16_t16 : VOPC_Real_t16_gfx11_gfx12<0x03a, "v_cmp_eq_u16">;
1770- defm V_CMP_LE_U16_t16 : VOPC_Real_t16_gfx11_gfx12<0x03b, "v_cmp_le_u16">;
1771- defm V_CMP_GT_U16_t16 : VOPC_Real_t16_gfx11_gfx12<0x03c, "v_cmp_gt_u16">;
1772- defm V_CMP_NE_U16_t16 : VOPC_Real_t16_gfx11_gfx12<0x03d, "v_cmp_ne_u16">;
1773- defm V_CMP_GE_U16_t16 : VOPC_Real_t16_gfx11_gfx12<0x03e, "v_cmp_ge_u16">;
1774-
17751745defm V_CMP_LT_I16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x031, "v_cmp_lt_i16">;
17761746defm V_CMP_EQ_I16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x032, "v_cmp_eq_i16">;
17771747defm V_CMP_LE_I16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x033, "v_cmp_le_i16">;
@@ -1819,28 +1789,10 @@ defm V_CMP_NE_U64 : VOPC_Real_gfx11_gfx12<0x05d>;
18191789defm V_CMP_GE_U64 : VOPC_Real_gfx11_gfx12<0x05e>;
18201790defm V_CMP_T_U64 : VOPC_Real_gfx11<0x05f>;
18211791
1822- defm V_CMP_CLASS_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x07d, "v_cmp_class_f16">;
18231792defm V_CMP_CLASS_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x07d, "v_cmp_class_f16">;
18241793defm V_CMP_CLASS_F32 : VOPC_Real_gfx11_gfx12<0x07e>;
18251794defm V_CMP_CLASS_F64 : VOPC_Real_gfx11_gfx12<0x07f>;
18261795
1827- defm V_CMPX_F_F16_t16 : VOPCX_Real_t16_gfx11<0x080, "v_cmpx_f_f16">;
1828- defm V_CMPX_LT_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x081, "v_cmpx_lt_f16">;
1829- defm V_CMPX_EQ_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x082, "v_cmpx_eq_f16">;
1830- defm V_CMPX_LE_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x083, "v_cmpx_le_f16">;
1831- defm V_CMPX_GT_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x084, "v_cmpx_gt_f16">;
1832- defm V_CMPX_LG_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x085, "v_cmpx_lg_f16">;
1833- defm V_CMPX_GE_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x086, "v_cmpx_ge_f16">;
1834- defm V_CMPX_O_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x087, "v_cmpx_o_f16">;
1835- defm V_CMPX_U_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x088, "v_cmpx_u_f16">;
1836- defm V_CMPX_NGE_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x089, "v_cmpx_nge_f16">;
1837- defm V_CMPX_NLG_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x08a, "v_cmpx_nlg_f16">;
1838- defm V_CMPX_NGT_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x08b, "v_cmpx_ngt_f16">;
1839- defm V_CMPX_NLE_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x08c, "v_cmpx_nle_f16">;
1840- defm V_CMPX_NEQ_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x08d, "v_cmpx_neq_f16">;
1841- defm V_CMPX_NLT_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x08e, "v_cmpx_nlt_f16">;
1842- 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">;
1843-
18441796defm V_CMPX_F_F16_fake16 : VOPCX_Real_t16_gfx11<0x080, "v_cmpx_f_f16">;
18451797defm V_CMPX_LT_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x081, "v_cmpx_lt_f16">;
18461798defm V_CMPX_EQ_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x082, "v_cmpx_eq_f16">;
@@ -1892,19 +1844,6 @@ defm V_CMPX_NEQ_F64 : VOPCX_Real_gfx11_gfx12<0x0ad>;
18921844defm V_CMPX_NLT_F64 : VOPCX_Real_gfx11_gfx12<0x0ae>;
18931845defm V_CMPX_T_F64 : VOPCX_Real_with_name_gfx11<0x0af, "V_CMPX_TRU_F64", "v_cmpx_t_f64">;
18941846
1895- defm V_CMPX_LT_I16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x0b1, "v_cmpx_lt_i16">;
1896- defm V_CMPX_EQ_I16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x0b2, "v_cmpx_eq_i16">;
1897- defm V_CMPX_LE_I16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x0b3, "v_cmpx_le_i16">;
1898- defm V_CMPX_GT_I16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x0b4, "v_cmpx_gt_i16">;
1899- defm V_CMPX_NE_I16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x0b5, "v_cmpx_ne_i16">;
1900- defm V_CMPX_GE_I16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x0b6, "v_cmpx_ge_i16">;
1901- defm V_CMPX_LT_U16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x0b9, "v_cmpx_lt_u16">;
1902- defm V_CMPX_EQ_U16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x0ba, "v_cmpx_eq_u16">;
1903- defm V_CMPX_LE_U16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x0bb, "v_cmpx_le_u16">;
1904- defm V_CMPX_GT_U16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x0bc, "v_cmpx_gt_u16">;
1905- defm V_CMPX_NE_U16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x0bd, "v_cmpx_ne_u16">;
1906- defm V_CMPX_GE_U16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x0be, "v_cmpx_ge_u16">;
1907-
19081847defm V_CMPX_LT_I16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0b1, "v_cmpx_lt_i16">;
19091848defm V_CMPX_EQ_I16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0b2, "v_cmpx_eq_i16">;
19101849defm V_CMPX_LE_I16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0b3, "v_cmpx_le_i16">;
@@ -1951,7 +1890,6 @@ defm V_CMPX_GT_U64 : VOPCX_Real_gfx11_gfx12<0x0dc>;
19511890defm V_CMPX_NE_U64 : VOPCX_Real_gfx11_gfx12<0x0dd>;
19521891defm V_CMPX_GE_U64 : VOPCX_Real_gfx11_gfx12<0x0de>;
19531892defm V_CMPX_T_U64 : VOPCX_Real_gfx11<0x0df>;
1954- defm V_CMPX_CLASS_F16_t16 : VOPCX_Real_t16_gfx11_gfx12<0x0fd, "v_cmpx_class_f16">;
19551893defm V_CMPX_CLASS_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0fd, "v_cmpx_class_f16">;
19561894defm V_CMPX_CLASS_F32 : VOPCX_Real_gfx11_gfx12<0x0fe>;
19571895defm V_CMPX_CLASS_F64 : VOPCX_Real_gfx11_gfx12<0x0ff>;
0 commit comments