|
40 | 40 | void genMathIntrinsic(GenTreePtr treeNode);
|
41 | 41 |
|
42 | 42 | void genPutArgStk(GenTreePtr treeNode);
|
| 43 | + unsigned getBaseVarForPutArgStk(GenTreePtr treeNode); |
43 | 44 |
|
44 | 45 | #ifdef FEATURE_SIMD
|
45 | 46 | instruction getOpForSIMDIntrinsic(SIMDIntrinsicID intrinsicId, var_types baseType, unsigned *ival = nullptr);
|
|
104 | 105 | void genConsumeBlockOp(GenTreeBlkOp* blkNode, regNumber dstReg, regNumber srcReg, regNumber sizeReg);
|
105 | 106 |
|
106 | 107 | #ifdef FEATURE_UNIX_AMD64_STRUCT_PASSING
|
107 |
| - void genConsumePutArgStk(GenTreePutArgStk* putArgStkNode, regNumber dstReg, regNumber srcReg, regNumber sizeReg); |
| 108 | + void genConsumePutStructArgStk(GenTreePutArgStk* putArgStkNode, regNumber dstReg, regNumber srcReg, regNumber sizeReg, unsigned baseVarNum); |
108 | 109 | #endif // FEATURE_UNIX_AMD64_STRUCT_PASSING
|
109 | 110 |
|
110 | 111 | void genConsumeRegs(GenTree* tree);
|
|
131 | 132 | void genCodeForCpBlkUnroll (GenTreeCpBlk* cpBlkNode);
|
132 | 133 |
|
133 | 134 | #ifdef FEATURE_UNIX_AMD64_STRUCT_PASSING
|
134 |
| - void genCodeForPutArgRepMovs(GenTreePutArgStk* putArgStkNode); |
135 |
| - void genCodeForPutArgUnroll(GenTreePutArgStk* putArgStkNode); |
| 135 | + void genPutStructArgStk(GenTreePtr treeNode |
| 136 | + FEATURE_UNIX_AMD64_STRUCT_PASSING_ONLY_ARG(unsigned baseVarNum)); |
| 137 | + |
| 138 | + void genStructPutArgRepMovs(GenTreePutArgStk* putArgStkNode, unsigned baseVarNum); |
| 139 | + void genStructPutArgUnroll(GenTreePutArgStk* putArgStkNode, unsigned baseVarNum); |
136 | 140 | #endif // FEATURE_UNIX_AMD64_STRUCT_PASSING
|
137 | 141 |
|
138 | 142 | void genCodeForLoadOffset(instruction ins, emitAttr size, regNumber dst, GenTree* base, unsigned offset);
|
|
0 commit comments