Commit Graph

63140 Commits

Author SHA1 Message Date
Johannes Doerfert 4e331dcefb [NFC] Adjust "invalid.ll.bc" tests to check for AttrKind #255 not #63
We are about to add enum attributes with AttrKind numbers >= 63. This
means we cannot use AttrKind #63 to test for an invalid attribute number
in the RAW format anymore. This patch changes the number of an invalid
attribute to #255. There is no change to the character of the tests.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365722 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-11 01:14:30 +00:00
Craig Topper 1b8408cc62 [X86] Don't convert 8 or 16 bit ADDs to LEAs on Atom in FixupLEAPass.
We use the functions that convert to three address to do the
conversion, but changing an 8 or 16 bit will cause it to create
a virtual register. This can't be done after register allocation
where this pass runs.

I've switched the pass completely to a white list of instructions
that can be converted to LEA instead of a blacklist that was
incorrect. This will avoid surprises if we enhance the three
address conversion function to include additional instructions
in the future.

Fixes PR42565.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365720 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-11 01:01:39 +00:00
Stanislav Mekhanoshin cd0b4e315f [AMDGPU] gfx908 atomic fadd and atomic pk_fadd
Differential Revision: https://reviews.llvm.org/D64435

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365717 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-11 00:10:17 +00:00
Stanislav Mekhanoshin d0af5dda89 [AMDGPU] gfx908 dot instruction support
Differential Revision: https://reviews.llvm.org/D64431

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365715 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-11 00:00:27 +00:00
Jordan Rupprecht e8dc6a1139 Revert [llvm-objcopy] Allow strip symtab from executables and DSOs
This reverts r365193 (git commit 194f16b3548bcb23a7f0fd638778ed72edd18d37)

This patch doesn't work with binaries built w/ `--emit-relocs`, e.g.

```
$ echo 'int main() { return 0; }' | clang -Wl,--emit-relocs -x c - -o foo && llvm-objcopy --strip-unneeded foo
llvm-objcopy: error: 'foo': not stripping symbol '__gmon_start__' because it is named in a relocation
```

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365712 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 23:32:44 +00:00
Sanjay Patel 4b3ebe8332 [SDAG] commute setcc operands to match a subtract
If we have:

R = sub X, Y
P = cmp Y, X

...then flipping the operands in the compare instruction can allow using a subtract that sets compare flags.

Motivated by diffs in D58875 - not sure if this changes anything there,
but this seems like a good thing independent of that.

There's a more involved version of this transform already in IR (in instcombine
although that seems misplaced to me) - see "swapMayExposeCSEOpportunities()".

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365711 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 23:23:54 +00:00
Craig Topper 1156e97f61 [X86] Add patterns with and_flag_nocf for BLSI and TBM instructions.
Fixes similar issues to r352306.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365705 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 22:44:32 +00:00
Craig Topper 4eab83a909 [X86] Add a few more TBM and BLSI test cases that show the same issue that r352306 fixed for BLSR.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365704 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 22:44:24 +00:00
Roman Lebedev 4a25084284 [NFC][InstCombine] Comb through just-added "omit mask before left-shift" tests once more
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365694 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 19:58:13 +00:00
Amara Emerson 069ef12420 [AArch64][GlobalISel] Optimize compare and branch cases with G_INTTOPTR and unknown values.
Since we have distinct types for pointers and scalars, G_INTTOPTRs can sometimes
obstruct attempts to find constant source values. These usually come about when
try to do some kind of null pointer check. Teaching getConstantVRegValWithLookThrough
about this operation allows the CBZ/CBNZ optimization to catch more cases.

This change also improves the case where we can't find a constant source at all.
Previously we would emit a cmp, cset and tbnz for that. Now we try to just emit
a cmp and conditional branch, saving an instruction.

The cumulative code size improvement of this change plus D64354 is 5.5% geomean
on arm64 CTMark -O0.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365690 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 19:21:43 +00:00
Nikola Prica 3eed20c813 Revert "[ELF] Loose a condition for relocation with a symbol"
This reverts commit 8507eca164.

Reveting due to some suspicious failurse in santizer-x86_64-linux.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365685 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 18:58:05 +00:00
Jessica Paquette eb3978de08 [GlobalISel][AArch64] Use getOpcodeDef instead of findMIFromReg
Some minor cleanup.

This function in Utils does the same thing as `findMIFromReg`. It also looks
through copies, which `findMIFromReg` didn't.

Delete `findMIFromReg` and use `getOpcodeDef` instead. This only happens in
`tryOptVectorDup` right now.

Update opt-shuffle-splat to show that we can look through the copies now, too.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365684 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 18:46:56 +00:00
Jessica Paquette 4371b72afe [GlobalISel][AArch64][NFC] Use getDefIgnoringCopies from Utils where we can
There are a few places where we walk over copies throughout
AArch64InstructionSelector.cpp. In Utils, there's a function that does exactly
this which we can use instead.

