View source code
Display the source code in dmd/backend/cgxmm.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.cgxmm

xmm specific code generation

Compiler implementation of the D programming language.

Functions

NameDescription
cdvecfill(cdb, e, pretregs) Generate code for OPvecfill (broadcast). OPvecfill takes the single value in e1 and fills the vector type with it.
cdvecsto(cdb, e, pretregs) Generate code for vector "store" operations. The tree e must look like: (op1 OPvecsto (op OPparam op2)) where op is the store instruction STOxxxx.
checkSetVex(c, ty) Determine if operation should be rewritten as a VEX operation; and do so.
checkSetVex3(c) VEX prefixes can be 2 or 3 bytes. If it must be 3 bytes, set the CFvex3 flag.
cloadxmm(cdb, e, pretregs) Load complex operand into XMM registers or flags or both.
isXMMstore(op) Is operator a store operator?
loadxmmconst(e) Determine if we can load a constant into an XMM register with instructions.
movxmmconst(cdb, xreg, ty, pev, flags) Move constant value into xmm register xreg.
orthxmm(cdb, e, pretregs) Do simple orthogonal operators for XMM registers.
xmmabs(cdb, e, pretregs) Absolute value operator OPabs
xmmcnvt(cdb, e, pretregs) Generate code for conversion using SSE2 instructions.
xmmeq(cdb, e, op, e1, e2, pretregs) Generate code for an assignment using XMM registers.
xmmIsAligned(e) Determine if lvalue e is a vector aligned on a 16/32 byte boundary. Assume it to be aligned unless can prove it is not.
xmmload(tym, aligned) Get correct load operator based on type. It is important to use the right one even if the number of bits moved is the same, as there are performance consequences for using the wrong one.
xmmneg(cdb, e, pretregs) Negate operator
xmmopass(cdb, e, pretregs) Generate code for op=
xmmpost(cdb, e, pretregs) Generate code for post increment and post decrement.
xmmstore(tym, aligned) Get correct store operator based on type.

Authors

Walter Bright

License

Boost License 1.0