]> granicus.if.org Git - llvm/log
llvm
8 years agoDisable the use of std::call_once on OpenBSD with libstdc++.
Brad Smith [Wed, 2 Nov 2016 01:39:01 +0000 (01:39 +0000)]
Disable the use of std::call_once on OpenBSD with libstdc++.

It was noticed this caused performance regressions and deadlocks. PR30768.

Reorder the code to make it clearer what is tested.

PPC now disables the use of std::call_once only with libstdc++ with
the reordering of the code, as was the original intent.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285782 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ilist_node] Add a getReverseIterator() method and a unittest for it.
Michael Gottesman [Wed, 2 Nov 2016 00:59:58 +0000 (00:59 +0000)]
[ilist_node] Add a getReverseIterator() method and a unittest for it.

This is the reverse_iterator analogue of getIterator().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285780 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoBitcode: Check file size before reading bitcode header.
Peter Collingbourne [Wed, 2 Nov 2016 00:39:11 +0000 (00:39 +0000)]
Bitcode: Check file size before reading bitcode header.

Should unbreak ocaml binding tests.

Also added an llvm-dis test that checks for the same thing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285777 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoSupport: Remove MemoryObject and DataStreamer interfaces.
Peter Collingbourne [Wed, 2 Nov 2016 00:08:37 +0000 (00:08 +0000)]
Support: Remove MemoryObject and DataStreamer interfaces.

These interfaces are no longer used.

Differential Revision: https://reviews.llvm.org/D26222

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285774 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoBitcode: Change reader interface to take memory buffers.
Peter Collingbourne [Wed, 2 Nov 2016 00:08:19 +0000 (00:08 +0000)]
Bitcode: Change reader interface to take memory buffers.

As proposed on llvm-dev:
http://lists.llvm.org/pipermail/llvm-dev/2016-October/106595.html

This change also fixes an API oddity where BitstreamCursor::Read() would
return zero for the first read past the end of the bitstream, but would
report_fatal_error for subsequent reads. Now we always report_fatal_error
for all reads past the end. Updated clients to check for the end of the
bitstream before reading from it.

I also needed to add padding to the invalid bitcode tests in
test/Bitcode/. This is because the streaming interface was not checking that
the file size is a multiple of 4.

Differential Revision: https://reviews.llvm.org/D26219

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285773 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[docs] Fix some typos. NFC.
Vedant Kumar [Tue, 1 Nov 2016 23:55:50 +0000 (23:55 +0000)]
[docs] Fix some typos. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285772 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[RISCV] Add bare-bones RISC-V MCTargetDesc
Alex Bradbury [Tue, 1 Nov 2016 23:47:30 +0000 (23:47 +0000)]
[RISCV] Add bare-bones RISC-V MCTargetDesc

This is enough to compile and link but doesn't yet do anything particularly
useful. Once an ASM parser and printer are added in the next two patches, the
whole thing can be usefully tested.

Differential Revision: https://reviews.llvm.org/D23562

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285770 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[RISCV 4/10] Add basic RISCV{InstrFormats,InstrInfo,RegisterInfo,}.td
Alex Bradbury [Tue, 1 Nov 2016 23:40:28 +0000 (23:40 +0000)]
[RISCV 4/10] Add basic RISCV{InstrFormats,InstrInfo,RegisterInfo,}.td

For now, only add instruction definitions for basic ALU operations. Our
initial target is a working MC layer rather than codegen, so appropriate
SelectionDAG patterns will come later.

Differential Revision: https://reviews.llvm.org/D23561

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285769 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAMDGPU: Handle CopyToReg in getOperandRegClass
Matt Arsenault [Tue, 1 Nov 2016 23:22:17 +0000 (23:22 +0000)]
AMDGPU: Handle CopyToReg in getOperandRegClass

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285768 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAMDGPU: Use brev for materializing SGPR constants
Matt Arsenault [Tue, 1 Nov 2016 23:14:20 +0000 (23:14 +0000)]
AMDGPU: Use brev for materializing SGPR constants

This is already done with VGPR immediates and saves 4 bytes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285765 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAMDGPU: Default to using scalar mov to materialize immediate
Matt Arsenault [Tue, 1 Nov 2016 22:55:07 +0000 (22:55 +0000)]
AMDGPU: Default to using scalar mov to materialize immediate

This is the conservatively correct way because it's easy to
move or replace a scalar immediate. This was incorrect in the case
when the register class wasn't known from the static instruction
definition, but still needed to be an SGPR. The main example of this
is inlineasm has an SGPR constraint.

Also start verifying the register classes of inlineasm operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285762 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMove the initialization of PreferredLoopExit into runOnMachineFunction to be near...
Eric Christopher [Tue, 1 Nov 2016 22:15:50 +0000 (22:15 +0000)]
Move the initialization of PreferredLoopExit into runOnMachineFunction to be near the other function specific initializations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285758 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix uninitialized access in MachineBlockPlacement.
Sam McCall [Tue, 1 Nov 2016 22:02:14 +0000 (22:02 +0000)]
Fix uninitialized access in MachineBlockPlacement.

Summary:
Currently PreferredLoopExit is set only in buildLoopChains, which is
never called if there are no MachineLoops.

MSan is currently broken by this:
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/145/steps/check-llvm%20msan/logs/stdio

This is a naive fix to get things green again. iteratee: you may have a better fix.

This change will also mean PreferredLoopExit will not carry over if
buildCFGChains() is called a second time in runOnMachineFunction, this
appears to be the right thing.

