1083 if (BuiltinID == Builtin::BI__builtin_cpu_supports)
1085 if (BuiltinID == Builtin::BI__builtin_cpu_init)
1087 if (BuiltinID == Builtin::BI__builtin_cpu_is)
1094 unsigned ICEArguments = 0;
1102 if (BuiltinID == RISCVVector::BI__builtin_rvv_vget_v ||
1103 BuiltinID == RISCVVector::BI__builtin_rvv_vset_v)
1104 ICEArguments = 1 << 1;
1109 if (BuiltinID == RISCV::BI__builtin_riscv_ntl_load)
1110 ICEArguments |= (1 << 1);
1111 if (BuiltinID == RISCV::BI__builtin_riscv_ntl_store)
1112 ICEArguments |= (1 << 2);
1114 for (
unsigned i = 0, e = E->
getNumArgs(); i != e; i++) {
1119 Ops.push_back(AggValue);
1125 Intrinsic::ID ID = Intrinsic::not_intrinsic;
1126 int PolicyAttrs = 0;
1127 bool IsMasked =
false;
1129 unsigned SegInstSEW = 8;
1131 unsigned TWiden = 0;
1135 switch (BuiltinID) {
1136 default: llvm_unreachable(
"unexpected builtin ID");
1137 case RISCV::BI__builtin_riscv_orc_b_32:
1138 case RISCV::BI__builtin_riscv_orc_b_64:
1139 case RISCV::BI__builtin_riscv_clmul_32:
1140 case RISCV::BI__builtin_riscv_clmul_64:
1141 case RISCV::BI__builtin_riscv_clmulh_32:
1142 case RISCV::BI__builtin_riscv_clmulh_64:
1143 case RISCV::BI__builtin_riscv_clmulr_32:
1144 case RISCV::BI__builtin_riscv_clmulr_64:
1145 case RISCV::BI__builtin_riscv_xperm4_32:
1146 case RISCV::BI__builtin_riscv_xperm4_64:
1147 case RISCV::BI__builtin_riscv_xperm8_32:
1148 case RISCV::BI__builtin_riscv_xperm8_64:
1149 case RISCV::BI__builtin_riscv_brev8_32:
1150 case RISCV::BI__builtin_riscv_brev8_64:
1151 case RISCV::BI__builtin_riscv_zip_32:
1152 case RISCV::BI__builtin_riscv_unzip_32: {
1153 switch (BuiltinID) {
1154 default: llvm_unreachable(
"unexpected builtin ID");
1156 case RISCV::BI__builtin_riscv_orc_b_32:
1157 case RISCV::BI__builtin_riscv_orc_b_64:
1158 ID = Intrinsic::riscv_orc_b;
1162 case RISCV::BI__builtin_riscv_clmul_32:
1163 case RISCV::BI__builtin_riscv_clmul_64:
1164 ID = Intrinsic::clmul;
1166 case RISCV::BI__builtin_riscv_clmulh_32:
1167 case RISCV::BI__builtin_riscv_clmulh_64:
1168 ID = Intrinsic::riscv_clmulh;
1170 case RISCV::BI__builtin_riscv_clmulr_32:
1171 case RISCV::BI__builtin_riscv_clmulr_64:
1172 ID = Intrinsic::riscv_clmulr;
1176 case RISCV::BI__builtin_riscv_xperm8_32:
1177 case RISCV::BI__builtin_riscv_xperm8_64:
1178 ID = Intrinsic::riscv_xperm8;
1180 case RISCV::BI__builtin_riscv_xperm4_32:
1181 case RISCV::BI__builtin_riscv_xperm4_64:
1182 ID = Intrinsic::riscv_xperm4;
1186 case RISCV::BI__builtin_riscv_brev8_32:
1187 case RISCV::BI__builtin_riscv_brev8_64:
1188 ID = Intrinsic::riscv_brev8;
1190 case RISCV::BI__builtin_riscv_zip_32:
1191 ID = Intrinsic::riscv_zip;
1193 case RISCV::BI__builtin_riscv_unzip_32:
1194 ID = Intrinsic::riscv_unzip;
1198 IntrinsicTypes = {ResultType};
1203 case RISCV::BI__builtin_riscv_paadd_i8x4:
1204 case RISCV::BI__builtin_riscv_paadd_i16x2:
1205 case RISCV::BI__builtin_riscv_paadd_i8x8:
1206 case RISCV::BI__builtin_riscv_paadd_i16x4:
1207 case RISCV::BI__builtin_riscv_paadd_i32x2:
1208 case RISCV::BI__builtin_riscv_paaddu_u8x4:
1209 case RISCV::BI__builtin_riscv_paaddu_u16x2:
1210 case RISCV::BI__builtin_riscv_paaddu_u8x8:
1211 case RISCV::BI__builtin_riscv_paaddu_u16x4:
1212 case RISCV::BI__builtin_riscv_paaddu_u32x2:
1213 case RISCV::BI__builtin_riscv_pasub_i8x4:
1214 case RISCV::BI__builtin_riscv_pasub_i16x2:
1215 case RISCV::BI__builtin_riscv_pasub_i8x8:
1216 case RISCV::BI__builtin_riscv_pasub_i16x4:
1217 case RISCV::BI__builtin_riscv_pasub_i32x2:
1218 case RISCV::BI__builtin_riscv_pasubu_u8x4:
1219 case RISCV::BI__builtin_riscv_pasubu_u16x2:
1220 case RISCV::BI__builtin_riscv_pasubu_u8x8:
1221 case RISCV::BI__builtin_riscv_pasubu_u16x4:
1222 case RISCV::BI__builtin_riscv_pasubu_u32x2:
1224 case RISCV::BI__builtin_riscv_pas_x_i16x2:
1225 case RISCV::BI__builtin_riscv_pas_x_i16x4:
1226 case RISCV::BI__builtin_riscv_pas_x_i32x2:
1227 case RISCV::BI__builtin_riscv_psa_x_i16x2:
1228 case RISCV::BI__builtin_riscv_psa_x_i16x4:
1229 case RISCV::BI__builtin_riscv_psa_x_i32x2:
1230 case RISCV::BI__builtin_riscv_psas_x_i16x2:
1231 case RISCV::BI__builtin_riscv_psas_x_i16x4:
1232 case RISCV::BI__builtin_riscv_psas_x_i32x2:
1233 case RISCV::BI__builtin_riscv_pssa_x_i16x2:
1234 case RISCV::BI__builtin_riscv_pssa_x_i16x4:
1235 case RISCV::BI__builtin_riscv_pssa_x_i32x2:
1236 case RISCV::BI__builtin_riscv_paas_x_i16x2:
1237 case RISCV::BI__builtin_riscv_paas_x_i16x4:
1238 case RISCV::BI__builtin_riscv_paas_x_i32x2:
1239 case RISCV::BI__builtin_riscv_pasa_x_i16x2:
1240 case RISCV::BI__builtin_riscv_pasa_x_i16x4:
1241 case RISCV::BI__builtin_riscv_pasa_x_i32x2:
1243 case RISCV::BI__builtin_riscv_pabd_i8x4:
1244 case RISCV::BI__builtin_riscv_pabd_i16x2:
1245 case RISCV::BI__builtin_riscv_pabd_i8x8:
1246 case RISCV::BI__builtin_riscv_pabd_i16x4:
1247 case RISCV::BI__builtin_riscv_pabdu_u8x4:
1248 case RISCV::BI__builtin_riscv_pabdu_u16x2:
1249 case RISCV::BI__builtin_riscv_pabdu_u8x8:
1250 case RISCV::BI__builtin_riscv_pabdu_u16x4:
1252 case RISCV::BI__builtin_riscv_pmerge_u8x4:
1253 case RISCV::BI__builtin_riscv_pmerge_i8x4:
1254 case RISCV::BI__builtin_riscv_pmerge_u16x2:
1255 case RISCV::BI__builtin_riscv_pmerge_i16x2:
1256 case RISCV::BI__builtin_riscv_pmerge_u8x8:
1257 case RISCV::BI__builtin_riscv_pmerge_i8x8:
1258 case RISCV::BI__builtin_riscv_pmerge_u16x4:
1259 case RISCV::BI__builtin_riscv_pmerge_i16x4:
1260 case RISCV::BI__builtin_riscv_pmerge_u32x2:
1261 case RISCV::BI__builtin_riscv_pmerge_i32x2:
1263 case RISCV::BI__builtin_riscv_pmulh_i16x2:
1264 case RISCV::BI__builtin_riscv_pmulh_i16x4:
1265 case RISCV::BI__builtin_riscv_pmulh_i32x2:
1266 case RISCV::BI__builtin_riscv_pmulhr_i16x2:
1267 case RISCV::BI__builtin_riscv_pmulhr_i16x4:
1268 case RISCV::BI__builtin_riscv_pmulhr_i32x2:
1269 case RISCV::BI__builtin_riscv_pmulhu_u16x2:
1270 case RISCV::BI__builtin_riscv_pmulhu_u16x4:
1271 case RISCV::BI__builtin_riscv_pmulhu_u32x2:
1272 case RISCV::BI__builtin_riscv_pmulhru_u16x2:
1273 case RISCV::BI__builtin_riscv_pmulhru_u16x4:
1274 case RISCV::BI__builtin_riscv_pmulhru_u32x2:
1275 case RISCV::BI__builtin_riscv_pmulhsu_i16x2:
1276 case RISCV::BI__builtin_riscv_pmulhsu_i16x4:
1277 case RISCV::BI__builtin_riscv_pmulhsu_i32x2:
1278 case RISCV::BI__builtin_riscv_pmulhrsu_i16x2:
1279 case RISCV::BI__builtin_riscv_pmulhrsu_i16x4:
1280 case RISCV::BI__builtin_riscv_pmulhrsu_i32x2:
1282 case RISCV::BI__builtin_riscv_pmhacc_i16x2:
1283 case RISCV::BI__builtin_riscv_pmhacc_i16x4:
1284 case RISCV::BI__builtin_riscv_pmhacc_i32x2:
1285 case RISCV::BI__builtin_riscv_pmhracc_i16x2:
1286 case RISCV::BI__builtin_riscv_pmhracc_i16x4:
1287 case RISCV::BI__builtin_riscv_pmhracc_i32x2:
1288 case RISCV::BI__builtin_riscv_pmhaccu_u16x2:
1289 case RISCV::BI__builtin_riscv_pmhaccu_u16x4:
1290 case RISCV::BI__builtin_riscv_pmhaccu_u32x2:
1291 case RISCV::BI__builtin_riscv_pmhraccu_u16x2:
1292 case RISCV::BI__builtin_riscv_pmhraccu_u16x4:
1293 case RISCV::BI__builtin_riscv_pmhraccu_u32x2:
1294 case RISCV::BI__builtin_riscv_pmhaccsu_i16x2:
1295 case RISCV::BI__builtin_riscv_pmhaccsu_i16x4:
1296 case RISCV::BI__builtin_riscv_pmhaccsu_i32x2:
1297 case RISCV::BI__builtin_riscv_pmhraccsu_i16x2:
1298 case RISCV::BI__builtin_riscv_pmhraccsu_i16x4:
1299 case RISCV::BI__builtin_riscv_pmhraccsu_i32x2:
1301 case RISCV::BI__builtin_riscv_psabs_i8x4:
1302 case RISCV::BI__builtin_riscv_psabs_i16x2:
1303 case RISCV::BI__builtin_riscv_psabs_i8x8:
1304 case RISCV::BI__builtin_riscv_psabs_i16x4:
1306 case RISCV::BI__builtin_riscv_pmulq_i16x2:
1307 case RISCV::BI__builtin_riscv_pmulqr_i16x2:
1308 case RISCV::BI__builtin_riscv_pmulq_i16x4:
1309 case RISCV::BI__builtin_riscv_pmulqr_i16x4:
1310 case RISCV::BI__builtin_riscv_pmulq_i32x2:
1311 case RISCV::BI__builtin_riscv_pmulqr_i32x2:
1312 case RISCV::BI__builtin_riscv_psext_b_i16x2:
1313 case RISCV::BI__builtin_riscv_pzext_b_u16x2:
1314 case RISCV::BI__builtin_riscv_psext_b_i16x4:
1315 case RISCV::BI__builtin_riscv_psext_b_i32x2:
1316 case RISCV::BI__builtin_riscv_psext_h_i32x2:
1317 case RISCV::BI__builtin_riscv_pzext_b_u16x4:
1318 case RISCV::BI__builtin_riscv_pzext_h_u32x2:
1320 case RISCV::BI__builtin_riscv_pssha_s_i16x2:
1321 case RISCV::BI__builtin_riscv_psshar_s_i16x2:
1322 case RISCV::BI__builtin_riscv_psshl_s_u16x2:
1323 case RISCV::BI__builtin_riscv_psshlr_s_u16x2:
1324 case RISCV::BI__builtin_riscv_pssha_s_i16x4:
1325 case RISCV::BI__builtin_riscv_pssha_s_i32x2:
1326 case RISCV::BI__builtin_riscv_psshar_s_i16x4:
1327 case RISCV::BI__builtin_riscv_psshar_s_i32x2:
1328 case RISCV::BI__builtin_riscv_psshl_s_u16x4:
1329 case RISCV::BI__builtin_riscv_psshl_s_u32x2:
1330 case RISCV::BI__builtin_riscv_psshlr_s_u16x4:
1331 case RISCV::BI__builtin_riscv_psshlr_s_u32x2: {
1332 switch (BuiltinID) {
1334 llvm_unreachable(
"unexpected builtin ID");
1335 case RISCV::BI__builtin_riscv_paadd_i8x4:
1336 case RISCV::BI__builtin_riscv_paadd_i16x2:
1337 case RISCV::BI__builtin_riscv_paadd_i8x8:
1338 case RISCV::BI__builtin_riscv_paadd_i16x4:
1339 case RISCV::BI__builtin_riscv_paadd_i32x2:
1340 ID = Intrinsic::riscv_paadd;
1342 case RISCV::BI__builtin_riscv_paaddu_u8x4:
1343 case RISCV::BI__builtin_riscv_paaddu_u16x2:
1344 case RISCV::BI__builtin_riscv_paaddu_u8x8:
1345 case RISCV::BI__builtin_riscv_paaddu_u16x4:
1346 case RISCV::BI__builtin_riscv_paaddu_u32x2:
1347 ID = Intrinsic::riscv_paaddu;
1349 case RISCV::BI__builtin_riscv_pasub_i8x4:
1350 case RISCV::BI__builtin_riscv_pasub_i16x2:
1351 case RISCV::BI__builtin_riscv_pasub_i8x8:
1352 case RISCV::BI__builtin_riscv_pasub_i16x4:
1353 case RISCV::BI__builtin_riscv_pasub_i32x2:
1354 ID = Intrinsic::riscv_pasub;
1356 case RISCV::BI__builtin_riscv_pasubu_u8x4:
1357 case RISCV::BI__builtin_riscv_pasubu_u16x2:
1358 case RISCV::BI__builtin_riscv_pasubu_u8x8:
1359 case RISCV::BI__builtin_riscv_pasubu_u16x4:
1360 case RISCV::BI__builtin_riscv_pasubu_u32x2:
1361 ID = Intrinsic::riscv_pasubu;
1363 case RISCV::BI__builtin_riscv_pas_x_i16x2:
1364 case RISCV::BI__builtin_riscv_pas_x_i16x4:
1365 case RISCV::BI__builtin_riscv_pas_x_i32x2:
1366 ID = Intrinsic::riscv_pas;
1368 case RISCV::BI__builtin_riscv_psa_x_i16x2:
1369 case RISCV::BI__builtin_riscv_psa_x_i16x4:
1370 case RISCV::BI__builtin_riscv_psa_x_i32x2:
1371 ID = Intrinsic::riscv_psa;
1373 case RISCV::BI__builtin_riscv_psas_x_i16x2:
1374 case RISCV::BI__builtin_riscv_psas_x_i16x4:
1375 case RISCV::BI__builtin_riscv_psas_x_i32x2:
1376 ID = Intrinsic::riscv_psas;
1378 case RISCV::BI__builtin_riscv_pssa_x_i16x2:
1379 case RISCV::BI__builtin_riscv_pssa_x_i16x4:
1380 case RISCV::BI__builtin_riscv_pssa_x_i32x2:
1381 ID = Intrinsic::riscv_pssa;
1383 case RISCV::BI__builtin_riscv_paas_x_i16x2:
1384 case RISCV::BI__builtin_riscv_paas_x_i16x4:
1385 case RISCV::BI__builtin_riscv_paas_x_i32x2:
1386 ID = Intrinsic::riscv_paas;
1388 case RISCV::BI__builtin_riscv_pasa_x_i16x2:
1389 case RISCV::BI__builtin_riscv_pasa_x_i16x4:
1390 case RISCV::BI__builtin_riscv_pasa_x_i32x2:
1391 ID = Intrinsic::riscv_pasa;
1393 case RISCV::BI__builtin_riscv_pabd_i8x4:
1394 case RISCV::BI__builtin_riscv_pabd_i16x2:
1395 case RISCV::BI__builtin_riscv_pabd_i8x8:
1396 case RISCV::BI__builtin_riscv_pabd_i16x4:
1397 ID = Intrinsic::riscv_pabd;
1399 case RISCV::BI__builtin_riscv_pabdu_u8x4:
1400 case RISCV::BI__builtin_riscv_pabdu_u16x2:
1401 case RISCV::BI__builtin_riscv_pabdu_u8x8:
1402 case RISCV::BI__builtin_riscv_pabdu_u16x4:
1403 ID = Intrinsic::riscv_pabdu;
1405 case RISCV::BI__builtin_riscv_pmerge_u8x4:
1406 case RISCV::BI__builtin_riscv_pmerge_i8x4:
1407 case RISCV::BI__builtin_riscv_pmerge_u16x2:
1408 case RISCV::BI__builtin_riscv_pmerge_i16x2:
1409 case RISCV::BI__builtin_riscv_pmerge_u8x8:
1410 case RISCV::BI__builtin_riscv_pmerge_i8x8:
1411 case RISCV::BI__builtin_riscv_pmerge_u16x4:
1412 case RISCV::BI__builtin_riscv_pmerge_i16x4:
1413 case RISCV::BI__builtin_riscv_pmerge_u32x2:
1414 case RISCV::BI__builtin_riscv_pmerge_i32x2:
1415 ID = Intrinsic::riscv_pmerge;
1417 case RISCV::BI__builtin_riscv_pmulh_i16x2:
1418 case RISCV::BI__builtin_riscv_pmulh_i16x4:
1419 case RISCV::BI__builtin_riscv_pmulh_i32x2:
1420 ID = Intrinsic::riscv_pmulh;
1422 case RISCV::BI__builtin_riscv_pmulhr_i16x2:
1423 case RISCV::BI__builtin_riscv_pmulhr_i16x4:
1424 case RISCV::BI__builtin_riscv_pmulhr_i32x2:
1425 ID = Intrinsic::riscv_pmulhr;
1427 case RISCV::BI__builtin_riscv_pmulhu_u16x2:
1428 case RISCV::BI__builtin_riscv_pmulhu_u16x4:
1429 case RISCV::BI__builtin_riscv_pmulhu_u32x2:
1430 ID = Intrinsic::riscv_pmulhu;
1432 case RISCV::BI__builtin_riscv_pmulhru_u16x2:
1433 case RISCV::BI__builtin_riscv_pmulhru_u16x4:
1434 case RISCV::BI__builtin_riscv_pmulhru_u32x2:
1435 ID = Intrinsic::riscv_pmulhru;
1437 case RISCV::BI__builtin_riscv_pmulhsu_i16x2:
1438 case RISCV::BI__builtin_riscv_pmulhsu_i16x4:
1439 case RISCV::BI__builtin_riscv_pmulhsu_i32x2:
1440 ID = Intrinsic::riscv_pmulhsu;
1442 case RISCV::BI__builtin_riscv_pmulhrsu_i16x2:
1443 case RISCV::BI__builtin_riscv_pmulhrsu_i16x4:
1444 case RISCV::BI__builtin_riscv_pmulhrsu_i32x2:
1445 ID = Intrinsic::riscv_pmulhrsu;
1447 case RISCV::BI__builtin_riscv_pmhacc_i16x2:
1448 case RISCV::BI__builtin_riscv_pmhacc_i16x4:
1449 case RISCV::BI__builtin_riscv_pmhacc_i32x2:
1450 ID = Intrinsic::riscv_pmhacc;
1452 case RISCV::BI__builtin_riscv_pmhracc_i16x2:
1453 case RISCV::BI__builtin_riscv_pmhracc_i16x4:
1454 case RISCV::BI__builtin_riscv_pmhracc_i32x2:
1455 ID = Intrinsic::riscv_pmhracc;
1457 case RISCV::BI__builtin_riscv_pmhaccu_u16x2:
1458 case RISCV::BI__builtin_riscv_pmhaccu_u16x4:
1459 case RISCV::BI__builtin_riscv_pmhaccu_u32x2:
1460 ID = Intrinsic::riscv_pmhaccu;
1462 case RISCV::BI__builtin_riscv_pmhraccu_u16x2:
1463 case RISCV::BI__builtin_riscv_pmhraccu_u16x4:
1464 case RISCV::BI__builtin_riscv_pmhraccu_u32x2:
1465 ID = Intrinsic::riscv_pmhraccu;
1467 case RISCV::BI__builtin_riscv_pmhaccsu_i16x2:
1468 case RISCV::BI__builtin_riscv_pmhaccsu_i16x4:
1469 case RISCV::BI__builtin_riscv_pmhaccsu_i32x2:
1470 ID = Intrinsic::riscv_pmhaccsu;
1472 case RISCV::BI__builtin_riscv_pmhraccsu_i16x2:
1473 case RISCV::BI__builtin_riscv_pmhraccsu_i16x4:
1474 case RISCV::BI__builtin_riscv_pmhraccsu_i32x2:
1475 ID = Intrinsic::riscv_pmhraccsu;
1477 case RISCV::BI__builtin_riscv_psabs_i8x4:
1478 case RISCV::BI__builtin_riscv_psabs_i16x2:
1479 case RISCV::BI__builtin_riscv_psabs_i8x8:
1480 case RISCV::BI__builtin_riscv_psabs_i16x4:
1481 ID = Intrinsic::riscv_psabs;
1483 case RISCV::BI__builtin_riscv_pmulq_i16x2:
1484 case RISCV::BI__builtin_riscv_pmulq_i16x4:
1485 case RISCV::BI__builtin_riscv_pmulq_i32x2:
1486 ID = Intrinsic::riscv_pmulq;
1488 case RISCV::BI__builtin_riscv_pmulqr_i16x2:
1489 case RISCV::BI__builtin_riscv_pmulqr_i16x4:
1490 case RISCV::BI__builtin_riscv_pmulqr_i32x2:
1491 ID = Intrinsic::riscv_pmulqr;
1493 case RISCV::BI__builtin_riscv_psext_b_i16x2:
1494 case RISCV::BI__builtin_riscv_psext_b_i16x4:
1495 case RISCV::BI__builtin_riscv_psext_b_i32x2:
1496 ID = Intrinsic::riscv_psext_b;
1498 case RISCV::BI__builtin_riscv_psext_h_i32x2:
1499 ID = Intrinsic::riscv_psext_h;
1501 case RISCV::BI__builtin_riscv_pzext_b_u16x2:
1502 case RISCV::BI__builtin_riscv_pzext_b_u16x4:
1503 ID = Intrinsic::riscv_pzext_b;
1505 case RISCV::BI__builtin_riscv_pzext_h_u32x2:
1506 ID = Intrinsic::riscv_pzext_h;
1508 case RISCV::BI__builtin_riscv_pssha_s_i16x2:
1509 case RISCV::BI__builtin_riscv_pssha_s_i16x4:
1510 case RISCV::BI__builtin_riscv_pssha_s_i32x2:
1511 ID = Intrinsic::riscv_pssha;
1513 case RISCV::BI__builtin_riscv_psshar_s_i16x2:
1514 case RISCV::BI__builtin_riscv_psshar_s_i16x4:
1515 case RISCV::BI__builtin_riscv_psshar_s_i32x2:
1516 ID = Intrinsic::riscv_psshar;
1518 case RISCV::BI__builtin_riscv_psshl_s_u16x2:
1519 case RISCV::BI__builtin_riscv_psshl_s_u16x4:
1520 case RISCV::BI__builtin_riscv_psshl_s_u32x2:
1521 ID = Intrinsic::riscv_psshl;
1523 case RISCV::BI__builtin_riscv_psshlr_s_u16x2:
1524 case RISCV::BI__builtin_riscv_psshlr_s_u16x4:
1525 case RISCV::BI__builtin_riscv_psshlr_s_u32x2:
1526 ID = Intrinsic::riscv_psshlr;
1530 IntrinsicTypes = {ResultType};
1535 case RISCV::BI__builtin_riscv_predsum_i8x4_i32:
1536 case RISCV::BI__builtin_riscv_predsum_i16x2_i32:
1537 case RISCV::BI__builtin_riscv_predsum_i8x8_i32:
1538 case RISCV::BI__builtin_riscv_predsum_i16x4_i32:
1539 case RISCV::BI__builtin_riscv_predsum_i8x8_i64:
1540 case RISCV::BI__builtin_riscv_predsum_i16x4_i64:
1541 case RISCV::BI__builtin_riscv_predsum_i32x2_i64:
1542 case RISCV::BI__builtin_riscv_predsumu_u8x4_u32:
1543 case RISCV::BI__builtin_riscv_predsumu_u16x2_u32:
1544 case RISCV::BI__builtin_riscv_predsumu_u8x8_u32:
1545 case RISCV::BI__builtin_riscv_predsumu_u16x4_u32:
1546 case RISCV::BI__builtin_riscv_predsumu_u8x8_u64:
1547 case RISCV::BI__builtin_riscv_predsumu_u16x4_u64:
1548 case RISCV::BI__builtin_riscv_predsumu_u32x2_u64:
1550 case RISCV::BI__builtin_riscv_pnclipp_i8x4:
1551 case RISCV::BI__builtin_riscv_pnclipp_i8x8:
1552 case RISCV::BI__builtin_riscv_pnclipp_i16x2:
1553 case RISCV::BI__builtin_riscv_pnclipp_i16x4:
1554 case RISCV::BI__builtin_riscv_pnclipp_i32x2:
1555 case RISCV::BI__builtin_riscv_pnclipup_u8x4:
1556 case RISCV::BI__builtin_riscv_pnclipup_u8x8:
1557 case RISCV::BI__builtin_riscv_pnclipup_u16x2:
1558 case RISCV::BI__builtin_riscv_pnclipup_u16x4:
1559 case RISCV::BI__builtin_riscv_pnclipup_u32x2: {
1560 switch (BuiltinID) {
1562 llvm_unreachable(
"unexpected builtin ID");
1563 case RISCV::BI__builtin_riscv_predsum_i8x4_i32:
1564 case RISCV::BI__builtin_riscv_predsum_i16x2_i32:
1565 case RISCV::BI__builtin_riscv_predsum_i8x8_i32:
1566 case RISCV::BI__builtin_riscv_predsum_i16x4_i32:
1567 case RISCV::BI__builtin_riscv_predsum_i8x8_i64:
1568 case RISCV::BI__builtin_riscv_predsum_i16x4_i64:
1569 case RISCV::BI__builtin_riscv_predsum_i32x2_i64:
1570 ID = Intrinsic::riscv_predsum;
1572 case RISCV::BI__builtin_riscv_predsumu_u8x4_u32:
1573 case RISCV::BI__builtin_riscv_predsumu_u16x2_u32:
1574 case RISCV::BI__builtin_riscv_predsumu_u8x8_u32:
1575 case RISCV::BI__builtin_riscv_predsumu_u16x4_u32:
1576 case RISCV::BI__builtin_riscv_predsumu_u8x8_u64:
1577 case RISCV::BI__builtin_riscv_predsumu_u16x4_u64:
1578 case RISCV::BI__builtin_riscv_predsumu_u32x2_u64:
1579 ID = Intrinsic::riscv_predsumu;
1581 case RISCV::BI__builtin_riscv_pnclipp_i8x4:
1582 case RISCV::BI__builtin_riscv_pnclipp_i8x8:
1583 case RISCV::BI__builtin_riscv_pnclipp_i16x2:
1584 case RISCV::BI__builtin_riscv_pnclipp_i16x4:
1585 case RISCV::BI__builtin_riscv_pnclipp_i32x2:
1586 ID = Intrinsic::riscv_pnclipp;
1588 case RISCV::BI__builtin_riscv_pnclipup_u8x4:
1589 case RISCV::BI__builtin_riscv_pnclipup_u8x8:
1590 case RISCV::BI__builtin_riscv_pnclipup_u16x2:
1591 case RISCV::BI__builtin_riscv_pnclipup_u16x4:
1592 case RISCV::BI__builtin_riscv_pnclipup_u32x2:
1593 ID = Intrinsic::riscv_pnclipup;
1597 IntrinsicTypes = {ResultType, Ops[0]->getType()};
1602 case RISCV::BI__builtin_riscv_pabdsumu_u8x4_u32:
1603 case RISCV::BI__builtin_riscv_pabdsumu_u8x8_u32:
1604 case RISCV::BI__builtin_riscv_pabdsumu_u8x8_u64:
1605 case RISCV::BI__builtin_riscv_pabdsumau_u8x4_u32:
1606 case RISCV::BI__builtin_riscv_pabdsumau_u8x8_u32:
1607 case RISCV::BI__builtin_riscv_pabdsumau_u8x8_u64: {
1608 switch (BuiltinID) {
1610 llvm_unreachable(
"unexpected builtin ID");
1611 case RISCV::BI__builtin_riscv_pabdsumu_u8x4_u32:
1612 case RISCV::BI__builtin_riscv_pabdsumu_u8x8_u32:
1613 case RISCV::BI__builtin_riscv_pabdsumu_u8x8_u64:
1614 ID = Intrinsic::riscv_pabdsumu;
1616 case RISCV::BI__builtin_riscv_pabdsumau_u8x4_u32:
1617 case RISCV::BI__builtin_riscv_pabdsumau_u8x8_u32:
1618 case RISCV::BI__builtin_riscv_pabdsumau_u8x8_u64:
1619 ID = Intrinsic::riscv_pabdsumau;
1625 IntrinsicTypes = {ResultType, Ops.back()->getType()};
1629 case RISCV::BI__builtin_riscv_pmul_b00_i16x2:
1630 case RISCV::BI__builtin_riscv_pmul_b01_i16x2:
1631 case RISCV::BI__builtin_riscv_pmul_b11_i16x2:
1632 case RISCV::BI__builtin_riscv_pmulu_b00_u16x2:
1633 case RISCV::BI__builtin_riscv_pmulu_b01_u16x2:
1634 case RISCV::BI__builtin_riscv_pmulu_b11_u16x2:
1635 case RISCV::BI__builtin_riscv_pmulsu_b00_i16x2:
1636 case RISCV::BI__builtin_riscv_pmulsu_b11_i16x2:
1637 case RISCV::BI__builtin_riscv_pmul_b00_i16x4:
1638 case RISCV::BI__builtin_riscv_pmul_b01_i16x4:
1639 case RISCV::BI__builtin_riscv_pmul_b11_i16x4:
1640 case RISCV::BI__builtin_riscv_pmulu_b00_u16x4:
1641 case RISCV::BI__builtin_riscv_pmulu_b01_u16x4:
1642 case RISCV::BI__builtin_riscv_pmulu_b11_u16x4:
1643 case RISCV::BI__builtin_riscv_pmulsu_b00_i16x4:
1644 case RISCV::BI__builtin_riscv_pmulsu_b11_i16x4:
1645 case RISCV::BI__builtin_riscv_pmul_h00_i32x2:
1646 case RISCV::BI__builtin_riscv_pmul_h01_i32x2:
1647 case RISCV::BI__builtin_riscv_pmul_h11_i32x2:
1648 case RISCV::BI__builtin_riscv_pmulu_h00_u32x2:
1649 case RISCV::BI__builtin_riscv_pmulu_h01_u32x2:
1650 case RISCV::BI__builtin_riscv_pmulu_h11_u32x2:
1651 case RISCV::BI__builtin_riscv_pmulsu_h00_i32x2:
1652 case RISCV::BI__builtin_riscv_pmulsu_h11_i32x2: {
1653 switch (BuiltinID) {
1655 llvm_unreachable(
"unexpected builtin ID");
1656 case RISCV::BI__builtin_riscv_pmul_b00_i16x2:
1657 case RISCV::BI__builtin_riscv_pmul_b00_i16x4:
1658 case RISCV::BI__builtin_riscv_pmul_h00_i32x2:
1659 ID = Intrinsic::riscv_pmul_00;
1661 case RISCV::BI__builtin_riscv_pmul_b01_i16x2:
1662 case RISCV::BI__builtin_riscv_pmul_b01_i16x4:
1663 case RISCV::BI__builtin_riscv_pmul_h01_i32x2:
1664 ID = Intrinsic::riscv_pmul_01;
1666 case RISCV::BI__builtin_riscv_pmul_b11_i16x2:
1667 case RISCV::BI__builtin_riscv_pmul_b11_i16x4:
1668 case RISCV::BI__builtin_riscv_pmul_h11_i32x2:
1669 ID = Intrinsic::riscv_pmul_11;
1671 case RISCV::BI__builtin_riscv_pmulu_b00_u16x2:
1672 case RISCV::BI__builtin_riscv_pmulu_b00_u16x4:
1673 case RISCV::BI__builtin_riscv_pmulu_h00_u32x2:
1674 ID = Intrinsic::riscv_pmulu_00;
1676 case RISCV::BI__builtin_riscv_pmulu_b01_u16x2:
1677 case RISCV::BI__builtin_riscv_pmulu_b01_u16x4:
1678 case RISCV::BI__builtin_riscv_pmulu_h01_u32x2:
1679 ID = Intrinsic::riscv_pmulu_01;
1681 case RISCV::BI__builtin_riscv_pmulu_b11_u16x2:
1682 case RISCV::BI__builtin_riscv_pmulu_b11_u16x4:
1683 case RISCV::BI__builtin_riscv_pmulu_h11_u32x2:
1684 ID = Intrinsic::riscv_pmulu_11;
1686 case RISCV::BI__builtin_riscv_pmulsu_b00_i16x2:
1687 case RISCV::BI__builtin_riscv_pmulsu_b00_i16x4:
1688 case RISCV::BI__builtin_riscv_pmulsu_h00_i32x2:
1689 ID = Intrinsic::riscv_pmulsu_00;
1691 case RISCV::BI__builtin_riscv_pmulsu_b11_i16x2:
1692 case RISCV::BI__builtin_riscv_pmulsu_b11_i16x4:
1693 case RISCV::BI__builtin_riscv_pmulsu_h11_i32x2:
1694 ID = Intrinsic::riscv_pmulsu_11;
1698 IntrinsicTypes = {ResultType};
1703 case RISCV::BI__builtin_riscv_mul_h00_i32:
1704 case RISCV::BI__builtin_riscv_mul_w00_i64:
1705 case RISCV::BI__builtin_riscv_mul_h01_i32:
1706 case RISCV::BI__builtin_riscv_mul_w01_i64:
1707 case RISCV::BI__builtin_riscv_mul_h11_i32:
1708 case RISCV::BI__builtin_riscv_mul_w11_i64:
1709 case RISCV::BI__builtin_riscv_mulu_h00_u32:
1710 case RISCV::BI__builtin_riscv_mulu_w00_u64:
1711 case RISCV::BI__builtin_riscv_mulu_h01_u32:
1712 case RISCV::BI__builtin_riscv_mulu_w01_u64:
1713 case RISCV::BI__builtin_riscv_mulu_h11_u32:
1714 case RISCV::BI__builtin_riscv_mulu_w11_u64:
1715 case RISCV::BI__builtin_riscv_mulsu_h00_i32:
1716 case RISCV::BI__builtin_riscv_mulsu_w00_i64:
1717 case RISCV::BI__builtin_riscv_mulsu_h11_i32:
1718 case RISCV::BI__builtin_riscv_mulsu_w11_i64: {
1719 switch (BuiltinID) {
1721 llvm_unreachable(
"unexpected builtin ID");
1722 case RISCV::BI__builtin_riscv_mul_h00_i32:
1723 case RISCV::BI__builtin_riscv_mul_w00_i64:
1724 ID = Intrinsic::riscv_mul_00;
1726 case RISCV::BI__builtin_riscv_mul_h01_i32:
1727 case RISCV::BI__builtin_riscv_mul_w01_i64:
1728 ID = Intrinsic::riscv_mul_01;
1730 case RISCV::BI__builtin_riscv_mul_h11_i32:
1731 case RISCV::BI__builtin_riscv_mul_w11_i64:
1732 ID = Intrinsic::riscv_mul_11;
1734 case RISCV::BI__builtin_riscv_mulu_h00_u32:
1735 case RISCV::BI__builtin_riscv_mulu_w00_u64:
1736 ID = Intrinsic::riscv_mulu_00;
1738 case RISCV::BI__builtin_riscv_mulu_h01_u32:
1739 case RISCV::BI__builtin_riscv_mulu_w01_u64:
1740 ID = Intrinsic::riscv_mulu_01;
1742 case RISCV::BI__builtin_riscv_mulu_h11_u32:
1743 case RISCV::BI__builtin_riscv_mulu_w11_u64:
1744 ID = Intrinsic::riscv_mulu_11;
1746 case RISCV::BI__builtin_riscv_mulsu_h00_i32:
1747 case RISCV::BI__builtin_riscv_mulsu_w00_i64:
1748 ID = Intrinsic::riscv_mulsu_00;
1750 case RISCV::BI__builtin_riscv_mulsu_h11_i32:
1751 case RISCV::BI__builtin_riscv_mulsu_w11_i64:
1752 ID = Intrinsic::riscv_mulsu_11;
1756 IntrinsicTypes = {ResultType, Ops[0]->getType()};
1761 case RISCV::BI__builtin_riscv_mqacc_h00_i32:
1762 case RISCV::BI__builtin_riscv_mqacc_h01_i32:
1763 case RISCV::BI__builtin_riscv_mqacc_h11_i32:
1764 case RISCV::BI__builtin_riscv_mqracc_h00_i32:
1765 case RISCV::BI__builtin_riscv_mqracc_h01_i32:
1766 case RISCV::BI__builtin_riscv_mqracc_h11_i32:
1767 case RISCV::BI__builtin_riscv_pmqacc_h00_i32x2:
1768 case RISCV::BI__builtin_riscv_pmqacc_h01_i32x2:
1769 case RISCV::BI__builtin_riscv_pmqacc_h11_i32x2:
1770 case RISCV::BI__builtin_riscv_pmqracc_h00_i32x2:
1771 case RISCV::BI__builtin_riscv_pmqracc_h01_i32x2:
1772 case RISCV::BI__builtin_riscv_pmqracc_h11_i32x2:
1773 case RISCV::BI__builtin_riscv_mqacc_w00_i64:
1774 case RISCV::BI__builtin_riscv_mqacc_w01_i64:
1775 case RISCV::BI__builtin_riscv_mqacc_w11_i64:
1776 case RISCV::BI__builtin_riscv_mqracc_w00_i64:
1777 case RISCV::BI__builtin_riscv_mqracc_w01_i64:
1778 case RISCV::BI__builtin_riscv_mqracc_w11_i64: {
1779 switch (BuiltinID) {
1781 llvm_unreachable(
"unexpected builtin ID");
1782 case RISCV::BI__builtin_riscv_pmqacc_h00_i32x2:
1783 ID = Intrinsic::riscv_pmqacc_h00;
1785 case RISCV::BI__builtin_riscv_pmqacc_h01_i32x2:
1786 ID = Intrinsic::riscv_pmqacc_h01;
1788 case RISCV::BI__builtin_riscv_pmqacc_h11_i32x2:
1789 ID = Intrinsic::riscv_pmqacc_h11;
1791 case RISCV::BI__builtin_riscv_pmqracc_h00_i32x2:
1792 ID = Intrinsic::riscv_pmqracc_h00;
1794 case RISCV::BI__builtin_riscv_pmqracc_h01_i32x2:
1795 ID = Intrinsic::riscv_pmqracc_h01;
1797 case RISCV::BI__builtin_riscv_pmqracc_h11_i32x2:
1798 ID = Intrinsic::riscv_pmqracc_h11;
1801 case RISCV::BI__builtin_riscv_mqacc_h00_i32:
1802 case RISCV::BI__builtin_riscv_mqacc_w00_i64:
1803 ID = Intrinsic::riscv_mqacc_00;
1805 case RISCV::BI__builtin_riscv_mqacc_h01_i32:
1806 case RISCV::BI__builtin_riscv_mqacc_w01_i64:
1807 ID = Intrinsic::riscv_mqacc_01;
1809 case RISCV::BI__builtin_riscv_mqacc_h11_i32:
1810 case RISCV::BI__builtin_riscv_mqacc_w11_i64:
1811 ID = Intrinsic::riscv_mqacc_11;
1813 case RISCV::BI__builtin_riscv_mqracc_h00_i32:
1814 case RISCV::BI__builtin_riscv_mqracc_w00_i64:
1815 ID = Intrinsic::riscv_mqracc_00;
1817 case RISCV::BI__builtin_riscv_mqracc_h01_i32:
1818 case RISCV::BI__builtin_riscv_mqracc_w01_i64:
1819 ID = Intrinsic::riscv_mqracc_01;
1821 case RISCV::BI__builtin_riscv_mqracc_h11_i32:
1822 case RISCV::BI__builtin_riscv_mqracc_w11_i64:
1823 ID = Intrinsic::riscv_mqracc_11;
1827 IntrinsicTypes = {ResultType, Ops[1]->getType()};
1834 case RISCV::BI__builtin_riscv_sha256sig0:
1835 ID = Intrinsic::riscv_sha256sig0;
1837 case RISCV::BI__builtin_riscv_sha256sig1:
1838 ID = Intrinsic::riscv_sha256sig1;
1840 case RISCV::BI__builtin_riscv_sha256sum0:
1841 ID = Intrinsic::riscv_sha256sum0;
1843 case RISCV::BI__builtin_riscv_sha256sum1:
1844 ID = Intrinsic::riscv_sha256sum1;
1848 case RISCV::BI__builtin_riscv_sm4ks:
1849 ID = Intrinsic::riscv_sm4ks;
1851 case RISCV::BI__builtin_riscv_sm4ed:
1852 ID = Intrinsic::riscv_sm4ed;
1856 case RISCV::BI__builtin_riscv_sm3p0:
1857 ID = Intrinsic::riscv_sm3p0;
1859 case RISCV::BI__builtin_riscv_sm3p1:
1860 ID = Intrinsic::riscv_sm3p1;
1863 case RISCV::BI__builtin_riscv_clz_32:
1864 case RISCV::BI__builtin_riscv_clz_64: {
1867 if (
Result->getType() != ResultType)
1872 case RISCV::BI__builtin_riscv_ctz_32:
1873 case RISCV::BI__builtin_riscv_ctz_64: {
1876 if (
Result->getType() != ResultType)
1883 case RISCV::BI__builtin_riscv_ntl_load: {
1885 unsigned DomainVal = 5;
1886 if (Ops.size() == 2)
1889 llvm::MDNode *RISCVDomainNode = llvm::MDNode::get(
1891 llvm::ConstantAsMetadata::get(
Builder.getInt32(DomainVal)));
1892 llvm::MDNode *NontemporalNode = llvm::MDNode::get(
1896 if(ResTy->isScalableTy()) {
1898 llvm::Type *ScalarTy = ResTy->getScalarType();
1899 Width = ScalarTy->getPrimitiveSizeInBits() *
1900 SVTy->getElementCount().getKnownMinValue();
1902 Width = ResTy->getPrimitiveSizeInBits();
1903 LoadInst *Load =
Builder.CreateLoad(
1906 Load->setMetadata(llvm::LLVMContext::MD_nontemporal, NontemporalNode);
1907 Load->setMetadata(
CGM.getModule().getMDKindID(
"riscv-nontemporal-domain"),
1912 case RISCV::BI__builtin_riscv_ntl_store: {
1913 unsigned DomainVal = 5;
1914 if (Ops.size() == 3)
1917 llvm::MDNode *RISCVDomainNode = llvm::MDNode::get(
1919 llvm::ConstantAsMetadata::get(
Builder.getInt32(DomainVal)));
1920 llvm::MDNode *NontemporalNode = llvm::MDNode::get(
1923 StoreInst *Store =
Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
1924 Store->setMetadata(llvm::LLVMContext::MD_nontemporal, NontemporalNode);
1925 Store->setMetadata(
CGM.getModule().getMDKindID(
"riscv-nontemporal-domain"),
1931 case RISCV::BI__builtin_riscv_pause: {
1932 llvm::Function *Fn =
CGM.getIntrinsic(llvm::Intrinsic::riscv_pause);
1933 return Builder.CreateCall(Fn, {});
1937 case RISCV::BI__builtin_riscv_cv_alu_addN:
1938 ID = Intrinsic::riscv_cv_alu_addN;
1940 case RISCV::BI__builtin_riscv_cv_alu_addRN:
1941 ID = Intrinsic::riscv_cv_alu_addRN;
1943 case RISCV::BI__builtin_riscv_cv_alu_adduN:
1944 ID = Intrinsic::riscv_cv_alu_adduN;
1946 case RISCV::BI__builtin_riscv_cv_alu_adduRN:
1947 ID = Intrinsic::riscv_cv_alu_adduRN;
1949 case RISCV::BI__builtin_riscv_cv_alu_clip:
1950 ID = Intrinsic::riscv_cv_alu_clip;
1952 case RISCV::BI__builtin_riscv_cv_alu_clipu:
1953 ID = Intrinsic::riscv_cv_alu_clipu;
1955 case RISCV::BI__builtin_riscv_cv_alu_extbs:
1958 case RISCV::BI__builtin_riscv_cv_alu_extbz:
1961 case RISCV::BI__builtin_riscv_cv_alu_exths:
1964 case RISCV::BI__builtin_riscv_cv_alu_exthz:
1967 case RISCV::BI__builtin_riscv_cv_alu_sle:
1970 case RISCV::BI__builtin_riscv_cv_alu_sleu:
1973 case RISCV::BI__builtin_riscv_cv_alu_subN:
1974 ID = Intrinsic::riscv_cv_alu_subN;
1976 case RISCV::BI__builtin_riscv_cv_alu_subRN:
1977 ID = Intrinsic::riscv_cv_alu_subRN;
1979 case RISCV::BI__builtin_riscv_cv_alu_subuN:
1980 ID = Intrinsic::riscv_cv_alu_subuN;
1982 case RISCV::BI__builtin_riscv_cv_alu_subuRN:
1983 ID = Intrinsic::riscv_cv_alu_subuRN;
1987 case RISCV::BI__builtin_riscv_nds_ffb_32:
1988 case RISCV::BI__builtin_riscv_nds_ffb_64:
1989 IntrinsicTypes = {ResultType};
1990 ID = Intrinsic::riscv_nds_ffb;
1992 case RISCV::BI__builtin_riscv_nds_ffzmism_32:
1993 case RISCV::BI__builtin_riscv_nds_ffzmism_64:
1994 IntrinsicTypes = {ResultType};
1995 ID = Intrinsic::riscv_nds_ffzmism;
1997 case RISCV::BI__builtin_riscv_nds_ffmism_32:
1998 case RISCV::BI__builtin_riscv_nds_ffmism_64:
1999 IntrinsicTypes = {ResultType};
2000 ID = Intrinsic::riscv_nds_ffmism;
2002 case RISCV::BI__builtin_riscv_nds_flmism_32:
2003 case RISCV::BI__builtin_riscv_nds_flmism_64:
2004 IntrinsicTypes = {ResultType};
2005 ID = Intrinsic::riscv_nds_flmism;
2009 case RISCV::BI__builtin_riscv_nds_fcvt_s_bf16:
2011 case RISCV::BI__builtin_riscv_nds_fcvt_bf16_s:
2015#include "clang/Basic/riscv_vector_builtin_cg.inc"
2018#include "clang/Basic/riscv_sifive_vector_builtin_cg.inc"
2021#include "clang/Basic/riscv_andes_vector_builtin_cg.inc"
2024 assert(ID != Intrinsic::not_intrinsic);
2026 llvm::Function *F =
CGM.getIntrinsic(ID, IntrinsicTypes);
2027 return Builder.CreateCall(F, Ops,
"");