Commit Graph

162275 Commits

Author SHA1 Message Date
Tim Renouf
fccceddef3 [CodeGen] Fixed unreachable with -print-machineinstrs and custom pseudo source value
Summary:
Rev 327580 "[CodeGen] Use MIR syntax for MachineMemOperand printing"
broke -print-machineinstrs for us on AMDGPU, because we have custom
pseudo source values, and MIR serialization does not implement that.

This commit at least restores the functionality of -print-machineinstrs,
even if it does not properly implement the missing MIR serialization
functionality.

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

Change-Id: I44961c0b90bf6d48c01484ed7a4e466fd300db66

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328668 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 21:14:04 +00:00
Sterling Augustine
10478ee1f3 Initialize variable added in r328617.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328667 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 21:11:57 +00:00
Graydon Hoare
531edfd3b9 [YAML] Remove unit test of multibyte non-printable escaping that uses C++11 escapes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328665 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 20:46:26 +00:00
Simon Pilgrim
1b35c9a0d8 [X86] Add WriteFMOVMSK/WriteVecMOVMSK/WriteMMXMOVMSK scheduler classes
Currently MOVMSK instructions use the WriteVecLogic class, which is a very poor choice given that MOVMSK involves a SSE->GPR transfer.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328664 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 20:38:54 +00:00
Wolfgang Pieb
3c8a7c30cc [DWARF][DWARF v5]: Adding support for dumping DW_RLE_offset_pair and DW_RLE_base_address
Reviewers: dblakie, aprantl

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328662 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 20:27:36 +00:00
Graydon Hoare
86d0c61b6f [YAML] Escape non-printable multibyte UTF8 in Output::scalarString.
The existing YAML Output::scalarString code path includes a partial and
incorrect implementation of YAML escaping logic. In particular, the logic put
in place in rL321283 escapes non-printable bytes only if they are not part of a
multibyte UTF8 sequence; implicitly this means that all multibyte UTF8
sequences -- printable and non -- are passed through verbatim.

The simplest solution to this is to direct the Output::scalarString method to
use the standalone yaml::escape function, and this _almost_ works, except that
the existing code in that function _over_ escapes: any multibyte UTF8 sequence
is escaped, even printable ones. While this is permitted for YAML, it is also
more aggressive (and hard to read for non-English locales) than necessary,
and the entire point of rL321283 was to back off such aggressive over-escaping.

So in this change, I have both redirected Output::scalarString to use
yaml::escape _and_ modified yaml::escape to optionally restrict its escaping to
non-printables. This preserves behaviour of any existing clients while giving
them a path to more moderate escaping should they desire.

Reviewers: JDevlieghere, thegameg, MatzeB, vladimir.plyashkun

Reviewed By: thegameg

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328661 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 19:52:45 +00:00
Xin Tong
10b8d1571c 80-line wrap. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328660 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 19:43:02 +00:00
Matt Arsenault
a2f8776c07 AMDGPU: Fix not preserving CSR VGPR if used for SGPR spills
Before this was not done if the function had no calls in it. This
is still a possible issue with any callable function, regardless
of calls present.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328659 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 19:42:55 +00:00
Matt Arsenault
afaac4ad30 AMDGPU: Set natural stack alignment in DataLayout
Only 4 byte alignment is ever useful, so increasing anything
beyond this may require realigning the stack.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328656 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 19:26:40 +00:00
Fangrui Song
117b671707 [DWARF] Simplify DWARFAddressRange::contains
This transform is valid because the ranges have been validated (LowPC <= HighPC).

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328655 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 19:05:02 +00:00
Rong Xu
25956d8d3c [PGO] Fix branch probability remarks assert
Fixed counter/weight overflow that leads to an assertion. Also fixed the help
string for pgo-emit-branch-prob option.

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328653 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 18:55:56 +00:00
Matt Arsenault
bf82806c2e AMDGPU: Fix crash when MachinePointerInfo invalid
The combine on a select of a load only triggers for
addrspace 0, and discards the MachinePointerInfo. The
conservative default needs to be used for this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328652 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 18:39:45 +00:00
Matt Arsenault
a833b4252d AMDGPU: Fix register name format in tests
These were changed to match the asm output name a long time ago,
although I think the old tablegenerated names still work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328651 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 18:39:42 +00:00
Matt Arsenault
aaf7156232 AMDGPU: Fix FP restore from being reordered with stack ops
In a function, s5 is used as the frame base SGPR. If a function
is calling another function, during the call sequence
it is copied to a preserved SGPR and restored.

