View source code
Display the source code in dmd/backend/cod4.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.cod4
Code generation 4
Includes
- assignemt variations of operators (+= -= *= /= %= <<= >>=) - integer comparison (< > <= >=) - converting integers to a different size (e.g. short to int) - bit instructions (bit scan, population count)
Compiler implementation of the D programming language.
Mostly code generation for assignment operators.
Documentation
https://dlang.org/phobos/dmd_backend_cod4.html
Coverage
https://codecov.io/gh/dlang/dmd/src/master/src/dmd/backend/cod4.d
Functions
Name | Description |
---|---|
cdaddass(cdb, e, pretregs)
|
Generate code for += -= &= |= ^= negass |
cdasm(cdb, e, pretregs)
|
Generate code for an asm elem. |
cdbscan(cdb, e, pretregs)
|
Generate code for OPbsf and OPbsr. |
cdbt(cdb, e, pretregs)
|
Generate code for OPbt, OPbtc, OPbtr, OPbts |
cdbtst(cdb, e, pretregs)
|
Generate code for OPbtst |
cdbyteint(cdb, e, pretregs)
|
Convert byte to int. For OPu8_16 and OPs8_16. |
cdcmp(cdb, e, pretregs)
|
Generate code for compares. Handles lt,gt,le,ge,eqeq,ne for all data types. |
cdcmpxchg(cdb, e, pretregs)
|
Generate code for OPcmpxchg |
cdcnvt(cdb, e, pretregs)
|
Do conversions. Depends on OPd_s32 and CLIB.dbllng being in sequence. |
cddivass(cdb, e, pretregs)
|
Generate code for /= %= |
cdeq(cdb, e, pretregs)
|
Generate code for an assignment. |
cdfar16(cdb, e, pretregs)
|
Generate code for OPnp_f16p and OPf16p_np. |
cdlngsht(cdb, e, pretregs)
|
Convert long to short (OP32_16). Get offset of far pointer (OPoffset). Convert int to byte (OP16_8). Convert long long to long (OP64_32). OP128_64 |
cdmsw(cdb, e, pretregs)
|
Get top 32 bits of 64 bit value (I32) or top 16 bits of 32 bit value (I16) or top 64 bits of 128 bit value (I64). OPmsw |
cdmulass(cdb, e, pretregs)
|
Generate code for *= |
cdpair(cdb, e, pretregs)
|
Generate code for OPpair, OPrpair. |
cdpopcnt(cdb, e, pretregs)
|
OPpopcnt operator |
cdport(cdb, e, pretregs)
|
Handle operators OPinp and OPoutp. |
cdprefetch(cdb, e, pretregs)
|
Generate code for OPprefetch |
cdshass(cdb, e, pretregs)
|
Generate code for <<= and >>= |
cdshtlng(cdb, e, pretregs)
|
Convert short to long. For OPs16_32, OPu16_32, OPnp_fp, OPu32_64, OPs32_64, OPu64_128, OPs64_128 |
doinreg(s, e)
|
Determine if expression e can be evaluated directly into register variable s. Have to be careful about things like x=x+x+x, and x=a+x. |
longcmp(cdb, e, jcond, fltarg, targ)
|
Generate code for signed compare of longs. |
modEA(cdb, c)
|
Return code for saving common subexpressions if EA turns out to be a register. This is called just before modifying an EA. |
Authors
License
Copyright © 1999-2022 by the D Language Foundation | Page generated by ddox.