Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/external/bsd/llvm/dist/llvm Import LLVM 3.4 RC2 r196603.
details: https://anonhg.NetBSD.org/src/rev/27b4146a8f72
branches: trunk
changeset: 325112:27b4146a8f72
user: joerg <joerg%NetBSD.org@localhost>
date: Fri Dec 06 23:18:22 2013 +0000
description:
Import LLVM 3.4 RC2 r196603.
Bug fixes, most noticable for inconsistencies in vectorized code.
diffstat:
external/bsd/llvm/dist/llvm/CODE_OWNERS.TXT | 4 +
external/bsd/llvm/dist/llvm/bindings/ocaml/Makefile.ocaml | 14 +-
external/bsd/llvm/dist/llvm/docs/Extensions.rst | 38 +
external/bsd/llvm/dist/llvm/docs/GoldPlugin.rst | 28 +-
external/bsd/llvm/dist/llvm/docs/LangRef.rst | 4 +-
external/bsd/llvm/dist/llvm/docs/ReleaseNotes.rst | 33 +
external/bsd/llvm/dist/llvm/include/llvm/CodeGen/MachineOperand.h | 2 +
external/bsd/llvm/dist/llvm/include/llvm/IR/IntrinsicsAArch64.td | 7 +
external/bsd/llvm/dist/llvm/include/llvm/MC/MCContext.h | 8 +-
external/bsd/llvm/dist/llvm/include/llvm/MC/MCSectionCOFF.h | 14 +-
external/bsd/llvm/dist/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 53 +-
external/bsd/llvm/dist/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | 3 +-
external/bsd/llvm/dist/llvm/lib/MC/MCContext.cpp | 44 +-
external/bsd/llvm/dist/llvm/lib/MC/MCELFStreamer.cpp | 4 +
external/bsd/llvm/dist/llvm/lib/MC/MCParser/COFFAsmParser.cpp | 106 +-
external/bsd/llvm/dist/llvm/lib/MC/WinCOFFStreamer.cpp | 4 +-
external/bsd/llvm/dist/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp | 17 +
external/bsd/llvm/dist/llvm/lib/Target/AArch64/AArch64InstrNEON.td | 736 +-
external/bsd/llvm/dist/llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp | 44 +-
external/bsd/llvm/dist/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp | 28 +-
external/bsd/llvm/dist/llvm/lib/Target/ARM/ARMBaseRegisterInfo.h | 8 +
external/bsd/llvm/dist/llvm/lib/Target/ARM/ARMFrameLowering.cpp | 7 -
external/bsd/llvm/dist/llvm/lib/Target/ARM/Thumb1FrameLowering.cpp | 7 -
external/bsd/llvm/dist/llvm/lib/Target/Mips/MipsLongBranch.cpp | 4 +-
external/bsd/llvm/dist/llvm/lib/Target/Mips/MipsSERegisterInfo.cpp | 76 +-
external/bsd/llvm/dist/llvm/lib/Target/R600/AMDGPUISelLowering.cpp | 2 +
external/bsd/llvm/dist/llvm/lib/Target/R600/AMDGPUInstrInfo.td | 3 +
external/bsd/llvm/dist/llvm/lib/Target/R600/R600Instructions.td | 18 +-
external/bsd/llvm/dist/llvm/lib/Target/R600/SIInstructions.td | 7 +-
external/bsd/llvm/dist/llvm/lib/Target/Sparc/Sparc.h | 17 +
external/bsd/llvm/dist/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp | 2 +-
external/bsd/llvm/dist/llvm/lib/Target/Sparc/SparcFrameLowering.cpp | 83 +-
external/bsd/llvm/dist/llvm/lib/Target/Sparc/SparcFrameLowering.h | 8 +
external/bsd/llvm/dist/llvm/lib/Target/Sparc/SparcISelLowering.cpp | 17 +-
external/bsd/llvm/dist/llvm/lib/Target/Sparc/SparcInstr64Bit.td | 6 +
external/bsd/llvm/dist/llvm/lib/Target/Sparc/SparcInstrInfo.td | 9 +-
external/bsd/llvm/dist/llvm/lib/Target/Sparc/SparcRegisterInfo.cpp | 41 +-
external/bsd/llvm/dist/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp | 8 +-
external/bsd/llvm/dist/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | 93 +-
external/bsd/llvm/dist/llvm/lib/Target/X86/X86ISelLowering.cpp | 22 +-
external/bsd/llvm/dist/llvm/lib/Transforms/IPO/MergeFunctions.cpp | 22 +-
external/bsd/llvm/dist/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp | 16 +-
external/bsd/llvm/dist/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp | 7 +-
external/bsd/llvm/dist/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | 9 +
external/bsd/llvm/dist/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp | 25 +-
external/bsd/llvm/dist/llvm/test/CodeGen/AArch64/neon-2velem.ll | 1970 +-
external/bsd/llvm/dist/llvm/test/CodeGen/AArch64/neon-bsl.ll | 222 +
external/bsd/llvm/dist/llvm/test/CodeGen/AArch64/neon-diagnostics.ll | 11 +
external/bsd/llvm/dist/llvm/test/CodeGen/AArch64/neon-scalar-copy.ll | 8 +
external/bsd/llvm/dist/llvm/test/CodeGen/AArch64/neon-scalar-cvt.ll | 16 +-
external/bsd/llvm/dist/llvm/test/CodeGen/AArch64/neon-scalar-fabd.ll | 26 +
external/bsd/llvm/dist/llvm/test/CodeGen/AArch64/neon-scalar-fcvt.ll | 255 +
external/bsd/llvm/dist/llvm/test/CodeGen/AArch64/neon-scalar-shift-imm.ll | 72 +-
external/bsd/llvm/dist/llvm/test/CodeGen/ARM/fold-stack-adjust.ll | 4 +-
external/bsd/llvm/dist/llvm/test/CodeGen/Mips/msa/frameindex.ll | 85 +
external/bsd/llvm/dist/llvm/test/CodeGen/R600/fabs.ll | 36 +-
external/bsd/llvm/dist/llvm/test/CodeGen/R600/llvm.round.ll | 41 +
external/bsd/llvm/dist/llvm/test/CodeGen/R600/si-sgpr-spill.ll | 692 +
external/bsd/llvm/dist/llvm/test/CodeGen/SPARC/2013-05-17-CallFrame.ll | 22 +-
external/bsd/llvm/dist/llvm/test/CodeGen/SPARC/64abi.ll | 23 +-
external/bsd/llvm/dist/llvm/test/CodeGen/SystemZ/insert-06.ll | 13 +
external/bsd/llvm/dist/llvm/test/CodeGen/X86/pr18054.ll | 10 +
external/bsd/llvm/dist/llvm/test/MC/AArch64/neon-diagnostics.s | 175 +
external/bsd/llvm/dist/llvm/test/MC/AArch64/neon-scalar-abs.s | 10 +
external/bsd/llvm/dist/llvm/test/MC/AArch64/neon-scalar-cvt.s | 118 +
external/bsd/llvm/dist/llvm/test/MC/ARM/align_arm_2_thumb.s | 15 +
external/bsd/llvm/dist/llvm/test/MC/ARM/align_thumb_2_arm.s | 15 +
external/bsd/llvm/dist/llvm/test/MC/COFF/eh-frame.s | 14 +
external/bsd/llvm/dist/llvm/test/MC/COFF/section-comdat.s | 188 +
external/bsd/llvm/dist/llvm/test/MC/Disassembler/AArch64/neon-instructions.txt | 128 +-
external/bsd/llvm/dist/llvm/test/MC/Mips/micromips-long-branch.ll | 16437 ++++++++++
external/bsd/llvm/dist/llvm/test/Transforms/InstCombine/pr17827.ll | 74 +
external/bsd/llvm/dist/llvm/test/Transforms/LoopVectorize/X86/tripcount.ll | 39 +
external/bsd/llvm/dist/llvm/test/Transforms/MergeFunc/ptr-int-transitivity-1.ll | 21 +
external/bsd/llvm/dist/llvm/test/Transforms/MergeFunc/ptr-int-transitivity-2.ll | 25 +
external/bsd/llvm/dist/llvm/test/Transforms/MergeFunc/ptr-int-transitivity-3.ll | 21 +
external/bsd/llvm/dist/llvm/test/Transforms/SLPVectorizer/X86/external_user.ll | 35 +
external/bsd/llvm/dist/llvm/test/Transforms/SLPVectorizer/X86/pr18060.ll | 47 +
external/bsd/llvm/dist/llvm/tools/gold/README.txt | 20 +-
79 files changed, 21499 insertions(+), 1097 deletions(-)
diffs (truncated from 25589 to 300 lines):
diff -r f9c5bed44d45 -r 27b4146a8f72 external/bsd/llvm/dist/llvm/CODE_OWNERS.TXT
--- a/external/bsd/llvm/dist/llvm/CODE_OWNERS.TXT Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/CODE_OWNERS.TXT Fri Dec 06 23:18:22 2013 +0000
@@ -109,6 +109,10 @@
E: nrotem%apple.com@localhost
D: X86 Backend, Loop Vectorizer
+N: Daniel Sanders
+E: daniel.sanders%imgtec.com@localhost
+D: MIPS Backend (lib/Target/Mips/*)
+
N: Richard Sandiford
E: rsandifo%linux.vnet.ibm.com@localhost
D: SystemZ Backend
diff -r f9c5bed44d45 -r 27b4146a8f72 external/bsd/llvm/dist/llvm/bindings/ocaml/Makefile.ocaml
--- a/external/bsd/llvm/dist/llvm/bindings/ocaml/Makefile.ocaml Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/bindings/ocaml/Makefile.ocaml Fri Dec 06 23:18:22 2013 +0000
@@ -79,6 +79,15 @@
Compile.CMX := $(strip $(OCAMLOPT) -c $(OCAMLCFLAGS) $(OCAMLDEBUGFLAG) -o)
ifdef OCAMLSTUBS
+# Avoid the need for LD_LIBRARY_PATH
+ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW))
+ifneq ($(HOST_OS),Darwin)
+OCAMLRPATH := $(RPATH) -Wl,'$(SharedLibDir)'
+endif
+endif
+endif
+
+ifdef OCAMLSTUBS
Archive.CMA := $(strip $(OCAMLC) -a -dllib -l$(LIBRARYNAME) $(OCAMLDEBUGFLAG) \
-o)
else
@@ -88,7 +97,8 @@
ifdef OCAMLSTUBS
Archive.CMXA := $(strip $(OCAMLOPT) -a $(patsubst %,-cclib %, \
- $(LLVMLibsOptions) -l$(LIBRARYNAME)) \
+ $(LLVMLibsOptions) -l$(LIBRARYNAME) \
+ -L$(SharedLibDir) $(OCAMLRPATH)) \
$(OCAMLDEBUGFLAG) -o)
else
Archive.CMXA := $(strip $(OCAMLOPT) -a $(OCAMLAFLAGS) $(OCAMLDEBUGFLAG) -o)
@@ -233,7 +243,7 @@
$(SharedLib): $(ObjectsO) $(OcamlDir)/.dir
$(Echo) "Building $(BuildMode) $(notdir $@)"
- $(Verb) $(Link) $(SharedLinkOptions) $(LLVMLibsOptions) \
+ $(Verb) $(Link) $(SharedLinkOptions) $(OCAMLRPATH) $(LLVMLibsOptions) \
-o $@ $(ObjectsO)
clean-shared::
diff -r f9c5bed44d45 -r 27b4146a8f72 external/bsd/llvm/dist/llvm/docs/Extensions.rst
--- a/external/bsd/llvm/dist/llvm/docs/Extensions.rst Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/docs/Extensions.rst Fri Dec 06 23:18:22 2013 +0000
@@ -105,3 +105,41 @@
.section .xdata$foo
.linkonce associative .text$foo
...
+
+``.section`` Directive
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+MC supports passing the information in ``.linkonce`` at the end of
+``.section``. For example, these two codes are equivalent
+
+.. code-block:: gas
+
+ .section secName, "dr", discard, "Symbol1"
+ .globl Symbol1
+ Symbol1:
+ .long 1
+
+.. code-block:: gas
+
+ .section secName, "dr"
+ .linkonce discard
+ .globl Symbol1
+ Symbol1:
+ .long 1
+
+Note that in the combined form the COMDAT symbol is explict. This
+extension exits to support multiple sections with the same name in
+different comdats:
+
+
+.. code-block:: gas
+
+ .section secName, "dr", discard, "Symbol1"
+ .globl Symbol1
+ Symbol1:
+ .long 1
+
+ .section secName, "dr", discard, "Symbol2"
+ .globl Symbol2
+ Symbol2:
+ .long 1
diff -r f9c5bed44d45 -r 27b4146a8f72 external/bsd/llvm/dist/llvm/docs/GoldPlugin.rst
--- a/external/bsd/llvm/dist/llvm/docs/GoldPlugin.rst Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/docs/GoldPlugin.rst Fri Dec 06 23:18:22 2013 +0000
@@ -30,29 +30,22 @@
you have plugin support. If not, such as an "unknown option" error then you
will either need to build gold or install a version with plugin support.
-* To build gold with plugin support:
+* Download, configure and build gold with plugin support:
.. code-block:: bash
- $ mkdir binutils
- $ cd binutils
- $ cvs -z 9 -d :pserver:anoncvs%sourceware.org@localhost:/cvs/src login
- {enter "anoncvs" as the password}
- $ cvs -z 9 -d :pserver:anoncvs%sourceware.org@localhost:/cvs/src co binutils
+ $ git clone --depth 1 git://sourceware.org/git/binutils-gdb.git binutils
$ mkdir build
$ cd build
- $ ../src/configure --enable-gold --enable-plugins
+ $ ../binutils/configure --enable-gold --enable-plugins --disable-werror
$ make all-gold
- That should leave you with ``binutils/build/gold/ld-new`` which supports
- the ``-plugin`` option. It also built would have
- ``binutils/build/binutils/ar`` and ``nm-new`` which support plugins but
- don't have a visible -plugin option, instead relying on the gold plugin
- being present in ``../lib/bfd-plugins`` relative to where the binaries
- are placed.
+ That should leave you with ``build/gold/ld-new`` which supports
+ the ``-plugin`` option. Running ``make`` will additionally build
+ ``build/binutils/ar`` and ``nm-new`` binaries supporting plugins.
* Build the LLVMgold plugin: Configure LLVM with
- ``--with-binutils-include=/path/to/binutils/src/include`` and run
+ ``--with-binutils-include=/path/to/binutils/include`` and run
``make``.
Usage
@@ -72,9 +65,10 @@
``ld``. It will not look for an alternate linker, which is why you need
gold to be the installed system linker in your path.
-If you want ``ar`` and ``nm`` to work seamlessly as well, install
-``LLVMgold.so`` to ``/usr/lib/bfd-plugins``. If you built your own gold, be
-sure to install the ``ar`` and ``nm-new`` you built to ``/usr/bin``.
+``ar`` and ``nm`` also accept the ``-plugin`` option and it's possible to
+to install ``LLVMgold.so`` to ``/usr/lib/bfd-plugins`` for a seamless setup.
+If you built your own gold, be sure to install the ``ar`` and ``nm-new`` you
+built to ``/usr/bin``.
Example of link time optimization
diff -r f9c5bed44d45 -r 27b4146a8f72 external/bsd/llvm/dist/llvm/docs/LangRef.rst
--- a/external/bsd/llvm/dist/llvm/docs/LangRef.rst Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/docs/LangRef.rst Fri Dec 06 23:18:22 2013 +0000
@@ -128,7 +128,9 @@
#. Unnamed temporaries are created when the result of a computation is
not assigned to a named value.
#. Unnamed temporaries are numbered sequentially (using a per-function
- incrementing counter, starting with 0).
+ incrementing counter, starting with 0). Note that basic blocks are
+ included in this numbering. For example, if the entry basic block is not
+ given a label name, then it will get number 0.
It also shows a convention that we follow in this document. When
demonstrating instructions, we will follow an instruction with a comment
diff -r f9c5bed44d45 -r 27b4146a8f72 external/bsd/llvm/dist/llvm/docs/ReleaseNotes.rst
--- a/external/bsd/llvm/dist/llvm/docs/ReleaseNotes.rst Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/docs/ReleaseNotes.rst Fri Dec 06 23:18:22 2013 +0000
@@ -84,6 +84,9 @@
* Different sized pointers for different address spaces should now
generally work. This is primarily useful for GPU targets.
+* OCaml bindings have been significantly extended to cover almost all of the
+ LLVM libraries.
+
* ... next change ...
.. NOTE
@@ -107,6 +110,19 @@
see the `MIPS SIMD page at Imagination Technologies
<http://imgtec.com/mips/mips-simd.asp>`_
+SPARC Target
+------------
+
+The SPARC backend got many improvements, namely
+
+* experimental SPARC V9 backend
+* JIT support for SPARC
+* fp128 support
+* exception handling
+* TLS support
+* leaf functions optimization
+* bug fixes
+
External Open Source Projects Using LLVM 3.4
============================================
@@ -160,6 +176,23 @@
the presence of work-group barriers. This enables static parallelization of
the fine-grained static concurrency in the work groups in multiple ways.
+Portable Native Client (PNaCl)
+------------------------------
+
+`Portable Native Client (PNaCl) <http://www.chromium.org/nativeclient/pnacl>`_
+is a Chrome initiative to bring the performance and low-level control of native
+code to modern web browsers, without sacrificing the security benefits and
+portability of web applications. PNaCl works by compiling native C and C++ code
+to an intermediate representation using the LLVM clang compiler. This
+intermediate representation is a subset of LLVM bytecode that is wrapped into a
+portable executable, which can be hosted on a web server like any other website
+asset. When the site is accessed, Chrome fetches and translates the portable
+executable into an architecture-specific machine code optimized directly for
+the underlying device. PNaCl lets developers compile their code once to run on
+any hardware platform and embed their PNaCl application in any website,
+enabling developers to directly leverage the power of the underlying CPU and
+GPU.
+
TTA-based Co-design Environment (TCE)
-------------------------------------
diff -r f9c5bed44d45 -r 27b4146a8f72 external/bsd/llvm/dist/llvm/include/llvm/CodeGen/MachineOperand.h
--- a/external/bsd/llvm/dist/llvm/include/llvm/CodeGen/MachineOperand.h Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/include/llvm/CodeGen/MachineOperand.h Fri Dec 06 23:18:22 2013 +0000
@@ -564,6 +564,8 @@
unsigned SubReg = 0,
bool isDebug = false,
bool isInternalRead = false) {
+ assert(!(isDead && !isDef) && "Dead flag on non-def");
+ assert(!(isKill && isDef) && "Kill flag on def");
MachineOperand Op(MachineOperand::MO_Register);
Op.IsDef = isDef;
Op.IsImp = isImp;
diff -r f9c5bed44d45 -r 27b4146a8f72 external/bsd/llvm/dist/llvm/include/llvm/IR/IntrinsicsAArch64.td
--- a/external/bsd/llvm/dist/llvm/include/llvm/IR/IntrinsicsAArch64.td Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/include/llvm/IR/IntrinsicsAArch64.td Fri Dec 06 23:18:22 2013 +0000
@@ -54,6 +54,10 @@
Intrinsic<[llvm_anyvector_ty], [llvm_anyvector_ty], [IntrNoMem]>;
def int_aarch64_neon_fcvtau :
Intrinsic<[llvm_anyvector_ty], [llvm_anyvector_ty], [IntrNoMem]>;
+def int_aarch64_neon_fcvtzs :
+ Intrinsic<[llvm_anyvector_ty], [llvm_anyvector_ty], [IntrNoMem]>;
+def int_aarch64_neon_fcvtzu :
+ Intrinsic<[llvm_anyvector_ty], [llvm_anyvector_ty], [IntrNoMem]>;
// Vector maxNum (Floating Point)
def int_aarch64_neon_vmaxnm : Neon_2Arg_Intrinsic;
@@ -308,6 +312,9 @@
def int_aarch64_neon_vabs :
Intrinsic<[llvm_v1i64_ty], [llvm_v1i64_ty], [IntrNoMem]>;
+// Scalar Absolute Difference
+def int_aarch64_neon_vabd : Neon_2Arg_Intrinsic;
+
// Scalar Negate Value
def int_aarch64_neon_vneg :
Intrinsic<[llvm_v1i64_ty], [llvm_v1i64_ty], [IntrNoMem]>;
diff -r f9c5bed44d45 -r 27b4146a8f72 external/bsd/llvm/dist/llvm/include/llvm/MC/MCContext.h
--- a/external/bsd/llvm/dist/llvm/include/llvm/MC/MCContext.h Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/include/llvm/MC/MCContext.h Fri Dec 06 23:18:22 2013 +0000
@@ -258,9 +258,15 @@
const MCSectionCOFF *getCOFFSection(StringRef Section,
unsigned Characteristics,
- SectionKind Kind, int Selection = 0,
+ SectionKind Kind,
+ StringRef COMDATSymName,
+ int Selection,
const MCSectionCOFF *Assoc = 0);
+ const MCSectionCOFF *getCOFFSection(StringRef Section,
+ unsigned Characteristics,
+ SectionKind Kind);
+
const MCSectionCOFF *getCOFFSection(StringRef Section);
/// @}
diff -r f9c5bed44d45 -r 27b4146a8f72 external/bsd/llvm/dist/llvm/include/llvm/MC/MCSectionCOFF.h
--- a/external/bsd/llvm/dist/llvm/include/llvm/MC/MCSectionCOFF.h Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/include/llvm/MC/MCSectionCOFF.h Fri Dec 06 23:18:22 2013 +0000
@@ -19,6 +19,7 @@
#include "llvm/Support/COFF.h"
namespace llvm {
+class MCSymbol;
/// MCSectionCOFF - This represents a section on Windows
class MCSectionCOFF : public MCSection {
@@ -32,6 +33,11 @@
/// drawn from the enums below.
mutable unsigned Characteristics;
+ /// The COMDAT symbol of this section. Only valid if this is a COMDAT
+ /// section. Two COMDAT sections are merged if they have the same
+ /// COMDAT symbol.
+ const MCSymbol *COMDATSymbol;
+
/// Selection - This is the Selection field for the section symbol, if
/// it is a COMDAT section (Characteristics & IMAGE_SCN_LNK_COMDAT) != 0
Home |
Main Index |
Thread Index |
Old Index