Граф коммитов

525 Коммитов

Автор SHA1 Сообщение Дата
Eugene Rozenfeld 605c995bb6 Address code review feedback: change back to ternary pattern. 2015-03-20 18:20:23 -07:00
Andy Ayers 29eec3a915 Merge pull request #332 from AndyAyersMS/abs
Implement support for the abs intrinsic.
2015-03-20 17:44:36 -07:00
Eugene Rozenfeld 8d2b714511 Enable calls to methods that require type arg (instantiation information).
The type arg is passed after vararg cookie and before regular args.

Modify ReaderBse::rdrCall to handle type args.

Add placeholders for future handling of vararg cookie.

Change the type of type arg to be nativeint.

Change the SomeBool ? 1 : 0 pattern to (int)SomeBool.

We compile 3 more methods in HelloWorld and 315 more methods in all tests.

Closes #280.
2015-03-20 17:14:56 -07:00
rhadley f19835e82f Merge branch 'master' into ClassConstructorHelper 2015-03-20 15:35:08 -07:00
rhadley bb893e4f21 Add basic call to insertClassConstructor 2015-03-20 14:28:26 -07:00
Joseph Tremoulet d62f9d13d0 Add Name parameter to createTemporary
Callers can pass an explicit name to create more readable IR.
2015-03-20 13:32:10 -04:00
Andy Ayers 9e82cdd1f0 Implement support for the abs intrinsic.
Note only floating point cases make it through as intrinsics. Also make sure we honor the alignment requests of the read-only data sections. Abs uses a 16-byte aligned constant mask.

Closes #329.
2015-03-20 09:17:08 -07:00
Bengu Li 9dc6f9172a Merge pull request #330 from libengu/SpeedupNormalization
Using a python script for normalization filter
2015-03-19 19:13:39 -07:00
Swaroop Sridhar b3301dde8f Merge pull request #333 from swaroop-sridhar/ccformat2
Simply ccFormat Usage
2015-03-19 16:39:58 -07:00
Swaroop Sridhar 4351fdcc2b Simply ccFormat Usage
This commit changes ccFormat so that:
1) Formatting all files is the default.
   (previous behavior with --formatall switch)
   - Running clang-format.exe on all source files is stable now, and does not
     report spurious diffs.
   - Therefore, we don't need a dependency on clang-format-diff.py any more.
   - clang-format-diff.py was rather unstable wrt showing the generated diffs
2) When not automatically fixing formatting errors, show the generated diffs,
   if any, by default.
3) clang-tidy is not run by default until Microsoft/clang-tools-extra#4
   is fixed.
4) Arguments are validated to avoid crashing when used with a bad switch.
2015-03-19 16:17:35 -07:00
Bengu Li e0f17c33a3 Using a python script for normalization filter
Powershell text processing is super slow. It costed about 1000 sec
to perform verbose LLVM IR dump normalization. A script written in
Python reduced it to 100 sec, handling the same pattern. Perl script
is even faster. But considering maintainability and reducing the
number of external tools, we decide to choose Python script.
Credit should go to Joe Tremoulet who provided the python filter. There
is further potential here above ApplyFilterAll level by dividing the files
based on the first letter of their base names and using Start-Job facility.
Check this version in first so that people can get the benefit of
speed-up early.
2015-03-19 14:30:40 -07:00
Bengu Li fbfca74df0 Merge pull request #326 from libengu/DebugCoreCLR
Debug option for BuildTest and RunTest
2015-03-19 13:02:57 -07:00
Michelle McDaniel f3a0c73299 Merge pull request #328 from adiaaida/llilcenvOutput
Add additional detail to CheckDiff output
2015-03-19 10:59:53 -07:00
Michelle McDaniel 917e3e82f1 Add additional detail to CheckDiff output
When we have newly passing methods jitted by the new jit, we should call
out how many new methods we jit. This change updates LLILCEnv to count
the number of newly successfully jitted methods, and outputs the number
for the developer. We output the number of newly jitted methods when
there are no new failing methods and when there are newly failed methods
so the developer has all the information about their change.
2015-03-19 10:54:49 -07:00
Eugene Rozenfeld 66fee4d87a Merge pull request #324 from erozenfeld/callRuntimeHandleHelper
Implement GenIR::callRuntimeHandleHelper.
2015-03-19 09:52:25 -07:00
Eugene Rozenfeld 857f1a1275 Implement GenIR::callRuntimeHandleHelper.
GenIR::callRuntimeHandleHelper needs to insert a conditional helper call:

 x = NullCheckArg;
 if (NullCheckArg == nullptr) {
   x = callhelper(Arg1, Arg2);
 }
 return x;

To implement that I generalized genConditionalThrow into
genConditionalHelperCall. This complicated stack maintenance code since
ContinueBlock has edges from the old block and the block containing the call
instruction. To deal with that I added PropagatesOperandStack field to
FlowGraphNodeInfo and set it to falso for all such call blocks. These blocks
have no msil and don't need to use or propagate operand stacks.

