Home | History | Annotate | Download | only in codegen

Lines Matching refs:ldst

1253 updateLdStOffset(Instruction *ldst, int32_t offset, Function *fn)
1255 if (offset != ldst->getSrc(0)->reg.data.offset) {
1256 if (ldst->getSrc(0)->refCount() > 1)
1257 ldst->setSrc(0, cloneShallow(fn, ldst->getSrc(0)));
1258 ldst->getSrc(0)->reg.data.offset = offset;
1279 bool overlaps(const Instruction *ldst) const;
1283 inline void set(const Instruction *ldst);
1310 void addRecord(Instruction *ldst);
1456 MemoryOpt::Record::set(const Instruction *ldst)
1458 const Symbol *mem = ldst->getSrc(0)->asSym();
1460 rel[0] = ldst->getIndirect(0, 0);
1461 rel[1] = ldst->getIndirect(0, 1);
1464 size = typeSizeof(ldst->sType);
1650 MemoryOpt::Record::overlaps(const Instruction *ldst) const
1653 that.set(ldst);
1710 Instruction *ldst, *next;
1714 for (ldst = bb->getEntry(); ldst; ldst = next) {
1717 next = ldst->next;
1719 if (ldst->op == OP_LOAD || ldst->op == OP_VFETCH) {
1720 if (ldst->isDead()) {
1722 delete_Instruction(prog, ldst);
1726 if (ldst->op == OP_STORE || ldst->op == OP_EXPORT) {
1730 if (ldst->op == OP_CALL) {
1736 if (ldst->op == OP_EMIT || ldst->op == OP_RESTART) {
1741 if (ldst->getPredicate()) // TODO: handle predicated ld/st
1745 DataFile file = ldst->src(0).getFile();
1750 rec = findRecord(ldst, false, isAdjacent);
1752 keep = !replaceLdFromSt(ldst, rec);
1756 rec = keep ? findRecord(ldst, true, isAdjacent) : NULL;
1759 keep = !replaceLdFromLd(ldst, rec);
1762 keep = !combineLd(rec, ldst);
1765 lockStores(ldst);
1767 rec = findRecord(ldst, false, isAdjacent);
1770 keep = !replaceStFromSt(ldst, rec);
1772 keep = !combineSt(rec, ldst);
1775 purgeRecords(ldst, DATA_FILE_COUNT);
1778 addRecord(ldst);