public abstract class BURS_Helpers extends BURS_MemOp_Helpers
Modifier and Type | Field and Description |
---|---|
private ConditionOperand |
cc
When emitting certain rules this holds the condition code state to be
consumed by a parent rule
|
private static Offset |
doubleAbsMask
Mask to abs an XMM registers
|
private static Offset |
doubleSignMask
Mask to flip sign bits in XMM registers
|
private static Offset |
floatAbsMask
Mask to abs an XMM registers
|
private static Offset |
floatSignMask
Mask to flip sign bits in XMM registers
|
private static double |
L2E
Constant log2(e), supported as an x87 constant
|
private static double |
L2T
Constant log2(10), supported as an x87 constant
|
private static double |
LG2
Constant log10(2), supported as an x87 constant
|
private static double |
LN2
Constant ln(2), supported as an x87 constant
|
B, B_S, DW, DW_S, PARAGRAPH, QW, QW_S, W, W_S
burs, INFINITE, regpool
Constructor and Description |
---|
BURS_Helpers(BURS burs) |
Modifier and Type | Method and Description |
---|---|
private Operand |
asReg(Instruction s,
Operator movop,
Operand op)
Emits code to move the operand into a register operand if it
isn't one already.
|
protected void |
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.
|
protected void |
ATTEMPT_LONG(RegisterOperand result,
MemoryOperand mo,
Operand oldValue,
Operand newValue)
This routine expands an ATTEMPT instruction into an atomic
compare exchange.
|
protected void |
ATTEMPT(RegisterOperand result,
MemoryOperand mo,
Operand oldValue,
Operand newValue)
This routine expands an ATTEMPT instruction into an atomic
compare exchange.
|
protected static ConditionOperand |
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 |
BOOLEAN_CMP_DOUBLE(Instruction s,
RegisterOperand res,
ConditionOperand cond,
Operand val1,
Operand val2)
Expansion of BOOLEAN_CMP_DOUBLE
|
protected void |
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 |
BOOLEAN_CMP_INT(Instruction s,
RegisterOperand res,
Operand val1,
Operand val2,
ConditionOperand cond)
Expansion of BOOLEAN_CMP_INT
|
protected void |
BOOLEAN_CMP_LONG(Instruction s,
RegisterOperand res,
Operand val1,
Operand val2,
ConditionOperand cond)
Expansion of BOOLEAN_CMP_LONG
|
protected void |
CALL(Instruction s,
Operand address)
Expansion of CALL.
|
protected void |
CMOV_FMOV(Instruction s,
RegisterOperand result,
ConditionOperand cond,
Operand trueValue,
Operand falseValue)
Generate a floating point move portion of a conditional move.
|
protected void |
CMOV_MOV(Instruction s,
RegisterOperand result,
ConditionOperand cond,
Operand trueValue,
Operand falseValue)
Generate an integer move portion of a conditional move.
|
protected static boolean |
CMP_TO_TEST(ConditionOperand op)
Can the given condition for a compare be converted to a test?
|
protected IA32ConditionOperand |
COND(ConditionOperand op) |
protected ConditionOperand |
consumeCOND()
Acquire remembered condition code in parent
|
protected void |
EMIT_Commutative(Operator operator,
Instruction s,
Operand result,
Operand val1,
Operand val2)
Create the MIR instruction given by operator from the Binary LIR operands
|
protected void |
EMIT_Compare(Instruction s,
ConditionOperand cond,
Operand val1,
Operand val2)
Gives the MIR condition operator appropriate for the given condition
|
protected void |
EMIT_Lea(Instruction s,
RegisterOperand result,
MemoryOperand mo)
Create the MIR LEA instruction performing a few simplifications if possible
|
protected void |
EMIT_LongBinary(Operator operator1,
Operator operator2,
Instruction s,
Operand result,
Operand value1,
Operand value2,
boolean commutative)
Creates the MIR instruction given by the operators from the Binary LIR operands
|
protected void |
EMIT_LongUnary(Instruction s,
Operand result,
Operand value1,
boolean negOrNot)
Creates the MIR instruction for LONG_NEG or LONG_NOT
|
protected void |
EMIT_NonCommutative(Operator operator,
Instruction s,
Operand result,
Operand val1,
Operand val2)
Create the MIR instruction given by operator from the Binary LIR operands
|
protected void |
EMIT_Unary(Operator operator,
Instruction s,
Operand result,
Operand value)
Create the MIR instruction given by operator from the Binary LIR operands
|
protected static Operand |
follow(Operand use)
Follow a chain of Move operations filtering back to a def
|
protected void |
FP_MOV_OP_MOV(Instruction s,
Operator op,
Operand result,
Operand val1,
Operand val2)
Expansion of FP_ADD_ACC, FP_MUL_ACC, FP_SUB_ACC, and FP_DIV_ACC.
|
protected void |
FP_REM(Instruction s,
Operand val1,
Operand val2)
Expansion of FP_REM
|
protected void |
FPR_2INT(Instruction s,
RegisterOperand result,
Operand value)
Expansion of FLOAT_2INT and DOUBLE_2INT, using the FIST instruction.
|
protected void |
FPR2GPR_64(Instruction s)
Emits code to move 64 bits from FPRs to GPRs
|
protected void |
GET_EXCEPTION_OBJECT(Instruction s)
Emit code to get a caught exception object into a register
|
protected void |
GET_TIME_BASE(Instruction s,
RegisterOperand result)
Expansion of RDTSC (called GET_TIME_BASE for consistency with PPC)
|
protected Operator |
get387_FPC(Instruction s) |
private boolean |
getCMP_needsSwap(ConditionOperand cond) |
protected Register |
getEAX() |
protected Register |
getEBP() |
protected Register |
getEBX() |
protected Register |
getECX() |
protected Register |
getEDI() |
protected Register |
getEDX() |
protected Register |
getESI() |
protected Register |
getESP() |
protected Register |
getFPR(int n) |
protected Register |
getST0() |
protected void |
GPR2FPR_64(Instruction s)
Emits code to move 64 bits from GPRs to FPRs.
|
protected void |
IFCMP(Instruction s,
RegisterOperand guardResult,
Operand val1,
Operand val2,
ConditionOperand cond)
Generate a compare and branch sequence.
|
protected void |
INT_2LONG(Instruction s,
RegisterOperand result,
Operand value,
boolean signExtend)
Expansion of INT_2LONG
|
protected void |
INT_DIVIDES(Instruction s,
RegisterOperand result,
Operand val1,
Operand val2,
boolean isDiv,
boolean signed)
Expansion of INT_DIV, SIGNED_DIV_64_32, UNSIGNED_DIV_64_32 and INT_REM
|
protected void |
INT_TO_LONG_MUL(Instruction s,
RegisterOperand result,
Operand value1,
Operand value2,
boolean signed)
Expansion of LONG_MULs whose operands are ints
|
protected static boolean |
IS_MATERIALIZE_ZERO(Instruction s) |
protected static int |
is387_FPC(Instruction s,
int trueCost)
Is the given instruction's constant operand a x87 floating point constant
|
protected void |
LCMP_CMOV(Instruction s,
RegisterOperand result,
Operand val1,
Operand val2,
ConditionOperand cond,
Operand trueValue,
Operand falseValue)
Generate a long compare and cmov
|
protected byte |
LEA_SHIFT(Operand op) |
protected static int |
LEA_SHIFT(Operand op,
int trueCost)
Can an IV be the scale in a LEA instruction?
|
protected static int |
LEA_SHIFT(Operand op,
int trueCost,
int falseCost)
Can an IV be the scale in a LEA instruction?
|
(package private) static MemoryOperand |
loadFromJTOC(Offset offset,
byte size)
Create memory operand to load from a given jtoc offset
|
protected void |
LONG_CMP(Instruction s,
RegisterOperand res,
Operand val1,
Operand val2)
Expansion of LONG_CMP: compare to values and set result to -1, 0, 1 for <, =, >,
respectively
|
protected void |
LONG_DIVIDES(Instruction s,
RegisterOperand result,
Operand val1,
Operand val2,
boolean isDiv,
boolean signed)
Expansion of LONG_DIV and LONG_REM
|
protected void |
LONG_MUL(Instruction s,
RegisterOperand result,
Operand value1,
Operand value2)
Expansion of LONG_MUL
|
protected void |
LONG_SHL(Instruction s,
Operand result,
Operand val1,
Operand val2,
boolean maskWith3f)
Expansion of LONG_SHL
|
protected void |
LONG_SHR(Instruction s,
Operand result,
Operand val1,
Operand val2,
boolean maskWith3f)
Expansion of LONG_SHR
|
protected void |
LONG_USHR(Instruction s,
Operand result,
Operand val1,
Operand val2,
boolean maskWith3f)
Expansion of LONG_USHR
|
protected void |
LOWTABLESWITCH(Instruction s)
Expansion of LOWTABLESWITCH.
|
protected Operand |
MO_CONV(byte size)
Create a slot on the stack in memory for a conversion
|
protected Operand |
myFP0() |
protected Operand |
myFP1() |
protected void |
OSR(BURS burs,
Instruction s)
special case handling OSR instructions expand long type variables to two
integers
|
protected void |
PROLOGUE(Instruction s)
Expand a prologue by expanding out longs into pairs of ints
|
protected void |
pushCOND(ConditionOperand c)
Remember a condition code in a child node
|
protected void |
RESOLVE(Instruction s)
Expansion of RESOLVE.
|
protected void |
SET_EXCEPTION_OBJECT(Instruction s)
Emit code to move a value in a register to the stack location where a
caught exception object is expected to be.
|
protected MemoryOperand |
setSize(MemoryOperand mo,
int size)
Set the size field of the given memory operand and return it
|
protected static boolean |
SIMILAR_REGISTERS(Operand... ops) |
protected void |
SSE2_ABS(boolean single,
Instruction s,
Operand result,
Operand value) |
protected static Operator |
SSE2_CMP_OP(ConditionOperand cond,
boolean single) |
protected void |
SSE2_CONV(Operator op,
Instruction s,
Operand result,
Operand value)
Expansion of SSE2 conversions double <-> float
|
protected void |
SSE2_COP(Operator operator,
Instruction s,
Operand result,
Operand val1,
Operand val2)
BURS expansion of a commutative SSE2 operation.
|
protected void |
SSE2_FCMP_FCMOV(Instruction s,
RegisterOperand result,
Operand lhsCmp,
Operand rhsCmp,
ConditionOperand cond,
Operand trueValue,
Operand falseValue) |
protected void |
SSE2_FPCONSTANT(Instruction s)
Expansion of SSE2 floating point constant loads
|
protected void |
SSE2_FPR2GPR_32(Instruction s)
Emits code to move 32 bits from FPRs to GPRs.
|
protected void |
SSE2_FPR2GPR_64(Instruction s)
Emits code to move 64 bits from SSE2 FPRs to GPRs
|
protected void |
SSE2_GPR2FPR_32(Instruction s)
Emits code to move 32 bits from GPRs to FPRs.
|
protected void |
SSE2_GPR2FPR_64(Instruction s)
Emits code to move 64 bits from GPRs to SSE2 FPRs
|
protected void |
SSE2_IFCMP(Operator op,
Instruction s,
Operand val1,
Operand val2)
Expansion of SSE2 comparison operations
|
protected static boolean |
SSE2_IS_GT_OR_GE(ConditionOperand cond) |
protected static boolean |
SSE2_IS_LT_OR_LE(ConditionOperand cond) |
protected Operator |
SSE2_MOVE(Operand o)
Returns the appropriate move operator based on the type of operand.
|
protected void |
SSE2_NCOP(Operator operator,
Instruction s,
Operand result,
Operand val1,
Operand val2)
BURS expansion of a non commutative SSE2 operation.
|
protected void |
SSE2_NEG(boolean single,
Instruction s,
Operand result,
Operand value)
Expansion of SSE2 negation ops.
|
protected byte |
SSE2_SIZE(Operand o)
Returns the size based on the type of operand.
|
protected void |
SSE2_X87_FROMLONG(Instruction s)
Performs a long -> double/float conversion using x87 and
marshalls back to XMMs.
|
protected void |
SSE2_X87_REM(Instruction s)
Performs a long -> double/float conversion using x87 and
marshalls between to XMMs.
|
protected void |
STORE_LONG_FOR_CONV(Operand op)
Creates a 64bit slot on the stack in memory for a conversion and
stores the given long.
|
protected void |
SYSCALL(Instruction s,
Operand address)
Expansion of SYSCALL.
|
protected void |
threeValueFPCmp(Instruction s)
Expansion for [DF]CMP[GL] compare to values and set result to -1, 0, 1 for <, =, >
respectively
|
protected void |
TRAP_IF_IMM(Instruction s,
boolean longConstant)
Expansion of TRAP_IF, with an int constant as the second value.
|
ADDRESS_EQUAL, ADDRESS_EQUAL, ARRAY_ADDRESS_EQUAL, ARRAY_ADDRESS_EQUAL, augmentAddress, combineAddresses, consumeAddress, consumeMO, MO_AL, MO_AL, MO_AS, MO_AS, MO_B, MO_BD, MO_BI, MO_BID, MO_BIS, MO_D, MO_L, MO_L, MO_MC, MO_S, MO_S, MO, MO, MO, pushAddress, pushMO
AC, AV, EMIT, EQ_GT_GE, EQ_LT_LE, EQ_NE, FITS, FITS, getIR, IC, isONE, isONE, isZERO, isZERO, IV, LC, LV, MINUSONE, ONE, P, PL, PLL, PLLL, PLLLL, PLLLLLL, PLLLLLLL, PLLLRL, PLLLRLL, PLLLRLLL, PLLR, PLLRL, PLLRLL, PLLRLLL, PLLRLLR, PLR, PLRL, PLRLL, PLRLLRL, PLRR, PR, PRL, PRLL, PRLLL, PRLLLL, PRLLR, PRLLRLLL, PRLR, PRLRL, PRR, PRRL, PRRR, R, V, VL, VLL, VLLL, VLLLL, VLLLLLLLR, VLLLLLLR, VLLLLLR, VLLLLR, VLLLR, VLLLRLLLR, VLLLRLLR, VLLLRLR, VLLLRR, VLLR, VLLRLLLR, VLLRLLR, VLLRLLRR, VLLRLR, VLLRR, VLR, VLRL, VLRLL, VLRLLRR, VLRLR, VLRR, VLRRR, VR, VRL, VRLL, VRLLLLR, VRLLLR, VRLLR, VRLLRLLLR, VRLLRLLR, VRLLRR, VRLR, VRLRLR, VRLRR, VRR, VRRL, VRRLR, VRRR, ZERO
A, I
A, AC, AC, CPOS, CR, D, DC, defDoublesAsUse, definedIn, F, FC, getCondMoveOp, getDefaultOperand, getLoadOp, getLoadOp, getMoveOp, getStoreOp, getStoreOp, I, IC, insertInstructionsAfter, L, LC, makeBlockOnEdge, mayBeVolatileFieldLoad, moveInstruction, moveIntoRegister, moveIntoRegister, nonPEIGC, offsetOperand, TG, usedIn, useDoublesAsDef
private static final double LG2
private static final double LN2
private static final double L2E
private static final double L2T
private static final Offset floatSignMask
private static final Offset doubleSignMask
private static final Offset floatAbsMask
private static final Offset doubleAbsMask
private ConditionOperand cc
public BURS_Helpers(BURS burs)
protected void EMIT_Commutative(Operator operator, Instruction s, Operand result, Operand val1, Operand val2)
operator
- the MIR operators
- the instruction being replacedresult
- the destination register/memoryval1
- the first operandval2
- the second operandprotected void EMIT_NonCommutative(Operator operator, Instruction s, Operand result, Operand val1, Operand val2)
operator
- the MIR operators
- the instruction being replacedresult
- the destination register/memoryval1
- the first operandval2
- the second operandprotected void EMIT_Unary(Operator operator, Instruction s, Operand result, Operand value)
operator
- the MIR operators
- the instruction being replacedresult
- the destination register/memoryvalue
- the first operandprotected void EMIT_Lea(Instruction s, RegisterOperand result, MemoryOperand mo)
s
- the instruction being replacedresult
- the destination registermo
- the memory operandprotected static ConditionOperand BIT_TEST(int x, ConditionOperand cond)
x
- the value 1 (true) or 0 (false)cond
- either equal or not equalprotected static Operand follow(Operand use)
use
- the place to start fromprotected final void pushCOND(ConditionOperand c)
c
- condition code to recordprotected final ConditionOperand consumeCOND()
protected static int LEA_SHIFT(Operand op, int trueCost)
op
- operand to examinetrueCost
- the cost if this can be part of an LEAprotected static int LEA_SHIFT(Operand op, int trueCost, int falseCost)
op
- operand to examinetrueCost
- the cost if this can be part of an LEAfalseCost
- the cost if this can't be part of an LEAprotected static int is387_FPC(Instruction s, int trueCost)
s
- the instruction to examinetrueCost
- the cost if this is a valid constantprotected final Operator get387_FPC(Instruction s)
protected static boolean CMP_TO_TEST(ConditionOperand op)
op
- a conditiontrue
if and only if the condition for the compare
can be reduced to a testprotected final IA32ConditionOperand COND(ConditionOperand op)
private Operand asReg(Instruction s, Operator movop, Operand op)
movop
- the Operator that needs to be used for the moveop
- the operand to moves
- instruction to get source position informationprotected final MemoryOperand setSize(MemoryOperand mo, int size)
mo
- memory operand size to setsize
- the new sizeprotected final Operand MO_CONV(byte size)
size
- for memory operandprotected final void STORE_LONG_FOR_CONV(Operand op)
op
- an operand representing a longstatic MemoryOperand loadFromJTOC(Offset offset, byte size)
offset
- location in JTOCsize
- of value in JTOCprotected final void GET_EXCEPTION_OBJECT(Instruction s)
s
- the instruction to expandprotected final void SET_EXCEPTION_OBJECT(Instruction s)
s
- the instruction to expandprotected final void INT_2LONG(Instruction s, RegisterOperand result, Operand value, boolean signExtend)
s
- the instruction to expandresult
- the result operandvalue
- the second operandsignExtend
- should the value be sign or zero extended?protected final void FPR_2INT(Instruction s, RegisterOperand result, Operand value)
s
- the instruction to expandresult
- the result operandvalue
- the second operandprotected final void FPR2GPR_64(Instruction s)
s
- instruction to modify for the moveprotected final void GPR2FPR_64(Instruction s)
s
- instruction to modify for the moveprotected final Operator SSE2_MOVE(Operand o)
o
- an operandprotected final byte SSE2_SIZE(Operand o)
o
- an operandprotected final void SSE2_X87_FROMLONG(Instruction s)
s
- instruction to modify for the conversionprotected final void SSE2_X87_REM(Instruction s)
s
- instruction to modify for the conversionprotected final void SSE2_FPR2GPR_64(Instruction s)
s
- instruction to modify for the moveprotected final void SSE2_GPR2FPR_64(Instruction s)
s
- instruction to modify for the moveprotected final void SSE2_FPR2GPR_32(Instruction s)
s
- instruction to modify for the moveprotected final void SSE2_GPR2FPR_32(Instruction s)
s
- instruction to modify for the moveprotected void SSE2_COP(Operator operator, Instruction s, Operand result, Operand val1, Operand val2)
operator
- the operators
- the instruction in questionresult
- the instruction's result operandval1
- the instruction's first value operandval2
- the instruction's second value operandprotected void SSE2_NCOP(Operator operator, Instruction s, Operand result, Operand val1, Operand val2)
operator
- the operators
- the instruction in questionresult
- the instruction's result operandval1
- the instruction's first value operandval2
- the instruction's second value operandprotected final void SSE2_NEG(boolean single, Instruction s, Operand result, Operand value)
single
- true
if 32 bit value (float), false
for 64 bit (double)s
- the instruction in questionresult
- the instruction's result operandvalue
- the instruction's value operandprotected final void SSE2_CONV(Operator op, Instruction s, Operand result, Operand value)
op
- the operators
- the instruction in questionresult
- the instruction's result operandvalue
- the instruction's value operandprotected final void SSE2_IFCMP(Operator op, Instruction s, Operand val1, Operand val2)
op
- the operators
- the instruction in questionval1
- the instruction's first value operandval2
- the instruction's second value operandprotected static Operator SSE2_CMP_OP(ConditionOperand cond, boolean single)
protected final void SSE2_FCMP_FCMOV(Instruction s, RegisterOperand result, Operand lhsCmp, Operand rhsCmp, ConditionOperand cond, Operand trueValue, Operand falseValue)
protected static boolean IS_MATERIALIZE_ZERO(Instruction s)
protected static boolean SIMILAR_REGISTERS(Operand... ops)
protected static boolean SSE2_IS_GT_OR_GE(ConditionOperand cond)
protected static boolean SSE2_IS_LT_OR_LE(ConditionOperand cond)
protected final void SSE2_ABS(boolean single, Instruction s, Operand result, Operand value)
protected final void SSE2_FPCONSTANT(Instruction s)
s
- the instruction to mutateprotected final void INT_DIVIDES(Instruction s, RegisterOperand result, Operand val1, Operand val2, boolean isDiv, boolean signed)
s
- the instruction to expandresult
- the result operandval1
- the first operandval2
- the second operandisDiv
- true
for division,
false
for remindersigned
- true
for signed,
false
for unsignedprotected final void EMIT_LongBinary(Operator operator1, Operator operator2, Instruction s, Operand result, Operand value1, Operand value2, boolean commutative)
operator1
- the 1st MIR operatoroperator2
- the 2nd MIR operators
- the instruction being replacedresult
- the destination register/memoryvalue1
- the first operandvalue2
- the second operandcommutative
- is the operation commutative?protected final void LONG_MUL(Instruction s, RegisterOperand result, Operand value1, Operand value2)
s
- the instruction to expandresult
- the result operandvalue1
- the first operandvalue2
- the second operandprotected final void INT_TO_LONG_MUL(Instruction s, RegisterOperand result, Operand value1, Operand value2, boolean signed)
s
- the instruction to expandresult
- the result operandvalue1
- the first operandvalue2
- the second operandsigned
- signed or unsigned multiplication?protected final void LONG_DIVIDES(Instruction s, RegisterOperand result, Operand val1, Operand val2, boolean isDiv, boolean signed)
s
- the instruction to expandresult
- the result operandval1
- the first operandval2
- the second operandisDiv
- true
for div, false
for remsigned
- true
for signed division,
false
for unsignedprotected final void EMIT_LongUnary(Instruction s, Operand result, Operand value1, boolean negOrNot)
s
- the instruction being replacedresult
- the destination register/memoryvalue1
- the operandnegOrNot
- true for negprotected final void LONG_SHL(Instruction s, Operand result, Operand val1, Operand val2, boolean maskWith3f)
s
- the instruction to expandresult
- the result operandval1
- the shifted operandval2
- the shift amount operandmaskWith3f
- should the shift operand by masked with 0x3f? This is
default behaviour on Intel but it differs from how we combine
shift operands in HIRprotected final void LONG_SHR(Instruction s, Operand result, Operand val1, Operand val2, boolean maskWith3f)
s
- the instruction to expandresult
- the result operandval1
- the shifted operandval2
- the shift amount operandmaskWith3f
- should the shift operand by masked with 0x3f? This is
default behaviour on Intel but it differs from how we combine
shift operands in HIRprotected final void LONG_USHR(Instruction s, Operand result, Operand val1, Operand val2, boolean maskWith3f)
s
- the instruction to expandresult
- the result operandval1
- the shifted operandval2
- the shift amount operandmaskWith3f
- should the shift operand by masked with 0x3f? This is
default behaviour on Intel but it differs from how we combine
shift operands in HIRprotected final void GET_TIME_BASE(Instruction s, RegisterOperand result)
s
- the instruction to expandresult
- the result/first operandprotected final void LONG_CMP(Instruction s, RegisterOperand res, Operand val1, Operand val2)
s
- the compare instructionres
- the result/first operandval1
- the first valueval2
- the second valueprotected final void FP_MOV_OP_MOV(Instruction s, Operator op, Operand result, Operand val1, Operand val2)
s
- the instruction to expandop
- the floating point op to useresult
- the result operandval1
- the first operandval2
- the second operandprotected final void FP_REM(Instruction s, Operand val1, Operand val2)
s
- the instruction to expandval1
- the first operandval2
- the second operandprotected final void threeValueFPCmp(Instruction s)
s
- the compare instructionprivate boolean getCMP_needsSwap(ConditionOperand cond)
cond
- a condition operandprotected void EMIT_Compare(Instruction s, ConditionOperand cond, Operand val1, Operand val2)
s
- the comparison instructioncond
- the conditionval1
- first operand for the compareval2
- second operand for the compareprotected final void BOOLEAN_CMP_INT(Instruction s, RegisterOperand res, Operand val1, Operand val2, ConditionOperand cond)
s
- the instruction to copy position info fromres
- the result operandval1
- the first valueval2
- the second valuecond
- the condition operandprotected final void BOOLEAN_CMP_INT(Instruction s, RegisterOperand res, ConditionOperand cond)
s
- the instruction to copy position info fromres
- the result operandcond
- the condition operandprotected final void BOOLEAN_CMP_DOUBLE(Instruction s, RegisterOperand res, ConditionOperand cond, Operand val1, Operand val2)
s
- the instruction to copy position info fromres
- the result operandval1
- the first valueval2
- the second valuecond
- the condition operandprotected final void BOOLEAN_CMP_LONG(Instruction s, RegisterOperand res, Operand val1, Operand val2, ConditionOperand cond)
s
- the instruction to copy position info fromres
- the result operandval1
- the first valueval2
- the second valuecond
- the condition operandprotected final void LCMP_CMOV(Instruction s, RegisterOperand result, Operand val1, Operand val2, ConditionOperand cond, Operand trueValue, Operand falseValue)
s
- the instruction to copy position info fromresult
- the result of the conditional moveval1
- the first valueval2
- the second valuecond
- the condition operandtrueValue
- the value to move to result if cond is truefalseValue
- the value to move to result if cond is not trueprotected final void IFCMP(Instruction s, RegisterOperand guardResult, Operand val1, Operand val2, ConditionOperand cond)
s
- the ifcmp instructionguardResult
- the guard result of the ifcmpval1
- the first value operandval2
- the second value operandcond
- the condition operandprotected final void CMOV_MOV(Instruction s, RegisterOperand result, ConditionOperand cond, Operand trueValue, Operand falseValue)
s
- the instruction to copy position info fromresult
- the result of the conditional movecond
- the condition operandtrueValue
- the value to move to result if cond is truefalseValue
- the value to move to result if cond is not trueprotected final void CMOV_FMOV(Instruction s, RegisterOperand result, ConditionOperand cond, Operand trueValue, Operand falseValue)
s
- the instruction to copy position info fromresult
- the result of the conditional movecond
- the condition operandtrueValue
- the value to move to result if cond is truefalseValue
- the value to move to result if cond is not trueprotected final void PROLOGUE(Instruction s)
s
- the prologue instructionprotected final void CALL(Instruction s, Operand address)
s
- the instruction to expandaddress
- the operand containing the target addressprotected final void SYSCALL(Instruction s, Operand address)
s
- the instruction to expandaddress
- the operand containing the target addressprotected final void LOWTABLESWITCH(Instruction s)
s
- the instruction to expandprotected final void RESOLVE(Instruction s)
s
- the instruction to expandprotected final void TRAP_IF_IMM(Instruction s, boolean longConstant)
s
- the instruction to expandlongConstant
- is the argument a long constant?protected final void ATTEMPT(RegisterOperand result, MemoryOperand mo, Operand oldValue, Operand newValue)
result
- the register operand that is set to 0/1 as a result of the
attemptmo
- the address at which to attempt the exchangeoldValue
- the old value at the address monewValue
- the new value at the address moprotected final void ATTEMPT_LONG(RegisterOperand result, MemoryOperand mo, Operand oldValue, Operand newValue)
result
- the register operand that is set to 0/1 as a result
of the attemptmo
- the address at which to attempt the exchangeoldValue
- the old value to check for at the address monewValue
- the new value to place at the address moprotected final void ATTEMPT_IFCMP(MemoryOperand mo, Operand oldValue, Operand newValue, ConditionOperand cond, BranchOperand target, BranchProfileOperand bp)
mo
- the address at which to attempt the exchangeoldValue
- the old value at the address monewValue
- the new value at the address mocond
- the condition to branch ontarget
- the branch targetbp
- the branch profile informationprotected void OSR(BURS burs, Instruction s)
burs
- the burs instances
- an OSRPoint instruction