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, tempsADDRESS_FLAGS, ALLOWED_FLAGS| Constructor and Description |
|---|
AMD64MathLogOp() |
| Modifier and Type | Method and Description |
|---|---|
void |
emitCode(CompilationResultBuilder crb,
AMD64MacroAssembler masm) |
emitLIRWrapperemitCodeaddStackSlotsToTemporaries, 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, visitEachTemppublic static final LIRInstructionClass<AMD64MathLogOp> TYPE
public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm)
emitCode in class AMD64LIRInstruction