예제 #1
0
  /**
   * Specify the registers used by this instruction.
   *
   * @param rs is the register set in use
   * @param index is an index associated with the instruction
   * @param strength is the importance of the instruction
   * @see scale.backend.RegisterAllocator#useRegister(int,int,int)
   * @see scale.backend.RegisterAllocator#defRegister(int,int)
   */
  public void specifyRegisterUsage(RegisterAllocator rs, int index, int strength) {
    super.specifyRegisterUsage(rs, index, strength);

    if (annulled) return; // Annulled instructions are processed as part of an AnnulMarker.

    if (delaySlot != null) delaySlot.specifyRegisterUsage(rs, index, strength);
  }
예제 #2
0
 /**
  * Map the registers defined in the instruction as destinations to the specified register. If the
  * register is not used as a destination register, no change is made.
  *
  * @param oldReg is the previous destination register
  * @param newReg is the new destination register
  */
 public void remapDestRegister(int oldReg, int newReg) {
   super.remapDestRegister(oldReg, newReg);
   if (delaySlot != null) delaySlot.remapDestRegister(oldReg, newReg);
 }
예제 #3
0
 public void remapRegisters(int[] map) {
   super.remapRegisters(map);
   if (delaySlot != null) delaySlot.remapRegisters(map);
 }