Reviewers: bkramer, iteratee, echristo

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D26069

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285757 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAMDGPU: Stop creating unused virtual registers
Matt Arsenault [Tue, 1 Nov 2016 21:58:07 +0000 (21:58 +0000)]
AMDGPU: Stop creating unused virtual registers

These are only used in the spill to VMEM path. Move them to
the one use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285756 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoDon't compute DotShstrtab eagerly.
Rafael Espindola [Tue, 1 Nov 2016 21:33:55 +0000 (21:33 +0000)]
Don't compute DotShstrtab eagerly.

This saves a field that is not always used. It also avoids failing a
program that doesn't need the section names.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285753 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[MemorySSA] Tighten up types to make our API prettier. NFC.
George Burgess IV [Tue, 1 Nov 2016 21:17:46 +0000 (21:17 +0000)]
[MemorySSA] Tighten up types to make our API prettier. NFC.

Patch by bryant.

Differential Revision: https://reviews.llvm.org/D26126

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285750 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoSimplify getStringTableIndex.
Rafael Espindola [Tue, 1 Nov 2016 20:56:15 +0000 (20:56 +0000)]
Simplify getStringTableIndex.

The description in the ELF spec is just

---------------------------
If the section name string table section index is greater than or
equal to SHN_LORESERVE (0xff00), this member has the value SHN_XINDEX
(0xffff) and the actual index of the section name string table section
is contained in the sh_link field of the section header at index 0.
---------------------------

So we only have to check for it being SHN_XINDEX. Also, sh_link is
always 32 bits, so don't return an uintX_t.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285747 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ValueTracking] remove TODO comment; NFC
Sanjay Patel [Tue, 1 Nov 2016 20:43:00 +0000 (20:43 +0000)]
[ValueTracking] remove TODO comment; NFC

InstCombine should always canonicalize patterns like the one shown in the comment
when visiting 'select' insts in adjustMinMax().

Scalars were already handled there, and vector splats are handled after:
https://reviews.llvm.org/rL285732

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285744 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAMDGPU: Workaround for instruction size with literals
Matt Arsenault [Tue, 1 Nov 2016 20:42:24 +0000 (20:42 +0000)]
AMDGPU: Workaround for instruction size with literals

Instructions with a 32-bit base encoding with an optional
32-bit literal encoded after them report their size as 4
for the disassembler. Consider these when computing the
MachineInstr size. This fixes problems caused by size estimate
consistency in BranchRelaxation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285743 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoUse the existing std::error_code out parameter.
Rafael Espindola [Tue, 1 Nov 2016 20:24:22 +0000 (20:24 +0000)]
Use the existing std::error_code out parameter.

This avoids calling exit with a partially constructed object.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285738 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix llvm-shlib cmake build
Chris Bieneman [Tue, 1 Nov 2016 20:19:33 +0000 (20:19 +0000)]
Fix llvm-shlib cmake build

Summary:
This fixes a few things that used to work with a Makefile build, but were broken in cmake.

1. Treat MINGW like a Linux system.
2. The shlib should never contain other shared libraries.

Patch By: Valentin Churavy

Reviewers: axw, beanz

Subscribers: modocache, beanz, mgorny

Differential Revision: https://reviews.llvm.org/D25865

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285737 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoGC empty subdirectories.
Joerg Sonnenberger [Tue, 1 Nov 2016 20:09:41 +0000 (20:09 +0000)]
GC empty subdirectories.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285734 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[InstCombine] allow splat vector folds in adjustMinMax()
Sanjay Patel [Tue, 1 Nov 2016 20:08:02 +0000 (20:08 +0000)]
[InstCombine] allow splat vector folds in adjustMinMax()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285732 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[RISCV] Add RISCV.def to module.modulemap
Alex Bradbury [Tue, 1 Nov 2016 19:31:30 +0000 (19:31 +0000)]
[RISCV] Add RISCV.def to module.modulemap

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285730 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[InstCombine] Fold nuw left-shifts in `ugt`/`ule` comparisons.
Sanjay Patel [Tue, 1 Nov 2016 19:19:29 +0000 (19:19 +0000)]
[InstCombine] Fold nuw left-shifts in `ugt`/`ule` comparisons.

This transforms

%a = shl nuw %x, c1
%b = icmp {ugt|ule} %a, c0

into

%b = icmp {ugt|ule} %x, (c0 >> c1)

z3:

(declare-const x (_ BitVec 64))
(declare-const c0 (_ BitVec 64))
(declare-const c1 (_ BitVec 64))

(push)
(assert (= x (bvlshr (bvshl x c1) c1)))  ; nuw
(assert (not (= (bvugt (bvshl x c1) c0)
                (bvugt x
                       (bvlshr c0 c1)))))
(check-sat)
(get-model)
(pop)

(push)
(assert (= x (bvlshr (bvshl x c1) c1)))  ; nuw
(assert (not (= (bvule (bvshl x c1) c0)
                (bvule x
                       (bvlshr c0 c1)))))
(check-sat)
(get-model)
(pop)

Patch by bryant!

Differential Revision: https://reviews.llvm.org/D25913

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285729 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Hexagon] Rename operand/predicate names for unshifted integers
Krzysztof Parzyszek [Tue, 1 Nov 2016 19:02:10 +0000 (19:02 +0000)]
[Hexagon] Rename operand/predicate names for unshifted integers

