Home | History | Annotate | Download | only in CodeGen

Lines Matching defs:Def

114 static bool isNopCopy(MachineInstr *CopyMI, unsigned Def, unsigned Src,
117 if (Def == SrcSrc)
119 if (TRI->isSubRegister(SrcSrc, Def)) {
121 unsigned SubIdx = TRI->getSubRegIndex(SrcSrc, Def);
132 // maintain imp-use/imp-def chains.
139 DenseMap<unsigned, MachineInstr*> AvailCopyMap; // Def -> available copies map
140 DenseMap<unsigned, MachineInstr*> CopyMap; // Def -> copies map
141 SourceMap SrcMap; // Src -> Def map
151 unsigned Def = MI->getOperand(0).getReg();
154 if (TargetRegisterInfo::isVirtualRegister(Def) ||
162 if (!MRI->isReserved(Def) &&
164 isNopCopy(CopyMI, Def, Src, TRI)) {
167 // %ECX<def> = COPY %EAX<kill>
169 // %EAX<def> = COPY %ECX
171 // %ECX<def> = COPY %EAX
175 // %RSP<def> = COPY %RAX
177 // %RAX<def> = COPY %RSP
181 // Clear any kills of Def between CopyMI and MI. This extends the
184 I->clearRegisterKills(Def, TRI);
209 // %xmm9<def> = copy %xmm2
211 // %xmm2<def> = copy %xmm0
213 // %xmm2<def> = copy %xmm9
214 SourceNoLongerAvailable(Def, SrcMap, AvailCopyMap);
216 // Remember Def is defined by the copy.
217 // ... Make sure to clear the def maps of aliases first.
218 for (MCRegAliasIterator AI(Def, TRI, false); AI.isValid(); ++AI) {
222 for (MCSubRegIterator SR(Def, TRI, /*IncludeSelf=*/true); SR.isValid();
228 // Remember source that's copied to Def. Once it's clobbered, then
230 if (std::find(SrcMap[Src].begin(), SrcMap[Src].end(), Def) ==
232 SrcMap[Src].push_back(Def);