Lines Matching refs:src

72  * Gen 8 adds support for compacting 3-src instructions.
1081 brw_compact_inst *dst, const brw_inst *src)
1087 uncompacted = (brw_inst_bits(src, 95, 92) << 17) | /* 4b */
1088 (brw_inst_bits(src, 34, 34) << 16) | /* 1b */
1089 (brw_inst_bits(src, 33, 33) << 15) | /* 1b */
1090 (brw_inst_bits(src, 32, 32) << 14) | /* 1b */
1091 (brw_inst_bits(src, 31, 31) << 13) | /* 1b */
1092 (brw_inst_bits(src, 28, 28) << 12) | /* 1b */
1093 (brw_inst_bits(src, 27, 24) << 8) | /* 4b */
1094 (brw_inst_bits(src, 23, 22) << 6) | /* 2b */
1095 (brw_inst_bits(src, 21, 19) << 3) | /* 3b */
1096 (brw_inst_bits(src, 18, 16)); /* 3b */
1098 uncompacted = (brw_inst_bits(src, 33, 31) << 16) | /* 3b */
1099 (brw_inst_bits(src, 23, 12) << 4) | /* 12b */
1100 (brw_inst_bits(src, 10, 9) << 2) | /* 2b */
1101 (brw_inst_bits(src, 34, 34) << 1) | /* 1b */
1102 (brw_inst_bits(src, 8, 8)); /* 1b */
1104 uncompacted = (brw_inst_bits(src, 31, 31) << 16) | /* 1b */
1105 (brw_inst_bits(src, 23, 8)); /* 16b */
1111 uncompacted |= brw_inst_bits(src, 90, 89) << 17; /* 2b */
1126 const brw_inst *src, bool is_immediate)
1132 uncompacted = (brw_inst_bits(src, 91, 88) << 15) | /* 4b */
1133 (brw_inst_bits(src, 66, 66) << 14) | /* 1b */
1134 (brw_inst_bits(src, 50, 50) << 13) | /* 1b */
1135 (brw_inst_bits(src, 49, 48) << 11) | /* 2b */
1136 (brw_inst_bits(src, 47, 47) << 10) | /* 1b */
1137 (brw_inst_bits(src, 46, 46) << 9) | /* 1b */
1138 (brw_inst_bits(src, 43, 40) << 5) | /* 4b */
1139 (brw_inst_bits(src, 39, 36) << 1) | /* 4b */
1140 (brw_inst_bits(src, 35, 35)); /* 1b */
1146 uncompacted |= brw_inst_bits(src, 98, 98) << 19; /* 1b */
1149 uncompacted = (brw_inst_bits(src, 63, 61) << 18) | /* 3b */
1150 (brw_inst_bits(src, 94, 89) << 12) | /* 6b */
1151 (brw_inst_bits(src, 46, 35)); /* 12b */
1153 uncompacted = (brw_inst_bits(src, 63, 61) << 15) | /* 3b */
1154 (brw_inst_bits(src, 46, 32)); /* 15b */
1169 const brw_inst *src, bool is_immediate)
1175 uncompacted = (brw_inst_bits(src, 55, 51) << 0) | /* 5b */
1176 (brw_inst_bits(src, 71, 67) << 5); /* 5b */
1179 uncompacted |= brw_inst_bits(src, 103, 99) << 10; /* 5b */
1181 uncompacted = (brw_inst_bits(src, 52, 48) << 0) | /* 5b */
1182 (brw_inst_bits(src, 68, 64) << 5); /* 5b */
1185 uncompacted |= brw_inst_bits(src, 100, 96) << 10; /* 5b */
1200 const brw_inst *src)
1208 uncompacted = (brw_inst_bits(src, 87, 84) << 8) | /* 4b */
1209 (brw_inst_bits(src, 83, 81) << 5) | /* 3b */
1210 (brw_inst_bits(src, 80, 80) << 4) | /* 1b */
1211 (brw_inst_bits(src, 65, 64) << 2) | /* 2b */
1212 (brw_inst_bits(src, 45, 44)); /* 2b */
1215 uncompacted = brw_inst_bits(src, 88, 77); /* 12b */
1230 const brw_inst *src, bool is_immediate, unsigned imm)
1248 uncompacted = (brw_inst_bits(src, 121, 120) << 10) | /* 2b */
1249 (brw_inst_bits(src, 119, 116) << 6) | /* 4b */
1250 (brw_inst_bits(src, 115, 113) << 3) | /* 3b */
1251 (brw_inst_bits(src, 112, 112) << 2) | /* 1b */
1252 (brw_inst_bits(src, 97, 96)); /* 2b */
1255 uncompacted = brw_inst_bits(src, 120, 109); /* 12b */
1271 brw_compact_inst *dst, const brw_inst *src)
1277 (brw_inst_bits(src, 95, 92) << 33) | /* 4b */
1278 (brw_inst_bits(src, 90, 88) << 30) | /* 3b */
1279 (brw_inst_bits(src, 82, 80) << 27) | /* 3b */
1280 (brw_inst_bits(src, 50, 50) << 26) | /* 1b */
1281 (brw_inst_bits(src, 49, 48) << 24) | /* 2b */
1282 (brw_inst_bits(src, 42, 40) << 21) | /* 3b */
1283 (brw_inst_bits(src, 39, 39) << 20) | /* 1b */
1284 (brw_inst_bits(src, 38, 36) << 17) | /* 3b */
1285 (brw_inst_bits(src, 34, 34) << 16) | /* 1b */
1286 (brw_inst_bits(src, 33, 33) << 15) | /* 1b */
1287 (brw_inst_bits(src, 32, 32) << 14) | /* 1b */
1288 (brw_inst_bits(src, 31, 31) << 13) | /* 1b */
1289 (brw_inst_bits(src, 28, 28) << 12) | /* 1b */
1290 (brw_inst_bits(src, 27, 24) << 8) | /* 4b */
1291 (brw_inst_bits(src, 23, 23) << 7) | /* 1b */
1292 (brw_inst_bits(src, 22, 22) << 6) | /* 1b */
1293 (brw_inst_bits(src, 21, 19) << 3) | /* 3b */
1294 (brw_inst_bits(src, 18, 16)); /* 3b */
1304 (brw_inst_bits(src, 95, 92) << 32) | /* 4b */
1305 (brw_inst_bits(src, 90, 88) << 29) | /* 3b */
1306 (brw_inst_bits(src, 82, 80) << 26) | /* 3b */
1307 (brw_inst_bits(src, 50, 50) << 25) | /* 1b */
1308 (brw_inst_bits(src, 48, 48) << 24) | /* 1b */
1309 (brw_inst_bits(src, 42, 40) << 21) | /* 3b */
1310 (brw_inst_bits(src, 39, 39) << 20) | /* 1b */
1311 (brw_inst_bits(src, 38, 36) << 17) | /* 3b */
1312 (brw_inst_bits(src, 34, 34) << 16) | /* 1b */
1313 (brw_inst_bits(src, 33, 33) << 15) | /* 1b */
1314 (brw_inst_bits(src, 32, 32) << 14) | /* 1b */
1315 (brw_inst_bits(src, 31, 31) << 13) | /* 1b */
1316 (brw_inst_bits(src, 28, 28) << 12) | /* 1b */
1317 (brw_inst_bits(src, 27, 24) << 8) | /* 4b */
1318 (brw_inst_bits(src, 23, 23) << 7) | /* 1b */
1319 (brw_inst_bits(src, 22, 22) << 6) | /* 1b */
1320 (brw_inst_bits(src, 21, 19) << 3) | /* 3b */
1321 (brw_inst_bits(src, 18, 16)); /* 3b */
1331 (brw_inst_bits(src, 34, 32) << 21) | /* 3b */
1332 (brw_inst_bits(src, 28, 8)); /* 21b */
1336 brw_inst_bits(src, 36, 35) << 24; /* 2b */
1352 brw_compact_inst *dst, const brw_inst *src)
1358 (brw_inst_bits(src, 114, 114) << 20) | /* 1b */
1359 (brw_inst_bits(src, 113, 112) << 18) | /* 2b */
1360 (brw_inst_bits(src, 98, 98) << 17) | /* 1b */
1361 (brw_inst_bits(src, 97, 96) << 15) | /* 2b */
1362 (brw_inst_bits(src, 91, 91) << 14) | /* 1b */
1363 (brw_inst_bits(src, 87, 86) << 12) | /* 2b */
1364 (brw_inst_bits(src, 85, 84) << 10) | /* 2b */
1365 (brw_inst_bits(src, 83, 83) << 9) | /* 1b */
1366 (brw_inst_bits(src, 66, 66) << 8) | /* 1b */
1367 (brw_inst_bits(src, 65, 64) << 6) | /* 2b */
1368 (brw_inst_bits(src, 47, 47) << 5) | /* 1b */
1369 (brw_inst_bits(src, 46, 46) << 4) | /* 1b */
1370 (brw_inst_bits(src, 45, 44) << 2) | /* 2b */
1371 (brw_inst_bits(src, 43, 43) << 1) | /* 1b */
1372 (brw_inst_bits(src, 35, 35)); /* 1b */
1389 (brw_inst_bits(src, 83, 83) << 43) | /* 1b */
1390 (brw_inst_bits(src, 114, 107) << 35) | /* 8b */
1391 (brw_inst_bits(src, 93, 86) << 27) | /* 8b */
1392 (brw_inst_bits(src, 72, 65) << 19) | /* 8b */
1393 (brw_inst_bits(src, 55, 37)); /* 19b */
1397 (brw_inst_bits(src, 126, 125) << 47) | /* 2b */
1398 (brw_inst_bits(src, 105, 104) << 45) | /* 2b */
1399 (brw_inst_bits(src, 84, 84) << 44); /* 1b */
1402 (brw_inst_bits(src, 125, 125) << 45) | /* 1b */
1403 (brw_inst_bits(src, 104, 104) << 44); /* 1b */
1419 brw_compact_inst *dst, const brw_inst *src)
1424 (brw_inst_bits(src, 119, 115) << 15) | /* 5b */
1425 (brw_inst_bits(src, 103, 99) << 10) | /* 5b */
1426 (brw_inst_bits(src, 71, 67) << 5) | /* 5b */
1427 (brw_inst_bits(src, 55, 51)); /* 5b */
1440 has_unmapped_bits(const struct brw_isa_info *isa, const brw_inst *src)
1445 if ((brw_inst_opcode(isa, src) == BRW_OPCODE_SENDC ||
1446 brw_inst_opcode(isa, src) == BRW_OPCODE_SEND) &&
1447 brw_inst_eot(devinfo, src))
1460 assert(!brw_inst_bits(src, 7, 7));
1463 assert(!brw_inst_bits(src, 7, 7));
1464 return brw_inst_bits(src, 95, 95) ||
1465 brw_inst_bits(src, 47, 47) ||
1466 brw_inst_bits(src, 11, 11);
1468 assert(!brw_inst_bits(src, 7, 7) &&
1469 !(devinfo->ver < 7 && brw_inst_bits(src, 90, 90)));
1470 return brw_inst_bits(src, 95, 91) ||
1471 brw_inst_bits(src, 47, 47);
1477 const brw_inst *src)
1484 assert(!brw_inst_bits(src, 7, 7));
1486 assert(!brw_inst_bits(src, 127, 127) &&
1487 !brw_inst_bits(src, 7, 7));
1490 assert(!brw_inst_bits(src, 127, 126) &&
1491 !brw_inst_bits(src, 105, 105) &&
1492 !brw_inst_bits(src, 84, 84) &&
1493 !brw_inst_bits(src, 7, 7));
1496 if (brw_inst_bits(src, 36, 35))
1505 brw_compact_inst *dst, const brw_inst *src)
1509 if (has_3src_unmapped_bits(devinfo, src))
1513 brw_compact_inst_set_3src_##field(devinfo, dst, brw_inst_3src_##field(devinfo, src))
1515 brw_compact_inst_set_3src_##field(devinfo, dst, brw_inst_3src_a16_##field(devinfo, src))
1519 if (!set_3src_control_index(devinfo, dst, src))
1522 if (!set_3src_source_index(devinfo, dst, src))
1526 if (!set_3src_subreg_index(devinfo, dst, src))
1813 * Tries to compact instruction src into dst.
1815 * It doesn't modify dst unless src is compactable, which is relied on by
1820 brw_compact_inst *dst, const brw_inst *src)
1825 assert(brw_inst_cmpt_control(devinfo, src) == 0);
1827 if (is_3src(c->isa, brw_inst_opcode(c->isa, src))) {
1830 if (brw_try_compact_3src_instruction(devinfo, &temp, src)) {
1842 bool is_immediate = has_immediate(devinfo, src, &type);
1852 brw_inst_imm_ud(devinfo, src));
1857 if (has_unmapped_bits(c->isa, src))
1863 brw_compact_inst_set_##field(devinfo, &temp, brw_inst_##field(devinfo, src))
1866 brw_inst_##field##_da_reg_nr(devinfo, src))
1871 if (!set_control_index(c, &temp, src))
1873 if (!set_datatype_index(c, &temp, src, is_immediate))
1875 if (!set_subreg_index(c, &temp, src, is_immediate))
1877 if (!set_src0_index(c, &temp, src))
1879 if (!set_src1_index(c, &temp, src, is_immediate, compacted_imm))
1927 brw_compact_inst *dst, const brw_inst *src)
1931 return try_compact_instruction(&c, dst, src);
1936 brw_compact_inst *src)
1940 c->control_index_table[brw_compact_inst_control_index(devinfo, src)];
1970 brw_compact_inst *src)
1974 c->datatype_table[brw_compact_inst_datatype_index(devinfo, src)];
1999 brw_compact_inst *src)
2003 c->subreg_table[brw_compact_inst_subreg_index(devinfo, src)];
2018 brw_compact_inst *src)
2021 uint32_t compacted = brw_compact_inst_src0_index(devinfo, src);
2037 brw_compact_inst *src)
2041 c->src1_index_table[brw_compact_inst_src1_index(devinfo, src)];
2056 brw_inst *dst, brw_compact_inst *src)
2062 uint64_t compacted = brw_compact_inst_3src_control_index(devinfo, src);
2085 uint64_t compacted = brw_compact_inst_3src_control_index(devinfo, src);
2107 uint32_t compacted = brw_compact_inst_3src_control_index(devinfo, src);
2120 brw_inst *dst, brw_compact_inst *src)
2124 uint32_t compacted = brw_compact_inst_3src_source_index(devinfo, src);
2169 brw_inst *dst, brw_compact_inst *src)
2173 uint32_t compacted = brw_compact_inst_3src_subreg_index(devinfo, src);
2184 brw_inst *dst, brw_compact_inst *src)
2190 brw_inst_set_3src_##field(devinfo, dst, brw_compact_inst_3src_##field(devinfo, src))
2192 brw_inst_set_3src_a16_##field(devinfo, dst, brw_compact_inst_3src_##field(devinfo, src))
2197 set_uncompacted_3src_control_index(c, dst, src);
2198 set_uncompacted_3src_source_index(devinfo, dst, src);
2199 set_uncompacted_3src_subreg_index(devinfo, dst, src);
2208 set_uncompacted_3src_control_index(c, dst, src);
2209 set_uncompacted_3src_source_index(devinfo, dst, src);
2232 brw_compact_inst *src)
2239 brw_compact_inst_3src_hw_opcode(devinfo, src)))) {
2240 brw_uncompact_3src_instruction(c, dst, src);
2245 brw_inst_set_##field(devinfo, dst, brw_compact_inst_##field(devinfo, src))
2248 brw_compact_inst_##field##_reg_nr(devinfo, src))
2253 set_uncompacted_control(c, dst, src);
2254 set_uncompacted_datatype(c, dst, src);
2255 set_uncompacted_subreg(c, dst, src);
2256 set_uncompacted_src0(c, dst, src);
2261 brw_compact_inst_imm(devinfo, src));
2264 set_uncompacted_src1(c, dst, src);
2295 brw_inst *dst, brw_compact_inst *src)
2299 uncompact_instruction(&c, dst, src);
2514 brw_inst *src = store + src_offset;
2520 brw_inst inst = precompact(p->isa, *src);
2556 memmove(dst, src, sizeof(brw_inst));