Age | Commit message (Collapse) | Author | Files | Lines |
|
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).
|
|
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.
|
|
* 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
|
|
* 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.
|
|
Improve `new Vector2/3/4(c1, c2, c3, c4)` codegen
|
|
|
|
|
|
|
|
* 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
|
|
|
|
|
|
|
|
* 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
|
|
* 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
|
|
|
|
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.
|
|
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
|
|
because the prolog can be quite large.
|
|
ssize_t or size_t to hold encoded instructions in emitter
|
|
|
|
|
|
Cleanup const data emission
|
|
|
|
|
|
Like emitDataConst but returns CORINFO_FIELD_HANDLE, it's more useful in codegen. emitDataConst should probably be private.
|
|
It's preferable to avoid trees in the emit functions so they're usable in more situations.
|
|
|
|
Removed unused idClsCookie from struct instrDescDebugInfo
Cleaned up several ifdefs
|
|
|
|
* [Arm64] Add Floor/Ceiling intrinsics
* Templatize emitActualTypeSize
|
|
* 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
|
|
Fix and enable legacy jit for x86
|
|
* 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
|
|
|
|
ruben-ayrapetyan/remove-zap-code-relocs-for-linux-arm32
Change relocations in ngen-ed code with PC-relative constants for Linux ARM32
|
|
|
|
|
|
|
|
|
|
Also use in genCodeForCpObj
|
|
[x86/Linux] Use GCInfo for funclet unwinding
|
|
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.
|
|
|
|
|
|
|
|
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.
|
|
* [x86/Linux] Allow Push/Pop in Funclet Prolog and Epilog
|
|
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
|
|
|
|
The GC info encoding for this platform does not permit marking
arbitrary regions of generated code as non-interruptible.
|