For example, rename s6Ext to s6_0Ext. The names for shifted integers
include the underscore and this will make the naming consistent. It
also exposed a few duplicates that were removed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285728 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoBranchRelaxation: Expand unconditional branches first
Matt Arsenault [Tue, 1 Nov 2016 18:34:00 +0000 (18:34 +0000)]
BranchRelaxation: Expand unconditional branches first

It's likely if a conditional branch needs to be expanded, the following
unconditional branch will also need expansion. By expanding the
unconditional branch first, the conditional branch can be simply
inverted to jump over the inserted indirect branch block. If the
conditional branch is expanded first, it results in an additional
branch.

This avoids test regressions in future commits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285722 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[InstCombine] clean up adjustMinMax(); NFCI
Sanjay Patel [Tue, 1 Nov 2016 18:15:03 +0000 (18:15 +0000)]
[InstCombine] clean up adjustMinMax(); NFCI

1. Change param names for readability
2. Change pointer param to ref
3. Early exit to reduce indent
4. Change switch to if/else

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285718 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoTest Commit, removed extraneous newline
Erich Keane [Tue, 1 Nov 2016 17:54:05 +0000 (17:54 +0000)]
Test Commit, removed extraneous newline

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285717 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[AMDGPU] Check if type transforms to i16 (VI+) when getting AMDGPUISD::FFBH_U32
Konstantin Zhuravlyov [Tue, 1 Nov 2016 17:49:33 +0000 (17:49 +0000)]
[AMDGPU] Check if type transforms to i16 (VI+) when getting AMDGPUISD::FFBH_U32

This will prevent following regression when enabling i16 support (D18049):

test/CodeGen/AMDGPU/ctlz.ll
test/CodeGen/AMDGPU/ctlz_zero_undef.ll

Differential Revision: https://reviews.llvm.org/D25802

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285716 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[InstCombine] add helper function for adjustMinMax(); NFCI
Sanjay Patel [Tue, 1 Nov 2016 17:46:08 +0000 (17:46 +0000)]
[InstCombine] add helper function for adjustMinMax(); NFCI

This is just a cut and paste; clean-up and enhancements to follow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285715 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[CMake] Fix rpath construction for out-of-tree builds
Chris Bieneman [Tue, 1 Nov 2016 17:44:58 +0000 (17:44 +0000)]
[CMake] Fix rpath construction for out-of-tree builds

This patch was produced in conjunction with Michał Górny. It should resolve the issues that were trying to be solved by D25304.

This moves rpath handling into `llvm_add_library` and `add_llvm_executable` so that it is available to all projects using AddLLVM whether built in-tree or out-of-tree.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285714 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[InstCombine] add vector tests for ext+adjust min/max
Sanjay Patel [Tue, 1 Nov 2016 17:34:29 +0000 (17:34 +0000)]
[InstCombine] add vector tests for ext+adjust min/max

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285713 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[RISCV] Add stub backend
Alex Bradbury [Tue, 1 Nov 2016 17:27:54 +0000 (17:27 +0000)]
[RISCV] Add stub backend

This contains just enough for lib/Target/RISCV to compile. Notably a basic
RISCVTargetMachine and RISCVTargetInfo. At this point you can attempt llc
-march=riscv32 myinput.ll and will find it fails due to the lack of
MCAsmInfo.

See http://lists.llvm.org/pipermail/llvm-dev/2016-August/103748.html for
further discussion

Differential Revision: https://reviews.llvm.org/D23560

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285712 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAMDGPU: Fix buildbots broken by r285704
Tom Stellard [Tue, 1 Nov 2016 17:20:03 +0000 (17:20 +0000)]
AMDGPU: Fix buildbots broken by r285704

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285711 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[RISCV] Add missing RISCV.def
Alex Bradbury [Tue, 1 Nov 2016 17:09:49 +0000 (17:09 +0000)]
[RISCV] Add missing RISCV.def

Fix rL285708

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285709 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[RISCV] Add RISC-V ELF defines
Alex Bradbury [Tue, 1 Nov 2016 16:59:37 +0000 (16:59 +0000)]
[RISCV] Add RISC-V ELF defines

Add the necessary definitions for RISC-V ELF files, including relocs. Also
make necessary trivial change to ELFYaml, llvm-objdump, and llvm-readobj in
order to work with RISC-V ELFs.

Differential Revision: https://reviews.llvm.org/D23557

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285708 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[RISCV] Recognise riscv32 and riscv64 in triple parsing code
Alex Bradbury [Tue, 1 Nov 2016 16:47:54 +0000 (16:47 +0000)]
[RISCV] Recognise riscv32 and riscv64 in triple parsing code

This is the first in a series of 10 initial patches that incrementally add an
MC layer for RISC-V to LLVM. See
<http://lists.llvm.org/pipermail/llvm-dev/2016-August/103748.html> for more
discussion.

Differential Revision: https://reviews.llvm.org/D23557

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285707 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[InstCombine] move/fix tests for adjusted min/max
Sanjay Patel [Tue, 1 Nov 2016 16:39:30 +0000 (16:39 +0000)]
[InstCombine] move/fix tests for adjusted min/max

I think the former 'test50' had a typo making it functionally equivalent
to the former 'test49'; changed the predicate to provide more coverage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285706 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[TableGen] Move OperandMatchResultTy enum to MCTargetAsmParser.h
Alex Bradbury [Tue, 1 Nov 2016 16:32:05 +0000 (16:32 +0000)]
[TableGen] Move OperandMatchResultTy enum to MCTargetAsmParser.h

