Lines Matching full:needs

55 /// Basic blocks are always exited in WQM as long as some successor needs WQM.
128 char Needs = 0;
134 char Needs = 0;
278 << ", Needs = " << PrintState(BII.second.Needs)
284 dbgs() << " " << MI << " Needs = " << PrintState(III->second.Needs)
304 // Ignore if the flag is already encompassed by the existing needs, or we
306 if ((II.Needs & Flag) == Flag)
310 II.Needs |= Flag;
488 // instruction as needing e.g. WQM before visiting it and realizing it needs
521 // it needs to be executed in WQM or Exact so that its copy doesn't
538 // need to be shuffled in strict wqm, but the export itself needs to
540 BBI.Needs |= StateExact;
554 III.Needs |= StateStrictWQM;
569 BBI.Needs |= StateExact;
633 Instructions[&MI].Needs = StateWQM;
634 II.Needs = StateWQM;
638 if (II.Needs & StateWQM) {
639 BI.Needs |= StateWQM;
648 char InNeeds = (II.Needs & ~StateStrict) | II.OutNeeds;
659 assert(!(II.Needs & StateExact));
661 if (II.Needs != 0)
662 markInstructionUses(MI, II.Needs, Worklist);
666 if (II.Needs & StateStrictWWM)
667 BI.Needs |= StateStrictWWM;
668 if (II.Needs & StateStrictWQM)
669 BI.Needs |= StateStrictWQM;
686 // Predecessor blocks must provide for our WQM/Exact needs.
955 // so exec mask needs to be factored in.
1250 if (!IsEntry && BI.Needs == StateWQM && BI.OutNeeds != StateExact) {
1288 char Needs = StateExact | StateWQM; // Strict mode is disabled by default.
1297 // First, figure out the allowed states (Needs) based on the propagated
1305 if (III->second.Needs & StateStrictWWM)
1306 Needs = StateStrictWWM;
1307 else if (III->second.Needs & StateStrictWQM)
1308 Needs = StateStrictWQM;
1309 else if (III->second.Needs & StateWQM)
1310 Needs = StateWQM;
1312 Needs &= ~III->second.Disabled;
1318 Needs = StateExact | StateWQM | StateStrict;
1323 Needs = StateExact;
1329 Needs = StateWQM;
1331 Needs = StateExact;
1333 Needs = StateWQM | StateExact;
1337 if (!(Needs & State)) {
1339 if (State == StateStrictWWM || Needs == StateStrictWWM ||
1340 State == StateStrictWQM || Needs == StateStrictWQM) {
1357 SaveSCC = (Needs & StateStrict) || ((Needs & StateWQM) && WQMFromExec);
1361 SaveSCC = !(Needs & StateWQM);
1368 prepareInsertion(MBB, First, II, Needs == StateWQM, SaveSCC);
1380 if (Needs & StateStrict) {
1382 assert(Needs == StateStrictWWM || Needs == StateStrictWQM);
1386 toStrictMode(MBB, Before, SavedNonStrictReg, Needs);
1387 State = Needs;
1390 if (State == StateWQM && (Needs & StateExact) && !(Needs & StateWQM)) {
1398 } else if (State == StateExact && (Needs & StateWQM) &&
1399 !(Needs & StateExact)) {
1411 // non-StrictWWM state that already matches our needs, but we
1413 assert(Needs & State);
1418 if (Needs != (StateExact | StateWQM | StateStrict)) {
1419 if (Needs != (StateExact | StateWQM))
1708 // Shader only needs WQM