View source code
Display the source code in dmd/backend/cg87.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Module dmd.backend.cg87
Compiler implementation of the D programming language.
Functions
Name | Description |
---|---|
cdconvt87(cdb, e, pretregs)
|
Operators OPc_r and OPc_i |
cdconvt87(cdb, e, pretregs)
|
Operators OPc_r and OPc_i |
cdd_u32(cdb, e, pretregs)
|
Do the following opcodes: OPd_u32 |
cdd_u32(cdb, e, pretregs)
|
Do the following opcodes: OPd_u32 |
cdd_u64(cdb, e, pretregs)
|
Do the following opcodes: OPd_u64 OPld_u64 |
cdd_u64(cdb, e, pretregs)
|
Do the following opcodes: OPd_u64 OPld_u64 |
cdind87(cdb, e, pretregs)
|
|
cdind87(cdb, e, pretregs)
|
|
cdnegass87(cdb, e, pretregs)
|
OPnegass |
cdnegass87(cdb, e, pretregs)
|
OPnegass |
cdrndtol(cdb, e, pretregs)
|
Do OPrndtol. |
cdrndtol(cdb, e, pretregs)
|
Do OPrndtol. |
cdscale(cdb, e, pretregs)
|
Do OPscale, OPyl2x, OPyl2xp1. |
cdscale(cdb, e, pretregs)
|
Do OPscale, OPyl2x, OPyl2xp1. |
cg87_reset()
|
Reset statics for another .obj file. |
cg87_reset()
|
Reset statics for another .obj file. |
cload87(cdb, e, pretregs)
|
Load complex operand into ST01 or flags or both. |
cload87(cdb, e, pretregs)
|
Load complex operand into ST01 or flags or both. |
cmporder87(e)
|
Determine if a compare is to be done forwards (return 0) or backwards (return 1). Must follow same logic as load87(). |
cmporder87(e)
|
Determine if a compare is to be done forwards (return 0) or backwards (return 1). Must follow same logic as load87(). |
cnvt87(cdb, e, pretregs)
|
Do the following opcodes: OPd_s16 OPd_s32 OPd_u16 OPd_s64 |
cnvt87(cdb, e, pretregs)
|
Do the following opcodes: OPd_s16 OPd_s32 OPd_u16 OPd_s64 |
complex_eq87(cdb, e, pretregs)
|
Perform an assignment to a long double/double/float. |
complex_eq87(cdb, e, pretregs)
|
Perform an assignment to a long double/double/float. |
comsub87(cdb, e, pretregs)
|
Reload common subexpression. |
comsub87(cdb, e, pretregs)
|
Reload common subexpression. |
eq87(cdb, e, pretregs)
|
Perform an assignment to a long double/double/float. |
eq87(cdb, e, pretregs)
|
Perform an assignment to a long double/double/float. |
fixresult87(cdb, e, retregs, pretregs)
|
Given the result of an expression is in retregs, generate necessary code to return result in *pretregs. |
fixresult87(cdb, e, retregs, pretregs)
|
Given the result of an expression is in retregs, generate necessary code to return result in *pretregs. |
fixresult_complex87(cdb, e, retregs, pretregs)
|
Given the result of an expression is in retregs, generate necessary code to return result in *pretregs. |
fixresult_complex87(cdb, e, retregs, pretregs)
|
Given the result of an expression is in retregs, generate necessary code to return result in *pretregs. |
genfwait(cdb)
|
Decide if we need to gen an FWAIT. |
genfwait(cdb)
|
Decide if we need to gen an FWAIT. |
gensaverestore87(regm, cdbsave, cdbrestore)
|
Save/restore ST0 or ST01 |
gensaverestore87(regm, cdbsave, cdbrestore)
|
Save/restore ST0 or ST01 |
load87(cdb, e, eoffset, pretregs, eleft, op)
|
If op == -1, load expression e into ST0. else compute (eleft op e), eleft is in ST0. Must follow same logic as cmporder87(); |
load87(cdb, e, eoffset, pretregs, eleft, op)
|
If op == -1, load expression e into ST0. else compute (eleft op e), eleft is in ST0. Must follow same logic as cmporder87(); |
loadconst(e, im)
|
Determine if there is a special 8087 instruction to load constant e. |
loadconst(e, im)
|
Determine if there is a special 8087 instruction to load constant e. |
loadPair87(cdb, e, pretregs)
|
Load OPpair or OPrpair into mST01 |
loadPair87(cdb, e, pretregs)
|
Load OPpair or OPrpair into mST01 |
neg87(cdb, e, pretregs)
|
Unary -, absolute value, square root, sine, cosine |
neg87(cdb, e, pretregs)
|
Unary -, absolute value, square root, sine, cosine |
neg_complex87(cdb, e, pretregs)
|
Unary - for complex operands |
neg_complex87(cdb, e, pretregs)
|
Unary - for complex operands |
note87(e, offset, i)
|
Note elem e as being in ST(i) as being a value we want to keep. |
note87(e, offset, i)
|
Note elem e as being in ST(i) as being a value we want to keep. |
opass87(cdb, e, pretregs)
|
Perform +=, -=, *= and /= for doubles. |
opass87(cdb, e, pretregs)
|
Perform +=, -=, *= and /= for doubles. |
pop87()
|
Pop 8087 stack. |
pop87()
|
Pop 8087 stack. |
post87(cdb, e, pretregs)
|
Take care of OPpostinc and OPpostdec. |
post87(cdb, e, pretregs)
|
Take care of OPpostinc and OPpostdec. |
push87(cdb)
|
Push 8087 stack. Generate and return any code necessary to preserve anything that might run off the end of the stack. |
push87(cdb)
|
Push 8087 stack. Generate and return any code necessary to preserve anything that might run off the end of the stack. |
save87(cdb)
|
Save in memory any values in the 8087 that we want to keep. |
save87(cdb)
|
Save in memory any values in the 8087 that we want to keep. |
save87regs(cdb, n)
|
Save any noted values that would be destroyed by n pushes |
save87regs(cdb, n)
|
Save any noted values that would be destroyed by n pushes |
xchg87(i, j)
|
Exchange two entries in 8087 stack. |
xchg87(i, j)
|
Exchange two entries in 8087 stack. |
Structs
Name | Description |
---|---|
Dconst
|
|
Dconst
|
|
NDP
|
When we need to temporarilly save 8087 registers, we record information about the save into an array of NDP structs: |
NDP
|
When we need to temporarilly save 8087 registers, we record information about the save into an array of NDP structs: |
Global variables
Name | Type | Description |
---|---|---|
oprev
|
const(ubyte[9])
|
Generate in-line 8087 code for the following operators: add min mul div cmp |
oprev
|
const(ubyte[9])
|
Generate in-line 8087 code for the following operators: add min mul div cmp |
Authors
License
Copyright © 1999-2022 by the D Language Foundation | Page generated by ddox.