As it stands, the OperandMatchResultTy is only included in the generated
header if there is custom operand parsing. However, almost all backends
make use of MatchOperand_Success and friends from OperandMatchResultTy for
e.g. parseRegister. This is a pain when starting an AsmParser for a new
backend that doesn't yet have custom operand parsing. Move the enum to
MCTargetAsmParser.h.

This patch is a prerequisite for D23563

Differential Revision: https://reviews.llvm.org/D23496

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285705 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAMDGPU: Implement expansion of f16 = FP_TO_FP16 f64
Tom Stellard [Tue, 1 Nov 2016 16:31:48 +0000 (16:31 +0000)]
AMDGPU: Implement expansion of f16 = FP_TO_FP16 f64

I wanted to implement this as a target independent expansion, however when
targets say they want to expand FP_TO_FP16 what they actually want is
the unsafe math expansion when possible and expansion to a libcall in all
other cases.

The only way to make this work as a target independent would be to add logic
to target's TargetLowering construction to mark theses nodes as Expand when
LegalizeDAG can use the unsafe expansion and mark them as LibCall when it
cannot.  I think this would be possible, but I think it would be too fragile
and complex as it would require targets to keep their expansion logic up
to date with the code in LegalizeDAG.

Reviewers: bogner, ab, t.p.northover, arsenm

Subscribers: wdng, llvm-commits, nhaehnle

Differential Revision: https://reviews.llvm.org/D25999

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285704 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoThis is a 1 character fix for an ARM build attribute test (r284571): the
Sjoerd Meijer [Tue, 1 Nov 2016 15:59:37 +0000 (15:59 +0000)]
This is a 1 character fix for an ARM build attribute test (r284571): the
purpose of the test was to have 2 different function attribute sets, but due
to a typo there was only one both with number #0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285701 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[InstCombine] fix tests for adjusted min/max
Sanjay Patel [Tue, 1 Nov 2016 15:48:30 +0000 (15:48 +0000)]
[InstCombine] fix tests for adjusted min/max

1. Delete identical tests
2. Rename tests to reflect actual functionality
3. Add comments
4. Add unsigned variants
5. Add vector variants with FIXME comments
6. Rename test file

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285699 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[InstCombine] Folding of shifts by the sum of positive values
Simon Pilgrim [Tue, 1 Nov 2016 15:40:30 +0000 (15:40 +0000)]
[InstCombine] Folding of shifts by the sum of positive values

This patch introduces the combine:

(C1 shift (A add C2)) -> ((C1 shift C2) shift A)
iff A and C2 are both positive

If both A and C2 are know to be positive then we can safely split into 2 shifts, permitting the folding of the Inner shift.

Fix for the spec benchmark case mentioned by @nadav on PR15141 (assuming we can prove that the inputs as positive).

Differential Revision: https://reviews.llvm.org/D26000

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285696 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[InstCombine] auto-generate better checks
Sanjay Patel [Tue, 1 Nov 2016 14:38:30 +0000 (14:38 +0000)]
[InstCombine] auto-generate better checks

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285693 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Sparc][LEON] Test for FixFDIVSQRT erratum fix.
Chris Dewhurst [Tue, 1 Nov 2016 14:23:37 +0000 (14:23 +0000)]
[Sparc][LEON] Test for FixFDIVSQRT erratum fix.

Note: Test is per differential review, but the other changed code in the review was for an optimisation that din't quite work. Nevertheless, the test is valid for the unoptimised version of the fix.

Differential Review: https://reviews.llvm.org/D24658

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285692 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Thumb-1] Synthesize TBB/TBH instructions to make use of compressed jump tables
James Molloy [Tue, 1 Nov 2016 13:37:41 +0000 (13:37 +0000)]
[Thumb-1] Synthesize TBB/TBH instructions to make use of compressed jump tables

[Reapplying r284580 and r285917 with fix and testing to ensure emitted jump tables for Thumb-1 have 4-byte alignment]

The TBB and TBH instructions in Thumb-2 allow jump tables to be compressed into sequences of bytes or shorts respectively. These instructions do not exist in Thumb-1, however it is possible to synthesize them out of a sequence of other instructions.

It turns out this sequence is so short that it's almost never a lose for performance and is ALWAYS a significant win for code size.

