org.jikesrvm.compilers.opt.ir
Class MIR_CompareExchange

java.lang.Object
  extended by org.jikesrvm.compilers.opt.ir.InstructionFormat
      extended by org.jikesrvm.compilers.opt.ir.MIR_CompareExchange

public final class MIR_CompareExchange
extends InstructionFormat

The MIR_CompareExchange InstructionFormat class. The header comment for Instruction contains an explanation of the role of InstructionFormats in the opt compiler's IR.


Field Summary
 
Fields inherited from class org.jikesrvm.compilers.opt.ir.InstructionFormat
ALoad_format, ALoad_traits, ARCH_INDEPENDENT_INSTR_FORMAT_END_format, AStore_format, AStore_traits, Athrow_format, Athrow_traits, Attempt_format, Attempt_traits, BBend_format, BBend_traits, Binary_format, Binary_traits, BooleanCmp_format, BooleanCmp_traits, BoundsCheck_format, BoundsCheck_traits, CacheOp_format, CacheOp_traits, Call_format, Call_traits, CondMove_format, CondMove_traits, Empty_format, Empty_traits, GetField_format, GetField_traits, GetStatic_format, GetStatic_traits, Goto_format, Goto_traits, GuardedBinary_format, GuardedBinary_traits, GuardedSet_format, GuardedSet_traits, GuardedUnary_format, GuardedUnary_traits, IfCmp_format, IfCmp_traits, IfCmp2_format, IfCmp2_traits, InlineGuard_format, InlineGuard_traits, InstanceOf_format, InstanceOf_traits, InstrumentedCounter_format, InstrumentedCounter_traits, Label_format, Label_traits, Load_format, Load_traits, LookupSwitch_format, LookupSwitch_traits, LowTableSwitch_format, LowTableSwitch_traits, MIN_OPERAND_ARRAY_LENGTH, MIR_BinaryAcc_format, MIR_BinaryAcc_traits, MIR_Branch_format, MIR_Branch_traits, MIR_CacheOp_format, MIR_CacheOp_traits, MIR_Call_format, MIR_Call_traits, MIR_CaseLabel_format, MIR_CaseLabel_traits, MIR_Compare_format, MIR_Compare_traits, MIR_CompareExchange_format, MIR_CompareExchange_traits, MIR_CompareExchange8B_format, MIR_CompareExchange8B_traits, MIR_CondBranch_format, MIR_CondBranch_traits, MIR_CondBranch2_format, MIR_CondBranch2_traits, MIR_CondMove_format, MIR_CondMove_traits, MIR_ConvertDW2QW_format, MIR_ConvertDW2QW_traits, MIR_Divide_format, MIR_Divide_traits, MIR_DoubleShift_format, MIR_DoubleShift_traits, MIR_Empty_format, MIR_Empty_traits, MIR_FSave_format, MIR_FSave_traits, MIR_Lea_format, MIR_Lea_traits, MIR_LowTableSwitch_format, MIR_LowTableSwitch_traits, MIR_Move_format, MIR_Move_traits, MIR_Multiply_format, MIR_Multiply_traits, MIR_Nullary_format, MIR_Nullary_traits, MIR_RDTSC_format, MIR_RDTSC_traits, MIR_Return_format, MIR_Return_traits, MIR_Set_format, MIR_Set_traits, MIR_Test_format, MIR_Test_traits, MIR_Trap_format, MIR_Trap_traits, MIR_TrapIf_format, MIR_TrapIf_traits, MIR_Unary_format, MIR_Unary_traits, MIR_UnaryAcc_format, MIR_UnaryAcc_traits, MIR_UnaryNoRes_format, MIR_UnaryNoRes_traits, MIR_XChng_format, MIR_XChng_traits, MonitorOp_format, MonitorOp_traits, Move_format, Move_traits, Multianewarray_format, Multianewarray_traits, New_format, New_traits, NewArray_format, NewArray_traits, Nullary_format, Nullary_traits, NullCheck_format, NullCheck_traits, OsrBarrier_format, OsrBarrier_traits, OsrPoint_format, OsrPoint_traits, Phi_format, Phi_traits, Prepare_format, Prepare_traits, Prologue_format, Prologue_traits, PutField_format, PutField_traits, PutStatic_format, PutStatic_traits, Return_format, Return_traits, Store_format, Store_traits, StoreCheck_format, StoreCheck_traits, TableSwitch_format, TableSwitch_traits, Trap_format, Trap_traits, TrapIf_format, TrapIf_traits, TypeCheck_format, TypeCheck_traits, Unary_format, Unary_traits, Unassigned_format, ZeroCheck_format, ZeroCheck_traits
 
