View source code
Display the source code in dmd/backend/x86/cod4.d from which thispage was generated on github.
Report a bug
If you spot a problem with this page, click here to create aBugzilla 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 usinglocal clone.

Module dmd.backend.x86.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_x86_cod4.html

Coverage

https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/backend/x86/cod4.d

Functions

NameDescription
cdaddass(cg, cdb, e, pretregs) Generate code for += -= &= |= ^= negass
cdasm(cg, cdb, e, pretregs) Generate code for an asm elem.
cdbscan(cg, cdb, e, pretregs) Generate code for OPbsf and OPbsr.
cdbt(cg, cdb, e, pretregs) Generate code for OPbt, OPbtc, OPbtr, OPbts
cdbtst(cg, cdb, e, pretregs) Generate code for OPbtst
cdbyteint(cg, cdb, e, pretregs) Convert byte to int. For OPu8_16 and OPs8_16.
cdcmp(cg, cdb, e, pretregs) Generate code for compares. Handles lt,gt,le,ge,eqeq,ne for all data types.
cdcmpxchg(cg, cdb, e, pretregs) Generate code for OPcmpxchg
cdcnvt(cg, cdb, e, pretregs) Do conversions. Depends on OPd_s32 and CLIB.dbllng being in sequence. OPvp_fp OPcvp_fp OPd_s32 OPb_8 OPs32_d OPd_s16 OPs16_d OPd_u16 OPu16_d OPd_u32 OPu32_d OPd_f OPf_d OPd_ld OPld_d
cddivass(cg, cdb, e, pretregs) Generate code for /= %=
cdeq(cg, cdb, e, pretregs) Generate code for an assignment.
cdfar16(cg, cdb, e, pretregs) Generate code for OPnp_f16p and OPf16p_np.
cdlngsht(cg, cdb, e, pretregs) Convert long to short. OPoffset OP32_16 OP16_8 OP64_32 OP128_64
cdmsw(cg, 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(cg, cdb, e, pretregs) Generate code for *=
cdpair(cg, cdb, e, pretregs) Generate code for OPpair, OPrpair.
cdpopcnt(cg, cdb, e, pretregs) OPpopcnt operator
cdport(cg, cdb, e, pretregs) Handle operators OPinp and OPoutp.
cdprefetch(cg, cdb, e, pretregs) Generate code for OPprefetch
cdshass(cg, cdb, e, pretregs) Generate code for <<= and >>=
cdshtlng(cg, cdb, e, pretregs) Convert short to long. OPnp_fp OPs16_32 OPu16_32 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

Walter Bright

License

Boost License 1.0