Remove unused parameters from maintainOperandStack.

Factor createPhiNode that works for inserting PHI into blocks that may or may
not have terminators.

Add isConstantNull helper.

The number of successfully compiled methods didn't change.
2015-03-19 09:47:04 -07:00
Bengu Li df340ebd8a Debug option for BuildTest and RunTest
As of now, only release version of CoreCLR Runtime NuGet package is
available. BuildTest and RunTest cannot be run with debug build option
yet.

Added code to give out warning message for developer when it is used.

Also documented this on GitHub wiki page here:
https://github.com/dotnet/llilc/wiki/Dev-Env-and-Test-Harness
2015-03-18 19:04:24 -07:00
Bengu Li 3f8d560a77 Merge pull request #325 from libengu/DeleteBaseLine
Remove verbose LLVM IR baseline from repository
2015-03-18 13:49:27 -07:00
Bengu Li 9429d631a7 Remove verbose LLVM IR baseline from repository
With the merge of the commit below, verbose LLVM IR baseline in
repository becomes obsolete. Removed it.
34df455822

For new usage instructions about baseline etc, please refer to
https://github.com/dotnet/llilc/wiki/Dev-Env-and-Test-Harness

Also fixed a typo in llilc help info.
2015-03-18 12:51:57 -07:00
Bengu Li 27b16990a3 Merge pull request #315 from libengu/Summary
Major change of runtest and checkdiff
2015-03-18 12:03:15 -07:00
Bengu Li 34df455822 Major change of runtest and checkdiff
This is a major change to runtest and checkdiff.

First, it is changed to user pre-created baseline. Instead of
huge LLVM IR baseline stored in GitHub that caused issues.

Second, summary comparison is introduced. With one line
per method, the runtest and checkdiff process is much more
swift with summary only than previous approach. No dump
runtest is also provided. Verbose dump functionality is still
there. A normalization speed improvement is expected after
this change.

Third, LLVM IR dump level is introduced into LLILCJit.
Right now it read env var directly. It will be updated
when CLR Config is supported in LLILCJit.

A GitHub wiki page is created to illustrate the usage.
https://github.com/dotnet/llilc/wiki/Dev-Env-and-Test-Harness

Below are Typical use cases:

Developer Usage
1.Update your master to latest master
2.Build your baseline JIT: BuildAll or Build
3.Create a summary baseline: RunTest -Jit baseline-jit -Result SummaryBase -Dump Summary
4.Create a verbose baseline: RunTest -Jit baseline-jit -Result VerboseBase -Dump Verbose
5.Create your own branch
6.Do the new development or fix issues
7.Build your new JIT: Build
8.RunTest -Jit new-jit
  If failed with overall pass/failure and no dump, back to step 6 for fixing.
9.RunTest -Jit new-jit -Result SummaryDiff -Dump Summary
10.CheckDiff -Base SummaryBase -Diff SummaryDiff -Summary -UseDiffTool
  If failed with summary, find out which method is a new failure, back to step 6 for fixing.
11.RunTest -Jit new-jit -Result VerboseDiff -Dump Verbose
12.CheckDiff -Base VerboseBase -Diff VerboseDiff -UseDiffTool
  If any LLVM IR diff is not benign, back to step 6 for fixing.
13.Ready for a pull request.

Lab PR Usage
RunTest
Lab PR usage is most simplified version. It only checks for overall pass/fail and does not keep any result.

Lab Nightly Usage
1.RunTest -Jit last-known-good-jit -Result SummaryBase -Dump Summary
  or a summary result of running last-know-good-jit is kept in SummaryBase
