public class AMD64ArithmeticLIRGenerator extends ArithmeticLIRGenerator implements AMD64ArithmeticLIRGeneratorTool
| Modifier and Type | Class and Description |
|---|---|
protected static class |
AMD64ArithmeticLIRGenerator.AMD64MathMinMaxFloatOp |
ArithmeticLIRGeneratorTool.RoundingMode| Constructor and Description |
|---|
AMD64ArithmeticLIRGenerator(AllocatableValue nullRegisterValue) |
| Modifier and Type | Method and Description |
|---|---|
Variable |
emitAdd(LIRKind resultKind,
Value a,
Value b,
boolean setFlags) |
Variable |
emitAnd(Value a,
Value b) |
protected Variable |
emitBinary(LIRKind resultKind,
AMD64Assembler.VexRVMOp op,
Value a,
Value b) |
Value |
emitBinaryMemory(AMD64Assembler.AMD64RMOp op,
AMD64BaseAssembler.OperandSize size,
AllocatableValue a,
AMD64AddressValue location,
LIRFrameState state) |
Value |
emitBinaryMemory(AMD64Assembler.VexRVMOp op,
AMD64BaseAssembler.OperandSize size,
AllocatableValue a,
AMD64AddressValue location,
LIRFrameState state) |
Variable |
emitBitCount(Value value) |
Variable |
emitBitScanForward(Value value) |
Variable |
emitBitScanReverse(Value value) |
void |
emitCompareOp(AMD64Kind cmpKind,
AllocatableValue left,
Value right) |
protected Value |
emitConvertMemoryOp(PlatformKind kind,
AMD64Assembler.AMD64RMOp op,
AMD64BaseAssembler.OperandSize size,
AMD64AddressValue address,
LIRFrameState state) |
Value |
emitCountLeadingZeros(Value value) |
Value |
emitCountTrailingZeros(Value value) |
Value |
emitDiv(Value a,
Value b,
LIRFrameState state) |
Value |
emitFloatConvert(FloatConvert op,
Value input) |
Variable |
emitFusedMultiplyAdd(Value a,
Value b,
Value c) |
Value |
emitGetMaskUpToLowestSetBit(Value value) |
Variable |
emitLoad(LIRKind kind,
Value address,
LIRFrameState state) |
Value |
emitLogicalAndNot(Value value1,
Value value2) |
Value |
emitLowestSetIsolatedBit(Value value) |
Value |
emitMathAbs(Value input) |
Value |
emitMathCopySign(Value magnitude,
Value sign) |
Value |
emitMathCos(Value input) |
Value |
emitMathExp(Value input) |
Value |
emitMathLog(Value input,
boolean base10) |
Value |
emitMathMax(Value x,
Value y) |
Value |
emitMathMin(Value x,
Value y) |
protected Value |
emitMathMinMax(Value a,
Value b,
AMD64ArithmeticLIRGenerator.AMD64MathMinMaxFloatOp minmaxop)
Emits code for a branchless floating-point Math.min/Math.max operation.
|
Value |
emitMathPow(Value x,
Value y) |
Value |
emitMathSignum(Value input) |
Value |
emitMathSin(Value input) |
Value |
emitMathSqrt(Value input) |
Value |
emitMathTan(Value input) |
Variable |
emitMul(Value a,
Value b,
boolean setFlags) |
Value |
emitMulHigh(Value a,
Value b) |
Value |
emitNarrow(Value inputVal,
int bits) |
Variable |
emitNegate(Value inputVal,
boolean setFlags) |
Variable |
emitNot(Value inputVal) |
Variable |
emitOr(Value a,
Value b) |
Variable |
emitOrderedLoad(LIRKind kind,
Value address,
LIRFrameState state,
MemoryOrderMode memoryOrder) |
void |
emitOrderedStore(<any> kind,
Value address,
Value input,
LIRFrameState state,
MemoryOrderMode memoryOrder) |
Value |
emitReinterpret(LIRKind to,
Value inputVal) |
Value |
emitRem(Value a,
Value b,
LIRFrameState state) |
Value |
emitResetLowestSetBit(Value value) |
Variable |
emitRol(Value a,
Value b) |
Variable |
emitRor(Value a,
Value b) |
Value |
emitRound(Value value,
ArithmeticLIRGeneratorTool.RoundingMode mode) |
Value |
emitRoundFloatToInteger(Value value) |
Variable |
emitShiftConst(AMD64Assembler.AMD64Shift op,
AMD64BaseAssembler.OperandSize size,
Value a,
JavaConstant b) |
Variable |
emitShl(Value a,
Value b) |
Variable |
emitShr(Value a,
Value b) |
Value[] |
emitSignedDivRem(Value a,
Value b,
LIRFrameState state) |
Value |
emitSignExtend(Value inputVal,
int fromBits,
int toBits) |
void |
emitStore(<any> lirKind,
Value address,
Value input,
LIRFrameState state) |
protected void |
emitStore(AMD64Kind kind,
AMD64AddressValue address,
AllocatableValue value,
LIRFrameState state) |
protected void |
emitStoreConst(AMD64Kind kind,
AMD64AddressValue address,
ConstantValue value,
LIRFrameState state) |
Variable |
emitSub(LIRKind resultKind,
Value a,
Value b,
boolean setFlags) |
Variable |
emitUDiv(Value a,
Value b,
LIRFrameState state) |
Value |
emitUMulHigh(Value a,
Value b) |
Value[] |
emitUnsignedDivRem(Value a,
Value b,
LIRFrameState state) |
Variable |
emitURem(Value a,
Value b,
LIRFrameState state) |
Variable |
emitUShr(Value a,
Value b) |
protected Variable |
emitVectorBlend(Value zeroValue,
Value oneValue,
Value mask) |
protected AllocatableValue |
emitVectorFloatCompare(AllocatableValue a,
AllocatableValue b,
AMD64Assembler.VexFloatCompareOp.Predicate predicate) |
Variable |
emitXor(Value a,
Value b) |
Value |
emitXorFP(Value a,
Value b) |
Value |
emitZeroExtend(Value inputVal,
int fromBits,
int toBits) |
protected Value |
emitZeroExtendMemory(AMD64Kind memoryKind,
int resultBits,
AMD64AddressValue address,
LIRFrameState state) |
protected AMD64LIRGenerator |
getAMD64LIRGen() |
static AMD64Assembler.AMD64MOp |
getMOp(AMD64Assembler.AMD64BinaryArithmetic op,
int constant) |
AllocatableValue |
getNullRegisterValue() |
protected boolean |
isNumericInteger(PlatformKind kind) |
boolean |
mustReplaceNullWithNullRegister(Constant nullConstant) |
boolean |
supportAVX() |
asAllocatable, emitAdd, emitSub, getLIRGen, getOptionsclone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitemitAdd, emitSubpublic AMD64ArithmeticLIRGenerator(AllocatableValue nullRegisterValue)
public Variable emitNegate(Value inputVal, boolean setFlags)
emitNegate in interface ArithmeticLIRGeneratorToolpublic Variable emitNot(Value inputVal)
emitNot in interface ArithmeticLIRGeneratorToolpublic static AMD64Assembler.AMD64MOp getMOp(AMD64Assembler.AMD64BinaryArithmetic op, int constant)
protected boolean isNumericInteger(PlatformKind kind)
isNumericInteger in class ArithmeticLIRGeneratorpublic Variable emitAdd(LIRKind resultKind, Value a, Value b, boolean setFlags)
emitAdd in class ArithmeticLIRGeneratorpublic Variable emitSub(LIRKind resultKind, Value a, Value b, boolean setFlags)
emitSub in class ArithmeticLIRGeneratorpublic Variable 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 emitBinaryMemory(AMD64Assembler.VexRVMOp op, AMD64BaseAssembler.OperandSize size, AllocatableValue a, AMD64AddressValue location, LIRFrameState state)
public Value emitBinaryMemory(AMD64Assembler.AMD64RMOp op, AMD64BaseAssembler.OperandSize size, AllocatableValue a, AMD64AddressValue location, LIRFrameState state)
protected Value emitConvertMemoryOp(PlatformKind kind,
AMD64Assembler.AMD64RMOp op,
AMD64BaseAssembler.OperandSize size,
AMD64AddressValue address,
LIRFrameState state)
protected Value emitZeroExtendMemory(AMD64Kind memoryKind,
int resultBits,
AMD64AddressValue address,
LIRFrameState state)
public Value[] emitSignedDivRem(Value a,
Value b,
LIRFrameState state)
public Value[] emitUnsignedDivRem(Value a,
Value b,
LIRFrameState state)
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 Variable emitUDiv(Value a, Value b, LIRFrameState state)
emitUDiv in interface ArithmeticLIRGeneratorToolpublic Variable emitURem(Value a, Value b, LIRFrameState state)
emitURem in interface ArithmeticLIRGeneratorToolpublic Variable emitAnd(Value a, Value b)
emitAnd in interface ArithmeticLIRGeneratorToolpublic Variable emitOr(Value a, Value b)
emitOr in interface ArithmeticLIRGeneratorToolpublic Variable emitXor(Value a, Value b)
emitXor in interface ArithmeticLIRGeneratorToolpublic Value emitXorFP(Value a,
Value b)
emitXorFP in interface ArithmeticLIRGeneratorToolpublic Variable emitShiftConst(AMD64Assembler.AMD64Shift op, AMD64BaseAssembler.OperandSize size, Value a, JavaConstant b)
public Variable emitShl(Value a, Value b)
emitShl in interface ArithmeticLIRGeneratorToolpublic Variable emitShr(Value a, Value b)
emitShr in interface ArithmeticLIRGeneratorToolpublic Variable emitUShr(Value a, Value b)
emitUShr in interface ArithmeticLIRGeneratorToolpublic Variable emitRol(Value a, Value b)
public Variable emitRor(Value a, Value b)
emitRor in class ArithmeticLIRGeneratorpublic Value emitReinterpret(LIRKind to, Value inputVal)
emitReinterpret in interface ArithmeticLIRGeneratorToolpublic Value emitFloatConvert(FloatConvert op, Value input)
emitFloatConvert in interface ArithmeticLIRGeneratorToolpublic Value emitNarrow(Value inputVal,
int bits)
emitNarrow in interface ArithmeticLIRGeneratorToolpublic Value emitSignExtend(Value inputVal,
int fromBits,
int toBits)
emitSignExtend in interface ArithmeticLIRGeneratorToolpublic Value emitZeroExtend(Value inputVal,
int fromBits,
int toBits)
emitZeroExtend in interface ArithmeticLIRGeneratorToolpublic Variable emitBitCount(Value value)
emitBitCount in interface ArithmeticLIRGeneratorToolpublic Variable emitBitScanForward(Value value)
emitBitScanForward in interface ArithmeticLIRGeneratorToolpublic Variable emitBitScanReverse(Value value)
emitBitScanReverse in interface ArithmeticLIRGeneratorToolpublic Variable 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 Value emitLogicalAndNot(Value value1,
Value value2)
emitLogicalAndNot in interface AMD64ArithmeticLIRGeneratorToolpublic Value emitLowestSetIsolatedBit(Value value)
emitLowestSetIsolatedBit in interface AMD64ArithmeticLIRGeneratorToolpublic Value emitGetMaskUpToLowestSetBit(Value value)
emitGetMaskUpToLowestSetBit in interface AMD64ArithmeticLIRGeneratorToolpublic Value emitResetLowestSetBit(Value value)
emitResetLowestSetBit in interface AMD64ArithmeticLIRGeneratorToolpublic Value emitMathAbs(Value input)
emitMathAbs in interface ArithmeticLIRGeneratorToolpublic Value emitMathSqrt(Value input)
emitMathSqrt in interface ArithmeticLIRGeneratorToolpublic Value emitMathLog(Value input,
boolean base10)
emitMathLog in interface ArithmeticLIRGeneratorToolpublic Value emitMathCos(Value input)
emitMathCos in interface ArithmeticLIRGeneratorToolpublic Value emitMathSin(Value input)
emitMathSin in interface ArithmeticLIRGeneratorToolpublic Value emitMathTan(Value input)
emitMathTan in interface ArithmeticLIRGeneratorToolpublic Value emitMathExp(Value input)
emitMathExp in interface ArithmeticLIRGeneratorToolpublic Value emitMathPow(Value x,
Value y)
emitMathPow in interface ArithmeticLIRGeneratorToolpublic Value emitMathSignum(Value input)
emitMathSignum in interface ArithmeticLIRGeneratorToolpublic Value emitMathCopySign(Value magnitude,
Value sign)
emitMathCopySign in interface ArithmeticLIRGeneratorToolprotected AMD64LIRGenerator getAMD64LIRGen()
public Variable emitLoad(LIRKind kind, Value address, LIRFrameState state)
emitLoad in interface ArithmeticLIRGeneratorToolpublic Variable emitOrderedLoad(LIRKind kind, Value address, LIRFrameState state, MemoryOrderMode memoryOrder)
emitOrderedLoad in interface ArithmeticLIRGeneratorToolpublic void emitOrderedStore(<any> kind,
Value address,
Value input,
LIRFrameState state,
MemoryOrderMode memoryOrder)
emitOrderedStore in interface ArithmeticLIRGeneratorToolprotected void emitStoreConst(AMD64Kind kind,
AMD64AddressValue address,
ConstantValue value,
LIRFrameState state)
protected void emitStore(AMD64Kind kind,
AMD64AddressValue address,
AllocatableValue value,
LIRFrameState state)
emitStore in interface ArithmeticLIRGeneratorToolpublic void emitStore(<any> lirKind,
Value address,
Value input,
LIRFrameState state)
emitStore in interface ArithmeticLIRGeneratorToolpublic boolean mustReplaceNullWithNullRegister(Constant nullConstant)
public AllocatableValue getNullRegisterValue()
public void emitCompareOp(AMD64Kind cmpKind,
AllocatableValue left,
Value right)
emitCompareOp in interface AMD64ArithmeticLIRGeneratorToolpublic Value emitRound(Value value,
ArithmeticLIRGeneratorTool.RoundingMode mode)
emitRound in interface ArithmeticLIRGeneratorToolpublic Value emitRoundFloatToInteger(Value value)
emitRoundFloatToInteger in interface ArithmeticLIRGeneratorToolpublic boolean supportAVX()
protected Variable emitBinary(LIRKind resultKind, AMD64Assembler.VexRVMOp op, Value a, Value b)
protected Variable emitVectorBlend(Value zeroValue, Value oneValue, Value mask)
public Value emitMathMax(Value x,
Value y)
emitMathMax in interface ArithmeticLIRGeneratorToolpublic Value emitMathMin(Value x,
Value y)
emitMathMin in interface ArithmeticLIRGeneratorToolprotected Value emitMathMinMax(Value a,
Value b,
AMD64ArithmeticLIRGenerator.AMD64MathMinMaxFloatOp minmaxop)
protected AllocatableValue emitVectorFloatCompare(AllocatableValue a,
AllocatableValue b,
AMD64Assembler.VexFloatCompareOp.Predicate predicate)