mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
checkpoint, this is still not comprehendible.
llvm-svn: 83530
This commit is contained in:
parent
289914c8d4
commit
8e4073ed26
@ -52,26 +52,8 @@ current one. To see the release notes for a specific release, please see the
|
||||
|
||||
</div>
|
||||
|
||||
Many new papers added to /pubs/
|
||||
Machine LICM, hoists things like constant pool loads, loads from readonly stubs, vector constant synthesization code, etc.
|
||||
Machine Sinking
|
||||
Regalloc improvements for commuting, various spiller peephole optimizations, cross-class coalescing.
|
||||
Support for debug line numbers when optimization enabled
|
||||
gold lto plugin
|
||||
|
||||
target-specific intrinsics (r63765)
|
||||
<tt>llc -enable-value-prop</tt>, propagation of value info (sign/zero ext info) from one MBB to another
|
||||
interpreter + libffi
|
||||
LLVMContext
|
||||
Preliminary support for addrspace 256 -> GS, 257 -> FS, known problems: CodeGenerator.html#x86_memory
|
||||
|
||||
Add support for the PowerPC 64-bit SVR4 ABI.
|
||||
|
||||
NSW/NUW/exact div
|
||||
Inbounds for GEP
|
||||
SRoA improvements for vector unions, memset, arbitrary weird bitfield accesses etc. It now produces "strange" sized integers.
|
||||
pre-alloc splitter??
|
||||
X86: Support for softfloat modes, typically used by OS kernels.
|
||||
MC:
|
||||
MCSection, MCAsmInfo
|
||||
MCInstPrinter did it make it in?
|
||||
@ -83,94 +65,23 @@ Add support for the PowerPC 64-bit SVR4 ABI.
|
||||
|
||||
ELF Writer? How stable?
|
||||
|
||||
LSR promotes int induction variables to 64-bit on 64-bit targets, major perf boost for numerical code.
|
||||
LSR now analyzes pointer expressions (e.g. getelementptrs), not just integers.
|
||||
Stack slot coloring for register spills (denser stack frames)
|
||||
SelectionDAGS: New BuildVectorSDNode (r65296), and ISD::VECTOR_SHUFFLE (r69952 / PR2957)
|
||||
New PrettyStackTrace, crashes of llvm tools should give some indication of what the compiler was doing at the time of the crash (e.g. running a pass), and print out command line arguments.
|
||||
new linkage types linkonce_odr, weak_odr, linker_private, and available_externally.
|
||||
Inliner reuse stack space when inlining arrays?
|
||||
|
||||
Regalloc hints for allocation stuff: Evan r73381/r73671. Finished/enabled?
|
||||
API Cleanup:
|
||||
no use of hash_set/hash_map, no more llvm::OStream
|
||||
Use raw_ostream for everything, killed off llvm/Streams.h and DOUT
|
||||
|
||||
Mips now supports O32 Calling Convention
|
||||
|
||||
StringRef class, Twine class.
|
||||
New BlackFin backend.
|
||||
|
||||
APIs:
|
||||
|
||||
Shrink wrapping support in PEI, what is the state of it?
|
||||
|
||||
X86-64: better modeling of implicit zero extensions, eliminates a lot of redundant zexts
|
||||
X86-64 TLS support for local exec and initial exec.
|
||||
X86 - Better modeling of H registerts as subregs.
|
||||
Getelementpr instruction now allows any integer type for array/pointer indexes.
|
||||
|
||||
include/llvm/Analysis/LiveValues.h => dead??
|
||||
lib/Analysis/LoopVR.cpp ==> dead??
|
||||
include/llvm/CodeGen/LazyLiveness.h ==> dead?
|
||||
lib/Transforms/IPO/MergeFunctions.cpp ==> dead?
|
||||
llvm/Analysis/PointerTracking.h ==> dead??
|
||||
PRedSimplify -> Ask vmkit if it is still useful and for testcases.
|
||||
|
||||
ARM calling convention code is now tblgen generated instead of manual.
|
||||
ARM: NEON support. neonfp for doing single precision fp with neon instead of VFP.
|
||||
Tblgen now supports multiclass inheritance.
|
||||
Unladen swallow as user?
|
||||
Loop index split disabled by default?
|
||||
|
||||
New WeakVH and AssertingVH and CallbackVH classes.
|
||||
New llvm/ADT/Triple class.
|
||||
Removed the IA64 backend.
|
||||
Profile info improvements by Andreas Neustifter.
|
||||
PostRA scheduler improvements David Goodwin.
|
||||
<!--
|
||||
Almost dead code.
|
||||
include/llvm/Analysis/LiveValues.h => dan
|
||||
lib/Analysis/LoopVR.cpp ==> dan/nick/owen
|
||||
lib/Transforms/IPO/MergeFunctions.cpp
|
||||
llvm/Analysis/PointerTracking.h
|
||||
-->
|
||||
|
||||
New MSP430 and SystemZ backends.
|
||||
llvm-gcc now supports a new TCE target.
|
||||
klee web page at klee.llvm.org
|
||||
New llvm/System/Atomic.h, llvm/System/RWMutex.h for portable atomic ops, rw locks.
|
||||
llvm_start_multithreaded: ProgrammersMAnual.html#threading
|
||||
|
||||
Tablegen now supports a number of new string and list operations like
|
||||
!(subst), !(foreach), !car, !cdr, !null, !if, !cast.
|
||||
New fadd, fsub, fmul instructions and classes.
|
||||
New MachineVerifier pass.
|
||||
Enabled GVN Load PRE.
|
||||
ARM AAPCS-VFP hard float ABI is supported.
|
||||
|
||||
LLVM build now builds all libraries as .a files instead of some
|
||||
libraries as relinked .o files. This requires some APIs like
|
||||
InitializeAllTargets.h. TargetRegistry!
|
||||
|
||||
ARM Thumb2 support: status?
|
||||
CBE status: not part of the release criteria.
|
||||
|
||||
New SourceMgr, SMLoc classes for simple parsers with caret diagnostics and #include support, (used by
|
||||
tablegen, llvm-mc, the .ll parser, FileCheck, etc)
|
||||
FileCheck! + CHECK-NEXT
|
||||
New compiler-rt project.
|
||||
New Static Single Information (SSI) construction pass (not used by anything yet, experimental).
|
||||
|
||||
llvm_report_error() error handling API (llvm/Support/ErrorHandling.h)
|
||||
|
||||
x86: Vector icmp/fcmp now work with SSE codegen.
|
||||
X86: all global variable reference logic is now in ClassifyGlobalReference.
|
||||
JIT support for oprofile (r75279), configure with --with-oprofile. Now we get line # and function info for JIT'd functions.
|
||||
Mention gcc plugin.
|
||||
|
||||
New EngineBuilder class for creating JITs: r76276 Reid Kleckner <reid at kleckner.net>
|
||||
|
||||
-asm-verbose now prints location info (with -g) and loop nest info.
|
||||
JIT now supports generating more than 16M of code.
|
||||
|
||||
removed the BigBlock register allocator, it had bitrotted.
|
||||
Target intrinsics can now return multiple results.
|
||||
|
||||
SSE 4.2 support.
|
||||
Ada bindings for LLVM IR.
|
||||
Many extensions to the C APIs.
|
||||
|
||||
|
||||
<!-- Unfinished features in 2.6:
|
||||
Mention gcc plugin.
|
||||
@ -185,6 +96,10 @@ Target intrinsics can now return multiple results.
|
||||
Logo web page.
|
||||
llvm devmtg
|
||||
compiler_rt
|
||||
klee web page at klee.llvm.org
|
||||
Many new papers added to /pubs/
|
||||
Mention gcc plugin.
|
||||
|
||||
-->
|
||||
|
||||
<!-- *********************************************************************** -->
|
||||
@ -406,6 +321,7 @@ machine code using LLVM's JIT.</p>
|
||||
minor improvements. Some of the major improvements and new features are listed
|
||||
in this section.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<!--=========================================================================-->
|
||||
@ -418,7 +334,15 @@ in this section.
|
||||
<p>LLVM 2.6 includes several major new capabilities:</p>
|
||||
|
||||
<ul>
|
||||
<li>Something wonderful!</li>
|
||||
<li>Support for debug line numbers when optimization enabled</li>
|
||||
<li>gold lto plugin</li>
|
||||
<li>New MSP430 and SystemZ backends.</li>
|
||||
<li>New BlackFin backend.</li>
|
||||
<li>LLVMContext, llvm_start_multithreaded: ProgrammersManual.html#threading</li>
|
||||
<li>Unladen swallow as user?</li>
|
||||
<li>klee web page at klee.llvm.org</li>
|
||||
<li>FileCheck</li>
|
||||
<li>New compiler-rt project.</li>
|
||||
<li>LLVM 2.6 includes a brand new experimental LLVM bindings to the Ada2005 programming language.</li>
|
||||
</ul>
|
||||
|
||||
@ -453,7 +377,14 @@ includes support for the C, C++, Objective-C, Ada, and Fortran front-ends.</p>
|
||||
can be useful if you are writing a front-end for LLVM:</p>
|
||||
|
||||
<ul>
|
||||
<li>Something wonderful!</li>
|
||||
<li>Getelementpr instruction now allows any integer type for array/pointer indexes.</li>
|
||||
<li>Inbounds for GEP</li>
|
||||
<li>NSW/NUW/exact div</li>
|
||||
<li>LSR promotes int induction variables to 64-bit on 64-bit targets, major perf boost for numerical code.</li>
|
||||
<li>LSR now analyzes pointer expressions (e.g. getelementptrs), not just integers.</li>
|
||||
<li>new linkage types linkonce_odr, weak_odr, linker_private, and available_externally.</li>
|
||||
<li>New fadd, fsub, fmul instructions and classes. </li>
|
||||
<li>Target intrinsics can now return multiple results.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
@ -470,7 +401,11 @@ release includes a few major enhancements and additions to the optimizers:</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li>Something wonderful!</li>
|
||||
<li>SRoA improvements for vector unions, memset, arbitrary weird bitfield accesses etc. It now produces "strange" sized integers.</li>
|
||||
<li>Inliner reuse stack space when inlining arrays?</li>
|
||||
<li>Enabled GVN Load PRE.</li>
|
||||
<li>New Static Single Information (SSI) construction pass (not used by anything yet, experimental).</li>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
@ -489,7 +424,22 @@ it run faster:</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li>Something wonderful!</li>
|
||||
<li> -asm-verbose now prints location info (with -g) and loop nest info.</li>
|
||||
<li>Tblgen now supports multiclass inheritance and a number of new string and
|
||||
list operations like !(subst), !(foreach), !car, !cdr, !null, !if, !cast.
|
||||
These make the .td files more expressive and allow more aggressive factoring
|
||||
of duplication across instruction patterns.</li>
|
||||
<li>New MachineVerifier pass.</li>
|
||||
<li>Machine LICM, hoists things like constant pool loads, loads from readonly stubs, vector constant synthesization code, etc.</li>
|
||||
<li>Machine Sinking</li>
|
||||
<li>target-specific intrinsics (r63765)</li>
|
||||
<li>Regalloc improvements for commuting, various spiller peephole optimizations, cross-class coalescing.</li>
|
||||
<li><tt>llc -enable-value-prop</tt>, propagation of value info (sign/zero ext info) from one MBB to another</li>
|
||||
<li>Regalloc hints for allocation stuff: Evan r73381/r73671. Finished/enabled?</li>
|
||||
<li>Stack slot coloring for register spills (denser stack frames)</li>
|
||||
<li>SelectionDAGS: New BuildVectorSDNode (r65296), and ISD::VECTOR_SHUFFLE (r69952 / PR2957)</li>
|
||||
<li>PostRA scheduler improvements David Goodwin.</li>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@ -504,7 +454,16 @@ it run faster:</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li>Something wonderful!</li>
|
||||
<li>Preliminary support for addrspace 256 -> GS, 257 -> FS, known problems: CodeGenerator.html#x86_memory</li>
|
||||
<li>Support for softfloat modes, typically used by OS kernels.</li>
|
||||
|
||||
<li>X86-64: better modeling of implicit zero extensions, eliminates a lot of redundant zexts</li>
|
||||
<li>X86-64 TLS support for local exec and initial exec.</li>
|
||||
<li>Better modeling of H registerts as subregs.</li>
|
||||
<li>Vector icmp/fcmp now work with SSE codegen.</li>
|
||||
<li>SSE 4.2 support.</li>
|
||||
<li>all global variable reference logic is now in ClassifyGlobalReference.</li>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
@ -519,18 +478,18 @@ it run faster:</p>
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>Something wonderful!</li>
|
||||
<li>Support for floating-point, indirect function calls, and
|
||||
passing/returning aggregate types to functions.
|
||||
<li>The code generator is able to generate debug info into output COFF files.
|
||||
<li>Support for placing an object into a specific section or at a specific
|
||||
address in memory.</li>
|
||||
</ul>
|
||||
|
||||
<p>Things not yet supported:</p>
|
||||
|
||||
<ul>
|
||||
<li>Floating point.</li>
|
||||
<li>Passing/returning aggregate types to and from functions.</li>
|
||||
<li>Variable arguments.</li>
|
||||
<li>Indirect function calls.</li>
|
||||
<li>Interrupts/programs.</li>
|
||||
<li>Debug info.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
@ -554,21 +513,74 @@ AAPCS-VFP "hard float" calling conventions are also supported with the
|
||||
and subject to change. The Neon intrinsics, in particular, may change in future
|
||||
releases of LLVM.
|
||||
</li>
|
||||
|
||||
ARM AAPCS-VFP hard float ABI is supported.
|
||||
ARM calling convention code is now tblgen generated instead of manual.
|
||||
ARM: NEON support. neonfp for doing single precision fp with neon instead of VFP.
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!--=========================================================================-->
|
||||
<div class="doc_subsection">
|
||||
<a name="llvmc">Improvements in LLVMC</a>
|
||||
<a name="OtherTarget">Other Target Specific Improvements</a>
|
||||
</div>
|
||||
|
||||
<div class="doc_text">
|
||||
<p>New features include:</p>
|
||||
<p>New features of other targets include:
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>Something wonderful!</li>
|
||||
<li>Add support for the PowerPC 64-bit SVR4 ABI.</li>
|
||||
<li>Mips now supports O32 Calling Convention.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
<!--=========================================================================-->
|
||||
<div class="doc_subsection">
|
||||
<a name="newapis">New Useful APIs</a>
|
||||
</div>
|
||||
|
||||
<div class="doc_text">
|
||||
|
||||
<ul>
|
||||
<li>New EngineBuilder class for creating JITs: r76276</li>
|
||||
New PrettyStackTrace, crashes of llvm tools should give some indication of what the compiler was doing at the time of the crash (e.g. running a pass), and print out command line arguments.
|
||||
StringRef class, Twine class.
|
||||
New WeakVH and AssertingVH and CallbackVH classes.
|
||||
New llvm/ADT/Triple class.
|
||||
llvm_report_error() error handling API (llvm/Support/ErrorHandling.h)
|
||||
New llvm/System/Atomic.h, llvm/System/RWMutex.h for portable atomic ops, rw locks.
|
||||
New SourceMgr, SMLoc classes for simple parsers with caret diagnostics and #include support, (used by
|
||||
tablegen, llvm-mc, the .ll parser, FileCheck, etc)
|
||||
|
||||
<ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!--=========================================================================-->
|
||||
<div class="doc_subsection">
|
||||
<a name="otherimprovements">Other Improvements and New Features</a>
|
||||
</div>
|
||||
|
||||
<div class="doc_text">
|
||||
<p>Other miscellaneous features include:</p>
|
||||
|
||||
<ul>
|
||||
<li>interpreter + libffi</li>
|
||||
<li> JIT now supports generating more than 16M of code.</li>
|
||||
<li>Users can now <a
|
||||
href="http://llvm.org/doxygen/classllvm_1_1ExecutionEngine.html#fcd2b4b92ca38812ca31640b0da14927">register</a>
|
||||
a <a href="http://llvm.org/doxygen/classllvm_1_1JITEventListener.html">JITEventListener</a>
|
||||
to receive callbacks when the JIT emits or frees machine code. The
|
||||
OProfile support uses this mechanism.</li>
|
||||
JIT support for oprofile (r75279), configure with --with-oprofile. Now we get line # and function info for JIT'd functions.
|
||||
|
||||
<li> Profile info improvements by Andreas Neustifter.</li>
|
||||
<li> Many extensions to the C APIs.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
@ -587,14 +599,23 @@ from the previous release.</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li>Something horrible!</li>
|
||||
|
||||
<li>The Itanium (IA64) backend has been removed. It was not supported and
|
||||
bitrotted.</li>
|
||||
<li>The BigBlock register allocator has been removed, it also bitrotted.</li>
|
||||
<li>The C Backend (-march=c) is no longer considered part of the LLVM release
|
||||
criteria. We still want it to work, but no one is maintaining it and it lacks
|
||||
support for arbitrary precision integers and other important IR features.</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<p>In addition, many APIs have changed in this release. Some of the major LLVM
|
||||
API changes are:</p>
|
||||
|
||||
|
||||
API Cleanup:
|
||||
no use of hash_set/hash_map, no more llvm::OStream
|
||||
Use raw_ostream for everything, killed off llvm/Streams.h and DOUT
|
||||
|
||||
<ul>
|
||||
<li>LLVM's global uniquing tables for <tt>Type</tt>s and <tt>Constant</tt>s have
|
||||
been privatized into members of an <tt>LLVMContext</tt>. A number of APIs
|
||||
@ -724,7 +745,7 @@ using the stock GCC 3.x.x series 'out the box',
|
||||
See: <a href="#brokengcc">Broken versions of GCC and other tools</a>.
|
||||
However, A <a href="http://pkg.auroraux.org/GCC">Modern GCC Build</a>
|
||||
for x86/x64 has been made available from the third party AuroraUX Project
|
||||
that has been meticulously tested for bootstrapping LLVM & Clang.</li>
|
||||
that has been meticulously tested for bootstrapping LLVM & Clang.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
@ -809,9 +830,6 @@ processors, thumb programs can crash or produce wrong
|
||||
results (<a href="http://llvm.org/PR1388">PR1388</a>).</li>
|
||||
<li>Compilation for ARM Linux OABI (old ABI) is supported but not fully tested.
|
||||
</li>
|
||||
<li>There is a bug in QEMU-ARM (<= 0.9.0) which causes it to incorrectly
|
||||
execute
|
||||
programs compiled with LLVM. Please use more recent versions of QEMU.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
Loading…
Reference in New Issue
Block a user