summaryrefslogtreecommitdiff
path: root/src/jit/gtstructs.h
diff options
context:
space:
mode:
authorHyeongseok Oh <hseok82.oh@samsung.com>2017-06-29 03:01:18 +0900
committerBruce Forstall <brucefo@microsoft.com>2017-06-28 11:01:18 -0700
commit0ce4fab8647ac3fbc200c27adfcf31aaae0f660b (patch)
tree18e3162db4f7b757906c20d006286b2094f923fa /src/jit/gtstructs.h
parent217ab30d021f27be6fe4f35126a88e592366acbf (diff)
downloadcoreclr-0ce4fab8647ac3fbc200c27adfcf31aaae0f660b.tar.gz
coreclr-0ce4fab8647ac3fbc200c27adfcf31aaae0f660b.tar.bz2
coreclr-0ce4fab8647ac3fbc200c27adfcf31aaae0f660b.zip
[RyuJIT/ARM32] Enable passing large split struct argument (#12050)
* [RyuJIT/ARM32] Enable passing large split struct This enables passing split struct larger than 16 bytes. To support splitted struct, it defines new GenTree type - GenTreePutArgSplit. GenTreePutArgSplit is similar with GenTreePutArgStk, but it is used for splitted struct only and it has additional field to save register information. GenTreePutArgSplit node is generated in lower phase. * Apply reviews: split struct argument passing - Fix some comments: genPutArgSplit, GenTreePutArgStk, GenTreePutArgSplit, NuwPutArg, ArgComplete - Add assertion check in genPutArgSplit, genCallInstruction - Rename variable: baseReg - Change flag for GenTreePutArgSplit: _TARGET_ARM && !LEGACY_BACKEND - Change type of gtOtherRegs in GenTreePutArgSplit - Remove duplicated code: NewPutArg - Implement spill & restore flag for GenTreePutArgSplit * Apply reviews - Rebase - Update managing spillFlag for split struct - Implement spill & restore code generation - Fix typos and rename variables - Fix bug related to print gentree for split struct * Fix bug and comments - Fix bug in regset.cpp - Add comments in morph.cpp's NYI_ARM - Fix comments' typo in lsraarmarcp.cpp
Diffstat (limited to 'src/jit/gtstructs.h')
-rw-r--r--src/jit/gtstructs.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/jit/gtstructs.h b/src/jit/gtstructs.h
index 898aeec002..fa462ad328 100644
--- a/src/jit/gtstructs.h
+++ b/src/jit/gtstructs.h
@@ -96,6 +96,9 @@ GTSTRUCT_1(PhiArg , GT_PHI_ARG)
GTSTRUCT_1(StoreInd , GT_STOREIND)
GTSTRUCT_N(Indir , GT_STOREIND, GT_IND, GT_NULLCHECK, GT_BLK, GT_STORE_BLK, GT_OBJ, GT_STORE_OBJ, GT_DYN_BLK, GT_STORE_DYN_BLK)
GTSTRUCT_1(PutArgStk , GT_PUTARG_STK)
+#if !defined(LEGACY_BACKEND) && defined(_TARGET_ARM_)
+GTSTRUCT_1(PutArgSplit , GT_PUTARG_SPLIT)
+#endif
GTSTRUCT_1(PhysReg , GT_PHYSREG)
#ifdef FEATURE_SIMD
GTSTRUCT_1(SIMD , GT_SIMD)