Note that the utility function works with the case where we run into a COPY
from a physical register. We've run into bugs with this a couple times, so using
it should defend us from similar future bugs.

Also update opt-fold-compare.mir to show that we still handle physical registers
properly.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365683 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 18:44:57 +00:00
Michael Berg 4456b77e04 Move three folds for FADD, FSUB and FMUL in the DAG combiner away from Unsafe to more aligned checks that reflect context
Summary: Unsafe does not map well alone for each of these three cases as it is missing NoNan context when accessed directly with clang.  I have migrated the fold guards to reflect the expectations of handing nan and zero contexts directly (NoNan, NSZ) and some tests with it.  Unsafe does include NSZ, however there is already precedent for using the target option directly to reflect that context. 

Reviewers: spatel, wristow, hfinkel, craig.topper, arsenm

Reviewed By: arsenm

Subscribers: michele.scandale, wdng, javed.absar

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365679 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 18:23:26 +00:00
Alina Sbirlea ab59093017 [LoopRotate + MemorySSA] Keep an <instruction-cloned instruction> map.
Summary:
The map kept in loop rotate is used for instruction remapping, in order
to simplify the clones of instructions. Thus, if an instruction can be
simplified, its simplified value is placed in the map, even when the
clone is added to the IR. MemorySSA in contrast needs to know about that
clone, so it can add an access for it.
To resolve this: keep a different map for MemorySSA.

Reviewers: george.burgess.iv

Subscribers: jlebar, Prazek, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365672 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 17:36:56 +00:00
Simon Pilgrim c01b099224 [X86] Regenerate tests. NFCI.
Hasn't been regenerated since the update script could merge 32/64-bit checks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365670 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 17:22:31 +00:00
Craig Topper 560cc6786c [X86] Add tests for an alternative sequence for _mm_storel_pi/_mm_storeh_pi intrinsics. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365667 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 17:11:18 +00:00
Nick Desaulniers 7cf1e3f0f2 [TargetLowering] support BlockAddress as "i" inline asm constraint
Summary:
This allows passing address of labels to inline assembly "i" input
constraints.

Fixes pr/42502.

Reviewers: ostannard

Reviewed By: ostannard

Subscribers: void, echristo, nathanchance, ostannard, javed.absar, hiraditya, llvm-commits, srhines

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365664 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 17:08:25 +00:00
Roman Lebedev 9737a7afc0 [NFC][InstCombine] Fixup some tests in just-added "omit mask before left-shift" tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365663 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 16:54:13 +00:00
Peter Collingbourne 9762d9b979 MC: AArch64: Add support for pg_hi21_nc relocation specifier.
Differential Revision: https://reviews.llvm.org/D64455

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365661 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 16:36:46 +00:00
Vedant Kumar 0edfaf6dd2 [CodeExtractor] Fix sinking of allocas with multiple bitcast uses (PR42451)
An alloca which can be sunk into the extraction region may have more
than one bitcast use. Move these uses along with the alloca to prevent
use-before-def.

Testing: check-llvm, stage2 build of clang

Fixes llvm.org/PR42451.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365660 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 16:32:20 +00:00
Matt Arsenault 2e07d5cebb GlobalISel: Legalization for G_FMINNUM/G_FMAXNUM
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365658 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 16:31:19 +00:00
Matt Arsenault a628c38932 GlobalISel: Define the full family of FP min/max instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365657 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 16:31:15 +00:00
Matt Arsenault 5cf57efaf1 AMDGPU: Serialize mode from MachineFunctionInfo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365653 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 16:09:26 +00:00
Roman Lebedev 424f2598df [NFC][InstCombine] Redundant masking before left-shift (PR42563)
alive proofs:
a,b:     https://rise4fun.com/Alive/4zsf
c,d,e,f: https://rise4fun.com/Alive/RC49

Indeed, not all of these patterns are canonical.
But since this fold will only produce a single instruction
i'm really interested in handling even uncanonical patterns.

Other than these 6 patterns, i can't think of any other
reasonable variants right now, although i'm sure they exist.

For now let's start with patterns where both shift amounts are variable,
with trivial constant "offset" between them, since i believe this is
both simplest to handle and i think this is most common.
But again, there are likely other variants where we could use
ValueTracking/ConstantRange to handle more cases.

https://bugs.llvm.org/show_bug.cgi?id=42563

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365641 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 15:08:06 +00:00
Jay Foad 75eb01ba01 [AMDGPU] Allow abs/neg source modifiers on v_cndmask_b32
Summary:
D59191 added support for these modifiers in the assembler and
disassembler. This patch just teaches instruction selection that it can
use them.

