public final class AMD64MathLogOp extends AMD64MathIntrinsicUnaryOp
ALGORITHM DESCRIPTION - LOG() --------------------- x=2^k * mx, mx in [1,2) Get B~1/mx based on the output of rcpss instruction (B0) B = int((B0*2^7+0.5))/2^7 Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts) Result: k*log(2) - log(B) + p(r) if |x-1| >= small value (2^-6) and p(r) is a degree 7 polynomial -log(B) read from data table (high, low parts) Result is formed from high and low parts. Special cases: log(NaN) = quiet NaN, and raise invalid exception log(+INF) = that INF log(0) = -INF with divide-by-zero exception raised log(1) = +0 log(x) = NaN with invalid exception raised if x < -0, including -INF
LIRInstruction.Alive, LIRInstruction.Def, LIRInstruction.OperandFlag, LIRInstruction.OperandMode, LIRInstruction.State, LIRInstruction.Temp, LIRInstruction.Use
Modifier and Type | Field and Description |
---|---|
static LIRInstructionClass<AMD64MathLogOp> |
TYPE |
input, output, temps
ADDRESS_FLAGS, ALLOWED_FLAGS
Constructor and Description |
---|
AMD64MathLogOp() |
Modifier and Type | Method and Description |
---|---|
void |
emitCode(CompilationResultBuilder crb,
AMD64MacroAssembler masm) |
emitLIRWrapper
emitCode
addStackSlotsToTemporaries, destroysCallerSavedRegisters, forEachAlive, forEachAlive, forEachInput, forEachInput, forEachOutput, forEachOutput, forEachRegisterHint, forEachRegisterHint, forEachState, forEachState, forEachState, forEachState, forEachTemp, forEachTemp, getComment, getLIRInstructionClass, getPosition, hashCode, hasOperands, hasState, id, isLoadConstantOp, isMoveOp, isValueMoveOp, name, needsClearUpperVectorRegisters, setComment, setId, setPosition, toString, toString, toStringWithIdPrefix, verify, visitEachAlive, visitEachAlive, visitEachInput, visitEachInput, visitEachOutput, visitEachOutput, visitEachState, visitEachState, visitEachTemp, visitEachTemp
public static final LIRInstructionClass<AMD64MathLogOp> TYPE
public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm)
emitCode
in class AMD64LIRInstruction