Constructor Summary
MIR_CompareExchange()
           
 
Method Summary
static boolean conforms(Instruction i)
          InstructionFormat identification method for MIR_CompareExchange.
static boolean conforms(Operator o)
          InstructionFormat identification method for MIR_CompareExchange.
static Instruction create(Operator o, RegisterOperand OldValue, MemoryOperand MemAddr, RegisterOperand NewValue)
          Create an instruction of the MIR_CompareExchange instruction format.
static MemoryOperand getClearMemAddr(Instruction i)
          Get the operand called MemAddr from the argument instruction clearing its instruction pointer.
static RegisterOperand getClearNewValue(Instruction i)
          Get the operand called NewValue from the argument instruction clearing its instruction pointer.
static RegisterOperand getClearOldValue(Instruction i)
          Get the operand called OldValue from the argument instruction clearing its instruction pointer.
static MemoryOperand getMemAddr(Instruction i)
          Get the operand called MemAddr from the argument instruction.
static RegisterOperand getNewValue(Instruction i)
          Get the operand called NewValue from the argument instruction.
static RegisterOperand getOldValue(Instruction i)
          Get the operand called OldValue from the argument instruction.
static boolean hasMemAddr(Instruction i)
          Does the argument instruction have a non-null operand named MemAddr?
static boolean hasNewValue(Instruction i)
          Does the argument instruction have a non-null operand named NewValue?
static boolean hasOldValue(Instruction i)
          Does the argument instruction have a non-null operand named OldValue?
static int indexOfMemAddr(Instruction i)
          Return the index of the operand called MemAddr in the argument instruction.
static int indexOfNewValue(Instruction i)
          Return the index of the operand called NewValue in the argument instruction.
static int indexOfOldValue(Instruction i)
          Return the index of the operand called OldValue in the argument instruction.
static Instruction mutate(Instruction i, Operator o, RegisterOperand OldValue, MemoryOperand MemAddr, RegisterOperand NewValue)
          Mutate the argument instruction into an instruction of the MIR_CompareExchange instruction format having the specified operator and operands.
static void setMemAddr(Instruction i, MemoryOperand MemAddr)
          Set the operand called MemAddr in the argument instruction to the argument operand.
static void setNewValue(Instruction i, RegisterOperand NewValue)
          Set the operand called NewValue in the argument instruction to the argument operand.
static void setOldValue(Instruction i, RegisterOperand OldValue)
          Set the operand called OldValue in the argument instruction to the argument operand.
 
Methods inherited from class org.jikesrvm.compilers.opt.ir.InstructionFormat
fail, fail
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MIR_CompareExchange

public MIR_CompareExchange()
Method Detail

conforms

public static boolean conforms(Instruction i)
InstructionFormat identification method for MIR_CompareExchange.

Parameters:
i - an instruction
Returns:
true if the InstructionFormat of the argument instruction is MIR_CompareExchange or false if it is not.

conforms

public static boolean conforms(Operator o)
InstructionFormat identification method for MIR_CompareExchange.

Parameters:
o - an instruction
Returns:
true if the InstructionFormat of the argument operator is MIR_CompareExchange or false if it is not.

getOldValue

public static RegisterOperand getOldValue(Instruction i)
Get the operand called OldValue from the argument instruction. Note that the returned operand will still point to its containing instruction.

Parameters:
i - the instruction to fetch the operand from
Returns:
the operand called OldValue

getClearOldValue

public static RegisterOperand getClearOldValue(Instruction i)
Get the operand called OldValue from the argument instruction clearing its instruction pointer. The returned operand will not point to any containing instruction.

Parameters:
i - the instruction to fetch the operand from
Returns:
the operand called OldValue

setOldValue

public static void setOldValue(Instruction i,
                               RegisterOperand OldValue)