Before it was possible for the scheduler to move stack operations
before the restore of s5, since there's nothing to associate
a frame index access with the restore.

Add an implicit use of s5 to the adjcallstack pseudo which ends
the call sequence to preven this from happening. I'm not 100%
satisfied with this solution, but I'm not sure what else would be
better.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328650 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 18:38:51 +00:00
Krzysztof Parzyszek
a9d6d4cb72 [Hexagon] Implement TTI::shouldMaximizeVectorBandwidth
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328648 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 18:10:47 +00:00
Stefan Pintilie
9470442c90 [Power9] Fix the resource list for the COPY instruction.
The COPY instruction was listed as a 4 cycle instruction.
It is now listed correctly as a 2 cycle ALU instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328647 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 17:51:53 +00:00
Pirama Arumuga Nainar
104b129474 Remap values in PromotedFloats
Summary: When a node is about to be erased from ReplacedValues, we should also remap its corresponding values in PromotedFloats.

Patch by Yan Luo (Yan.Luo2@synopsys.com)

Reviewers: pirama

Reviewed By: pirama

Subscribers: lebedev.ri, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328644 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 17:42:36 +00:00
Artur Pilipenko
22c5f7cb54 Fix a reoccuring typo in load-combine tests
%tmp = bitcast i32* %arg to i8*
   %tmp1 = getelementptr inbounds i8, i8* %tmp, i32 0
-  %tmp2 = load i8, i8* %tmp, align 1
+  %tmp2 = load i8, i8* %tmp1, align 1

This doesn't change the semantics of the tests but makes use of %tmp1 which was originally intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328642 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 17:33:50 +00:00
Krzysztof Parzyszek
24feab8919 [Hexagon] Rudimentary support for auto-vectorization for HVX
This implements a set of TTI functions that the loop vectorizer uses.
The only purpose of this is to enable testing. Auto-vectorization is
disabled by default, enabled by -hexagon-autohvx.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328639 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 17:07:52 +00:00
Rafael Auler
1560bf0343 [AArch64] Decorate AArch64 instrs with OPERAND_PCREL
Summary:
This is a canonical way to teach objdump to print the target
symbols for branches when disassembling AArch64 code.

Reviewers: evandro, t.p.northover, espindola

Reviewed By: t.p.northover

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328638 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 16:58:01 +00:00
Fedor Sergeev
558f76fb1d [NFC] OptPassGate extracted from OptBisect
Summary:
This is an NFC refactoring of the OptBisect class to split it into an optional pass gate interface used by LLVMContext and the Optional Pass Bisector (OptBisect) used for debugging of optional passes.

This refactoring is needed for D44464, which introduces setOptPassGate() method to allow implementations other than OptBisect.

Patch by Yevgeny Rouban.

Reviewers: andrew.w.kaylor, fedor.sergeev, vsk, dberlin, Eugene.Zelenko, reames, skatkov
Reviewed By: fedor.sergeev
Differential Revision: https://reviews.llvm.org/D44821

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328637 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 16:57:20 +00:00
Krzysztof Parzyszek
9273bb3570 Use .set instead of = when printing assignment in assembly output
On Hexagon "x = y" is a syntax used in most instructions, and is not
treated as a directive.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328635 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 16:44:41 +00:00
Krzysztof Parzyszek
4153b00c21 [LV] Add TTI::shouldMaximizeVectorBandwidth to allow enabling it per target
The default implementation returns false and keeps the current behavior.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328632 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 16:14:11 +00:00
Andrea Di Biagio
7395f4fb58 [llvm-mca] pass the correct set of used registers in checkRAT.
We were incorrectly initializing the array of used registers in method checkRAT.
As a consequence, the number of register file stalls was misreported.

