Home | History | Annotate | Download | only in codegen

Lines Matching refs:code

140    code[pos / 32] |= SDATA(src).id << (pos % 32);
146 code[pos / 32] |= SDATA(*src).id << (pos % 32);
164 code[pos / 32] |= offset << (pos % 32);
175 code[pos / 32] |= (offset >> 2) << (pos % 32);
182 code[pos / 32] |= DDATA(def).id << (pos % 32);
189 case ROUND_M: code[1] |= 1 << 22; break;
190 case ROUND_P: code[1] |= 2 << 22; break;
191 case ROUND_Z: code[1] |= 3 << 22; break;
201 code[1] |= i->src(0).mod.neg() << 26;
202 code[1] |= i->src(1).mod.neg() << 27;
238 assert(!"invalid condition code");
244 code[pos / 32] |= enc << (pos % 32);
252 assert(!(code[1] & 0x00003f80));
259 code[1] |= 0x0780;
266 assert(!(code[1] & 0x70));
282 code[1] |= (DDATA(i->def(flagsDef)).id << 4) | 0x40;
289 code[0] |= (u & 3) << 26;
290 code[1] |= (u & 4);
314 code[1] |= 3;
315 code[0] |= (u & 0x3f) << 16;
316 code[1] |= (u >> 6) << 2;
327 code[0] |= (127 << 2) | 1;
328 code[1] |= 8;
332 code[1] |= 8;
337 code[0] |= id << 2;
348 code[0] |= 0x01fc; // bit bucket
349 code[1] |= 0x0008;
388 code[0] |= 0x01800000;
390 code[1] |= 0x00200000;
393 code[0] |= 0x01000000;
395 code[1] |= 0x00200000;
406 code[0] |= 0x01000000;
410 code[0] |= (reg + 1) << 26;
414 code[0] |= (enc == NV50_OP_ENC_LONG_ALT) ? 0x01000000 : 0x00800000;
415 code[1] |= (i->getSrc(1)->reg.fileIndex << 22);
419 code[0] |= 0x01800000;
421 code[0] |= (enc == NV50_OP_ENC_LONG_ALT) ? 0x01000000 : 0x00800000;
422 code[1] |= 0x00200000;
424 code[1] |= (i->getSrc(1)->reg.fileIndex << 22);
427 code[0] |= 0x01000000;
428 code[1] |= (i->getSrc(2)->reg.fileIndex << 22);
431 code[0] |= 0x01000000;
432 code[1] |= 0x00200000 | (i->getSrc(2)->reg.fileIndex << 22);
450 code[0] |= 1 << pos;
453 code[0] |= 2 << pos;
456 code[0] |= 3 << pos;
475 case 0: code[0] |= id << 9; break;
476 case 1: code[0] |= id << 16; break;
477 case 2: code[1] |= id << 14; break;
492 code[0] |= 1;
521 code[0] |= 1;
545 assert(i->encSize == 4 && !(code[0] & 1));
563 code[0] |= 1;
601 code[pos / 32] |= enc << (pos % 32);
609 case TYPE_U16: code[1] |= 0x4000; break;
610 case TYPE_S16: code[1] |= 0x8000; break;
613 case TYPE_U32: code[1] |= 0xc000; break;
629 code[0] = 0x11800001;
632 code
633 code[1] = 0x00200000 | (i->lanes << 14);
635 code[1] |= 0x04000000;
640 code[0] = 0x10000001;
641 code[1] = 0x40000000;
644 code[1] |= 0x04000000;
649 code[0] = 0x10000001;
650 code[1] = 0x00200000 | (i->lanes << 14);
655 code[0] = 0x10000001;
656 code[1] = 0x20000000 | (i->getSrc(0)->reg.fileIndex << 22);
658 code[1] |= 0x04000000;
662 code[0] = 0xd0000001;
663 code[1] = 0x40000000;
666 code[0] = 0xd0000001 | (i->getSrc(0)->reg.fileIndex << 16);
667 code[1] = 0x80000000;
698 code[0] = 0x00000001 | ((offset >> 2) << 9);
699 code[1] = 0x80c00000;
703 code[0] = 0xd0000001 | (i->getSrc(0)->reg.fileIndex << 16);
704 code[1] = 0xa0000000;
709 code[0] = 0xd0000001;
710 code[1] = 0x60000000;
715 code[0] = 0x00000001;
716 code[1] = 0xe0000000;
719 code[0] |= offset << 9;
720 code[1] |= 0x00400000;
723 code[0] |= (offset >> 1) << 9;
726 code[0] |= (offset >> 2) << 9;
727 code[1] |= 0x04200000;
761 code[0] = 0x00000001;
762 code[1] = 0x20000000;
767 code[0] = 0x00000001;
768 code[1] = 0x40000000;
775 code[0] = 0x00000001;
776 code[1] = 0xa0000000;
782 code[0] = 0x10008001;
783 code[1] = 0x00000003;
787 code[0] = 0x10008000;
789 code[0] = 0x10000001;
790 code[1] = (typeSizeof(i->dType) == 2) ? 0 : 0x04000000;
791 code[1] |= (i->lanes << 14);
799 code[1] |= 0x8;
820 code[0] = 0x00000001;
821 code[1] = 0x60000000 | (getSRegEncoding(i->src(0)) << 14);
829 code[0] = 0xf0000001;
830 code[1] = 0xe0000000;
836 code[0] = 0xc0000000 | (lane << 16);
837 code[1] = 0x80000000;
839 code[0] |= (quOp & 0x03) << 20;
840 code[1] |= (quOp & 0xfc) << 20;
862 code[0] = 0x00000001 | ((DDATA(i->def(0)).id + 1) << 2);
863 code[1] = 0xc0200000;
864 code[0] |= prim << 9;
869 code[0] = 0x00000001;
870 code[1] = 0x04200000 | (0xf << 14);
872 code[0] |= prim << 9;
876 code[0] = 0x10000001;
877 code[1] = 0x04200000 | (0xf << 14);
879 code[0] |= prim << 9;
885 interpApply(const FixupEntry *entry, uint32_t *code, const FixupData& data)
895 code[loc + 1] |= 1 << 16;
897 code[loc + 0] |= 1 << 24;
900 code[loc + 1] &= ~(1 << 16);
902 code[loc + 0] &= ~(1 << 24);
910 code[0] = 0x80000000;
917 code[0] |= 1 << 8;
920 code[0] |= 1 << 25;
924 code[0] |= 1 << 24;
929 code[1] = 4 << 16;
931 code[1] = (code[0] & (3 << 24)) >> (24 - 16);
932 code[0] &= ~0x03000000;
933 code[0] |= 1;
944 code[0] = 0xe0000000;
945 code[1] = (i->op == OP_MIN) ? 0xa0000000 : 0xc0000000;
947 code[0] = 0x30000000;
948 code[1] = 0x80000000;
950 code[1] |= 0x20000000;
953 case TYPE_F32: code[0] |= 0x80000000; break;
954 case TYPE_S32: code[1] |= 0x8c000000; break;
955 case TYPE_U32: code[1] |= 0x84000000; break;
956 case TYPE_S16: code[1] |= 0x80000000; break;
964 code[1] |= i->src(0).mod.abs() << 20;
965 code[1] |= i->src(0).mod.neg() << 26;
966 code[1] |= i->src(1).mod.abs() << 19;
967 code[1] |= i->src(1).mod.neg() << 27;
978 code[0] = 0xe0000000;
981 code[1] = 0;
983 code[0] |= neg_mul << 15;
984 code[0] |= neg_add << 22;
986 code[0] |= 1 << 8;
990 code[0] |= neg_mul << 15;
991 code[0] |= neg_add << 22;
993 code[0] |= 1 << 8;
995 code[1] = neg_mul << 26;
996 code[1] |= neg_add << 27;
998 code[1] |= 1 << 29;
1012 code[1] = 0x40000000;
1013 code[0] = 0xe0000000;
1015 code[1] |= neg_mul << 26;
1016 code[1] |= neg_add << 27;
1029 code[0] = 0xb0000000;
1034 code[1] = 0;
1036 code[0] |= neg0 << 15;
1037 code[0] |= neg1 << 22;
1039 code[0] |= 1 << 8;
1042 code[1] = 0;
1044 code[1] |= neg0 << 26;
1045 code[1] |= neg1 << 27;
1047 code[1] |= 1 << 29;
1050 code[0] |= neg0 << 15;
1051 code[0] |= neg1 << 22;
1053 code[0] |= 1 << 8;
1067 code[1] = 0x60000000;
1068 code[0] = 0xe0000000;
1072 code[1] |= neg0 << 26;
1073 code[1] |= neg1 << 27;
1082 code[0] = 0x20008000;
1085 code[1] = 0;
1089 code[0] = 0x20000000;
1090 code[1] = (typeSizeof(i->dType) == 2) ? 0 : 0x04000000;
1096 code[0] |= neg0 << 28;
1097 code[0] |= neg1 << 22;
1101 assert(!(code[0] & 0x10400000) && !i->getPredicate());
1102 code[0] |= 0x10400000;
1112 code[0] = 0xd0000001 | (i->getSrc(s)->reg.data.u16 << 9);
1113 code[1] = 0x20000000;
1115 code[0] |= (DDATA(i->def(0)).id + 1) << 2;
1126 code[0] = 0x40000000;
1130 code[0] |= 0x8100;
1131 code[1] = 0;
1135 code[1] = (i->sType == TYPE_S16) ? (0x8000 | 0x4000) : 0x0000;
1139 code[0] |= 0x8100;
1149 code[0] = 0xc0000000;
1152 code[1] = 0;
1155 code[0] |= 0x8000;
1157 code[0] |= 1 << 8;
1160 code[1] = i->rnd == ROUND_Z ? 0x0000c000 : 0;
1162 code[1] |= 0x08000000;
1164 code[1] |= 1 << 20;
1169 code[0] |= 0x8000;
1171 code[0] |= 1 << 8;
1183 code[1] = 0x80000000;
1184 code[0] = 0xe0000000;
1187 code[1] |= 0x08000000;
1198 code[0] = 0x60000000;
1209 code[1] = 0;
1211 code[0] |= (mode & 1) << 8 | (mode & 2) << 14;
1213 assert(!(code[0] & 0x10400000));
1215 code[0] |= 0x10400000;
1220 code[0] |= (mode & 1) << 8 | (mode & 2) << 14;
1222 assert(!(code[0] & 0x10400000));
1224 code[0] |= 0x10400000;
1227 code[1] = mode << 29;
1232 assert(!(code[1] & 0x0c000000) && !i->getPredicate());
1233 code[1] |= 0xc << 24;
1243 code[0] = 0x50000000;
1245 case TYPE_U32: code[1] = 0x04000000; break;
1246 case TYPE_S32: code[1] = 0x0c000000; break;
1247 case TYPE_U16: code[1] = 0x00000000; break;
1248 case TYPE_S16: code[1] = 0x08000000; break;
1256 case TYPE_U32: code[0] = 0x50008000; break;
1257 case TYPE_S32: code[0] = 0x50008100; break;
1258 case TYPE_U16: code[0] = 0x50000000; break;
1259 case TYPE_S16: code[0] = 0x50000100; break;
1269 alphatestSet(const FixupEntry *entry, uint32_t *code, const FixupData& data)
1286 code[loc + 1] &= ~(0x1f << 14);
1287 code[loc + 1] |= enc << 14;
1293 code[0] = 0x30000000;
1294 code[1] = 0x60000000;
1298 code[0] = 0xe0000000;
1299 code[1] = 0xe0000000;
1301 case TYPE_F32: code[0] |= 0x80000000; break;
1302 case TYPE_S32: code[1] |= 0x0c000000; break;
1303 case TYPE_U32: code[1] |= 0x04000000; break;
1304 case TYPE_S16: code[1] |= 0x08000000; break;
1313 if (i->src(0).mod.neg()) code[1] |= 0x04000000;
1314 if (i->src(1).mod.neg()) code[1] |= 0x08000000;
1315 if (i->src(0).mod.abs()) code[1] |= 0x00100000;
1316 if (i->src(1).mod.abs()) code[1] |= 0x00080000;
1329 case ROUND_NI: code[1] |= 0x08000000; break;
1330 case ROUND_M: code[1] |= 0x00020000; break;
1331 case ROUND_MI: code[1] |= 0x08020000; break;
1332 case ROUND_P: code[1] |= 0x00040000; break;
1333 case ROUND_PI: code[1] |= 0x08040000; break;
1334 case ROUND_Z: code[1] |= 0x00060000; break;
1335 case ROUND_ZI: code[1] |= 0x08060000; break;
1363 code[0] = 0xa0000000;
1368 case TYPE_F64: code[1] = 0xc4404000; break;
1369 case TYPE_S64: code[1] = 0x44414000; break;
1370 case TYPE_U64: code[1] = 0x44404000; break;
1371 case TYPE_F32: code[1] = 0xc4400000; break;
1372 case TYPE_S32: code[1] = 0x44410000; break;
1373 case TYPE_U32: code[1] = 0x44400000; break;
1381 case TYPE_F64: code[1] = 0x8c404000; break;
1382 case TYPE_F32: code[1] = 0x8c400000; break;
1390 case TYPE_F64: code[1] = 0x84404000; break;
1391 case TYPE_F32: code[1] = 0x84400000; break;
1399 case TYPE_F64: code[1] = 0xc0404000; break;
1400 case TYPE_S64: code[1] = 0x40414000; break;
1401 case TYPE_U64: code[1] = 0x40404000; break;
1402 case TYPE_F32: code[1] = 0xc4004000; break;
1403 case TYPE_S32: code[1] = 0x44014000; break;
1404 case TYPE_U32: code[1] = 0x44004000; break;
1405 case TYPE_F16: code[1] = 0xc4000000; break;
1406 case TYPE_U16: code[1] = 0x44000000; break;
1414 case TYPE_F64: code[1] = 0x88404000; break;
1415 case TYPE_F32: code[1] = 0x8c004000; break;
1416 case TYPE_S32: code[1] = 0x0c014000; break;
1417 case TYPE_U32: code[1] = 0x0c004000; break;
1418 case TYPE_F16: code[1] = 0x8c000000; break;
1419 case TYPE_S16: code[1] = 0x0c010000; break;
1420 case TYPE_U16: code[1] = 0x0c000000; break;
1421 case TYPE_S8: code[1] = 0x0c018000; break;
1422 case TYPE_U8: code[1] = 0x0c008000; break;
1430 case TYPE_F64: code[1] = 0x80404000; break;
1431 case TYPE_F32: code[1] = 0x84004000; break;
1432 case TYPE_S32: code[1] = 0x04014000; break;
1433 case TYPE_U32: code[1] = 0x04004000; break;
1434 case TYPE_F16: code[1] = 0x84000000; break;
1435 case TYPE_S16: code[1] = 0x04010000; break;
1436 case TYPE_U16: code[1] = 0x04000000; break;
1437 case TYPE_S8: code[1] = 0x04018000; break;
1438 case TYPE_U8: code[1] = 0x04008000; break;
1453 code[1] |= 0x00004000;
1458 case OP_ABS: code[1] |= 1 << 20; break;
1459 case OP_SAT: code[1] |= 1 << 19; break;
1460 case OP_NEG: code[1] |= 1 << 29; break;
1464 code[1] ^= i->src(0).mod.neg() << 29;
1465 code[1] |= i->src(0).mod.abs() << 20;
1467 code[1] |= 1 << 19;
1477 code[0] = 0xb0000000;
1478 code[1] = (i->op == OP_PREEX2) ? 0xc0004000 : 0xc0000000;
1480 code[1] |= i->src(0).mod.abs() << 20;
1481 code[1] |= i->src(0).mod.neg() << 26;
1489 code[0] = 0x90000000;
1494 code[0] |= i->src(0).mod.abs() << 15;
1495 code[0] |= i->src(0).mod.neg() << 22;
1498 code[1] = subOp << 29;
1499 code[1] |= i->src(0).mod.abs() << 20;
1500 code[1] |= i->src(0).mod.neg() << 26;
1503 code[1] |= 1 << 27;
1512 code[0] = 0xd0000000;
1513 code[1] = 0x0002c000;
1518 code[1] |= 0x04000000;
1530 code[0] = 0xd0000000;
1531 code[1] = 0;
1535 case OP_OR: code[0] |= 0x0100; break;
1536 case OP_XOR: code[0] |= 0x8000; break;
1542 code[0] |= 1 << 22;
1547 case OP_AND: code[1] = 0x04000000; break;
1548 case OP_OR: code[1] = 0x04004000; break;
1549 case OP_XOR: code[1] = 0x04008000; break;
1555 code[1] |= 1 << 16;
1557 code[1] |= 1 << 17;
1566 code[0] = 0x00000001 | (shl << 16);
1567 code[1] = 0xc0000000;
1569 code[0] |= (DDATA(i->def(0)).id + 1) << 2;
1583 code[0] = 0x30000001;
1584 code[1] = (i->op == OP_SHR) ? 0xe4000000 : 0xc4000000;
1586 code[1] |= 1 << 27;
1589 code[1] |= 1 << 20;
1590 code[0] |= (i->getSrc(1)->reg.data.u32 & 0x7f) << 16;
1603 code[0] = (i->op == OP_EMIT) ? 0xf0000201 : 0xf0000401;
1604 code[1] = 0xc0000000;
1612 code[0] = 0xf0000001;
1613 code[1] = 0x00000000;
1617 code[1] = 0x20000000;
1620 code[1] = 0x40000000;
1623 code[0] |= 0x01000000;
1626 code[0] |= 0x01000000;
1627 code[1] = 0x80000000;
1630 code[1] = 0x60020000;
1637 code[0] |= i->tex.r << 9;
1638 code[0] |= i->tex.s << 17;
1648 code[0] |= (argc - 1) << 22;
1651 code[0] |= 0x08000000;
1654 code[1] |= (i->tex.offset[0] & 0xf) << 24;
1655 code[1] |= (i->tex.offset[1] & 0xf) << 20;
1656 code[1] |= (i->tex.offset[2] & 0xf) << 16;
1659 code[0] |= (i->tex.mask & 0x3) << 25;
1660 code[1] |= (i->tex.mask & 0xc) << 12;
1663 code[1] |= 1 << 2;
1665 code[1] |= 1 << 3;
1677 code[0] = 0xf0000001;
1678 code[1] = 0x60000000;
1680 code[0] |= i->tex.r << 9;
1681 code[0] |= i->tex.s << 17;
1683 code[0] |= (i->tex.mask & 0x3) << 25;
1684 code[1] |= (i->tex.mask & 0xc) << 12;
1694 code[0] = 0xf8000001 | (3 << 22) | (i->tex.s << 17) | (i->tex.r << 9);
1695 code[1] = 0x60010000;
1697 code[0] |= (i->tex.mask & 0x3) << 25;
1698 code[1] |= (i->tex.mask & 0xc) << 12;
1709 code[0] = 0x10000003; // bra
1710 code[1] = 0x00000780; // always
1720 code[0] = 0x20000003; // call
1721 code[1] = 0x00000000; // no predicate
1735 code[0] = 0x00000003 | (flowOp << 28);
1736 code[1] = 0x00000000;
1781 code[0] |= ((pos >> 2) & 0xffff) << 11;
1782 code[1] |= ((pos >> 18) & 0x003f) << 14;
1799 code[0] = 0x82000003 | (barId->reg.data.u32 << 21);
1800 code[1] = 0x00004000;
1803 code[0] |= 1 << 26;
1825 code[0] = 0xd0000001;
1826 code[1] = 0xe0c00000 | (subOp << 2);
1828 code[1] |= 1 << 21;
1838 code[0] |= i->getSrc(0)->reg.fileIndex << 23;
1850 ERROR("code emitter output buffer too small\n");
2063 code[1] |= 0x2;
2066 code[1] |= 0x1;
2068 assert((insn->encSize == 8) == (code[0] & 1));
2070 code += insn->encSize / 4;
2218 code = NULL;