Hyeongseok Oh [Tue, 16 May 2017 10:37:03 +0000 (19:37 +0900)]
[ARM32/Linux] Copy tests.zip only for CI test
Copy tests.zip only from x64 Windows build for CI test
We can reduce saved build results of linux/arm in CI machine
Tomáš Matoušek [Thu, 25 May 2017 06:48:05 +0000 (23:48 -0700)]
Adds System.Runtime.CompilerServices.Runtimefeature.PortablePdb (#11845)
Aditya Mandaleeka [Thu, 25 May 2017 06:47:28 +0000 (23:47 -0700)]
Remove g_fEEManagedEXEStartup and g_fEEIJWStartup. (#11907)
Brian Robbins [Thu, 25 May 2017 01:19:22 +0000 (18:19 -0700)]
Mark the EventPipe crst as host breakable. (#11899)
dotnet bot [Thu, 25 May 2017 01:15:00 +0000 (18:15 -0700)]
Update CoreClr, CoreFx to preview1-25323-01, preview1-25323-02, respectively (master) (#11809)
* Update CoreClr, CoreFx to preview1-25323-01, preview1-25323-02, respectively
* Update corefx package versions in projects
Jonghyun Park [Thu, 25 May 2017 00:42:31 +0000 (09:42 +0900)]
[x86/Linux] Reentrant PEImage::Load (#11867)
* [x86/Linux] Reentrant PEImage::Load
* Use HasLoadedLayout and add comments
Pat Gavlin [Wed, 24 May 2017 23:45:04 +0000 (16:45 -0700)]
Merge pull request #11894 from pgavlin/gh11804
Never enregister type-punned regStruct lclVars.
Xiang Fan [Wed, 24 May 2017 22:51:38 +0000 (15:51 -0700)]
Fix Issue 11861 (#11886)
* Fix issues exposed by building with MSVC and /permissive-.
Using full-qualified name to declare members inside class is ill-formed and incorrectly allowed by MSVC.
MSVC now gives error when /permissive- is used.
* Add a forward declaration for SafeAddRef from utilcode.h.
SafeAddRef in holder.h calls SafeAddRef in utilcode.h. The latter hasn't been declared yet, so it isn't a valid candidate during overload resolution.
It happens to work in MSVC default mode because of the lack of two phase name lookup.
gbalykov [Wed, 24 May 2017 22:50:26 +0000 (01:50 +0300)]
Allow RelativePointer::SetValue usage for non-DAC builds only (#11891)
Joseph Tremoulet [Wed, 24 May 2017 22:12:28 +0000 (18:12 -0400)]
Merge pull request #11893 from JosephTremoulet/WeakenIBRAssert
Weaken type assertion in gtNewLclNode
Joseph Tremoulet [Wed, 24 May 2017 21:44:28 +0000 (17:44 -0400)]
Merge pull request #11883 from JosephTremoulet/PromotedStructRefs
Update full-struct references to promoted IBR args
Brian Robbins [Wed, 24 May 2017 21:43:54 +0000 (14:43 -0700)]
Indicate if thread time events are in managed or native code. (#11892)
Jarret Shook [Wed, 24 May 2017 20:37:59 +0000 (13:37 -0700)]
Merge pull request #11832 from jashook/add_1_mod_1_case
Add the case 1 % 1 to our bringup test
Pat Gavlin [Wed, 24 May 2017 19:34:09 +0000 (12:34 -0700)]
Never enregister type-punned regStruct lclVars.
Type-punned lclVars--i.e. lclVars that are accessed via
`(INDIR Tx (ADDR (LCLVAR Ty V)))`--are currently considered
enregisterable if they are SIMD-typed, have not been the accessed by
field, and have not otherwise been declared unenregisterable. This
appears to be an oversight, as the JIT is not able to generate correct
code for the type-punned access if the lclVar is in fact enregistered.
This change removes the special case for these SIMD-typed lclVars.
Fixes #11804.
Joseph Tremoulet [Wed, 24 May 2017 20:08:36 +0000 (16:08 -0400)]
Weaken type assertion in gtNewLclNode
Implicit byref parameters originally have struct type in both the lvaTable
and on their appearances in the IR. In fgRetypeImplicitByRefArgs, the
types in the lvaTable are updated, and subsequently, during global morph,
in fgMorphImplicitByRefArgs, the types of their appearances in the IR are
updated. Weaken an assertion in lcl var creation to allow the type
disagreement for implicit byref parameter references during global morph.
Fixes #11831.
Joseph Tremoulet [Wed, 24 May 2017 19:37:15 +0000 (15:37 -0400)]
Improve comments around implicit byref rewrite
A number of fields on the LclVarDsc get hijacked during the multi-stage
rewrite of implicit-by-reference parameters; add comments at the fields'
declarations as well as the hijacking uses.
Steve MacLean [Wed, 24 May 2017 18:31:44 +0000 (14:31 -0400)]
[Arm64/Win] Revise JIT_MemSet (#11420)
* [Arm64/Win] Revise JIT_MemSet
This is the Windows equivalent of #11217 which merged
* [Arm64/Win] Use csel<con> for csel
MS Assembler expects csel<cond> for the csel instruction
Jonghyun Park [Wed, 24 May 2017 17:34:59 +0000 (02:34 +0900)]
[x86/Linux] Thread-safe UMThunkMarshInfo::RunTimeInit (#11864)
Joseph Tremoulet [Wed, 24 May 2017 16:23:52 +0000 (12:23 -0400)]
Update full-struct references to promoted IBR args
Update fgMorphImplicitByRefArgs to rewrite references to struct-promoted
implicit-by-reference parameters as references to the new struct temps
created in fgRetypeImplicitByRefArgs; fgMorphStructField isn't updating
these because it's only interested in field references, and runs upstream
of fgRetypeImplicitByRefArgs where the full struct temp is created,
anyway.
Invert the sense of lvPromoted for implicit byref args in the interim
between fgRetypeImplicitByRefArgs and fgMarkDemotedImplicitByRefArgs,
since now fgMarkDemotedImplicitByRefArgs needs to update both and would
look horribly backwards the other way around.
Fixes #11814.
Swaroop Sridhar [Tue, 23 May 2017 21:33:36 +0000 (14:33 -0700)]
ILLink performance: Disable Roslyn Test
Temporarily disable roslyn test, since it is failing in the lab.
Morgan Brown [Wed, 24 May 2017 00:11:24 +0000 (17:11 -0700)]
Scale back [Serializable] on CoreCLR types (#11765)
Removes SerializableAttribute from CoreCLR types not intended to be serializable as well as adding special handling to MulticastDelegate to prevent serializing delegates (which can't be correctly serialized cross platform/runtime).
Brian Robbins [Tue, 23 May 2017 23:11:44 +0000 (16:11 -0700)]
Return early if EventPipeBuffer is empty. (#11855)
Jan Kotas [Tue, 23 May 2017 22:09:03 +0000 (15:09 -0700)]
Delete special handling of IJW RVA fields at NGen time (#11818)
Mixed mode managed C++ is not supported by CoreCLR so this is not needed for anything.
Fixes #11761
Joseph Tremoulet [Tue, 23 May 2017 21:57:56 +0000 (17:57 -0400)]
Merge pull request #11694 from JosephTremoulet/IconHoist
Don't hoist IConHandle statics above cctors
jashook [Tue, 23 May 2017 16:50:33 +0000 (09:50 -0700)]
Add the case 1 % 1 to our bringup test
Addresses lack of coverage shown in #7168.
Bruce Forstall [Tue, 23 May 2017 16:38:03 +0000 (09:38 -0700)]
Merge pull request #11366 from ruben-ayrapetyan/remove-zap-code-relocs-for-linux-arm32
Change relocations in ngen-ed code with PC-relative constants for Linux ARM32
Pat Gavlin [Tue, 23 May 2017 15:29:45 +0000 (08:29 -0700)]
Merge pull request #10275 from mikedn/x86-cmp-long-lower
Lower long compares that are materialized into a register
Mike McLaughlin [Tue, 23 May 2017 15:01:25 +0000 (08:01 -0700)]
Remove "corerun" sos plugin command. (#11812)
It broke building on debug osx and isn't used or needed anymore.
Ruben Ayrapetyan [Wed, 5 Apr 2017 18:08:32 +0000 (21:08 +0300)]
Direct mapping of IL-assembly images that don't contain writeable sections.
Ruben Ayrapetyan [Fri, 7 Apr 2017 10:25:42 +0000 (13:25 +0300)]
Extract PEImage::CreateLayoutMapped and PEImage::CreateLayoutFlat from PEImage::GetLayoutInternal.
Pat Gavlin [Tue, 23 May 2017 06:09:25 +0000 (23:09 -0700)]
Merge pull request #10990 from mikedn/narrow-test
Narrow TEST instructions when possible
Mike Danes [Sun, 19 Mar 2017 12:57:19 +0000 (14:57 +0200)]
Delete long compare support from x86 codegen
Mike Danes [Sat, 18 Mar 2017 00:39:25 +0000 (02:39 +0200)]
Lower long compares that are materialized into a register
Mike Danes [Sat, 18 Mar 2017 09:02:35 +0000 (11:02 +0200)]
Introduce GT_CMP and GT_SETCC(condition)
Michal Strehovský [Tue, 23 May 2017 01:27:19 +0000 (18:27 -0700)]
Use sigInst.methInstCount != 0 to detect generic methods (#11780)
`methInstCount` is the thing that RyuJIT uses to detect generic virtual
methods in another place. `CORINFO_CALLCONV_GENERIC` reporting was added
because nobody knew about `methInstCount`. We already report
`methodInstCount` in CoreRT. We can delete a couple of lines on the
CoreRT side by switching to this scheme.
Bruce Forstall [Tue, 23 May 2017 00:51:45 +0000 (17:51 -0700)]
Merge pull request #11810 from BruceForstall/FixUninitWarning
Fix VC++ C4201 warning on desktop build
Bruce Forstall [Tue, 23 May 2017 00:51:22 +0000 (17:51 -0700)]
Merge pull request #11797 from BruceForstall/CommonizeAdr
Handle INS_adr in emitIns_R_L on both arm32 and arm64
José Rivero [Mon, 22 May 2017 23:50:05 +0000 (16:50 -0700)]
Bump the version of the xUnit-Performance package (#11793)
- In a previous PR this was reverted and broke the Profile On/Off perf runs
Joseph Tremoulet [Mon, 22 May 2017 21:27:30 +0000 (17:27 -0400)]
Quiet warning C2220
This warning reports "potentially uninitialized local variable
`fieldOffset` used". The use is guarded by a check on `fieldHnd` being
non-null, and `fieldOffset` gets initialized properly on all paths that
set `fieldHnd` to something other than null, so the fix is simply to
initialize `fieldOffset` to 0 at its declaration so the compiler won't
complain.
Resolves #11800.
Bruce Forstall [Mon, 22 May 2017 23:07:08 +0000 (16:07 -0700)]
Fix VC++ C4201 warning on desktop build
Fixes #11808
Joseph Tremoulet [Mon, 22 May 2017 21:23:50 +0000 (17:23 -0400)]
Fix off-by-one error
The code in loop hoisting visiting a comma for a static init helper call
and static field access tried to clear the childrenHoistable bit for the
field, but had an off-by-one error and was instead clearing the bit for
the helper call, which could lead to missed legal helper call hoists.
Update that code to simply assert that the flag is already set for the
field (using the correct index), which must be true since the check is
guarded by a check that childIsCctorDependent is true for it.
Russ Keldorph [Mon, 22 May 2017 18:24:09 +0000 (11:24 -0700)]
Revert "Fixed tests build on Linux"
Bruce Forstall [Mon, 22 May 2017 20:08:42 +0000 (13:08 -0700)]
Merge pull request #11776 from parjong/fix/x86_STDMETHODCALLTYPE_as_cdecl
[x86/Linux] Set CDECL as STDMETHODCALLTYPE
Bruce Forstall [Mon, 22 May 2017 20:06:34 +0000 (13:06 -0700)]
Merge pull request #11778 from hqueue/arm/ryujit/float_ld_st
[RyuJIT/ARM32] Implement and add NYI assertion for load/store for float
Bruce Forstall [Mon, 22 May 2017 18:34:15 +0000 (11:34 -0700)]
Handle INS_adr in emitIns_R_L on both arm32 and arm64
Pat Gavlin [Mon, 22 May 2017 19:59:33 +0000 (12:59 -0700)]
Merge pull request #11750 from pgavlin/gh11734
Fix legality checks in SetRegOptionalForBinOp.
Jeremy Kuhne [Mon, 22 May 2017 19:49:08 +0000 (12:49 -0700)]
Update Unix SafeHandle to throw NotFound correctly (#11757)
* Update Unix SafeHandle to throw NotFound correctly
Need to match Windows semantics for missing files. This means throwing
FileNotFound only if the last segment of the path can't be found.
* Dispose handle and trim ending separator properly
Pat Gavlin [Mon, 22 May 2017 18:08:16 +0000 (11:08 -0700)]
Use operator/operand size for legality checks.
Bruce Forstall [Mon, 22 May 2017 18:05:11 +0000 (11:05 -0700)]
Merge pull request #11542 from BruceForstall/RefactorXarchCodegen
Refactor xarch codegen
Hyeongseok Oh [Mon, 22 May 2017 16:42:10 +0000 (01:42 +0900)]
[ARM32/RyuJIT] Enable passing struct argument that use stack only (#11541)
* [ARM32/RyuJIT] Enable passing struct argument that use stack only
Enable passing struct argument when it uses stack only.
Cannot pass splitted struct argument that uses stack and register(s) yet.
* Remove redundant GC type assignment and fix internal register count
- Remove redundant GC type assignment in genPutArgStk
- Fix internal register count for ARM32: 2 -> 1
Igor Kulaychuk [Mon, 22 May 2017 16:30:40 +0000 (19:30 +0300)]
Fix FieldDesc::GetExactFieldType when FieldDesc doesn't exactly represent the owner type (#10941)
* Fix FieldDesc::GetExactFieldType when FieldDesc doesn't exactly represent the owner type
To get the exact type from FieldDesc, field signature should point past the calling convention.
Ruben Ayrapetyan [Mon, 22 May 2017 14:38:20 +0000 (17:38 +0300)]
Delete default copy/move constructors and assignment operators of RelativePointer and RelativeFixupPointer. (#11745)
Bruce Forstall [Fri, 12 May 2017 06:39:39 +0000 (23:39 -0700)]
Refactor genCodeForTreeNode for xarch to match arm32/arm64
Almost all code in genCodeForTreeNode() has been placed in
separate functions, that match the names of function for
arm32/arm64.
Bruce Forstall [Mon, 22 May 2017 14:07:45 +0000 (07:07 -0700)]
Merge pull request #11710 from sjsinju/jump
[RyuJit/ARM32] Enable loading arguments when jump instruction
dotnet bot [Mon, 22 May 2017 14:02:09 +0000 (07:02 -0700)]
Report Span/ReadOnlySpan intrinsics to RyuJIT (dotnet/corert#3669) (#11775)
This lets RyuJIT optimize range checks on Span same way as it does for
arrays.
* Annotate the intrinsics
* Uncomment them in the table
* Report `sigInst` for all intrinsics
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Hyung-Kyu Choi [Mon, 22 May 2017 07:03:26 +0000 (16:03 +0900)]
[RyuJIT/ARM32] Implement and add NYI assertion for load/store for float
- Implement load/store for float where address is [base + index * scale]
- Add NYI assertion for not implemented cases to enable AltJit
Signed-off-by: Hyung-Kyu Choi <hk0110.choi@samsung.com>
Jonghyun Park [Tue, 16 May 2017 05:30:36 +0000 (14:30 +0900)]
[x86/Linux] Use CDECL (instead of STDCALL) as STDMETHODCALLTYPE
Bruce Forstall [Mon, 22 May 2017 05:09:20 +0000 (22:09 -0700)]
Merge pull request #11526 from mskvortsov/MulLong
[RyuJIT/ARM32] Enable GT_MUL_LONG codegen
Atsushi Kanamori [Mon, 22 May 2017 04:52:23 +0000 (21:52 -0700)]
Implement HasSameMetadataDefinitionAs() on CoreCLR (#11774)
This api was approved here:
https://github.com/dotnet/corefx/issues/5884
and is a necessary step to fixing the System.Dynamic.Runtime.Tests
failure:
https://github.com/dotnet/corefx/issues/19895
which is caused by Microsoft.CSharp trying to do the impossible
and emulate this api without GetMetadataToken() support.
This approach opts for the most straightforward and efficient
implementation without any special-casing for weird situations
(this is also what Microsoft.CSharp implements today as
well as what someone else trying to trampoline members
across generic instantaitions is like to do.)
This results in the following behavior for these
corner cases. With the possible exception of #3,
I think they are tolerable enough to accept and codify:
1. "other" implemented by an entirely different Reflection
provider than "this".
Behavior:
returns false without invoking any methods on the
"other" Member.
To change it to throw an ArgumentException would
mean extra cast checks against the 6 possible
Runtime types (or having said RuntimeTypes implement
a sentinel interface.)
Given that HasSameMetadataDefinitionAs() is a
"looser cousin of Equals()" and "Equals()"
doesn't throw for objects from a different universe,
this seems reasonable.
2. Arrays, ByRefs, Pointers and Types from GetTypeFromCLSID()
Behavior:
Arrays, ByRefs, Pointers all return token 0x0600000
and so they'll return "true" wrt to each other (provided
both types are implemented by the same provider.)
CLSID types all return the typedef of __ComObject
so they'll return "true" wrt to each other.
The constructor exposed by CLSID types all return
the typedef of some constructor on __ComObject so
they'll return "true" wrt to each other.
I do not think these are interesting cases that merit
special handling. These types will never appear
in an enumeration of the members of a type. (The
fact that Reflection surfaces them in objects
that are assignable to MemberInfo is a structural
flaw in Reflection's object model.)
3. Synthesized constructors and methods on array types.
Behavior:
These methods all return 0x06000000 as a token
so the constructors will all compare true wrt
each other, and likewise with the methods.
This is a bit crummy though it's not clear
what the "right" policy should look like.
I could be persuaded to throw NotSupported
for these, to leave the possibility open
for a better story later. On the other hand,
I wouldn't demand it either.
sjsujinkim [Thu, 18 May 2017 10:27:26 +0000 (19:27 +0900)]
[RyuJit/ARM32] Enable loading arguments when jump instruction
There was no code generation for GT_JMP node on ARM32. So it has made 'NYI: Unimplemented node type jump' message.
That was implemented as genJmpMethod() on other archtectures.
It is about loading arguments node when jump instruction. and the implementation of that for ARM64 seems not much different from that.
So it just merged genJmpMethod from codegenarm64.cpp to codegenarmarch.cpp after some modification.
Jarret Shook [Sun, 21 May 2017 15:46:52 +0000 (08:46 -0700)]
Merge pull request #11718 from jashook/add_nyi_typ_struct_fast_tail_call
[*64] NYI: TYP_STRUCT, fastTailCall stack fixup
William Godbe [Sun, 21 May 2017 14:47:54 +0000 (07:47 -0700)]
Remove explicit passing of ConfigurationGroup=Release from pipebuild (#11751)
Mike McLaughlin [Sun, 21 May 2017 00:18:30 +0000 (17:18 -0700)]
Fix ReadMemory error reading DSO link_map name. (#11759)
Gaurav Khanna [Sat, 20 May 2017 16:48:01 +0000 (09:48 -0700)]
Fix package Publish in official builds (#11767)
Steve MacLean [Sat, 20 May 2017 16:10:00 +0000 (12:10 -0400)]
[Arm64/Win] Revise JIT_MemCpy (#11261)
* [Arm64/Win] Revise JIT_MemCpy
This is the Windows equivalent of #11143 which merged
* [Arm64/Win] Use b<cond> instead of newer b.<cond>
Looks like Windows arm64 assembler does not support the newer assembly mnemonic
mskvortsov [Sat, 20 May 2017 14:51:54 +0000 (17:51 +0300)]
Linux/x86: Fix clang 4.0 build (#11610)
Joseph Tremoulet [Sat, 20 May 2017 13:52:46 +0000 (09:52 -0400)]
Merge pull request #10453 from JosephTremoulet/ImplicitByRef
Promote implicit-byref struct arguments
Maoni Stephens [Sat, 20 May 2017 04:51:52 +0000 (21:51 -0700)]
NO_WRITE_BARRIER hasn't been used in ages and we don't think it will be used (#11762)
Joseph Tremoulet [Sat, 20 May 2017 02:25:50 +0000 (22:25 -0400)]
Merge pull request #11521 from JosephTremoulet/SpanAssert
Propagate assertions for more checked bounds
mskvortsov [Sat, 20 May 2017 01:23:58 +0000 (04:23 +0300)]
[RyuJIT/ARM32] Fix src register trashing in genFloatToIntCast (#11644)
RyuJIT/ARM32: Fix src register trashing in genFloatToIntCast
Joseph Tremoulet [Wed, 17 May 2017 20:32:14 +0000 (16:32 -0400)]
Don't hoist IConHandle statics above cctors
These constants appear loop invariant, hence so do their dereferences
when a loop has no memory side-effects. Add flag `GTF_ICON_INITCLASS`
similar to `GTF_FLD_INITCLASS`/`GTF_CLS_VAR_INITCLASS`, and use it to
prevent hoisting such references without also hoisting their static
init helper calls.
Resolves #11689
Joseph Tremoulet [Sat, 20 May 2017 00:20:12 +0000 (20:20 -0400)]
Merge pull request #10946 from JosephTremoulet/RationalFlags
Clear GTF_ASG from non-stores in rationalize
Roman Artemev [Fri, 19 May 2017 23:30:23 +0000 (16:30 -0700)]
Merge pull request #10532 from rartemev/fix_tests_build
Made possible to build tests on Linux too
Hyeongseok Oh [Fri, 19 May 2017 23:12:09 +0000 (08:12 +0900)]
[ARM32] Simplify getting aligment value when remorphing (#11709)
* [ARM32] Skip getting aligment when remorphing
Skip aligment computation in morphing phase when remorphing
It simplify getting alignment value for struct
morphed to FIELD_LIST in ARM32/RyuJIT
* Move comment
Move comment about `InferOpSizeAlign`
Roman Artemev [Wed, 8 Mar 2017 23:37:31 +0000 (15:37 -0800)]
Test build fixes for Linux
Michal Strehovský [Fri, 19 May 2017 04:47:46 +0000 (21:47 -0700)]
Merge pull request dotnet/corert#3654 from dotnet/nmirror
Merge nmirror to master
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Bruce Forstall [Fri, 19 May 2017 22:50:10 +0000 (15:50 -0700)]
Merge pull request #11714 from hqueue/arm/ryujit/init_val
[RyuJIT/ARM32] Implement GT_INIT_VAL
Bruce Forstall [Fri, 19 May 2017 22:48:46 +0000 (15:48 -0700)]
Merge pull request #11713 from mskvortsov/Ckfinite
[RyuJIT/ARM32] Ckfinite codegen
Eugene Rozenfeld [Fri, 19 May 2017 22:38:04 +0000 (15:38 -0700)]
Merge pull request #11209 from erozenfeld/MorphCastNarrowing
Add missing opcodes for morph cast narrowing.
Bruce Forstall [Fri, 19 May 2017 22:36:41 +0000 (15:36 -0700)]
Merge pull request #11680 from mskvortsov/CleanupLongNYIs
[RyuJIT/ARM32] Clean up remaining GT_LONG NYIs
Bruce Forstall [Fri, 19 May 2017 22:23:50 +0000 (15:23 -0700)]
Merge pull request #11643 from hqueue/arm/ryujit/cast_smalltype2float
[RyuJIT/ARM32] Enable casting from small int to float
Fei Peng [Fri, 19 May 2017 22:00:57 +0000 (15:00 -0700)]
remove unnecessary return copy (#11133)
Bruce Forstall [Fri, 19 May 2017 21:54:57 +0000 (14:54 -0700)]
Merge pull request #11700 from BruceForstall/CleanupGTFlags
Un-clang-format GTF_ flags
Bruce Forstall [Fri, 19 May 2017 21:47:45 +0000 (14:47 -0700)]
Merge pull request #11594 from mikedn/lower-shift-mask
Removes unnecessary shift count masking
Jonghyun Park [Fri, 19 May 2017 21:26:27 +0000 (06:26 +0900)]
[ARM/Linux] Support unaligned struct read/write (#11290)
* [ARM/Linux] Support unaligned struct read
* Fix format error
* Support unaligned struct write
Bruce Forstall [Fri, 19 May 2017 21:20:39 +0000 (14:20 -0700)]
Merge pull request #11011 from mikedn/imp-runtime-lookup
Simplify runtime lookup tree
William Godbe [Fri, 19 May 2017 21:14:33 +0000 (14:14 -0700)]
Merge pull request #11720 from wtgodbe/BuildToolsCleanup
Clean up 2.0.0 BuildTools PR
Bruce Forstall [Fri, 19 May 2017 21:00:07 +0000 (14:00 -0700)]
LSRA throughput tweaks (#11698)
Convert LinearScan::getVarReg() to take a tracked var index, not varNum
Change LSRA to create Intervals only for tracked variables
Change getIntervalForLocalVar() to take a tracked variable index.
Create getIntervalForLocalVarNode()
This reduces instruction count of superpmi replay over minopts tests by 0.6%.
Bruce Forstall [Fri, 19 May 2017 20:58:35 +0000 (13:58 -0700)]
Improve BitVecOps<>::Iter::NextElem (#11696)
* Improve BitVecOps<>::Iter::NextElem
Tweak the implementation, to reduce the number of instructions
executed in the hot path.
Also, don't pass "env" to NextElem; it can be stored by Init()
if required. For non-inlined calls, this saves setting up one
argument.
Use a `m_bsEnd` end condition. This eliminates the need to handle
short/long differently, and reduces conditions when updating
the current bits to iterate over in the long case.
Overall, pin shows this reduces instruction count of superpmi over
a minopts test run by 2.6% (NextElem is very hot).
Also, fix BitSetAsUInt64 NextElem() iterator: It should store and updated
its own bit count, and not depend on the value passed in to be the
correct latest bit count.
Pat Gavlin [Fri, 19 May 2017 20:36:21 +0000 (20:36 +0000)]
Merge pull request #11746 from pgavlin/gh11733
Do not reverse operands for user-call intrinsics.
Pat Gavlin [Fri, 19 May 2017 19:45:45 +0000 (12:45 -0700)]
Remove `GTF_REVERSE_OPS` from LIR. (#10698)
In HIR, this flag indicates that the second operand to a binary node will execute before
the node's first operand. LIR, however, no longer determines ordering via use edges, so
this flag only affects the order in which operands to a node are considered. The sole
constraint on this use ordering is that for a given node, the same ordering must be used
in liveness, LSRA, and the code generator; this is due to the correspondence between
use ordering and spill/reload/last-use ordering. As a result, the reverse ops flag is
unnecessary and rather unhelpful in LIR, causing little more than a bit of extra complexity
throughout the backend.
This change removes `GTF_REVERSE_OPS` from LIR by clearing this flag during rationalize
and verifying that it remains clear in `LIR::CheckLIR`. We could reuse this bit for an
additional backend-specific purpose in the future with a bit more work in the checker.
Pat Gavlin [Fri, 19 May 2017 18:24:13 +0000 (11:24 -0700)]
Format code.
Pat Gavlin [Fri, 19 May 2017 18:17:22 +0000 (11:17 -0700)]
Fix legality checks in SetRegOptionalForBinOp.
It is not legal to make an operand register optional on xarch if the type
of the operand is narrower than the type of the operator and the contents
of the upper bits are not known to be zero. `SetRegOptionalForBinOp` was
not considering the case where `op1` was legal but `op2` was the preferred
register-optional operand and was illegal.
Fixes #11734.
Wes Haggard [Fri, 19 May 2017 17:59:39 +0000 (10:59 -0700)]
Set StrongName=None for System.Private.CoreLib
We don't ship the managed version of System.Private.CoreLib so
it doesn't need a strong name signature. We always crossgen it
so it is native.
Bruce Forstall [Fri, 19 May 2017 18:09:03 +0000 (11:09 -0700)]
Merge pull request #11741 from mskvortsov/FixUBFX
[ARM32] Fix ubfx instruction encoding
jashook [Mon, 15 May 2017 17:52:46 +0000 (10:52 -0700)]
[*64] NYI: TYP_STRUCT, fastTailCall stack fixup
This will add an NYI for AMD64 and Arm64 during fastTailCall stack fixup which requires
a temp. Currently this code path is very difficult to execute for the case of TYP_STRUCT
because we will have already created copies of structs that are passed on the stack
during morph. The NYI will avoid silent bad codegen in the case that we make changes in
earlier stages that will force this code path to hit.
wtgodbe [Thu, 18 May 2017 18:22:42 +0000 (11:22 -0700)]
Clean up 2.0.0 BuildTools PR
Bruce Forstall [Fri, 19 May 2017 17:24:18 +0000 (10:24 -0700)]
Merge pull request #10662 from helloguo/VectorConversion
Add JIT intrinsics support for vector conversion on AMD64 and x86
Wes Haggard [Fri, 19 May 2017 17:22:49 +0000 (10:22 -0700)]
Merge pull request #11747 from weshaggard/UpdateSigning
Update signing for coreclr repo
Wes Haggard [Fri, 19 May 2017 17:18:04 +0000 (10:18 -0700)]
Update signing for coreclr repo
Make sign.builds consistent with corefx and only add strongname
signatures for managed assemblies and not native assemblies