public class AArch64ArithmeticLIRGenerator extends ArithmeticLIRGenerator implements ArithmeticLIRGeneratorTool
ArithmeticLIRGeneratorTool.RoundingMode| Constructor and Description |
|---|
AArch64ArithmeticLIRGenerator(AllocatableValue nullRegisterValue) |
| Modifier and Type | Method and Description |
|---|---|
protected Variable |
emitAdd(LIRKind resultKind,
Value a,
Value b,
boolean setFlags) |
Value |
emitAnd(Value a,
Value b) |
protected void |
emitBinary(AllocatableValue result,
AArch64ArithmeticOp op,
boolean commutative,
Value a,
Value b) |
protected Variable |
emitBinary(LIRKind resultKind,
AArch64ArithmeticOp op,
boolean commutative,
Value a,
Value b) |
void |
emitBinaryConst(AllocatableValue result,
AArch64ArithmeticOp op,
AllocatableValue a,
JavaConstant b) |
Value |
emitBitCount(Value operand) |
Variable |
emitBitScanForward(Value value) |
Value |
emitBitScanReverse(Value value) |
Value |
emitCountLeadingZeros(Value value) |
Value |
emitCountTrailingZeros(Value value) |
Value |
emitDiv(Value a,
Value b,
LIRFrameState state) |
Value |
emitExtendMemory(boolean isSigned,
AArch64Kind accessKind,
int resultBits,
AArch64AddressValue address,
LIRFrameState state) |
Value |
emitFloatConvert(FloatConvert op,
Value inputVal) |
Value |
emitFusedMultiplyAdd(Value a,
Value b,
Value c) |
Value |
emitIntegerMAdd(Value a,
Value b,
Value c,
boolean isI2L) |
Value |
emitIntegerMSub(Value a,
Value b,
Value c,
boolean isI2L) |
Variable |
emitLoad(LIRKind lirKind,
Value address,
LIRFrameState state) |
Value |
emitMathAbs(Value input) |
Value |
emitMathCopySign(Value magnitude,
Value sign) |
Value |
emitMathMax(Value a,
Value b) |
Value |
emitMathMin(Value a,
Value b) |
Value |
emitMathSignum(Value input) |
Value |
emitMathSqrt(Value input) |
Value |
emitMNeg(Value a,
Value b) |
Value |
emitMul(Value a,
Value b,
boolean setFlags) |
Value |
emitMulHigh(Value a,
Value b) |
protected Value |
emitMultiplyAddSub(AArch64ArithmeticOp op,
Value a,
Value b,
Value c) |
Value |
emitNarrow(Value inputVal,
int toBits) |
Value |
emitNegate(Value inputVal,
boolean setFlags) |
Value |
emitNot(Value input) |
Value |
emitOr(Value a,
Value b) |
Variable |
emitOrderedLoad(LIRKind lirKind,
Value address,
LIRFrameState state,
MemoryOrderMode memoryOrder) |
void |
emitOrderedStore(<any> lirKind,
Value address,
Value inputVal,
LIRFrameState state,
MemoryOrderMode memoryOrder) |
Value |
emitReinterpret(LIRKind to,
Value inputVal) |
Value |
emitRem(Value a,
Value b,
LIRFrameState state) |
Value |
emitRound(Value value,
ArithmeticLIRGeneratorTool.RoundingMode mode) |
Value |
emitShl(Value a,
Value b) |
Value |
emitShr(Value a,
Value b) |
Value |
emitSignExtend(Value inputVal,
int fromBits,
int toBits) |
void |
emitStore(<any> lirKind,
Value address,
Value inputVal,
LIRFrameState state) |
protected Variable |
emitSub(LIRKind resultKind,
Value a,
Value b,
boolean setFlags) |
Value |
emitUDiv(Value a,
Value b,
LIRFrameState state) |
Value |
emitUMulHigh(Value a,
Value b) |
Value |
emitURem(Value a,
Value b,
LIRFrameState state) |
Value |
emitUShr(Value a,
Value b) |
Value |
emitXor(Value a,
Value b) |
Value |
emitXorFP(Value a,
Value b) |
Value |
emitZeroExtend(Value inputVal,
int fromBits,
int toBits) |
protected static AArch64Kind |
getFloatConvertResultKind(FloatConvert op) |
AArch64LIRGenerator |
getLIRGen() |
AllocatableValue |
getNullRegisterValue() |
static boolean |
isAddSubtractConstant(JavaConstant constValue) |
protected boolean |
isNumericInteger(PlatformKind kind) |
boolean |
mustReplaceNullWithNullRegister(JavaConstant nullConstant) |
asAllocatable, emitAdd, emitRor, emitSub, getOptionsclone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitemitAdd, emitMathCos, emitMathExp, emitMathLog, emitMathPow, emitMathSin, emitMathTan, emitRoundFloatToInteger, emitSubpublic AArch64ArithmeticLIRGenerator(AllocatableValue nullRegisterValue)
public AArch64LIRGenerator getLIRGen()
getLIRGen in class ArithmeticLIRGeneratorpublic boolean mustReplaceNullWithNullRegister(JavaConstant nullConstant)
public AllocatableValue getNullRegisterValue()
protected boolean isNumericInteger(PlatformKind kind)
isNumericInteger in class ArithmeticLIRGeneratorprotected Variable emitAdd(LIRKind resultKind, Value a, Value b, boolean setFlags)
emitAdd in class ArithmeticLIRGeneratorprotected Variable emitSub(LIRKind resultKind, Value a, Value b, boolean setFlags)
emitSub in class ArithmeticLIRGeneratorpublic Value emitExtendMemory(boolean isSigned,
AArch64Kind accessKind,
int resultBits,
AArch64AddressValue address,
LIRFrameState state)
public Value emitMul(Value a,
Value b,
boolean setFlags)
emitMul in interface ArithmeticLIRGeneratorToolpublic Value emitMulHigh(Value a,
Value b)
emitMulHigh in interface ArithmeticLIRGeneratorToolpublic Value emitUMulHigh(Value a,
Value b)
emitUMulHigh in interface ArithmeticLIRGeneratorToolpublic Value emitMNeg(Value a,
Value b)
public Value emitDiv(Value a,
Value b,
LIRFrameState state)
emitDiv in interface ArithmeticLIRGeneratorToolpublic Value emitRem(Value a,
Value b,
LIRFrameState state)
emitRem in interface ArithmeticLIRGeneratorToolpublic Value emitUDiv(Value a,
Value b,
LIRFrameState state)
emitUDiv in interface ArithmeticLIRGeneratorToolpublic Value emitURem(Value a,
Value b,
LIRFrameState state)
emitURem in interface ArithmeticLIRGeneratorToolpublic Value emitAnd(Value a,
Value b)
emitAnd in interface ArithmeticLIRGeneratorToolpublic Value emitOr(Value a,
Value b)
emitOr in interface ArithmeticLIRGeneratorToolpublic Value emitXor(Value a,
Value b)
emitXor in interface ArithmeticLIRGeneratorToolpublic Value emitXorFP(Value a,
Value b)
emitXorFP in interface ArithmeticLIRGeneratorToolpublic Value emitShl(Value a,
Value b)
emitShl in interface ArithmeticLIRGeneratorToolpublic Value emitShr(Value a,
Value b)
emitShr in interface ArithmeticLIRGeneratorToolpublic Value emitUShr(Value a,
Value b)
emitUShr in interface ArithmeticLIRGeneratorToolpublic Value emitFloatConvert(FloatConvert op, Value inputVal)
emitFloatConvert in interface ArithmeticLIRGeneratorToolpublic Value emitIntegerMAdd(Value a,
Value b,
Value c,
boolean isI2L)
public Value emitIntegerMSub(Value a,
Value b,
Value c,
boolean isI2L)
protected Value emitMultiplyAddSub(AArch64ArithmeticOp op, Value a, Value b, Value c)
protected static AArch64Kind getFloatConvertResultKind(FloatConvert op)
public Value emitReinterpret(LIRKind to, Value inputVal)
emitReinterpret in interface ArithmeticLIRGeneratorToolpublic Value emitNarrow(Value inputVal,
int toBits)
emitNarrow in interface ArithmeticLIRGeneratorToolpublic Value emitZeroExtend(Value inputVal,
int fromBits,
int toBits)
emitZeroExtend in interface ArithmeticLIRGeneratorToolpublic Value emitSignExtend(Value inputVal,
int fromBits,
int toBits)
emitSignExtend in interface ArithmeticLIRGeneratorToolprotected Variable emitBinary(LIRKind resultKind, AArch64ArithmeticOp op, boolean commutative, Value a, Value b)
protected void emitBinary(AllocatableValue result,
AArch64ArithmeticOp op,
boolean commutative,
Value a,
Value b)
public void emitBinaryConst(AllocatableValue result,
AArch64ArithmeticOp op,
AllocatableValue a,
JavaConstant b)
public static boolean isAddSubtractConstant(JavaConstant constValue)
public Value emitNegate(Value inputVal,
boolean setFlags)
emitNegate in interface ArithmeticLIRGeneratorToolpublic Value emitNot(Value input)
emitNot in interface ArithmeticLIRGeneratorToolpublic Value emitMathAbs(Value input)
emitMathAbs in interface ArithmeticLIRGeneratorToolpublic Value emitMathMax(Value a,
Value b)
emitMathMax in interface ArithmeticLIRGeneratorToolpublic Value emitMathMin(Value a,
Value b)
emitMathMin in interface ArithmeticLIRGeneratorToolpublic Value emitMathSqrt(Value input)
emitMathSqrt in interface ArithmeticLIRGeneratorToolpublic Value emitMathSignum(Value input)
emitMathSignum in interface ArithmeticLIRGeneratorToolpublic Value emitMathCopySign(Value magnitude,
Value sign)
emitMathCopySign in interface ArithmeticLIRGeneratorToolpublic Variable emitBitScanForward(Value value)
emitBitScanForward in interface ArithmeticLIRGeneratorToolpublic Value emitBitCount(Value operand)
emitBitCount in interface ArithmeticLIRGeneratorToolpublic Value emitBitScanReverse(Value value)
emitBitScanReverse in interface ArithmeticLIRGeneratorToolpublic Value emitFusedMultiplyAdd(Value a,
Value b,
Value c)
emitFusedMultiplyAdd in interface ArithmeticLIRGeneratorToolpublic Value emitCountLeadingZeros(Value value)
emitCountLeadingZeros in interface ArithmeticLIRGeneratorToolpublic Value emitCountTrailingZeros(Value value)
emitCountTrailingZeros in interface ArithmeticLIRGeneratorToolpublic Variable emitLoad(LIRKind lirKind, Value address, LIRFrameState state)
emitLoad in interface ArithmeticLIRGeneratorToolpublic Variable emitOrderedLoad(LIRKind lirKind, Value address, LIRFrameState state, MemoryOrderMode memoryOrder)
emitOrderedLoad in interface ArithmeticLIRGeneratorToolpublic void emitStore(<any> lirKind,
Value address,
Value inputVal,
LIRFrameState state)
emitStore in interface ArithmeticLIRGeneratorToolpublic void emitOrderedStore(<any> lirKind,
Value address,
Value inputVal,
LIRFrameState state,
MemoryOrderMode memoryOrder)
emitOrderedStore in interface ArithmeticLIRGeneratorToolpublic Value emitRound(Value value,
ArithmeticLIRGeneratorTool.RoundingMode mode)
emitRound in interface ArithmeticLIRGeneratorTool