Set the operand called OldValue in the argument instruction to the argument operand. The operand will now point to the argument instruction as its containing instruction.

Parameters:
i - the instruction in which to store the operand
OldValue - the operand to store

indexOfOldValue

public static int indexOfOldValue(Instruction i)
Return the index of the operand called OldValue in the argument instruction.

Parameters:
i - the instruction to access.
Returns:
the index of the operand called OldValue in the argument instruction

hasOldValue

public static boolean hasOldValue(Instruction i)
Does the argument instruction have a non-null operand named OldValue?

Parameters:
i - the instruction to access.
Returns:
true if the instruction has an non-null operand named OldValue or false if it does not.

getMemAddr

public static MemoryOperand getMemAddr(Instruction i)
Get the operand called MemAddr from the argument instruction. Note that the returned operand will still point to its containing instruction.

Parameters:
i - the instruction to fetch the operand from
Returns:
the operand called MemAddr

getClearMemAddr

public static MemoryOperand getClearMemAddr(Instruction i)
Get the operand called MemAddr from the argument instruction clearing its instruction pointer. The returned operand will not point to any containing instruction.

Parameters:
i - the instruction to fetch the operand from
Returns:
the operand called MemAddr

setMemAddr

public static void setMemAddr(Instruction i,
                              MemoryOperand MemAddr)
Set the operand called MemAddr in the argument instruction to the argument operand. The operand will now point to the argument instruction as its containing instruction.

Parameters:
i - the instruction in which to store the operand
MemAddr - the operand to store

indexOfMemAddr

public static int indexOfMemAddr(Instruction i)
Return the index of the operand called MemAddr in the argument instruction.

Parameters:
i - the instruction to access.
Returns:
the index of the operand called MemAddr in the argument instruction

hasMemAddr

public static boolean hasMemAddr(Instruction i)
Does the argument instruction have a non-null operand named MemAddr?

Parameters:
i - the instruction to access.
Returns:
true if the instruction has an non-null operand named MemAddr or false if it does not.

getNewValue

public static RegisterOperand getNewValue(Instruction i)
Get the operand called NewValue from the argument instruction. Note that the returned operand will still point to its containing instruction.

Parameters:
i - the instruction to fetch the operand from
Returns:
the operand called NewValue

getClearNewValue

public static RegisterOperand getClearNewValue(Instruction i)
Get the operand called NewValue from the argument instruction clearing its instruction pointer. The returned operand will not point to any containing instruction.

Parameters:
i - the instruction to fetch the operand from
Returns:
the operand called NewValue

setNewValue

public static void setNewValue(Instruction i,
                               RegisterOperand NewValue)
Set the operand called NewValue in the argument instruction to the argument operand. The operand will now point to the argument instruction as its containing instruction.

Parameters:
i - the instruction in which to store the operand
NewValue - the operand to store

indexOfNewValue

public static int indexOfNewValue(Instruction i)
Return the index of the operand called NewValue in the argument instruction.

Parameters:
i - the instruction to access.
Returns:
the index of the operand called NewValue in the argument instruction

hasNewValue

public static boolean hasNewValue(Instruction i)
Does the argument instruction have a non-null operand named NewValue?

Parameters:
i - the instruction to access.
Returns:
true if the instruction has an non-null operand named NewValue or false if it does not.

create

public static Instruction create(Operator o,
                                 RegisterOperand OldValue,
                                 MemoryOperand MemAddr,
                                 RegisterOperand NewValue)
Create an instruction of the MIR_CompareExchange instruction format.

Parameters:
o - the instruction's operator
OldValue - the instruction's OldValue operand
MemAddr - the instruction's MemAddr operand
NewValue - the instruction's NewValue operand
Returns:
the newly created MIR_CompareExchange instruction

mutate

public static Instruction mutate(Instruction i,
                                 Operator o,
                                 RegisterOperand OldValue,
                                 MemoryOperand MemAddr,
                                 RegisterOperand NewValue)
Mutate the argument instruction into an instruction of the MIR_CompareExchange instruction format having the specified operator and operands.

Parameters:
i - the instruction to mutate
o - the instruction's operator
OldValue - the instruction's OldValue operand
MemAddr - the instruction's MemAddr operand
NewValue - the instruction's NewValue operand
Returns:
the mutated instruction