Package | Description |
---|---|
org.jikesrvm.compilers.opt.bc2ir |
Provides classes that implement the transformation from bytecode to the
high-level intermediate representation (HIR).
|
org.jikesrvm.compilers.opt.controlflow | |
org.jikesrvm.compilers.opt.ir | |
org.jikesrvm.compilers.opt.ir.operand | |
org.jikesrvm.compilers.opt.ir.operand.ia32 | |
org.jikesrvm.compilers.opt.lir2mir |
Provides classes that implement the transition from low-level IR to
machine-specific IR.
|
org.jikesrvm.compilers.opt.lir2mir.ia32 |
Provides classes that implement the IA32-specific parts
of the transition from low-level IR to machine-specific IR.
|
org.jikesrvm.compilers.opt.ssa |
SSA implementation (disabled because of bugs, see entry in issue tracker).
|
Modifier and Type | Method and Description |
---|---|
private static Instruction |
GenerateMagic._cmpHelper(BC2IR bc2ir,
GenerationContext gc,
ConditionOperand cond,
Operand given_o2) |
private Instruction |
BC2IR._intIfCmpHelper(ConditionOperand cond) |
private Instruction |
BC2IR._intIfHelper(ConditionOperand cond) |
private Instruction |
BC2IR._refIfCmpHelper(ConditionOperand cond) |
private Instruction |
BC2IR._refIfNullHelper(ConditionOperand cond) |
Modifier and Type | Field and Description |
---|---|
ConditionOperand |
AnnotatedLSTNode.condition
The condition that is used to check for the end of loop
|
Modifier and Type | Method and Description |
---|---|
private void |
BranchOptimizations.booleanCompareHelper(Instruction cb,
RegisterOperand res,
Operand val1,
Operand val2,
ConditionOperand cond)
Generate a boolean operation opcode
1) IF br !
|
private boolean |
BranchOptimizations.fpConditionOK(ConditionOperand c)
Is a specified condition operand 'safe' to transfer into an FCMP
instruction?
|
Modifier and Type | Method and Description |
---|---|
static ConditionOperand |
TrapIf.getClearCond(Instruction i)
Get the operand called Cond from the argument
instruction clearing its instruction pointer.
|
static ConditionOperand |
CondMove.getClearCond(Instruction i)
Get the operand called Cond from the argument
instruction clearing its instruction pointer.
|
static ConditionOperand |
BooleanCmp.getClearCond(Instruction i)
Get the operand called Cond from the argument
instruction clearing its instruction pointer.
|
static ConditionOperand |
IfCmp.getClearCond(Instruction i)
Get the operand called Cond from the argument
instruction clearing its instruction pointer.
|
static ConditionOperand |
IfCmp2.getClearCond1(Instruction i)
Get the operand called Cond1 from the argument
instruction clearing its instruction pointer.
|
static ConditionOperand |
IfCmp2.getClearCond2(Instruction i)
Get the operand called Cond2 from the argument
instruction clearing its instruction pointer.
|
static ConditionOperand |
TrapIf.getCond(Instruction i)
Get the operand called Cond from the
argument instruction.
|
static ConditionOperand |
CondMove.getCond(Instruction i)
Get the operand called Cond from the
argument instruction.
|
static ConditionOperand |
BooleanCmp.getCond(Instruction i)
Get the operand called Cond from the
argument instruction.
|
static ConditionOperand |
IfCmp.getCond(Instruction i)
Get the operand called Cond from the
argument instruction.
|
static ConditionOperand |
IfCmp2.getCond1(Instruction i)
Get the operand called Cond1 from the
argument instruction.
|
static ConditionOperand |
IfCmp2.getCond2(Instruction i)
Get the operand called Cond2 from the
argument instruction.
|
Modifier and Type | Method and Description |
---|---|
static Instruction |
IfCmp.create(Operator o,
RegisterOperand GuardResult,
Operand Val1,
Operand Val2,
ConditionOperand Cond,
BranchOperand Target,
BranchProfileOperand BranchProfile)
Create an instruction of the IfCmp instruction format.
|
static Instruction |
IfCmp2.create(Operator o,
RegisterOperand GuardResult,
Operand Val1,
Operand Val2,
ConditionOperand Cond1,
BranchOperand Target1,
BranchProfileOperand BranchProfile1,
ConditionOperand Cond2,
BranchOperand Target2,
BranchProfileOperand BranchProfile2)
Create an instruction of the IfCmp2 instruction format.
|
static Instruction |
BooleanCmp.create(Operator o,
RegisterOperand Result,
Operand Val1,
Operand Val2,
ConditionOperand Cond,
BranchProfileOperand BranchProfile)
Create an instruction of the BooleanCmp instruction format.
|
static Instruction |
CondMove.create(Operator o,
RegisterOperand Result,
Operand Val1,
Operand Val2,
ConditionOperand Cond,
Operand TrueValue,
Operand FalseValue)
Create an instruction of the CondMove instruction format.
|
static Instruction |
TrapIf.create(Operator o,
RegisterOperand GuardResult,
Operand Val1,
Operand Val2,
ConditionOperand Cond,
TrapCodeOperand TCode)
Create an instruction of the TrapIf instruction format.
|
static Instruction |
IfCmp.mutate(Instruction i,
Operator o,
RegisterOperand GuardResult,
Operand Val1,
Operand Val2,
ConditionOperand Cond,
BranchOperand Target,
BranchProfileOperand BranchProfile)
Mutate the argument instruction into an instruction of the
IfCmp instruction format having the specified
operator and operands.
|
static Instruction |
IfCmp2.mutate(Instruction i,
Operator o,
RegisterOperand GuardResult,
Operand Val1,
Operand Val2,
ConditionOperand Cond1,
BranchOperand Target1,
BranchProfileOperand BranchProfile1,
ConditionOperand Cond2,
BranchOperand Target2,
BranchProfileOperand BranchProfile2)
Mutate the argument instruction into an instruction of the
IfCmp2 instruction format having the specified
operator and operands.
|
static Instruction |
BooleanCmp.mutate(Instruction i,
Operator o,
RegisterOperand Result,
Operand Val1,
Operand Val2,
ConditionOperand Cond,
BranchProfileOperand BranchProfile)
Mutate the argument instruction into an instruction of the
BooleanCmp instruction format having the specified
operator and operands.
|
static Instruction |
CondMove.mutate(Instruction i,
Operator o,
RegisterOperand Result,
Operand Val1,
Operand Val2,
ConditionOperand Cond,
Operand TrueValue,
Operand FalseValue)
Mutate the argument instruction into an instruction of the
CondMove instruction format having the specified
operator and operands.
|
static Instruction |
TrapIf.mutate(Instruction i,
Operator o,
RegisterOperand GuardResult,
Operand Val1,
Operand Val2,
ConditionOperand Cond,
TrapCodeOperand TCode)
Mutate the argument instruction into an instruction of the
TrapIf instruction format having the specified
operator and operands.
|
static void |
TrapIf.setCond(Instruction i,
ConditionOperand Cond)
Set the operand called Cond in the argument
instruction to the argument operand.
|
static void |
CondMove.setCond(Instruction i,
ConditionOperand Cond)
Set the operand called Cond in the argument
instruction to the argument operand.
|
static void |
BooleanCmp.setCond(Instruction i,
ConditionOperand Cond)
Set the operand called Cond in the argument
instruction to the argument operand.
|
static void |
IfCmp.setCond(Instruction i,
ConditionOperand Cond)
Set the operand called Cond in the argument
instruction to the argument operand.
|
static void |
IfCmp2.setCond1(Instruction i,
ConditionOperand Cond1)
Set the operand called Cond1 in the argument
instruction to the argument operand.
|
static void |
IfCmp2.setCond2(Instruction i,
ConditionOperand Cond2)
Set the operand called Cond2 in the argument
instruction to the argument operand.
|
Modifier and Type | Method and Description |
---|---|
ConditionOperand |
Operand.asCondition()
Cast to an
ConditionOperand . |
static ConditionOperand |
ConditionOperand.BIT_TEST()
Create the condition code operand for BIT_TEST
|
static ConditionOperand |
ConditionOperand.BORROW_FROM_SUB()
Create the condition code operand for BORROW_FROM_SUB
|
static ConditionOperand |
ConditionOperand.CARRY_FROM_ADD()
Create the condition code operand for CARRY_FROM_ADD
|
static ConditionOperand |
ConditionOperand.CMPG_LESS()
Create the condition code operand for CMPG_LESS
|
static ConditionOperand |
ConditionOperand.CMPL_EQUAL()
Create the condition code operand for CMPL_EQUAL
|
static ConditionOperand |
ConditionOperand.CMPL_GREATER_EQUAL()
Create the condition code operand for CMPL_GREATER_EQUAL
|
static ConditionOperand |
ConditionOperand.CMPL_GREATER()
Create the condition code operand for CMPL_GREATER
|
static ConditionOperand |
ConditionOperand.CMPL_NOT_EQUAL()
Create the condition code operand for CMPL_NOT_EQUAL
|
static ConditionOperand |
ConditionOperand.EQUAL()
Create the condition code operand for EQUAL
|
ConditionOperand |
ConditionOperand.flipCode()
Flip the direction of the condition.
|
ConditionOperand |
ConditionOperand.flipOperands()
Change the condition code to allow the order of the operands to
be flipped. i.e.
|
static ConditionOperand |
ConditionOperand.GREATER_EQUAL()
Create the condition code operand for GREATER_EQUAL
|
static ConditionOperand |
ConditionOperand.GREATER()
Create the condition code operand for GREATER
|
static ConditionOperand |
ConditionOperand.HIGHER_EQUAL()
Create the condition code operand for HIGHER_EQUAL
|
static ConditionOperand |
ConditionOperand.HIGHER()
Create the condition code operand for HIGHER
|
static ConditionOperand |
ConditionOperand.LESS_EQUAL()
Create the condition code operand for LESS_EQUAL
|
static ConditionOperand |
ConditionOperand.LESS()
Create the condition code operand for LESS
|
static ConditionOperand |
ConditionOperand.LOWER_EQUAL()
Create the condition code operand for LOWER_EQUAL
|
static ConditionOperand |
ConditionOperand.LOWER()
Create the condition code operand for LOWER
|
static ConditionOperand |
ConditionOperand.NOT_EQUAL()
Create the condition code operand for NOT_EQUAL
|
static ConditionOperand |
ConditionOperand.OVERFLOW_FROM_ADD()
Create the condition code operand for OVERFLOW_FROM_ADD
|
static ConditionOperand |
ConditionOperand.OVERFLOW_FROM_MUL()
Create the condition code operand for OVERFLOW_FROM_ADD
|
static ConditionOperand |
ConditionOperand.OVERFLOW_FROM_SUB()
Create the condition code operand for OVERFLOW_FROM_SUB
|
ConditionOperand |
ConditionOperand.translateUNSIGNED()
Convert this floating point compare to the equivalent unsigned
integer compare.
|
Modifier and Type | Method and Description |
---|---|
private void |
IA32ConditionOperand.translate(ConditionOperand c) |
Constructor and Description |
---|
IA32ConditionOperand(ConditionOperand c)
Constructs the IA32 Condition Operand that corresponds to the
argument ConditionOperand.
|
Modifier and Type | Method and Description |
---|---|
protected static boolean |
BURS_Common_Helpers.EQ_GT_GE(ConditionOperand c) |
protected static boolean |
BURS_Common_Helpers.EQ_LT_LE(ConditionOperand c) |
protected static boolean |
BURS_Common_Helpers.EQ_NE(ConditionOperand c) |
Modifier and Type | Field and Description |
---|---|
private ConditionOperand |
BURS_Helpers.cc
When emitting certain rules this holds the condition code state to be
consumed by a parent rule
|
Modifier and Type | Method and Description |
---|---|
protected static ConditionOperand |
BURS_Helpers.BIT_TEST(int x,
ConditionOperand cond)
Convert the given comparison with a boolean (int) value into a condition
suitable for the carry flag
|
protected ConditionOperand |
BURS_Helpers.consumeCOND()
Acquire remembered condition code in parent
|
Modifier and Type | Method and Description |
---|---|
protected void |
BURS_Helpers.ATTEMPT_IFCMP(MemoryOperand mo,
Operand oldValue,
Operand newValue,
ConditionOperand cond,
BranchOperand target,
BranchProfileOperand bp)
This routine expands the compound pattern IFCMP(ATTEMPT, ZERO) into an
atomic compare/exchange followed by a branch on success/failure of the
attempted atomic compare/exchange.
|
private static void |
ComplexLIR2MIRExpansion.basic_long_ifcmp(Instruction s,
IR ir,
ConditionOperand cond,
Register xh,
Register xl,
Operand yh,
Operand yl) |
protected static ConditionOperand |
BURS_Helpers.BIT_TEST(int x,
ConditionOperand cond)
Convert the given comparison with a boolean (int) value into a condition
suitable for the carry flag
|
protected void |
BURS_Helpers.BOOLEAN_CMP_DOUBLE(Instruction s,
RegisterOperand res,
ConditionOperand cond,
Operand val1,
Operand val2)
Expansion of BOOLEAN_CMP_DOUBLE
|
protected void |
BURS_Helpers.BOOLEAN_CMP_INT(Instruction s,
RegisterOperand res,
ConditionOperand cond)
Expansion of a special case of BOOLEAN_CMP_INT when the condition registers
have already been set by the previous ALU op.
|
protected void |
BURS_Helpers.BOOLEAN_CMP_INT(Instruction s,
RegisterOperand res,
Operand val1,
Operand val2,
ConditionOperand cond)
Expansion of BOOLEAN_CMP_INT
|
protected void |
BURS_Helpers.BOOLEAN_CMP_LONG(Instruction s,
RegisterOperand res,
Operand val1,
Operand val2,
ConditionOperand cond)
Expansion of BOOLEAN_CMP_LONG
|
protected void |
BURS_Helpers.CMOV_FMOV(Instruction s,
RegisterOperand result,
ConditionOperand cond,
Operand trueValue,
Operand falseValue)
Generate a floating point move portion of a conditional move.
|
protected void |
BURS_Helpers.CMOV_MOV(Instruction s,
RegisterOperand result,
ConditionOperand cond,
Operand trueValue,
Operand falseValue)
Generate an integer move portion of a conditional move.
|
protected static boolean |
BURS_Helpers.CMP_TO_TEST(ConditionOperand op)
Can the given condition for a compare be converted to a test?
|
protected IA32ConditionOperand |
BURS_Helpers.COND(ConditionOperand op) |
protected void |
BURS_Helpers.EMIT_Compare(Instruction s,
ConditionOperand cond,
Operand val1,
Operand val2)
Gives the MIR condition operator appropriate for the given condition
|
private boolean |
BURS_Helpers.getCMP_needsSwap(ConditionOperand cond) |
protected void |
BURS_Helpers.IFCMP(Instruction s,
RegisterOperand guardResult,
Operand val1,
Operand val2,
ConditionOperand cond)
Generate a compare and branch sequence.
|
protected void |
BURS_Helpers.LCMP_CMOV(Instruction s,
RegisterOperand result,
Operand val1,
Operand val2,
ConditionOperand cond,
Operand trueValue,
Operand falseValue)
Generate a long compare and cmov
|
protected void |
BURS_Helpers.pushCOND(ConditionOperand c)
Remember a condition code in a child node
|
protected static Operator |
BURS_Helpers.SSE2_CMP_OP(ConditionOperand cond,
boolean single) |
protected void |
BURS_Helpers.SSE2_FCMP_FCMOV(Instruction s,
RegisterOperand result,
Operand lhsCmp,
Operand rhsCmp,
ConditionOperand cond,
Operand trueValue,
Operand falseValue) |
protected static boolean |
BURS_Helpers.SSE2_IS_GT_OR_GE(ConditionOperand cond) |
protected static boolean |
BURS_Helpers.SSE2_IS_LT_OR_LE(ConditionOperand cond) |
Modifier and Type | Method and Description |
---|---|
private ValueGraphVertex |
ValueGraph.findOrCreateVertex(ConditionOperand op)
Find or create an ValueGraphVertex corresponding to a
given method operand
|