Added a test to cover this case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328629 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 15:23:41 +00:00
Simon Pilgrim
ff39c61111 [X86][Btver2] Add MMX_PMOVMSKBrr to MOVMSK scheduler class
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328620 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 12:26:12 +00:00
Strahinja Petrovic
4ec907cc28 [PowerPC] Secure PLT support
This patch supports secure PLT mode for PowerPC 32 architecture.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328617 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 11:23:53 +00:00
Alexander Richardson
e0a5279318 [MIPS] Add static_assert that all Fixups are handled in getFixupKind
Summary:
I recently added a new Fixup kind to our fork of LLVM but forgot to add
it to the table in MipsAsmBackend.cpp. With this static_assert the error
would have been caught instead of zero-initializing the array entries for
the new fixups.

Reviewers: sdardis, atanasyan

Reviewed By: atanasyan

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328616 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 10:08:12 +00:00
Max Kazantsev
56b15eb6eb [LoopUnroll][NFC] Remove redundant canPeel check
We check `canPeel` twice: when evaluating the number of iterations to be peeled
and within the method `peelLoop` that performs peeling. This method is only
executed if the calculated peel count is positive. Thus, the check in `peelLoop` can
never fail. This patch replaces this check with an assert.

Differential Revision: https://reviews.llvm.org/D44919
Reviewed By: fhahn


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328615 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 09:40:51 +00:00
Sam Parker
0ba1cd85f0 [IRCE] Enable decreasing loops of non-const bound
As a follow-up to r328480, this updates the logic for the decreasing
safety checks in a similar manner:
- CanBeMax is replaced by CannotBeMaxInLoop which queries
  isLoopEntryGuardedByCond on the maximum value.
- SumCanReachMin is replaced by isSafeDecreasingBound which includes
  some logic from parseLoopStructure and, again, has been updated to
  use isLoopEntryGuardedByCond on the given bounds.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328613 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 08:24:53 +00:00
Max Kazantsev
0048092b9c [NFC] Fix comments in getExact()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328612 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 08:13:55 +00:00
Max Kazantsev
8f8f2fa4dd [SCEV] Make exact taken count calculation more optimistic
Currently, `getExact` fails if it sees two exit counts in different blocks. There is
no solid reason to do so, given that we only calculate exact non-taken count
for exiting blocks that dominate latch. Using this fact, we can simply take min
out of all exits of all blocks to get the exact taken count.

This patch makes the calculation more optimistic with enforcing our assumption
with asserts. It allows us to calculate exact backedge taken count in trivial loops
like

  for (int i = 0; i < 100; i++) {
    if (i > 50) break;
    . . .
  }

Differential Revision: https://reviews.llvm.org/D44676
Reviewed By: fhahn


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328611 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 07:30:38 +00:00
Max Kazantsev
10568deedd [SCEV] Add one more case in computeConstantDifference
This patch teaches `computeConstantDifference` handle calculation of constant
difference between `(X + C1)` and `(X + C2)` which is `(C2 - C1)`.

Differential Revision: https://reviews.llvm.org/D43759
Reviewed By: anna


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328609 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 04:54:00 +00:00
Craig Topper
fa067e8cb8 [MachineScheduler] Add itinerary to schedcover.py. Make default work in the command line filter
Summary:
This patch adds itinerary support to the schedcover.py script. I've been trying to use this script to figure out why SSE and AVX instructions are ending up in separate tablegen scheduler classes and sometimes its because we are using different itineraries.

Rather than using None to indicate the default scheduler model, I now use the string "default". I had to hack around the sorting a little to keep "default" at the beginning. But this also makes it so you can specify "default" on the command line to just get the defaults

I also fixed the regular expression code so that the no_default wasn't evaluated twice.

