@@ -1130,20 +1130,20 @@ defm : ICMP_Pattern <COND_SGE, V_CMP_GE_I64_e64, i64>;
1130
1130
defm : ICMP_Pattern <COND_SLT, V_CMP_LT_I64_e64, i64>;
1131
1131
defm : ICMP_Pattern <COND_SLE, V_CMP_LE_I64_e64, i64>;
1132
1132
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 {
1147
1147
defm : ICMP_Pattern <COND_EQ, V_CMP_EQ_U16_e64, i16>;
1148
1148
defm : ICMP_Pattern <COND_NE, V_CMP_NE_U16_e64, i16>;
1149
1149
defm : 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>;
1154
1154
defm : ICMP_Pattern <COND_SGE, V_CMP_GE_I16_e64, i16>;
1155
1155
defm : ICMP_Pattern <COND_SLT, V_CMP_LT_I16_e64, i16>;
1156
1156
defm : ICMP_Pattern <COND_SLE, V_CMP_LE_I16_e64, i16>;
1157
- } // End OtherPredicates = [ NotHasTrue16BitInsts]
1157
+ } // End True16Predicate = NotHasTrue16BitInsts
1158
1158
1159
1159
multiclass FCMP_Pattern <PatFrags cond, Instruction inst, ValueType vt> {
1160
1160
let WaveSizePredicate = isWave64 in
@@ -1215,25 +1215,25 @@ defm : FCMP_Pattern <COND_UGE, V_CMP_NLT_F64_e64, f64>;
1215
1215
defm : FCMP_Pattern <COND_ULT, V_CMP_NGE_F64_e64, f64>;
1216
1216
defm : FCMP_Pattern <COND_ULE, V_CMP_NGT_F64_e64, f64>;
1217
1217
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 {
1237
1237
defm : FCMP_Pattern <COND_O, V_CMP_O_F16_e64, f16>;
1238
1238
defm : FCMP_Pattern <COND_UO, V_CMP_U_F16_e64, f16>;
1239
1239
defm : 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>;
1249
1249
defm : FCMP_Pattern <COND_UGE, V_CMP_NLT_F16_e64, f16>;
1250
1250
defm : FCMP_Pattern <COND_ULT, V_CMP_NGE_F16_e64, f16>;
1251
1251
defm : FCMP_Pattern <COND_ULE, V_CMP_NGT_F16_e64, f16>;
1252
- } // End OtherPredicates = [ NotHasTrue16BitInsts]
1252
+ } // End True16Predicate = NotHasTrue16BitInsts
1253
1253
1254
1254
//===----------------------------------------------------------------------===//
1255
1255
// DPP Encodings
@@ -1707,23 +1707,6 @@ multiclass VOPCX_Real_t16_gfx11_gfx12<bits<9> op, string asm_name,
1707
1707
VOPCX_Real_t16<GFX11Gen, op, asm_name, OpName, pseudo_mnemonic>,
1708
1708
VOPCX_Real_t16<GFX12Gen, op, asm_name, OpName, pseudo_mnemonic>;
1709
1709
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
-
1727
1710
defm V_CMP_F_F16_fake16 : VOPC_Real_t16_gfx11<0x000, "v_cmp_f_f16">;
1728
1711
defm V_CMP_LT_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x001, "v_cmp_lt_f16">;
1729
1712
defm 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>;
1759
1742
defm V_CMP_T_F32 : VOPC_Real_with_name_gfx11<0x01f, "V_CMP_TRU_F32", "v_cmp_t_f32">;
1760
1743
defm V_CMP_T_F64 : VOPC_Real_with_name_gfx11<0x02f, "V_CMP_TRU_F64", "v_cmp_t_f64">;
1761
1744
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
-
1775
1745
defm V_CMP_LT_I16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x031, "v_cmp_lt_i16">;
1776
1746
defm V_CMP_EQ_I16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x032, "v_cmp_eq_i16">;
1777
1747
defm 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>;
1819
1789
defm V_CMP_GE_U64 : VOPC_Real_gfx11_gfx12<0x05e>;
1820
1790
defm V_CMP_T_U64 : VOPC_Real_gfx11<0x05f>;
1821
1791
1822
- defm V_CMP_CLASS_F16_t16 : VOPC_Real_t16_gfx11_gfx12<0x07d, "v_cmp_class_f16">;
1823
1792
defm V_CMP_CLASS_F16_fake16 : VOPC_Real_t16_gfx11_gfx12<0x07d, "v_cmp_class_f16">;
1824
1793
defm V_CMP_CLASS_F32 : VOPC_Real_gfx11_gfx12<0x07e>;
1825
1794
defm V_CMP_CLASS_F64 : VOPC_Real_gfx11_gfx12<0x07f>;
1826
1795
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
-
1844
1796
defm V_CMPX_F_F16_fake16 : VOPCX_Real_t16_gfx11<0x080, "v_cmpx_f_f16">;
1845
1797
defm V_CMPX_LT_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x081, "v_cmpx_lt_f16">;
1846
1798
defm 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>;
1892
1844
defm V_CMPX_NLT_F64 : VOPCX_Real_gfx11_gfx12<0x0ae>;
1893
1845
defm V_CMPX_T_F64 : VOPCX_Real_with_name_gfx11<0x0af, "V_CMPX_TRU_F64", "v_cmpx_t_f64">;
1894
1846
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
-
1908
1847
defm V_CMPX_LT_I16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0b1, "v_cmpx_lt_i16">;
1909
1848
defm V_CMPX_EQ_I16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0b2, "v_cmpx_eq_i16">;
1910
1849
defm 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>;
1951
1890
defm V_CMPX_NE_U64 : VOPCX_Real_gfx11_gfx12<0x0dd>;
1952
1891
defm V_CMPX_GE_U64 : VOPCX_Real_gfx11_gfx12<0x0de>;
1953
1892
defm 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">;
1955
1893
defm V_CMPX_CLASS_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0fd, "v_cmpx_class_f16">;
1956
1894
defm V_CMPX_CLASS_F32 : VOPCX_Real_gfx11_gfx12<0x0fe>;
1957
1895
defm V_CMPX_CLASS_F64 : VOPCX_Real_gfx11_gfx12<0x0ff>;
0 commit comments