summaryrefslogtreecommitdiff
path: root/src/jit/codegenlinear.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/jit/codegenlinear.h')
-rw-r--r--src/jit/codegenlinear.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/jit/codegenlinear.h b/src/jit/codegenlinear.h
index 57eac7ced4..6a030eb926 100644
--- a/src/jit/codegenlinear.h
+++ b/src/jit/codegenlinear.h
@@ -103,6 +103,10 @@
void genConsumeBlockOp(GenTreeBlkOp* blkNode, regNumber dstReg, regNumber srcReg, regNumber sizeReg);
+#ifdef FEATURE_UNIX_AMD64_STRUCT_PASSING
+ void genConsumePutArgStk(GenTreePutArgStk* putArgStkNode, regNumber dstReg, regNumber srcReg, regNumber sizeReg);
+#endif // FEATURE_UNIX_AMD64_STRUCT_PASSING
+
void genConsumeRegs(GenTree* tree);
void genConsumeOperands(GenTreeOp* tree);
@@ -126,6 +130,11 @@
void genCodeForCpBlkUnroll (GenTreeCpBlk* cpBlkNode);
+#ifdef FEATURE_UNIX_AMD64_STRUCT_PASSING
+ void genCodeForPutArgRepMovs(GenTreePutArgStk* putArgStkNode);
+ void genCodeForPutArgUnroll(GenTreePutArgStk* putArgStkNode);
+#endif // FEATURE_UNIX_AMD64_STRUCT_PASSING
+
void genCodeForLoadOffset(instruction ins, emitAttr size, regNumber dst, GenTree* base, unsigned offset);
void genCodeForStoreOffset(instruction ins, emitAttr size, regNumber dst, GenTree* base, unsigned offset);
@@ -150,6 +159,18 @@
void genJmpMethod(GenTreePtr jmp);
+#if defined(FEATURE_UNIX_AMD64_STRUCT_PASSING)
+ void genGetStructTypeSizeOffset(const SYSTEMV_AMD64_CORINFO_STRUCT_REG_PASSING_DESCRIPTOR& structDesc,
+ var_types* type0,
+ var_types* type1,
+ emitAttr* size0,
+ emitAttr* size1,
+ unsigned __int8* offset0,
+ unsigned __int8* offset1);
+
+ bool genStoreRegisterReturnInLclVar(GenTreePtr treeNode);
+#endif // defined(FEATURE_UNIX_AMD64_STRUCT_PASSING)
+
void genLclHeap(GenTreePtr tree);
bool genIsRegCandidateLocal (GenTreePtr tree)