TBB example:
Before: lsls r0, r0, #2    After: add  r0, pc
        adr  r1, .LJTI0_0         ldrb r0, [r0, #6]
        ldr  r0, [r0, r1]         lsls r0, r0, #1
        mov  pc, r0               add  pc, r0
  => No change in prologue code size or dynamic instruction count. Jump table shrunk by a factor of 4.

The only case that can increase dynamic instruction count is the TBH case:

Before: lsls r0, r4, #2    After: lsls r4, r4, #1
        adr  r1, .LJTI0_0         add  r4, pc
        ldr  r0, [r0, r1]         ldrh r4, [r4, #6]
        mov  pc, r0               lsls r4, r4, #1
                                  add  pc, r4
  => 1 more instruction in prologue. Jump table shrunk by a factor of 2.

So there is an argument that this should be disabled when optimizing for performance (and a TBH needs to be generated). I'm not so sure about that in practice, because on small cores with Thumb-1 performance is often tied to code size. But I'm willing to turn it off when optimizing for performance if people want (also note that TBHs are fairly rare in practice!)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285690 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[AMDGPU] Expand vector mulhu/mulhs
Valery Pykhtin [Tue, 1 Nov 2016 10:26:48 +0000 (10:26 +0000)]
[AMDGPU] Expand vector mulhu/mulhs

Differential revision: https://reviews.llvm.org/D26077

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285684 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[PowerPC] Implement vector shift builtins - llvm portion
Nemanja Ivanovic [Tue, 1 Nov 2016 09:42:32 +0000 (09:42 +0000)]
[PowerPC] Implement vector shift builtins - llvm portion

This patch corresponds to review https://reviews.llvm.org/D26095.
Committing on behalf of Tony Jiang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285681 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAttempt to pacify buildbot
Serge Pavlov [Tue, 1 Nov 2016 07:52:10 +0000 (07:52 +0000)]
Attempt to pacify buildbot

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285676 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAllow resolving response file names relative to including file
Serge Pavlov [Tue, 1 Nov 2016 06:53:29 +0000 (06:53 +0000)]
Allow resolving response file names relative to including file

If a response file included by construct @file itself includes a response file
and that file is specified by relative file name, current behavior is to resolve
the name relative to the current working directory. The change adds additional
flag to ExpandResponseFiles that may be used to resolve nested response file
names relative to including file. With the new mode a set of related response
files may be kept together and reference each other with short position
independent names.

Differential Revision: https://reviews.llvm.org/D24917

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285675 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[docs] remove more non-ascii stuff in the hopes to fix the bot
Kostya Serebryany [Tue, 1 Nov 2016 05:51:12 +0000 (05:51 +0000)]
[docs] remove more non-ascii stuff in the hopes to fix the bot

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285668 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[TBAA] Use wrapper objects instead of raw getOperand s; NFC
Sanjoy Das [Tue, 1 Nov 2016 02:58:30 +0000 (02:58 +0000)]
[TBAA] Use wrapper objects instead of raw getOperand s; NFC

This is intended to make the semantic intent clearer.

The wrapper objects are now generic to avoid `const_cast` s.  Since
`const` ness is part of the API of `MDNode::getMostGenericTBAA` (and
therefore I can't make things `const` all the way through without some
code churn outside TypeBasedAliasAnalysis.cpp), this seemed like the
cleanest solution.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285665 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[TBAA] Rename accessors to be more idiomatic; NFC
Sanjoy Das [Tue, 1 Nov 2016 01:21:57 +0000 (01:21 +0000)]
[TBAA] Rename accessors to be more idiomatic; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285661 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoBitcode: Simplify BitstreamWriter::EnterBlockInfoBlock() interface.
Peter Collingbourne [Tue, 1 Nov 2016 01:18:57 +0000 (01:18 +0000)]
Bitcode: Simplify BitstreamWriter::EnterBlockInfoBlock() interface.

No block info block should need to define local abbreviations, so we can
always use a code width of 2.

Also change all block info block writers to use EnterBlockInfoBlock.

Differential Revision: https://reviews.llvm.org/D26168

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285660 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAMDGPU: Whitespace fixes
Matt Arsenault [Tue, 1 Nov 2016 00:55:14 +0000 (00:55 +0000)]
AMDGPU: Whitespace fixes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285659 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[DAG] disable nsw/nuw for add/sub/mul when simplifying based on demanded bits (PR30841)
Sanjay Patel [Mon, 31 Oct 2016 23:28:45 +0000 (23:28 +0000)]
[DAG] disable nsw/nuw for add/sub/mul when simplifying based on demanded bits (PR30841)

This bug was exposed by using nsw/nuw for more aggressive folds in:
https://reviews.llvm.org/rL284844

The changes mimic the IR demanded bits logic in InstCombiner::SimplifyDemandedUseBits(),
but we can't just flip flag bits in the DAG; we have to create a new node that has the
bits cleared.

This should fix:
https://llvm.org/bugs/show_bug.cgi?id=30841

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285656 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Hexagon] Garbage collect dead code.
Davide Italiano [Mon, 31 Oct 2016 22:56:56 +0000 (22:56 +0000)]
[Hexagon] Garbage collect dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285654 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix a typo.
Evgeniy Stepanov [Mon, 31 Oct 2016 22:42:39 +0000 (22:42 +0000)]
Fix a typo.

Found with PVS-Studio here: http://www.viva64.com/en/b/0446/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285652 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoCodeGen: further loosen -O0 CG for WoA division
Saleem Abdulrasool [Mon, 31 Oct 2016 22:12:37 +0000 (22:12 +0000)]
CodeGen: further loosen -O0 CG for WoA division

Generate the slowest possible codepath for noopt CodeGen.  Even trying to be
clever with the negated jump can cause out-of-range jumps.  Use a wide branch
instead. Although the code is modelled simplistically, the later optimizations
would recombine the branching into `cbz` if possible.  This re-enables the
previous optimization as well as hopefully gives us working code in all cases.

Addresses PR30356!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285649 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ThinLTO] Disable importing and other cross-module optis at -O0
Teresa Johnson [Mon, 31 Oct 2016 22:12:21 +0000 (22:12 +0000)]
[ThinLTO] Disable importing and other cross-module optis at -O0

Summary:
There is no point to importing at -O0, since we won't inline. We should
also disable other cross-module optimizations.

(Plan to backport this fix to the 3.9 branch to fix PR30774)

Reviewers: pcc

Subscribers: johanengelen, mehdi_amini