2.RunTest -Jit latest-jit -Result SummaryDiff -Dump Summary
3.CheckDiff -Base SummaryBase -Diff SummaryDiff -Summary
4.If CheckDiff result is zero, mark latest-jit as last-known-good-jit. Result SummaryDiff could be kept as SummaryBase.
5.If CheckDiff result is not zero, send out failure notice to branch owner. Branch owner should analyze the case and bring relevant developer for fixing.
2015-03-17 21:47:03 -07:00
Mukul Sabharwal 1961f6edcf Merge pull request #314 from mjsabby/master
Make interior/vs exterior pointer doc clearer
2015-03-16 18:14:05 -07:00
Russell C Hadley f2253c83ff Merge pull request #320 from dotnet/LLILCArchDoc
Add initial LLILC architecture document
2015-03-16 15:31:13 -07:00
Jim Hogg 8dd42f77db Merge pull request #321 from jimhogg/master
Fix broken links in README.md.  Issue #7
2015-03-16 15:30:22 -07:00
Jim Hogg 59e4f780bc Fix link to 'Contributing' page 2015-03-16 14:58:29 -07:00
rhadley f6332f37f7 Updates for grammar/punctuation.
Incorporate feed back from Rich to clean up some issues.
2015-03-16 14:40:41 -07:00
Jim Hogg 1ec29cd318 Fix broken link to Linux Get-Started doc 2015-03-16 13:56:35 -07:00
Michelle McDaniel f5e9cc52e6 Merge pull request #317 from adiaaida/formattingErrors
Fix formatting errors
2015-03-16 13:26:02 -07:00
rhadley c8b2c63e00 Add managed language semantics section
Talks about managed language optimizations, GC statepoint insertion, and
particular CLR exceptions.
2015-03-16 12:50:50 -07:00
Jim Hogg e695c16e6f Merge remote-tracking branch 'upstream/master' 2015-03-16 10:57:40 -07:00
Michelle McDaniel c86fec6ef9 Fix formatting errors
Recent changes checked in introduced formatting errors. This change
fixes those formatting errors.
2015-03-16 09:30:40 -07:00
Eugene Rozenfeld f6100e53ba Merge pull request #316 from erozenfeld/StoreElem1
Implement storing of array elements.
2015-03-15 21:50:37 -07:00
Eugene Rozenfeld 2e1f163f8c Implement storing of array elements.
Implement the family of stelem instructions.

Test pass rate goes up from
129 tests, 34982 methods, 25451 good, 9531 bad (72% good)
to
129 tests, 36144 methods, 28195 good, 7949 bad (78% good)

Closes #188.
2015-03-15 19:09:33 -07:00
rhadley 96339ea1bf Fix spellings 2015-03-13 13:13:54 -07:00
rhadley 9dd41a51ac Add introduction paragraph for AOT architecture diagram. 2015-03-13 13:02:34 -07:00
rhadley a2b9ee47cf Update GC component section.
Updates for GC.  Some additional reordering and rewording.
2015-03-13 12:48:04 -07:00
Mukul Sabharwal 02ae8fbfea Make interior/vs exterior pointer doc clearer 2015-03-13 10:48:40 -07:00
rhadley a5aeb8ef36 Add LLILC architecture document
Adds an architcture document and block diagrams for both the JIT and AOT architecture.  I've added
some beginning thoughts on the arch but would like some review/comment from owners in the particular areas.
2015-03-12 16:48:44 -07:00
Pat Gavlin 9fb611f51b Merge pull request #266 from pgavlin/NYIVSD
Disable calls that require VSD.
2015-03-13 00:39:24 +01:00
Pat Gavlin 13318b93ef Disable calls that require VSD.
Such calls have a special calling convention that requires the stub
address in a target-specific register.

Issue #267 tracks adding support for calls that require VSD.
2015-03-12 15:45:49 -07:00
Swaroop Sridhar 7bb36962df Merge pull request #263 from swaroop-sridhar/clangPal
Define __stdcall in LLILCPal when building with Clang on Windows
2015-03-11 17:07:38 -07:00
rhadley c18029ae63 Add more under LLVM arch subsection. 2015-03-11 16:56:33 -07:00
Michelle McDaniel ceff4385d2 Merge pull request #312 from adiaaida/fixccformat
Make ccformat --formatall compatible with Python 3
2015-03-11 16:44:40 -07:00
rhadley 5ca1779a96 Addition of architecture diagrams
Adds diagrams as well as some new text for an arch document.
2015-03-11 16:42:23 -07:00
Michelle McDaniel f25ae1f6b1 Make ccformat --formatall compatible with Python 3
Format all was incompatible with Python 3 because proc.communicate()
returns bytes. This change fixes formatall so that we are compatible
with python 3. This change also makes the join call in formatall
compatible with Python 3 and prints a new line at the end of diffs for
diff reability.

This change also fixes a formatting error that was checked in in
reader.h
2015-03-11 16:26:43 -07:00
Joseph Tremoulet 2f8d9adbbf Merge pull request #309 from JosephTremoulet/DerefConst
Annotate const loads in derefAddress
2015-03-11 19:04:23 -04:00
Michelle McDaniel cf267a9d0a Merge pull request #311 from adiaaida/ccformatPrint
Fix ccFormat to be Python 3 compatible
2015-03-11 15:57:34 -07:00
Michelle McDaniel 4459157671 Fix output comparison for Python 3
The output of proc.communicate is byte for Python 3. Modify the
comparison of output to decode the bytes and modify the write statement
to also call decode.
2015-03-11 15:33:27 -07:00
Michelle McDaniel 9744087002 Change StringIO to io
Python 3.* does not have StringIO, and instead requires io. Switch the
StringIO call to io.StringIO.
2015-03-11 15:09:28 -07:00
Michelle McDaniel 07e2b35148 Add parentheses to print statement
In Python 3.*, print is a function call. This change adds parentheses
around the string to fix the syntax error for 3.*
2015-03-11 14:58:54 -07:00