summaryrefslogtreecommitdiff
path: root/src/jit/emit.h
AgeCommit message (Collapse)AuthorFilesLines
2019-06-21WorkAround for #25050. (#25316)Sergey Andreenko1-0/+10
* WorkAround for #25050. A temporary workaround to push the milestone for this issue to 3.next. * Response review.
2019-06-18Start cleaning emitxarch::GetSize estimates. (#25160)Sergey Andreenko1-3/+2
* Add comments for _idCodeSize and a few asserts. * Delete emitSizeOfJump. * Delete emitInstCodeSz. * Response review.
2019-04-12Display the arm instruction sizeBruce Forstall1-1/+1
When dumping an arm instruction, and when we don't have the actual code bytes (such as during code generation, as opposed to emission), display the (current) instruction size, either 2 bytes (2B), 4 bytes (4B), or 6 bytes (6B).
2019-03-20Update emitter statisticsBruce Forstall1-36/+106
1. Move BasicBlock static statistics output to block.cpp, and update it to match the current BasicBlock declaration. 2. Add counts for each instrDesc type that is used. 3. Dump instrDesc type sizes. 4. Dump IG "static" buffer sizes. 5. Dump how many of each instrDesc can fit in the "static" IG. 6. Dump the maximum prolog instrDesc count and prolog IG size. 7. Fix and enable the "common small constants" output.
2019-03-18Fix explicit constructor calls and Remove multi-line comments (#23162)Sinan Kaya1-1/+1
* fix implicit constructor call * extern c format patch * muti-line * Remove direct constructor call * Conversion * Need paranthesis * Return value on resize * declspec(Thread) * Ignore warnings for GCC * Formatting issues * Move cast to constant
2019-03-13Fix/clean compNoGCHelperCallKillSet for arm. (#23078)Sergey Andreenko1-0/+3
* Add an assert to compNoGCHelperCallKillSet. That registers that lose GC or byref values also are in compHelperCallKillSet return set. * Move compNoGCHelperCallKillSet from compiler to emitter. * Rename `compNoGCHelperCallKillSet` to `emitGetGCRegsKilledByNoGCCall`. * Fix GCRegsKill sets for arm CORINFO_HELP_PROF_FCN_ENTER and CORINFO_HELP_PROF_FCN_LEAVE.
2019-01-24Merge pull request #14393 from mikedn/float-neg-absCarol Eidt1-1/+22
Improve `new Vector2/3/4(c1, c2, c3, c4)` codegen
2019-01-23Remove obsolete LEGACY_BACKEND ifdefMike Danes1-2/+0
2018-12-25Fix CFI code offsets in prolog on ARMAndrey Kvochko1-2/+0
2018-12-14Simplifying the emitter handling of 4-byte encoded SSE instructions (#21528)Tanner Gooding1-1/+0
2018-10-18[RyuJIT] Delete dead code (#20411)mikedn1-6/+0
* Delete dead code optFindLocalInit and related functions (optIsTrackedLocal, lvaLclVarRefs, lvaLclVarRefsAccumIntoRes, lvaLclVarRefsAccum) are not used anywhere. Also delete a bunch of undefined function declarations. * Cleanup DataFlow callback comment
2018-09-16Optimize `new Vector4(c1,c2,c3,c4)`Mike Danes1-0/+10
2018-09-16Add support for 16 byte aligned constantsMike Danes1-1/+11
2018-09-16Include the data section in disassemblyMike Danes1-0/+3
2018-09-06Clean CodeGen::genEmitCall (#19804)Sergey Andreenko1-1/+4
* delete isProfLeaveCB from arm signature The previous implementation was done many years ago and I do not why it was done that way. * extract GetSavedSet * add isNoGCHelper * delete isNoGC arg * move declarations closer to their uses * delete isGc from genEmitCall * delete unused method declaration. * add emitNoGChelper that accepts CORINFO_METHOD_HANDLE * fix missed switch cases * add function headers * Fix feedback * Fix feedback2
2018-08-03Handle MovRelocatableImmediate on ARM32 as a special case (IF_T2_N3) (#19013)Egor Chesakov1-12/+42
* Add IF_T2_N3 instruction form and make this a specific case of IF_T2_N when EA_IS_RELOC(attr) is true * Move "movw/movt reg,relocatableImm" case to function emitIns_MovRelocatableImmediate * Introduce new instruction descriptor instrDescReloc * Delete unused CnsVal from ARM32 and ARM64 emitters * Introduce target_ssize_t and use this type for non-relocatable constants
2018-07-12Remove dead/unreachable code from ARM32 and ARM64 emitters (#18878)Egor Chesakov1-39/+18
2018-06-07Increase instrDesc::_idIns width on XARCHMike Danes1-53/+33
XARCH exceeded the 512 instruction limit but it still has room for instruction formats (only 77 at the moment) so a bit was taken from _idInsFmt. Also, cleaned up some tiny while instrDesc traces while trying to fix "Space taken up to here:" kind of comments.
2018-05-22Remove JIT LEGACY_BACKEND code (#18064)Bruce Forstall1-192/+29
Remove JIT LEGACY_BACKEND code All code related to the LEGACY_BACKEND JIT is removed. This includes all code related to x87 floating-point code generation. Almost 50,000 lines of code have been removed. Remove legacyjit/legacynonjit directories Remove reg pairs Remove tiny instruction descriptors Remove compCanUseSSE2 (it's always true) Remove unused FEATURE_FP_REGALLOC
2018-04-30ARM64 like ARM32 also needs a much larger instruction group sizeBrian Sullivan1-5/+5
because the prolog can be quite large.
2018-03-01Define emitter::code_t for _TARGET_ARM_ and use this type rather than ↵Egor Chesakov1-5/+0
ssize_t or size_t to hold encoded instructions in emitter
2018-01-18table drive Intel hardware intrinsicFei Peng1-0/+14
2017-11-14Change VEX-encoding selection to avoid AVX-SSE transition penaltiesFei Peng1-1/+1
2017-11-06Merge pull request #14735 from mikedn/emit-const-cleanupCarol Eidt1-2/+2
Cleanup const data emission
2017-11-01[Arm64] Instruction requires 9 bits nowSteve MacLean1-10/+10
2017-10-30Rename and simplify SSE3_4 to SSE4Fei Peng1-1/+1
2017-10-28Add emitAnyConstMike Danes1-0/+1
Like emitDataConst but returns CORINFO_FIELD_HANDLE, it's more useful in codegen. emitDataConst should probably be private.
2017-10-28Change emitFltOrDblConst parametersMike Danes1-1/+1
It's preferable to avoid trees in the emit functions so they're usable in more situations.
2017-10-28Remove unused emitLiteralConstMike Danes1-1/+0
2017-10-24Cleanup unused emitter argumentsBrian Sullivan1-7/+6
Removed unused idClsCookie from struct instrDescDebugInfo Cleaned up several ifdefs
2017-10-03remove FEATURE_AVX_SUPPORT flagFei Peng1-8/+5
2017-09-22[Arm64] Add Floor/Ceiling intrinsics (#14132)Steve MacLean1-4/+5
* [Arm64] Add Floor/Ceiling intrinsics * Templatize emitActualTypeSize
2017-08-01Refactor emitter::emitInsMov (#12905)mikedn1-1/+3
* Split emitter::emitInsMov into separate functions None of this function's callers need it to figure out what kind of "mov" to emit, the callers already know what they need and they should call the appropiate function. Copy & paste code, no actual changes. * Pass the destination register to emitInsLoadInd This way it can be used for contained indirs where the destination register is set on the parent node. * Cleanup emitInsLoadInd/emitInsStoreInd/emitInsStoreLcl
2017-06-09Merge pull request #12184 from rartemev/legacy_jit_1Roman Artemev1-0/+2
Fix and enable legacy jit for x86
2017-06-09delete DECLARE_TYPED_ENUM (#12177)Sergey Andreenko1-17/+22
* delete DECLARE_TYPED_ENUM delete the workaroung for g++ c++11, that was fixes in gcc 4.4.1 many years ago. The workaround makes code dirty and sometimes we have typos like: }; END_DECLARE_TYPED_ENUM(insFlags,unsigned) or END_DECLARE_TYPED_ENUM(ChunkExtraAttribs, BYTE); with double ;; * jit-format
2017-06-08Enable legacy jit for x86Roman Artemev1-0/+2
2017-05-23Merge pull request #11366 from ↵Bruce Forstall1-0/+5
ruben-ayrapetyan/remove-zap-code-relocs-for-linux-arm32 Change relocations in ngen-ed code with PC-relative constants for Linux ARM32
2017-05-15Change relocations in ngen-ed code with PC-relative constants for Linux ARM32.Ruben Ayrapetyan1-0/+5
2017-05-08[Arm64] Revise per commentsSteve MacLean, Qualcomm Datacenter Technologies, Inc1-11/+14
2017-05-08[Arm64] Add emitIns_S_S_R_RSteve MacLean, Qualcomm Datacenter Technologies, Inc1-9/+15
2017-04-27Remove commentSteve MacLean1-1/+1
2017-04-27[Arm64] Support two GC attributes in pair formsSteve MacLean, Qualcomm Datacenter Technologies, Inc1-6/+20
Also use in genCodeForCpObj
2017-04-10Merge pull request #10782 from parjong/fix/x86_funclet_unwindingBruce Forstall1-2/+3
[x86/Linux] Use GCInfo for funclet unwinding
2017-04-07Remove RELOC_SUPPORT defineBruce Forstall1-29/+7
It's always defined, is always expected to be defined, and the build doesn't work without it. Also remove unused `SECURITY_CHECK` and `VERIFY_IMPORTER` defines.
2017-04-07Fix format errorJonghyun Park1-2/+2
2017-04-07[x86/Linux] Use GCInfo for funclet unwindingJonghyun Park1-0/+1
2017-02-23Format code.Pat Gavlin1-2/+1
2017-02-22Do not report FP restores in x86 epilogs.Pat Gavlin1-4/+9
The x86 unwinder neither needs nor expects to see these restores (which right now consist solely of a `vzeroupper` instruction that is emitted to eliminate AVX <-> SSE transition penalties), which was causing unwind failures under GC stress. This change stops reporting these restores as part of a function epilog. Fixes #9452.
2017-01-20[x86/Linux] Allow push/pop in funclet prolog and epilog (#9001)Jonghyun Park1-12/+9
* [x86/Linux] Allow Push/Pop in Funclet Prolog and Epilog
2016-11-30Fix x86 encoder to use 64-bit type to accumulate opcode/prefix bitsBruce Forstall1-0/+12
The encoder was using size_t, a 32-bit type on x86, to accumulate opcode and prefix bits to emit. AVX support uses 3 bytes for prefixes that are higher than the 32-bit type can handle. So, change all code byte related types from size_t to a new code_t, defined as "unsigned __int64" on RyuJIT x86 (there is precedence for this type on the ARM architectures). Fixes #8331