Differential Revision: https://reviews.llvm.org/D25918

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285648 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[NVPTX] Remove NVPTXFavorNonGenericAddrSpaces pass.
Justin Lebar [Mon, 31 Oct 2016 21:51:42 +0000 (21:51 +0000)]
[NVPTX] Remove NVPTXFavorNonGenericAddrSpaces pass.

Summary:
This has been replaced by the NVPTXInferAddressSpaces pass.  We've had
the new one as the default with the old one accessible via a flag for
some months now, and we've had no problems.

Reviewers: tra

Subscribers: llvm-commits, jholewinski, jingyue, mgorny

Differential Revision: https://reviews.llvm.org/D26165

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285642 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agodocs: trying to fix the docs bot by removing non-ASCII characters. The docs build...
Kostya Serebryany [Mon, 31 Oct 2016 21:10:26 +0000 (21:10 +0000)]
docs: trying to fix the docs bot by removing non-ASCII characters. The docs build fine on my machine, bot fail on the bot (http://lab.llvm.org:8011/builders/llvm-sphinx-docs/builds/25/steps/docs-llvm-html/logs/stdio)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285639 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRemove llc -jump-table-type option, it hasn't been functional for years.
Joerg Sonnenberger [Mon, 31 Oct 2016 20:35:20 +0000 (20:35 +0000)]
Remove llc -jump-table-type option, it hasn't been functional for years.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285633 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMore additional error checks for invalid Mach-O files when
Kevin Enderby [Mon, 31 Oct 2016 20:29:48 +0000 (20:29 +0000)]
More additional error checks for invalid Mach-O files when
the offsets and sizes of an element of the file overlaps with
another element in the Mach-O file.

This shows the approach to this testing for three elements
and contains for tests for their overlap.  Checking for all the
remain elements will be added next.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285632 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[PPC] add absolute difference altivec instructions and matching intrinsics
Nemanja Ivanovic [Mon, 31 Oct 2016 19:47:52 +0000 (19:47 +0000)]
[PPC] add absolute difference altivec instructions and matching intrinsics

This patch corresponds to review https://reviews.llvm.org/D26072.
Committing on behalf of Sean Fertile.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285627 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoDebugInfo: make DW_TAG_atomic_type valid
Victor Leschuk [Mon, 31 Oct 2016 19:09:38 +0000 (19:09 +0000)]
DebugInfo: make DW_TAG_atomic_type valid

DW_TAG_atomic_type was already included in Dwarf.defs and emitted correctly,
however Verifier didn't recognize it as valid.
Thus we introduce the following changes:

  * Make DW_TAG_atomic_type valid tag for IR and DWARF (enabled only with -gdwarf-5)
  * Add it to related docs
  * Add DebugInfo tests

Differential Revision: https://reviews.llvm.org/D26144

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285624 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix per-processor model scheduler definition completeness check
Ulrich Weigand [Mon, 31 Oct 2016 18:59:52 +0000 (18:59 +0000)]
Fix per-processor model scheduler definition completeness check

The CodeGenSchedModels::checkCompleteness routine in TableGen/
CodeGenSchedule.cpp is supposed to verify for each processor
model that is marked as "complete" that it actually defines a
scheduling class for each instruction.

However, this did not work correctly due to an incorrect
check whether a scheduling class has an itinerary.

Reviewer: atrick
Differential revision: https://reviews.llvm.org/D26156

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285622 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[asan] Move instrumented null-terminated strings to a special section, LLVM part
Kuba Brecka [Mon, 31 Oct 2016 18:51:58 +0000 (18:51 +0000)]
[asan] Move instrumented null-terminated strings to a special section, LLVM part

On Darwin, simple C null-terminated constant strings normally end up in the __TEXT,__cstring section of the resulting Mach-O binary. When instrumented with ASan, these strings are transformed in a way that they cannot be in __cstring (the linker unifies the content of this section and strips extra NUL bytes, which would break instrumentation), and are put into a generic __const section. This breaks some of the tools that we have: Some tools need to scan all C null-terminated strings in Mach-O binaries, and scanning all the contents of __const has a large performance penalty. This patch instead introduces a special section, __asan_cstring which will now hold the instrumented null-terminated strings.

Differential Revision: https://reviews.llvm.org/D25026

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285619 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[MC] Make llvm-mc fail cleanly on invalid output asm variant.
Nirav Dave [Mon, 31 Oct 2016 18:36:31 +0000 (18:36 +0000)]
[MC] Make llvm-mc fail cleanly on invalid output asm variant.

Fixes PR28488.

Reviewers: rnk, majnemer

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D25834

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285616 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoGlobalISel: allow truncating pointer casts on AArch64.
Tim Northover [Mon, 31 Oct 2016 18:31:09 +0000 (18:31 +0000)]
GlobalISel: allow truncating pointer casts on AArch64.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285615 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoGlobalISel: translate stack protector intrinsics
Tim Northover [Mon, 31 Oct 2016 18:30:59 +0000 (18:30 +0000)]
GlobalISel: translate stack protector intrinsics

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285614 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoDefine DbiStreamBuilder::addSectionMap.
Rui Ueyama [Mon, 31 Oct 2016 17:38:56 +0000 (17:38 +0000)]
Define DbiStreamBuilder::addSectionMap.

This change enables LLD to construct a Section Map stream in a PDB file.
I do not understand all these fields in the Section Map yet, but it seems
like a copy of a COFF section header in another format.

With this patch, DbiStreamBuilder can emit a Section Map which
llvm-pdbdump can dump.

Differential Revision: https://reviews.llvm.org/D26112

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285606 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoSingleLinkedListIterator::operator++(int) shouldn't return a reference
David Majnemer [Mon, 31 Oct 2016 17:20:43 +0000 (17:20 +0000)]
SingleLinkedListIterator::operator++(int) shouldn't return a reference

The returned reference is to a local object.  Instead, make a copy.

Found by PVS-Studio.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285603 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix an unconditional break in checkMachOAndArchFlags
David Majnemer [Mon, 31 Oct 2016 17:11:31 +0000 (17:11 +0000)]
Fix an unconditional break in checkMachOAndArchFlags

Found by PVS-Studio.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285598 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoSymbolRef::Type is not a bitfield and must be compared directly
David Majnemer [Mon, 31 Oct 2016 17:11:23 +0000 (17:11 +0000)]
SymbolRef::Type is not a bitfield and must be compared directly

Found by PVS-Studio.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285597 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoModify DWARFFormValue to remember the DWARFUnit that it was decoded with.
Greg Clayton [Mon, 31 Oct 2016 16:46:02 +0000 (16:46 +0000)]
Modify DWARFFormValue to remember the DWARFUnit that it was decoded with.

Modifying DWARFFormValue to remember the DWARFUnit that it was encoded with can simplify the usage of instances of this class. Previously users would have to try and pass in the same DWARFUnit that was used to decode the form value and there was a possibility that a different DWARFUnit might be supplied to the functions that extract values (strings, CU relative references, addresses) and cause problems. This fixes this potential issue by storing the DWARFUnit inside the DWARFFormValue so that this mistake can't be made. Instances of DWARFFormValue are not stored permanently and are used as temporary values, so the increase in size of an instance of DWARFFormValue isn't a big deal. This makes decoding form values more bullet proof and is a change that will be used by future modifications.

https://reviews.llvm.org/D26052

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285594 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[lli] Don't strip away const qualifier. Unbreak the gcc6 build.
Davide Italiano [Mon, 31 Oct 2016 16:21:48 +0000 (16:21 +0000)]
[lli] Don't strip away const qualifier. Unbreak the gcc6 build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285592 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[x86][inline-asm][AVX512][llvm][PART-2]
Michael Zuckerman [Mon, 31 Oct 2016 16:19:58 +0000 (16:19 +0000)]
[x86][inline-asm][AVX512][llvm][PART-2]
Introducing "k" and "Yk" constraints for extended inline assembly, enabling use of AVX512 masked vectorized instructions.

Commit on behalf of mharoush

Extending inline assembly support, compatible with GCC as folowing:
"k" constraint hints the compiler to select any of AVX512 k0-k7 registers.
"Yk" constraint is a subset of "k" excluding k0 which is not allowd to be used as a mask.

Reviewer: 1. rnk

Differential Revision: https://reviews.llvm.org/D25062

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285591 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[AMDGPU][MC][gfx8] Support 20-bit immediate offset in SMEM instructions.
Artem Tamazov [Mon, 31 Oct 2016 16:07:39 +0000 (16:07 +0000)]
[AMDGPU][MC][gfx8] Support 20-bit immediate offset in SMEM instructions.

Fixes Bug 30808.
Note that passing subtarget information to predicates seems too complicated, so gfx8-specific def smrd_offset_20 introduced.
Old gfx6/7-specific def renamed to smrd_offset_8 for clarity.
Lit tests updated.

Differential Revision: https://reviews.llvm.org/D26085

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285590 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Hexagon] Don't expand mux instructions with both sources identical
Krzysztof Parzyszek [Mon, 31 Oct 2016 15:45:09 +0000 (15:45 +0000)]
[Hexagon] Don't expand mux instructions with both sources identical

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285588 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRecommit r285285 - [Object/ELF] - Fixed behavior when SectionHeaderTable->sh_size...
George Rimar [Mon, 31 Oct 2016 15:33:00 +0000 (15:33 +0000)]
Recommit r285285 - [Object/ELF] - Fixed behavior when SectionHeaderTable->sh_size is too large.

