Lines Matching full:needs

55 /// Basic blocks are always exited in WQM as long as some successor needs WQM.
128 char Needs = 0;
135 char Needs = 0;
278 << ", Needs = " << PrintState(BII.second.Needs)
284 dbgs() << " " << MI << " Needs = " << PrintState(III->second.Needs)
307 // Ignore if the flag is already encompassed by the existing needs, or we
309 if ((II.Needs & Flag) == Flag)
313 II.Needs |= Flag;
490 // instruction as needing e.g. WQM before visiting it and realizing it needs
523 // it needs to be executed in WQM or Exact so that its copy doesn't
540 // need to be shuffled in strict wqm, but the export itself needs to
542 BBI.Needs |= StateExact;
556 III.Needs |= StateStrictWQM;
571 BBI.Needs |= StateExact;
636 Instructions[&MI].Needs = StateWQM;
637 II.Needs = StateWQM;
641 if (II.Needs & StateWQM) {
642 BI.Needs |= StateWQM;
651 char InNeeds = (II.Needs & ~StateStrict) | II.OutNeeds;
662 assert(!(II.Needs & StateExact));
664 if (II.Needs != 0)
665 markInstructionUses(MI, II.Needs, Worklist);
669 if (II.Needs & StateStrictWWM)
670 BI.Needs |= StateStrictWWM;
671 if (II.Needs & StateStrictWQM)
672 BI.Needs |= StateStrictWQM;
689 // Predecessor blocks must provide for our WQM/Exact needs.
958 // so exec mask needs to be factored in.
1257 if (!IsEntry && BI.Needs == StateWQM && BI.OutNeeds != StateExact) {
1295 char Needs = StateExact | StateWQM; // Strict mode is disabled by default.
1304 // Adjust needs if this is first instruction of WQM requiring shader.
1306 Needs = StateWQM;
1308 // First, figure out the allowed states (Needs) based on the propagated
1316 if (III->second.Needs & StateStrictWWM)
1317 Needs = StateStrictWWM;
1318 else if (III->second.Needs & StateStrictWQM)
1319 Needs = StateStrictWQM;
1320 else if (III->second.Needs & StateWQM)
1321 Needs = StateWQM;
1323 Needs &= ~III->second.Disabled;
1329 Needs = StateExact | StateWQM | StateStrict;
1334 Needs = StateExact;
1340 Needs = StateWQM;
1342 Needs = StateExact;
1344 Needs = StateWQM | StateExact;
1348 if (!(Needs & State)) {
1350 if (State == StateStrictWWM || Needs == StateStrictWWM ||
1351 State == StateStrictWQM || Needs == StateStrictWQM) {
1368 SaveSCC = (Needs & StateStrict) || ((Needs & StateWQM) && WQMFromExec);
1372 SaveSCC = !(Needs & StateWQM);
1380 StartState == StateWQM && (Needs & StateExact) && !(Needs & StateWQM);
1381 bool ExactToWQM = StartState == StateExact && (Needs & StateWQM) &&
1382 !(Needs & StateExact);
1383 bool PreferLast = Needs == StateWQM;
1409 if (Needs & StateStrict) {
1411 assert(Needs == StateStrictWWM || Needs == StateStrictWQM);
1415 toStrictMode(MBB, Before, SavedNonStrictReg, Needs);
1416 State = Needs;
1438 // non-StrictWWM state that already matches our needs, but we
1440 assert(Needs & State);
1445 if (Needs != (StateExact | StateWQM | StateStrict)) {
1446 if (Needs != (StateExact | StateWQM))
1767 Instructions[MI].Needs |= StateStrictWWM;
1769 Blocks[MI->getParent()].Needs |= StateStrictWWM;
1785 // Shader only needs WQM