Reviewers: arsenm, tstellar

Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365640 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 14:53:47 +00:00
David Bolvansky d1678ed7a7 [InstCombine] pow(C,x) -> exp2(log2(C)*x)
Summary:
Transform
pow(C,x) 

To
exp2(log2(C)*x) 

if C > 0, C != inf, C != NaN (and C is not power of 2, since we have some fold for such case already).

log(C) is folded by the compiler and exp2 is much faster to compute than pow.

Reviewers: spatel, efriedma, evandro

Reviewed By: evandro

Subscribers: lebedev.ri, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365637 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 14:43:27 +00:00
Sanjay Patel 094a0526ac [InferFunctionAttrs] add/adjust tests for dereferenceable; NFC
Based on review comments for D64258.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365636 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 14:41:47 +00:00
Petar Avramovic a46fd53f53 [MIPS GlobalISel] Select float and double phi
Select float and double phi for MIPS32.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365627 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 13:18:13 +00:00
Petar Avramovic e27303d4ae [MIPS GlobalISel] Select float and double load and store
Select float and double load and store for MIPS32.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365626 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 12:55:21 +00:00
Nikola Prica 8507eca164 [ELF] Loose a condition for relocation with a symbol
Deleted code was introduced as a work around for a bug in the gold linker
(http://sourceware.org/PR16794). Test case that was given as a reason for
this part of code, the one on previous link, now works for the gold.
This condition is too strict and when a code is compiled with debug info
it forces generation of numerous relocations with symbol for architectures
that do not have relocation addend.

Reviewers: arsenm, espindola

Reviewed By: MaskRay

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365618 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 11:17:48 +00:00
Simon Pilgrim cf10da4c22 [X86][SSE] EltsFromConsecutiveLoads - add basic dereferenceable support
This patch checks to see if the vector element loads are based off a dereferenceable pointer that covers the entire vector width, in which case we don't need to have element loads at both extremes of the vector width - just the start (base pointer) of it.

Another step towards partial vector loads......

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365614 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 10:46:36 +00:00
Serguei Katkov b0cd2ae668 [SimpleLoopUnswitch] Don't consider unswitching switch insructions with one unique successor
Only instructions with two or more unique successors should be considered for unswitching.

Patch Author: Daniil Suchkov.

Reviewers: reames, asbirlea, skatkov
Reviewed By: skatkov
Subscribers: hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D64404


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365611 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 10:25:22 +00:00
Mikhail Maltsev 035937569b [ARM] Enable VPUSH/VPOP aliases when either MVE or VFP is present
Summary:
Use the same predicates as VSTMDB/VLDMIA since VPUSH/VPOP alias to
these.

Patch by Momchil Velikov.

Reviewers: ostannard, simon_tatham, SjoerdMeijer, samparker, t.p.northover, dmgreen

Reviewed By: dmgreen

Subscribers: javed.absar, kristof.beyls, hiraditya, dmgreen, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365604 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 08:59:17 +00:00
George Rimar b9c490a444 [test/Object/nm-trivial-object.test] - Remove 4 precompiled binaries.
This converts 5 precompiled binaries to YAMLs,
removes 4 from inputs and performs a cleanup.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365601 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 08:40:11 +00:00
Serguei Katkov a54df3d63c [SimpleLoopUnswitch] Add a test case exposing a bug
This test exposes a bug in SimpleLoopUnswitch that leads to a crash on
assert(SuccessorsCount > 1 && "Cannot unswitch a condition without multiple distinct successors!");
when SimpleLoopUnswitch considers unswitching of a loop by a switch with one successor.

Fix will be submitted soon.

Patch Author: Daniil Suchkov.

Reviewers: reames, asbirlea, skatkov
Reviewed By: skatkov
Subscribers: zzheng, llvm-commits
Differential Revision: https://reviews.llvm.org/D64403


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365600 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 08:25:48 +00:00
Tom Stellard b97830df46 AMDGPU/GlobalISel: Add support for wide loads >= 256-bits
Summary:
This adds support for the most commonly used wide load types:
<8xi32>, <16xi32>, <4xi64>, and <8xi64>

Reviewers: arsenm

Reviewed By: arsenm

Subscribers: hiraditya, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, rovka, kristof.beyls, dstuttard, tpr, t-tye, volkan, Petar.Avramovic, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365586 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-10 00:22:41 +00:00
Matt Arsenault 13b473d248 GlobalISel: Implement lower for G_FCOPYSIGN
In SelectionDAG AMDGPU treated these as legal, but this was mostly
because the bitcasts required for FP types were painful. Theoretically
the bitpattern should eventually match to bfi, so don't bother trying
to get the patterns to import.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365583 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-09 23:34:29 +00:00
Matt Arsenault 9b44e7d33a AMDGPU/GlobalISel: Fix legality for G_BUILD_VECTOR
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365575 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-09 22:48:04 +00:00
Stanislav Mekhanoshin 8c11403746 [AMDGPU] gfx908 v_pk_fmac_f16 support
Differential Revision: https://reviews.llvm.org/D64433

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365573 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-09 22:42:24 +00:00
Matt Arsenault 9ebcde18d1 GlobalISel: Combine unmerge of merge with intermediate cast
This eliminates some illegal intermediate vectors when operations are
scalarized.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365566 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-09 22:19:13 +00:00
Yuanfang Chen a7b237ffdf [llvm-objdump] Keep warning for --disassemble-functions in correct order.
relative to normal output when dumping archive files.

prepare for PR35351.

Reviewers: jhenderson, grimar, MaskRay, rupprecht

Reviewed by: MaskRay, jhenderson

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365564 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-09 21:53:33 +00:00
Stanislav Mekhanoshin bc8cb016c6 [AMDGPU] gfx908 mAI instructions, MC part
Differential Revision: https://reviews.llvm.org/D64446

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365563 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-09 21:43:09 +00:00
Peter Collingbourne 132fdde04e hwasan: Improve precision of checks using short granule tags.
A short granule is a granule of size between 1 and `TG-1` bytes. The size
of a short granule is stored at the location in shadow memory where the
granule's tag is normally stored, while the granule's actual tag is stored
in the last byte of the granule. This means that in order to verify that a
pointer tag matches a memory tag, HWASAN must check for two possibilities:

* the pointer tag is equal to the memory tag in shadow memory, or
* the shadow memory tag is actually a short granule size, the value being loaded
  is in bounds of the granule and the pointer tag is equal to the last byte of
  the granule.

Pointer tags between 1 to `TG-1` are possible and are as likely as any other
tag. This means that these tags in memory have two interpretations: the full
tag interpretation (where the pointer tag is between 1 and `TG-1` and the
last byte of the granule is ordinary data) and the short tag interpretation
(where the pointer tag is stored in the granule).

When HWASAN detects an error near a memory tag between 1 and `TG-1`, it
will show both the memory tag and the last byte of the granule. Currently,
it is up to the user to disambiguate the two possibilities.

Because this functionality obsoletes the right aligned heap feature of
the HWASAN memory allocator (and because we can no longer easily test
it), the feature is removed.

Also update the documentation to cover both short granule tags and
outlined checks.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365551 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-09 20:22:36 +00:00
Craig Topper d2078b8db6 [X86][AMDGPU][DAGCombiner] Move call to allowsMemoryAccess into isLoadBitCastBeneficial/isStoreBitCastBeneficial to allow X86 to bypass it
Basically the problem is that X86 doesn't set the Fast flag from
allowsMemoryAccess on certain CPUs due to slow unaligned memory
subtarget features. This prevents bitcasts from being folded into
loads and stores. But all vector loads and stores of the same width
are the same cost on X86.

This patch merges the allowsMemoryAccess call into isLoadBitCastBeneficial to allow X86 to skip it.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365549 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-09 19:55:28 +00:00
Stanislav Mekhanoshin 8a114cf5c5 [AMDGPU] gfx908 register file changes
Differential Revision: https://reviews.llvm.org/D64438

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365546 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-09 19:41:51 +00:00
Philip Reames 716786c549 [PoisonCheker] Support for out of bounds operands on shifts + insert/extractelement
These are sources of poison which don't come from flags, but are clearly documented in the LangRef.  Left off support for scalable vectors for the moment, but should be easy to add if anyone is interested.  



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365543 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-09 19:26:12 +00:00
Sean Fertile f9d2575fbe Boilerplate for producing XCOFF object files from the PowerPC backend.
Stubs out a number of the classes needed to produce a new object file format
(XCOFF) for the powerpc-aix target. For testing input is an empty module which
produces an object file with just a file header.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365541 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-09 19:21:01 +00:00
Philip Reames b82d90f0e0 [PoisonChecking] Add validation rules for "exact" on sdiv/udiv
As directly stated in the LangRef, no ambiguity here...



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365538 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-09 18:56:41 +00:00
Bob Haarman e025bc2d09 [ThinLTO] only emit used or referenced CFI records to index
Summary: We emit CFI_FUNCTION_DEFS and CFI_FUNCTION_DECLS to
distributed ThinLTO indices to implement indirect function call
checking.  This change causes us to only emit entries for functions
that are either defined or used by the module we're writing the index
for (instead of all functions in the combined index), which can make
the indices substantially smaller.

Fixes PR42378.

Reviewers: pcc, vitalybuka, eugenis

Subscribers: mehdi_amini, hiraditya, dexonsmith, arphaman, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@365537 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-09 18:50:55 +00:00