with fix: edited invalid-section-index2.elf input to pass the new check and
fail on the same place it was intended to fail.

Original commit message:
Elf.h already has code checking that section table does not go past end of file.
Problem is that this check may not work on values greater than UINT64_MAX / Header->e_shentsize
because of calculation overflow.

Parch fixes the issue.

Differential revision: https://reviews.llvm.org/D25432

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285586 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[SystemZ] Rework processor feature definitions and add -mcpu=archX support
Ulrich Weigand [Mon, 31 Oct 2016 14:33:29 +0000 (14:33 +0000)]
[SystemZ] Rework processor feature definitions and add -mcpu=archX support

This patch implements two changes:

- Move processor feature definition into a new file SystemZFeatures.td,
  and provide explicit lists of supported and unsupported features for
  each level of the z/Architecture.  This allows specifying unsupported
  features in the scheduler definition files for each processor.

- Add optional aliases for the -mcpu processor names according to the
  level of the z/Architecture, for compatibility with other compilers
  on the platform.  The supported aliases are:
    -mcpu=arch8  equals  -mcpu=z10
    -mcpu=arch9  equals  -mcpu=z196
    -mcpu=arch10 equals  -mcpu=zEC12
    -mcpu=arch11 equals  -mcpu=z13

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285577 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[SystemZ] Guard LEFR/LFER with FeatureVector
Ulrich Weigand [Mon, 31 Oct 2016 14:28:43 +0000 (14:28 +0000)]
[SystemZ] Guard LEFR/LFER with FeatureVector