Reviewers: RKSimon, atrick, jmolloy, javed.absar

Reviewed By: javed.absar

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328608 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 04:26:39 +00:00
Mircea Trofin
7348dc2750 Revert "Revert "[lit] Generalized /dev/null support on Windows.""
Summary:
This reverts commit r328596.

Checking if the arguments are strings before testing if they contain "/dev/null".

Reviewers: rnk

Reviewed By: rnk

Subscribers: delcypher, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328603 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 01:39:17 +00:00
Sanjay Patel
678a72e748 [x86] add RUN for target before roundss; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328601 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 00:32:19 +00:00
Jan Korous
771829b640 [lit] Temporarily disable shtest-timeout.py on darwin
Disabled until fixed in order to avoid random failures on green dragon.

rdar://problem/38774530

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328598 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-27 00:16:28 +00:00
Mircea Trofin
35e080b536 Revert "[lit] Generalized /dev/null support on Windows."
This reverts commit ca7fdbb974.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328596 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-26 23:59:39 +00:00
David Blaikie
22f6baa132 Add a build dependency from libMC to libDebugInfoCodeView to match the reality of header dependencies here
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328595 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-26 23:48:52 +00:00
David Blaikie
1d4a167c65 Move CVDebugRecord from CodeView to Object to fix layering
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328593 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-26 23:37:02 +00:00
Sanjay Patel
8fd84ebcf3 [x86] add tests for ftrunc; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328592 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-26 23:18:32 +00:00
Aaron Smith
2b889957ee [DebugInfoPDB] Print the method name along with the variant value
Before this change, using dumpProperties() with PDBSymbolData
would look like this:

  get_locationType: 3
  1

After this change:

  get_locationType: 3
  get_value: 1



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328590 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-26 22:53:38 +00:00
Mircea Trofin
ca7fdbb974 [lit] Generalized /dev/null support on Windows.
Generalized /dev/null remapping on Windows, and added test.

Reviewers: rnk

Reviewed By: rnk

Subscribers: amccarth, zturner, delcypher, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328589 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-26 22:41:06 +00:00
Aaron Smith
28ec98c907 [DebugInfoPDB] Add methods to get the compiland and line numbers with PDBSymbolData
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328587 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-26 22:17:12 +00:00
Aaron Smith
f975bab62f [DebugInfoPDB] Add DIA implementation of findLineNumbersByRVA
This method is used to find line numbers for PDBSymbolData
that have an invalid virtual address.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328586 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-26 22:13:22 +00:00
Aaron Smith
af0c1412d9 [DebugInfoPDB] Add DIA implementation of addressForVA and addressForRVA
These are used in finding line numbers for PDBSymbolData


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328585 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-26 22:10:02 +00:00
Simon Pilgrim
aa18302e4f Fix newlines. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328583 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-26 21:07:59 +00:00
Simon Pilgrim
b72ac7e9e8 [X86] Add WriteCRC32 scheduler class
Currently CRC32 instructions use the WriteFAdd class, this patch splits them off into their own, at the moment it is still mostly just a duplicate of WriteFAdd but it can now be tweaked on a target by target basis.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328582 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-26 21:06:14 +00:00
Rafael Espindola
f9941d3c0d Use local symbols for creating .stack-size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328581 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-26 20:40:22 +00:00
Reid Kleckner
13e4ac0111 Fix go bindings test when using goma distributed build tool
Goma[1] is a distributed build system similar to distcc and icecc
primarily used to compile Chromium. The client is open source, and
hopefully soon the server will be as well. The intended usage model is
similar to most distributed build systems: prefix gomacc onto your
compiler command line, and it transparently distributes compilation.

The go lit config wants to determine the host compiler binary, so it
needs some extra logic to avoid looking at these prefixes.

[1] https://chromium.googlesource.com/infra/goma/client/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328580 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-26 20:19:14 +00:00
Paul Robinson
c7df4e42af Use correct format specifier.
Review comment on r328235 by James Henderson.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328578 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-26 19:55:01 +00:00