Lib/Target/Satisfy.cpp
/**
 * Satisfy VideoCore constraints
 *
 * Transform an instruction sequence to satisfy various VideoCore
 * constraints, including:
 *
 *   1. fill branch delay slots with NOPs;
 *
 *   2. introduce accumulators for operands mapped to the same
 *      register file;
 *
 *   3. introduce accumulators for horizontal rotation operands;
 *
 *   4. insert NOPs to account for data hazards: a destination
 *      register (assuming it's not an accumulator) cannot be read by
 *      the next instruction.
 */
Satisfy VideoCore constraints
Transform an instruction sequence to satisfy various VideoCore
constraints, including.

1. fill branch delay slots with NOPs.

2. introduce accumulators for operands mapped to the same
register file.

3. introduce accumulators for horizontal rotation operands.

4. insert NOPs to account for data hazards: a destination
register (assuming it's not an accumulator) cannot be read by
the next instruction.
Satisfy VideoCore constraints Transform an instruction sequence to satisfy various VideoCore constraints including . 1 . fill branch delay slots with NOPs . 2 . introduce accumulators for operands mapped to the same register file . 3 . introduce accumulators for horizontal rotation operands . 4 . insert NOPs to account for data hazards : a destination register ( assuming it ' s not an accumulator ) cannot be read by the next instruction .
void satisfy(Instr::List &instrs) {
  Instr::List newInstrs = insertMoves(instrs);
  if (Platform::compiling_for_vc4()) {
    newInstrs = insertMoves_vc4(newInstrs);
  }
  newInstrs = insertNops(newInstrs);
  instrs = removeVPMStall(newInstrs);
}
void satisfy ( Instr :: List & instrs ) { Instr :: List newInstrs = insertMoves ( instrs ) ; if ( Platform :: compiling_for_vc4 ( ) ) { newInstrs = insertMoves_vc4 ( newInstrs ) ; } newInstrs = insertNops ( newInstrs ) ; instrs = removeVPMStall ( newInstrs ) ; }
Satisfy VideoCore constraints
 Transform an instruction sequence to satisfy various VideoCore
 constraints, including:
Satisfy VideoCore constraints Transform an instruction sequence to satisfy various VideoCore constraints including :
// Apply passes