The LEFR/LFER pseudos are aliases for vector instructions and should
therefore be guared by FeatureVector.  If they aren't, the TableGen
scheduler definition checking might complain that there is no data
for those pseudos for pre-z13 machines.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285576 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[SystemZ] Correctly diagnose missing features in AsmParser
Ulrich Weigand [Mon, 31 Oct 2016 14:25:05 +0000 (14:25 +0000)]
[SystemZ] Correctly diagnose missing features in AsmParser

Currently, when using an instruction that is not supported on the
currently selected architecture, the LLVM assembler is likely to
diagnose an "invalid operand" instead of a "missing feature".

This is because many operands require a custom parser in order to
be processed correctly, and if an instruction is not available
according to the current feature set, the generated parser code
will also not detect the associated custom operand parsers.

Fixed by temporarily enabling all features while parsing operands.
The missing features will then be correctly detected when actually
parsing the instruction itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285575 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[SystemZ] Fix encoding of MVCK and .insn ss
Ulrich Weigand [Mon, 31 Oct 2016 14:21:36 +0000 (14:21 +0000)]
[SystemZ] Fix encoding of MVCK and .insn ss

LLVM currently treats the first operand of MVCK as if it were a
regular base+index+displacement address.  However, it is in fact
a base+displacement combined with a length register field.

While the two might look syntactically similar, there are two
semantic differences:
- %r0 is a valid length register, even though it cannot be used
  as an index register.
- In an expression with just a single register like 0(%rX), the
  register is treated as base with normal addresses, while it is
  treated as the length register (with an empty base) for MVCK.

Fixed by adding a new operand parser class BDRAddr and reworking
the assembler parser to distinguish between address + length
register operands and regular addresses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285574 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoSecond attempt at r285517.
Dorit Nuzman [Mon, 31 Oct 2016 13:17:31 +0000 (13:17 +0000)]
Second attempt at r285517.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285568 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[SystemZ] Model 2 VBU units (not 1) in SystemZScheduleZ13.td.
Jonas Paulsson [Mon, 31 Oct 2016 13:05:48 +0000 (13:05 +0000)]
[SystemZ] Model 2 VBU units (not 1) in SystemZScheduleZ13.td.

NFC.

Review: Ulrich Weigand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285566 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoImproved cost model for FDIV and FSQRT, by Andrew Tischenko
Alexey Bataev [Mon, 31 Oct 2016 12:10:53 +0000 (12:10 +0000)]
Improved cost model for FDIV and FSQRT, by Andrew Tischenko

There is a bug describing poor cost model for floating point operations:
Bug 29083 - [X86][SSE] Improve costs for floating point operations. This
patch is the second one in series of patches dealing with cost model.

Differential Revision: https://reviews.llvm.org/D25722

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285564 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd triple to test so it does not fail on windows.
Manuel Klimek [Mon, 31 Oct 2016 11:40:14 +0000 (11:40 +0000)]
Add triple to test so it does not fail on windows.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285560 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoDelete .s file that did not test anything, and check in test that works.
Manuel Klimek [Mon, 31 Oct 2016 11:18:39 +0000 (11:18 +0000)]
Delete .s file that did not test anything, and check in test that works.

In D26098, Davide Italiano submitted a .s file instead of the .ll file
that was the last stage of the review.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285559 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd getOffset to ELFSectionRef
Eugene Leviant [Mon, 31 Oct 2016 11:03:01 +0000 (11:03 +0000)]
Add getOffset to ELFSectionRef

Differential revision: https://reviews.llvm.org/D26074

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285558 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[AVX-512] Add missing patterns for selecting masked vector extracts that started...
Craig Topper [Mon, 31 Oct 2016 05:55:57 +0000 (05:55 +0000)]
[AVX-512] Add missing patterns for selecting masked vector extracts that started from shuffles.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285546 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMake a test case more rigorous; NFC
Sanjoy Das [Mon, 31 Oct 2016 03:32:45 +0000 (03:32 +0000)]
Make a test case more rigorous; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285536 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[SCEV] Try to order n-ary expressions in CompareValueComplexity
Sanjoy Das [Mon, 31 Oct 2016 03:32:43 +0000 (03:32 +0000)]
[SCEV] Try to order n-ary expressions in CompareValueComplexity

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285535 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[SCEV] Reduce boilerplate in unit tests
Sanjoy Das [Mon, 31 Oct 2016 03:32:39 +0000 (03:32 +0000)]
[SCEV] Reduce boilerplate in unit tests

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285534 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[SCEV] In CompareValueComplexity, order global values by their name
Sanjoy Das [Sun, 30 Oct 2016 23:52:56 +0000 (23:52 +0000)]
[SCEV] In CompareValueComplexity, order global values by their name

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285529 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[SCEV] Use auto for consistency with an upcoming change; NFC
Sanjoy Das [Sun, 30 Oct 2016 23:52:53 +0000 (23:52 +0000)]
[SCEV] Use auto for consistency with an upcoming change; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285528 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoClean up test a little bit; NFC
Sanjoy Das [Sun, 30 Oct 2016 23:52:50 +0000 (23:52 +0000)]
Clean up test a little bit; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285527 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[DAG] x | x --> x
Sanjay Patel [Sun, 30 Oct 2016 18:19:35 +0000 (18:19 +0000)]
[DAG] x | x --> x

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285522 91177308-0d34-0410-b5e6-96231b3b80d8