@@ -1114,10 +1114,13 @@ static int getV_CMPOpcode(CmpInst::Predicate P, unsigned Size,
1114
1114
if (Size == 16 && !ST.has16BitInsts ())
1115
1115
return -1 ;
1116
1116
1117
- const auto Select = [&](unsigned S16Opc, unsigned TrueS16Opc, unsigned S32Opc,
1117
+ const auto Select = [&](unsigned S16Opc, unsigned TrueS16Opc,
1118
+ unsigned FakeS16Opc, unsigned S32Opc,
1118
1119
unsigned S64Opc) {
1119
1120
if (Size == 16 )
1120
- return ST.hasTrue16BitInsts () ? TrueS16Opc : S16Opc;
1121
+ return ST.hasTrue16BitInsts ()
1122
+ ? ST.useRealTrue16Insts () ? TrueS16Opc : FakeS16Opc
1123
+ : S16Opc;
1121
1124
if (Size == 32 )
1122
1125
return S32Opc;
1123
1126
return S64Opc;
@@ -1128,83 +1131,109 @@ static int getV_CMPOpcode(CmpInst::Predicate P, unsigned Size,
1128
1131
llvm_unreachable (" Unknown condition code!" );
1129
1132
case CmpInst::ICMP_NE:
1130
1133
return Select (AMDGPU::V_CMP_NE_U16_e64, AMDGPU::V_CMP_NE_U16_t16_e64,
1131
- AMDGPU::V_CMP_NE_U32_e64, AMDGPU::V_CMP_NE_U64_e64);
1134
+ AMDGPU::V_CMP_NE_U16_fake16_e64, AMDGPU::V_CMP_NE_U32_e64,
1135
+ AMDGPU::V_CMP_NE_U64_e64);
1132
1136
case CmpInst::ICMP_EQ:
1133
1137
return Select (AMDGPU::V_CMP_EQ_U16_e64, AMDGPU::V_CMP_EQ_U16_t16_e64,
1134
- AMDGPU::V_CMP_EQ_U32_e64, AMDGPU::V_CMP_EQ_U64_e64);
1138
+ AMDGPU::V_CMP_EQ_U16_fake16_e64, AMDGPU::V_CMP_EQ_U32_e64,
1139
+ AMDGPU::V_CMP_EQ_U64_e64);
1135
1140
case CmpInst::ICMP_SGT:
1136
1141
return Select (AMDGPU::V_CMP_GT_I16_e64, AMDGPU::V_CMP_GT_I16_t16_e64,
1137
- AMDGPU::V_CMP_GT_I32_e64, AMDGPU::V_CMP_GT_I64_e64);
1142
+ AMDGPU::V_CMP_GT_I16_fake16_e64, AMDGPU::V_CMP_GT_I32_e64,
1143
+ AMDGPU::V_CMP_GT_I64_e64);
1138
1144
case CmpInst::ICMP_SGE:
1139
1145
return Select (AMDGPU::V_CMP_GE_I16_e64, AMDGPU::V_CMP_GE_I16_t16_e64,
1140
- AMDGPU::V_CMP_GE_I32_e64, AMDGPU::V_CMP_GE_I64_e64);
1146
+ AMDGPU::V_CMP_GE_I16_fake16_e64, AMDGPU::V_CMP_GE_I32_e64,
1147
+ AMDGPU::V_CMP_GE_I64_e64);
1141
1148
case CmpInst::ICMP_SLT:
1142
1149
return Select (AMDGPU::V_CMP_LT_I16_e64, AMDGPU::V_CMP_LT_I16_t16_e64,
1143
- AMDGPU::V_CMP_LT_I32_e64, AMDGPU::V_CMP_LT_I64_e64);
1150
+ AMDGPU::V_CMP_LT_I16_fake16_e64, AMDGPU::V_CMP_LT_I32_e64,
1151
+ AMDGPU::V_CMP_LT_I64_e64);
1144
1152
case CmpInst::ICMP_SLE:
1145
1153
return Select (AMDGPU::V_CMP_LE_I16_e64, AMDGPU::V_CMP_LE_I16_t16_e64,
1146
- AMDGPU::V_CMP_LE_I32_e64, AMDGPU::V_CMP_LE_I64_e64);
1154
+ AMDGPU::V_CMP_LE_I16_fake16_e64, AMDGPU::V_CMP_LE_I32_e64,
1155
+ AMDGPU::V_CMP_LE_I64_e64);
1147
1156
case CmpInst::ICMP_UGT:
1148
1157
return Select (AMDGPU::V_CMP_GT_U16_e64, AMDGPU::V_CMP_GT_U16_t16_e64,
1149
- AMDGPU::V_CMP_GT_U32_e64, AMDGPU::V_CMP_GT_U64_e64);
1158
+ AMDGPU::V_CMP_GT_U16_fake16_e64, AMDGPU::V_CMP_GT_U32_e64,
1159
+ AMDGPU::V_CMP_GT_U64_e64);
1150
1160
case CmpInst::ICMP_UGE:
1151
1161
return Select (AMDGPU::V_CMP_GE_U16_e64, AMDGPU::V_CMP_GE_U16_t16_e64,
1152
- AMDGPU::V_CMP_GE_U32_e64, AMDGPU::V_CMP_GE_U64_e64);
1162
+ AMDGPU::V_CMP_GE_U16_fake16_e64, AMDGPU::V_CMP_GE_U32_e64,
1163
+ AMDGPU::V_CMP_GE_U64_e64);
1153
1164
case CmpInst::ICMP_ULT:
1154
1165
return Select (AMDGPU::V_CMP_LT_U16_e64, AMDGPU::V_CMP_LT_U16_t16_e64,
1155
- AMDGPU::V_CMP_LT_U32_e64, AMDGPU::V_CMP_LT_U64_e64);
1166
+ AMDGPU::V_CMP_LT_U16_fake16_e64, AMDGPU::V_CMP_LT_U32_e64,
1167
+ AMDGPU::V_CMP_LT_U64_e64);
1156
1168
case CmpInst::ICMP_ULE:
1157
1169
return Select (AMDGPU::V_CMP_LE_U16_e64, AMDGPU::V_CMP_LE_U16_t16_e64,
1158
- AMDGPU::V_CMP_LE_U32_e64, AMDGPU::V_CMP_LE_U64_e64);
1170
+ AMDGPU::V_CMP_LE_U16_fake16_e64, AMDGPU::V_CMP_LE_U32_e64,
1171
+ AMDGPU::V_CMP_LE_U64_e64);
1159
1172
1160
1173
case CmpInst::FCMP_OEQ:
1161
1174
return Select (AMDGPU::V_CMP_EQ_F16_e64, AMDGPU::V_CMP_EQ_F16_t16_e64,
1162
- AMDGPU::V_CMP_EQ_F32_e64, AMDGPU::V_CMP_EQ_F64_e64);
1175
+ AMDGPU::V_CMP_EQ_F16_fake16_e64, AMDGPU::V_CMP_EQ_F32_e64,
1176
+ AMDGPU::V_CMP_EQ_F64_e64);
1163
1177
case CmpInst::FCMP_OGT:
1164
1178
return Select (AMDGPU::V_CMP_GT_F16_e64, AMDGPU::V_CMP_GT_F16_t16_e64,
1165
- AMDGPU::V_CMP_GT_F32_e64, AMDGPU::V_CMP_GT_F64_e64);
1179
+ AMDGPU::V_CMP_GT_F16_fake16_e64, AMDGPU::V_CMP_GT_F32_e64,
1180
+ AMDGPU::V_CMP_GT_F64_e64);
1166
1181
case CmpInst::FCMP_OGE:
1167
1182
return Select (AMDGPU::V_CMP_GE_F16_e64, AMDGPU::V_CMP_GE_F16_t16_e64,
1168
- AMDGPU::V_CMP_GE_F32_e64, AMDGPU::V_CMP_GE_F64_e64);
1183
+ AMDGPU::V_CMP_GE_F16_fake16_e64, AMDGPU::V_CMP_GE_F32_e64,
1184
+ AMDGPU::V_CMP_GE_F64_e64);
1169
1185
case CmpInst::FCMP_OLT:
1170
1186
return Select (AMDGPU::V_CMP_LT_F16_e64, AMDGPU::V_CMP_LT_F16_t16_e64,
1171
- AMDGPU::V_CMP_LT_F32_e64, AMDGPU::V_CMP_LT_F64_e64);
1187
+ AMDGPU::V_CMP_LT_F16_fake16_e64, AMDGPU::V_CMP_LT_F32_e64,
1188
+ AMDGPU::V_CMP_LT_F64_e64);
1172
1189
case CmpInst::FCMP_OLE:
1173
1190
return Select (AMDGPU::V_CMP_LE_F16_e64, AMDGPU::V_CMP_LE_F16_t16_e64,
1174
- AMDGPU::V_CMP_LE_F32_e64, AMDGPU::V_CMP_LE_F64_e64);
1191
+ AMDGPU::V_CMP_LE_F16_fake16_e64, AMDGPU::V_CMP_LE_F32_e64,
1192
+ AMDGPU::V_CMP_LE_F64_e64);
1175
1193
case CmpInst::FCMP_ONE:
1176
1194
return Select (AMDGPU::V_CMP_NEQ_F16_e64, AMDGPU::V_CMP_NEQ_F16_t16_e64,
1177
- AMDGPU::V_CMP_NEQ_F32_e64, AMDGPU::V_CMP_NEQ_F64_e64);
1195
+ AMDGPU::V_CMP_NEQ_F16_fake16_e64, AMDGPU::V_CMP_NEQ_F32_e64,
1196
+ AMDGPU::V_CMP_NEQ_F64_e64);
1178
1197
case CmpInst::FCMP_ORD:
1179
1198
return Select (AMDGPU::V_CMP_O_F16_e64, AMDGPU::V_CMP_O_F16_t16_e64,
1180
- AMDGPU::V_CMP_O_F32_e64, AMDGPU::V_CMP_O_F64_e64);
1199
+ AMDGPU::V_CMP_O_F16_fake16_e64, AMDGPU::V_CMP_O_F32_e64,
1200
+ AMDGPU::V_CMP_O_F64_e64);
1181
1201
case CmpInst::FCMP_UNO:
1182
1202
return Select (AMDGPU::V_CMP_U_F16_e64, AMDGPU::V_CMP_U_F16_t16_e64,
1183
- AMDGPU::V_CMP_U_F32_e64, AMDGPU::V_CMP_U_F64_e64);
1203
+ AMDGPU::V_CMP_U_F16_fake16_e64, AMDGPU::V_CMP_U_F32_e64,
1204
+ AMDGPU::V_CMP_U_F64_e64);
1184
1205
case CmpInst::FCMP_UEQ:
1185
1206
return Select (AMDGPU::V_CMP_NLG_F16_e64, AMDGPU::V_CMP_NLG_F16_t16_e64,
1186
- AMDGPU::V_CMP_NLG_F32_e64, AMDGPU::V_CMP_NLG_F64_e64);
1207
+ AMDGPU::V_CMP_NLG_F16_fake16_e64, AMDGPU::V_CMP_NLG_F32_e64,
1208
+ AMDGPU::V_CMP_NLG_F64_e64);
1187
1209
case CmpInst::FCMP_UGT:
1188
1210
return Select (AMDGPU::V_CMP_NLE_F16_e64, AMDGPU::V_CMP_NLE_F16_t16_e64,
1189
- AMDGPU::V_CMP_NLE_F32_e64, AMDGPU::V_CMP_NLE_F64_e64);
1211
+ AMDGPU::V_CMP_NLE_F16_fake16_e64, AMDGPU::V_CMP_NLE_F32_e64,
1212
+ AMDGPU::V_CMP_NLE_F64_e64);
1190
1213
case CmpInst::FCMP_UGE:
1191
1214
return Select (AMDGPU::V_CMP_NLT_F16_e64, AMDGPU::V_CMP_NLT_F16_t16_e64,
1192
- AMDGPU::V_CMP_NLT_F32_e64, AMDGPU::V_CMP_NLT_F64_e64);
1215
+ AMDGPU::V_CMP_NLT_F16_fake16_e64, AMDGPU::V_CMP_NLT_F32_e64,
1216
+ AMDGPU::V_CMP_NLT_F64_e64);
1193
1217
case CmpInst::FCMP_ULT:
1194
1218
return Select (AMDGPU::V_CMP_NGE_F16_e64, AMDGPU::V_CMP_NGE_F16_t16_e64,
1195
- AMDGPU::V_CMP_NGE_F32_e64, AMDGPU::V_CMP_NGE_F64_e64);
1219
+ AMDGPU::V_CMP_NGE_F16_fake16_e64, AMDGPU::V_CMP_NGE_F32_e64,
1220
+ AMDGPU::V_CMP_NGE_F64_e64);
1196
1221
case CmpInst::FCMP_ULE:
1197
1222
return Select (AMDGPU::V_CMP_NGT_F16_e64, AMDGPU::V_CMP_NGT_F16_t16_e64,
1198
- AMDGPU::V_CMP_NGT_F32_e64, AMDGPU::V_CMP_NGT_F64_e64);
1223
+ AMDGPU::V_CMP_NGT_F16_fake16_e64, AMDGPU::V_CMP_NGT_F32_e64,
1224
+ AMDGPU::V_CMP_NGT_F64_e64);
1199
1225
case CmpInst::FCMP_UNE:
1200
1226
return Select (AMDGPU::V_CMP_NEQ_F16_e64, AMDGPU::V_CMP_NEQ_F16_t16_e64,
1201
- AMDGPU::V_CMP_NEQ_F32_e64, AMDGPU::V_CMP_NEQ_F64_e64);
1227
+ AMDGPU::V_CMP_NEQ_F16_fake16_e64, AMDGPU::V_CMP_NEQ_F32_e64,
1228
+ AMDGPU::V_CMP_NEQ_F64_e64);
1202
1229
case CmpInst::FCMP_TRUE:
1203
1230
return Select (AMDGPU::V_CMP_TRU_F16_e64, AMDGPU::V_CMP_TRU_F16_t16_e64,
1204
- AMDGPU::V_CMP_TRU_F32_e64, AMDGPU::V_CMP_TRU_F64_e64);
1231
+ AMDGPU::V_CMP_TRU_F16_fake16_e64, AMDGPU::V_CMP_TRU_F32_e64,
1232
+ AMDGPU::V_CMP_TRU_F64_e64);
1205
1233
case CmpInst::FCMP_FALSE:
1206
1234
return Select (AMDGPU::V_CMP_F_F16_e64, AMDGPU::V_CMP_F_F16_t16_e64,
1207
- AMDGPU::V_CMP_F_F32_e64, AMDGPU::V_CMP_F_F64_e64);
1235
+ AMDGPU::V_CMP_F_F16_fake16_e64, AMDGPU::V_CMP_F_F32_e64,
1236
+ AMDGPU::V_CMP_F_F64_e64);
1208
1237
}
1209
1238
}
1210
1239
0 commit comments