platform/upstream/llvm.git
6 years agoFollow Up on [MachineVerifier][GlobalISel] NFC, Improving MO printing and refactoring...
Roman Tereshin [Mon, 7 May 2018 23:14:00 +0000 (23:14 +0000)]
Follow Up on [MachineVerifier][GlobalISel] NFC, Improving MO printing and refactoring visitMachineInstrBefore

Fixing accidentally broken CodeGen/X86/verifier-generic-types-1.mir test

llvm-svn: 331695

6 years ago[MachineVerifier][GlobalISel] Checking that generic instrs have LLTs on all vregs
Roman Tereshin [Mon, 7 May 2018 22:31:47 +0000 (22:31 +0000)]
[MachineVerifier][GlobalISel] Checking that generic instrs have LLTs on all vregs

Every generic machine instruction must have generic virtual registers
only, that is, have a low-level type attached to each operand.

Previously MachineVerifier would catch a type missing on an operand
only if the previous operand for the the same type index exists and
have a type attached to it and it will report it as a type mismatch.
This is incosistent behaviour and a misleading error message.

This commit makes sure MachineVerifier explicitly checks that the
types are there for every operand and if not provides a
straightforward error message.

Reviewers: qcolombet t.p.northover bogner ab

Reviewed By: qcolombet

Subscribers: rovka, kristof.beyls, llvm-commits

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

llvm-svn: 331694

6 years ago[MachineVerifier][GlobalISel] NFC, Improving MO printing and refactoring visitMachine...
Roman Tereshin [Mon, 7 May 2018 22:31:12 +0000 (22:31 +0000)]
[MachineVerifier][GlobalISel] NFC, Improving MO printing and refactoring visitMachineInstrBefore

This is an NFC pre-commit for the following "Checking that generic
instrs have LLTs on all vregs" commit.

This overloads MachineOperand::print to make it possible to print LLTs
with standalone machine operands.

This also overloads MachineVerifier::print(...MachineOperand...) with
an optional LLT using the newly introduced MachineOperand::print
variant; no actual calls added.

This also refactors MachineVerifier::visitMachineInstrBefore in the
parts dealing with all generic instructions (checking Selected
property, LLTs, and phys regs).

llvm-svn: 331693

6 years agoPR37352: mangle numbering for decomposition declarations.
Richard Smith [Mon, 7 May 2018 22:23:38 +0000 (22:23 +0000)]
PR37352: mangle numbering for decomposition declarations.

In order to match our mangling scheme, use a different set of numbers for
decomposition declarations, and consider all binding names when forming the
numbering. This does not yet affect any mangled names we produce, because
local decomposition declarations can't yet have linkage, but a C++ standard
proposal to change that is currently being processed.

llvm-svn: 331692

6 years agoAMDGPU/GlobalISel: Don't try to lower hull shaders
Tom Stellard [Mon, 7 May 2018 22:17:54 +0000 (22:17 +0000)]
AMDGPU/GlobalISel: Don't try to lower hull shaders

Summary: The AMDGPU_HS calling convention is not supported yet.

Reviewers: arsenm, nhaehnle

Subscribers: kzhuravl, wdng, yaxunl, rovka, kristof.beyls, dstuttard, tpr, t-tye, llvm-commits

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

llvm-svn: 331691

6 years agoDo not call exit() directly from lld.
Rui Ueyama [Mon, 7 May 2018 22:11:34 +0000 (22:11 +0000)]
Do not call exit() directly from lld.

Our promise is that as long as there's no fatal error (i.e. broken
file is given to the linker), our main function returns to the caller.
So we can't use exit() in the regular code path.

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

llvm-svn: 331690

6 years agoRefactor ThinLTO-related code in BitcodeCompiler.cpp. NFC.
Rui Ueyama [Mon, 7 May 2018 22:11:24 +0000 (22:11 +0000)]
Refactor ThinLTO-related code in BitcodeCompiler.cpp. NFC.

Summary: Refactor ThinLTO-related code in BitcodeCompiler.cpp. NFC.

Reviewers: rdhindsa, espindola

Subscribers: emaste, inglorion, arichardson, llvm-commits, eraman

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

llvm-svn: 331689

6 years ago[NFC] Move 2 variable initialization from Ctor to member initializers.
Erich Keane [Mon, 7 May 2018 22:01:06 +0000 (22:01 +0000)]
[NFC] Move 2 variable initialization from Ctor to member initializers.

In response to dblaikie's suggestion on r331536, replace the two enum
typed variable initializers in the constructor with member initializers.

llvm-svn: 331688

6 years ago[tools] Add missing test dependency
Alexander Shaposhnikov [Mon, 7 May 2018 22:00:59 +0000 (22:00 +0000)]
[tools] Add missing test dependency

Caught by the build bots.

llvm-svn: 331687

6 years ago[lit, lldbsuite] Fixes for several tests LLDB tests for Python 3 or Windows
Stella Stamenova [Mon, 7 May 2018 21:57:00 +0000 (21:57 +0000)]
[lit, lldbsuite] Fixes for several tests LLDB tests for Python 3 or Windows

Summary:
In decorators.py, when opening streams, open them in text mode. In Py3, if they are not opened in text mode, the data is also expected to be binary, but we always use text data.
In TestLinuxCore, skip the tests that are not applicable on Windows
In the python api main.c, update the code to be compilable on Windows

Reviewers: asmith, zturner

Reviewed By: zturner

Subscribers: zturner

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

llvm-svn: 331686

6 years ago[DAGCombiner] Masked merge: enhance handling of 'andn' with immediates
Roman Lebedev [Mon, 7 May 2018 21:52:22 +0000 (21:52 +0000)]
[DAGCombiner] Masked merge: enhance handling of 'andn' with immediates

Summary:
Split off from D46031.

The previous patch, D46493, completely disabled unfolding in case of immediates.
But we can do better:
{F6120274} {F6120277}

https://rise4fun.com/Alive/xJS

Reviewers: spatel, craig.topper

Reviewed By: spatel

Subscribers: andreadb, llvm-commits

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

llvm-svn: 331685

6 years ago[DagCombiner] Not all 'andn''s work with immediates.
Roman Lebedev [Mon, 7 May 2018 21:52:11 +0000 (21:52 +0000)]
[DagCombiner] Not all 'andn''s work with immediates.

Summary:
Split off from D46031.

In masked merge case, this degrades IPC by decreasing instruction count.
{F6108777}
The next patch should be able to recover and improve this.

This also affects the transform @spatel have added in D27489 / rL289738,
and the test coverage for X86 was missing.
But after i have added it, and looked at the changes in MCA, i'm somewhat confused.
{F6093591} {F6093592} {F6093593}
I'd say this regression is an improvement, since `IPC` increased in that case?

Reviewers: spatel, craig.topper

Reviewed By: spatel

Subscribers: andreadb, llvm-commits, spatel

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

llvm-svn: 331684

6 years ago[X86] Use target feature defines in tests instead of defining our own flag on the...
Craig Topper [Mon, 7 May 2018 21:47:13 +0000 (21:47 +0000)]
[X86] Use target feature defines in tests instead of defining our own flag on the command line. NFCI

llvm-svn: 331683

6 years ago[X86] Make _mm256_gf2p8mul_epi8 require avx features since its 256 bits.
Craig Topper [Mon, 7 May 2018 21:47:11 +0000 (21:47 +0000)]
[X86] Make _mm256_gf2p8mul_epi8 require avx features since its 256 bits.

Without this we throw an error on the header file instead of the user code when the right features aren't enabled in clang.

Rename the other DEFAULT_FN_ATTRS defines to _Z for 512-bit since I used _Y for this case.

llvm-svn: 331682

6 years agoRelax a FileCheck pattern to make it pass on Windows.
Peter Collingbourne [Mon, 7 May 2018 21:40:53 +0000 (21:40 +0000)]
Relax a FileCheck pattern to make it pass on Windows.

Should fix Windows bot failure:
http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/16956

llvm-svn: 331681

6 years agoRemove explicit setting of the CFI jumptable section name, it does not appear
Dmitry Mikulin [Mon, 7 May 2018 21:30:15 +0000 (21:30 +0000)]
Remove explicit setting of the CFI jumptable section name, it does not appear
to be needed: jump table sections are created with .cfi.jumptable suffix. With
this change each jump table is placed in a separate section, which allows the
linker to re-order them.

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

llvm-svn: 331680

6 years agoTest Commit: fix a comment to be grammatically correct
Stella Stamenova [Mon, 7 May 2018 21:19:14 +0000 (21:19 +0000)]
Test Commit: fix a comment to be grammatically correct

llvm-svn: 331679

6 years ago[llvm-mca][x86] Remove addsubpd from SSE2 tests
Simon Pilgrim [Mon, 7 May 2018 21:10:48 +0000 (21:10 +0000)]
[llvm-mca][x86] Remove addsubpd from SSE2 tests

llvm-svn: 331678

6 years ago[C++2a] Implement operator<=> CodeGen and ExprConstant
Eric Fiselier [Mon, 7 May 2018 21:07:10 +0000 (21:07 +0000)]
[C++2a] Implement operator<=> CodeGen and ExprConstant

Summary:
This patch tackles long hanging fruit for the builtin operator<=> expressions. It is currently needs some cleanup before landing, but I want to get some initial feedback.

The main changes are:

* Lookup, build, and store the required standard library types and expressions in `ASTContext`. By storing them in ASTContext we don't need to store (and duplicate) the required expressions in the BinaryOperator AST nodes.

* Implement [expr.spaceship] checking, including diagnosing narrowing conversions.

* Implement `ExprConstant` for builtin spaceship operators.

* Implement builitin operator<=> support in `CodeGenAgg`. Initially I emitted the required comparisons using `ScalarExprEmitter::VisitBinaryOperator`, but this caused the operand expressions to be emitted once for every required cmp.

* Implement [builtin.over] with modifications to support the intent of P0946R0. See the note on `BuiltinOperatorOverloadBuilder::addThreeWayArithmeticOverloads` for more information about the workaround.

Reviewers: rsmith, aaron.ballman, majnemer, rnk, compnerd, rjmccall

Reviewed By: rjmccall

Subscribers: rjmccall, rsmith, aaron.ballman, junbuml, mgorny, cfe-commits

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

llvm-svn: 331677

6 years ago[tools] Adjust the lit config for llvm-strip
Alexander Shaposhnikov [Mon, 7 May 2018 21:07:01 +0000 (21:07 +0000)]
[tools] Adjust the lit config for llvm-strip

Caught by the build bots.

llvm-svn: 331676

6 years ago[llvm-rc] Fix build: missing 'override'.
Roman Lebedev [Mon, 7 May 2018 21:06:53 +0000 (21:06 +0000)]
[llvm-rc] Fix build: missing 'override'.

llvm-svn: 331675

6 years ago[CFI] Force LLVM to die if the implicit blacklist files cannot be found.
Peter Collingbourne [Mon, 7 May 2018 20:54:05 +0000 (20:54 +0000)]
[CFI] Force LLVM to die if the implicit blacklist files cannot be found.

Currently LLVM CFI tries to use an implicit blacklist file, currently
in /usr/lib64/clang/<version>/share. If the file is not there, LLVM
happily continues, which causes CFI to add checks to files/functions
that are known to fail, generating binaries that fail. This CL causes
LLVM to die (I hope) if it can't find these implicit blacklist files.

Patch by Caroline Tice!

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

llvm-svn: 331674

6 years agoCorrect warning on Float->Integer conversions.
Erich Keane [Mon, 7 May 2018 20:52:56 +0000 (20:52 +0000)]
Correct warning on Float->Integer conversions.

As identified and briefly discussed here:
https://bugs.llvm.org/show_bug.cgi?id=37305

Converting a floating point number to an integer type when
the integral part is out of the range of the integer type is
undefined behavior in C. Additionally, CodeGen emits an undef
in this situation.

HOWEVER, we've been giving a warning that says that the value is
changed. This patch corrects the warning to list that it is actually
undefined behavior.

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

llvm-svn: 331673

6 years ago[X86] Split WriteFAdd/WriteFCmp/WriteFMul schedule classes
Simon Pilgrim [Mon, 7 May 2018 20:52:53 +0000 (20:52 +0000)]
[X86] Split WriteFAdd/WriteFCmp/WriteFMul schedule classes

Split to support single/double for scalar, XMM and YMM/ZMM instructions - removing InstrRW overrides for these instructions.

Fixes Atom ADDSUBPD instruction and reclassifies VFPCLASS as WriteFCmp which is closer in behaviour.

llvm-svn: 331672

6 years agoAdd test to ensure lld writes linked files to linked objects file for ThinLTO Indexin...
Rumeet Dhindsa [Mon, 7 May 2018 20:28:02 +0000 (20:28 +0000)]
Add test to ensure lld writes linked files to linked objects file for ThinLTO Indexing Only option.

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

llvm-svn: 331671

6 years ago[llvm-rc] Implement the BITMAP resource type
Martin Storsjo [Mon, 7 May 2018 20:27:37 +0000 (20:27 +0000)]
[llvm-rc] Implement the BITMAP resource type

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

llvm-svn: 331670

6 years ago[llvm-rc] Allow optional commas between the string table index and value
Martin Storsjo [Mon, 7 May 2018 20:27:28 +0000 (20:27 +0000)]
[llvm-rc] Allow optional commas between the string table index and value

This form is even used in one of the examples at
https://msdn.microsoft.com/en-us/library/windows/desktop/aa381050(v=vs.85).aspx.

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

llvm-svn: 331669

6 years ago[llvm-rc] Exclude padding from sizes in versioninfo resources
Martin Storsjo [Mon, 7 May 2018 20:27:23 +0000 (20:27 +0000)]
[llvm-rc] Exclude padding from sizes in versioninfo resources

Normally when writing something that requires padding, we first
measure the length of the written payload data, then write
padding if necessary.

For a recursive structure like versioninfo, this means that the
padding is excluded from the size of the inner element, but
included in the size of the enclosing block.

Rc.exe excludes the final padding (but not the padding of earlier
children) from all levels of the hierarchy.

To achieve this, don't pad after each block or value, but only
before starting the next one. We still pad after completing the
toplevel versioninfo resource, so this won't affect other resource
types.

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

llvm-svn: 331668

6 years ago[llvm-rc] Fix alphabetical order of cases. NFC.
Martin Storsjo [Mon, 7 May 2018 20:27:15 +0000 (20:27 +0000)]
[llvm-rc] Fix alphabetical order of cases. NFC.

llvm-svn: 331667

6 years ago[Driver] Use -fuse-line-directives by default in MSVC mode
Martin Storsjo [Mon, 7 May 2018 20:26:09 +0000 (20:26 +0000)]
[Driver] Use -fuse-line-directives by default in MSVC mode

Don't use the GNU extension form of line markers in MSVC mode.

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

llvm-svn: 331666

6 years ago[SelectionDAG] Transfer DbgValues when casts are optimized in SelectionDAG::getNode
Aaron Smith [Mon, 7 May 2018 20:15:50 +0000 (20:15 +0000)]
[SelectionDAG] Transfer DbgValues when casts are optimized in SelectionDAG::getNode

Summary:
getNode optimizes (ext (trunc x)) to x and the dbgvalue node on trunc is lost. The fix calls transferDbgValues to add the dbgvalue to x.

Add DebugInfo/AArch64/dbg-value-i16.ll

Patch by Sejong Oh!

Reviewers: aprantl, javed.absar, llvm-commits, vsk

Reviewed By: aprantl, vsk

Subscribers: kristof.beyls, JDevlieghere, llvm-commits

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

llvm-svn: 331665

6 years ago[WebAssembly] Ensure all .debug_XXX section has proper symbol names
Sam Clegg [Mon, 7 May 2018 19:40:50 +0000 (19:40 +0000)]
[WebAssembly] Ensure all .debug_XXX section has proper symbol names

Updated wasm section symbols names to match section name, and ensure all
referenced sections will have a symbol (per DWARF spec v3, Figure 43)

Patch by Yury Delendik!

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

llvm-svn: 331664

6 years ago[tools] Introduce llvm-strip
Alexander Shaposhnikov [Mon, 7 May 2018 19:32:09 +0000 (19:32 +0000)]
[tools] Introduce llvm-strip

llvm-strip is supposed to be a drop-in replacement for binutils strip.
To start the ball rolling this diff adds the initial bits for llvm-strip,
more features will be added incrementally over time.

Test plan: make check-all

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

llvm-svn: 331663

6 years ago[sanitizer] s/TestOnlyInit/Init for the allocator ByteMap (NFC)
Kostya Kortchinsky [Mon, 7 May 2018 19:02:19 +0000 (19:02 +0000)]
[sanitizer] s/TestOnlyInit/Init for the allocator ByteMap (NFC)

Summary:
The `TestOnlyInit` function of `{Flat,TwoLevel}ByteMap` seems to be a misnomer
since the function is used outside of tests as well, namely in
`SizeClassAllocator32::Init`. Rename it to `Init` and update the callers.

Reviewers: alekseyshl, vitalybuka

Reviewed By: vitalybuka

Subscribers: kubamracek, delcypher, #sanitizers, llvm-commits

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

llvm-svn: 331662

6 years agoStatus updates for Rapperswil
Marshall Clow [Mon, 7 May 2018 18:59:04 +0000 (18:59 +0000)]
Status updates for Rapperswil

llvm-svn: 331661

6 years ago[llvm-mca] Avoid exposing index values in the MCA interfaces.
Matt Davis [Mon, 7 May 2018 18:29:15 +0000 (18:29 +0000)]
[llvm-mca] Avoid exposing index values in the MCA interfaces.

Summary:
This patch eliminates many places where we originally needed to  pass index
values to represent an instruction.  The index is still used as a key, in various parts of
MCA.  I'm  not comfortable eliminating the index just yet.    By burying the index in
the instruction, we can avoid exposing that value in many places.

Eventually, we should consider removing the Instructions list in the Backend
all together,   it's only used to hold and reclaim the memory for the allocated
Instruction instances.  Instead we could pass around a smart pointer.  But that's
a separate discussion/patch.

Reviewers: andreadb, courbet, RKSimon

Reviewed By: andreadb

Subscribers: javed.absar, tschuett, gbedwell, llvm-commits

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

llvm-svn: 331660

6 years ago[X86][AVX2] Tag VPMOVSX/VPMOVZX ymm instructions as WriteShuffle256
Simon Pilgrim [Mon, 7 May 2018 18:25:19 +0000 (18:25 +0000)]
[X86][AVX2] Tag VPMOVSX/VPMOVZX ymm instructions as WriteShuffle256

These are more like cross-lane shuffles than regular shuffles - we already do this for AVX512 equivalents.

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

llvm-svn: 331659

6 years agoDo not pass Config members to simplify function signature. NFC.
Rui Ueyama [Mon, 7 May 2018 17:59:52 +0000 (17:59 +0000)]
Do not pass Config members to simplify function signature. NFC.

llvm-svn: 331658

6 years agoParse --thinlto-prefix-replace early so that we don't need to parse it later. NFC.
Rui Ueyama [Mon, 7 May 2018 17:59:43 +0000 (17:59 +0000)]
Parse --thinlto-prefix-replace early so that we don't need to parse it later. NFC.

llvm-svn: 331657

6 years agoUse StringRef instead of `const std::string &`. NFC.
Rui Ueyama [Mon, 7 May 2018 17:59:34 +0000 (17:59 +0000)]
Use StringRef instead of `const std::string &`. NFC.

llvm-svn: 331656

6 years agoRefactor BitcodeCompiler::createLTO. NFC.
Rui Ueyama [Mon, 7 May 2018 17:46:28 +0000 (17:46 +0000)]
Refactor BitcodeCompiler::createLTO. NFC.

llvm-svn: 331655

6 years ago[OPENMP, NVPTX] Small test fix, NFC.
Alexey Bataev [Mon, 7 May 2018 17:38:13 +0000 (17:38 +0000)]
[OPENMP, NVPTX] Small test fix, NFC.

llvm-svn: 331654

6 years ago[Hexagon] Move clamping of extended operands directly to MC code emitter
Krzysztof Parzyszek [Mon, 7 May 2018 17:34:23 +0000 (17:34 +0000)]
[Hexagon] Move clamping of extended operands directly to MC code emitter

llvm-svn: 331653

6 years ago[OPENMP, NVPTX] Codegen for critical construct.
Alexey Bataev [Mon, 7 May 2018 17:23:05 +0000 (17:23 +0000)]
[OPENMP, NVPTX] Codegen for critical construct.

Added correct codegen for the critical construct on NVPTX devices.

llvm-svn: 331652

6 years agoFix explicit template parameter reporting for narrowing conversions
Erich Keane [Mon, 7 May 2018 17:05:20 +0000 (17:05 +0000)]
Fix explicit template parameter reporting for narrowing conversions

I found that explicit template parameters that caused a
narrowing integer conversion resulted in the incorrect parameter
being mentioned in the note (see test attached). This is because
the argument checking code doesn't check to see if it caused
SFINAE errors when checking the arguments, so instead of giving
up on the first error, it continues through the list. This
makes the error reporting pick up the last template param every time.

This patch checks these parameters on each argument and gives up
if there is an error. The result is that only the required amount
of arguments are checked, and that the 'Converted' array contains
only the successful arguments before the first failure, as the
calls seem to all expect.

llvm-svn: 331651

6 years ago[DAGCombine][NFC] Masked merge unfolding: comment: some tests are non-canonical
Roman Lebedev [Mon, 7 May 2018 16:42:47 +0000 (16:42 +0000)]
[DAGCombine][NFC] Masked merge unfolding: comment: some tests are non-canonical

As requested in https://reviews.llvm.org/D46494#inline-407282

llvm-svn: 331650

6 years ago[asan] Port asan_malloc_linux.cc to RTEMS
Walter Lee [Mon, 7 May 2018 16:39:09 +0000 (16:39 +0000)]
[asan] Port asan_malloc_linux.cc to RTEMS

We reuse the allocation interceptors as is.  RTEMS doesn't support
dlsyms.  However, it needs to handle memory allocation requests before
the ASan run-time has been initialized.  We use the dlsym alloc pool
for this purpose, and we increase its size to 4k to support this
usage.

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

llvm-svn: 331649

6 years ago[sanitizer] On RTEMS, avoid recursion when reporting Mmap failure
Walter Lee [Mon, 7 May 2018 16:38:45 +0000 (16:38 +0000)]
[sanitizer] On RTEMS, avoid recursion when reporting Mmap failure

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

llvm-svn: 331648

6 years ago[asan] Set flags appropriately for RTEMS
Walter Lee [Mon, 7 May 2018 16:38:20 +0000 (16:38 +0000)]
[asan] Set flags appropriately for RTEMS

Disable both unmap_shadow_on_exit and protect_shadow_gap.

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

llvm-svn: 331647

6 years ago[sanitizer] Add definitions for Myriad RTEMS platform
Walter Lee [Mon, 7 May 2018 16:37:55 +0000 (16:37 +0000)]
[sanitizer] Add definitions for Myriad RTEMS platform

Introduce two definitions to be used by the Myriad RTEMS port of the
ASan run-time: SANITIZER_MYRIAD2 for the platform and SANITIZER_RTEMS
for the OS.  We expect to use SANITIZER_MYRIAD2 to guard the portion
of the port corresponding to Myriad's unique memory map, and
SANITIZER_RTEMS for most of the rest.

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

llvm-svn: 331646

6 years ago[X86][Znver1] Remove WriteFMul/WriteFRcp InstRW overrides/aliases.
Simon Pilgrim [Mon, 7 May 2018 16:34:26 +0000 (16:34 +0000)]
[X86][Znver1] Remove WriteFMul/WriteFRcp InstRW overrides/aliases.

Fixes x87 schedules to more closely match Agner - AMD doesn't tend to "special case" x87 instructions as much as Intel.

llvm-svn: 331645

6 years ago[docs] Fix typos in the Clang User's Manual.
Joel Galenson [Mon, 7 May 2018 16:23:46 +0000 (16:23 +0000)]
[docs] Fix typos in the Clang User's Manual.

llvm-svn: 331644

6 years ago[X86] Split WriteFDiv schedule classes to support single/double scalar, XMM and YMM...
Simon Pilgrim [Mon, 7 May 2018 16:15:46 +0000 (16:15 +0000)]
[X86] Split WriteFDiv schedule classes to support single/double scalar, XMM and YMM/ZMM instructions.

This removes all InstrRW overrides for these instructions - some x87 overrides remain but most use default (and realistic) values.

llvm-svn: 331643

6 years ago[OPENMP, NVPTX] Added support for L2 parallelism.
Alexey Bataev [Mon, 7 May 2018 14:50:05 +0000 (14:50 +0000)]
[OPENMP, NVPTX] Added support for L2 parallelism.

Added initial codegen for level 2, 3 etc. parallelism. Currently, all
the second, the third etc. parallel regions will run sequentially.

llvm-svn: 331642

6 years ago[AMDGPU][Waitcnt] Remove the old waitcnt pass
Mark Searles [Mon, 7 May 2018 14:43:28 +0000 (14:43 +0000)]
[AMDGPU][Waitcnt] Remove the old waitcnt pass

Remove the old waitcnt pass ( si-insert-waits ), which is no longer maintained
and getting crufty

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

llvm-svn: 331641

6 years ago[mips] Improve handling of -fno-[pic/PIC] option
Aleksandar Beserminji [Mon, 7 May 2018 14:30:49 +0000 (14:30 +0000)]
[mips] Improve handling of -fno-[pic/PIC] option

In order to disable PIC and to match GCC behaviour, -mno-abicalls
option is neccessary. When -fno-[pic/PIC] is used witout -mno-abicalls,
warning is reported. An error is reported when -fno-pic or -fno-PIC is
used in combination with -mabicalls.

In this commit, test case is added.

Depends on D44381.

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

llvm-svn: 331640

6 years agoRevert "[mips] Improve handling of -fno-[pic/PIC] option"
Aleksandar Beserminji [Mon, 7 May 2018 14:28:42 +0000 (14:28 +0000)]
Revert "[mips] Improve handling of -fno-[pic/PIC] option"

This reverts commit r331636. Forgot to add the test case.

llvm-svn: 331639

6 years agoUpdate for Rapperswil
Marshall Clow [Mon, 7 May 2018 14:21:52 +0000 (14:21 +0000)]
Update for Rapperswil

llvm-svn: 331638

6 years agoFix "file ./a.out" and file "../a.out" so that is works after recent FileSpec normali...
Greg Clayton [Mon, 7 May 2018 14:21:04 +0000 (14:21 +0000)]
Fix "file ./a.out" and file "../a.out" so that is works after recent FileSpec normalization path changes.

Test coming soon, but I want to unbreak people.

llvm-svn: 331637

6 years ago[mips] Improve handling of -fno-[pic/PIC] option
Aleksandar Beserminji [Mon, 7 May 2018 14:19:54 +0000 (14:19 +0000)]
[mips] Improve handling of -fno-[pic/PIC] option

In order to disable PIC and to match GCC behaviour, -mno-abicalls
option is neccessary. When -fno-[pic/PIC] is used witout -mno-abicalls,
warning is reported. An error is reported when -fno-pic or -fno-PIC is
used in combination with -mabicalls.

Depends on D44381.

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

llvm-svn: 331636

6 years agoAdd option -verify-cfiinstrs to run verifier in CFIInstrInserter
Petar Jovanovic [Mon, 7 May 2018 14:09:33 +0000 (14:09 +0000)]
Add option -verify-cfiinstrs to run verifier in CFIInstrInserter

Instead of enabling it for non NDEBUG builds, use -verify-cfiinstrs to
run verifier in CFIInstrInserter. It defaults to false.

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

llvm-svn: 331635

6 years ago[NFC] Fix typo in variable name.
Clement Courbet [Mon, 7 May 2018 13:26:47 +0000 (13:26 +0000)]
[NFC] Fix typo in variable name.

llvm-svn: 331634

6 years ago[AMDGPU] Don't force WQM for DS op
Tim Renouf [Mon, 7 May 2018 13:21:26 +0000 (13:21 +0000)]
[AMDGPU] Don't force WQM for DS op

Summary:
Previously, all DS ops forced WQM in a pixel shader. That was a hack to
allow for graphics frontends using ds_swizzle to implement explicit
derivatives, on SI/CI at least where DPP is not available. But it forced
WQM for _any_ DS op.

With this commit, DS ops no longer force WQM. Both graphics frontends
(Mesa and LLPC) need to change to issue an explicit llvm.amdgcn.wqm
intrinsic call when calculating explicit derivatives.

The required Mesa change is: "amd/common: use llvm.amdgcn.wqm for
explicit derivatives".

Subscribers: qcolombet, arsenm, kzhuravl, wdng, nhaehnle, yaxunl, dstuttard, t-tye, llvm-commits

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

Change-Id: I9b745b626fa91bbd66456e6cf41ee07eeea42f81
llvm-svn: 331633

6 years ago[OMPT] Fix thread_num for implicit_task_end callbacks in nested parallel regions
Joachim Protze [Mon, 7 May 2018 12:42:21 +0000 (12:42 +0000)]
[OMPT] Fix thread_num for implicit_task_end callbacks in nested parallel regions

implicit_task_end callbacks in nested parallel regions did not always give the
correct thread_num, since the inner parallel region may have already been
finalized.
Now, the thread_num is stored at the beginning of the implicit task and
retrieved at the end, whenever necessary.

A testcase was added as well.

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

llvm-svn: 331632

6 years ago[OMPT] Add api_calls_misc.c testcase and rename api_calls.c testcase
Joachim Protze [Mon, 7 May 2018 12:42:15 +0000 (12:42 +0000)]
[OMPT] Add api_calls_misc.c testcase and rename api_calls.c testcase

The api_calls_misc.c testcase tests the following api calls:

ompt_get_callback()
ompt_get_state()
ompt_enumerate_states()
ompt_enumerate_mutex_impls()
These have not been tested previously.

The api_calls.c testcase has been renamed to api_calls_places.c because it only tests api calls that are related to places.

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

llvm-svn: 331631

6 years ago[ASTImporter] Support importing UnresolvedMemberExpr, DependentNameType, DependentSco...
Peter Szecsi [Mon, 7 May 2018 12:08:27 +0000 (12:08 +0000)]
[ASTImporter] Support importing UnresolvedMemberExpr, DependentNameType, DependentScopeDeclRefExpr

The visit callback implementations for the 3 C++ AST Node added to the ASTImporter.

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

llvm-svn: 331630

6 years ago[X86] Split WriteFRcp/WriteFRsqrt/WriteFSqrt schedule classes
Simon Pilgrim [Mon, 7 May 2018 11:50:44 +0000 (11:50 +0000)]
[X86] Split WriteFRcp/WriteFRsqrt/WriteFSqrt schedule classes

WriteFRcp/WriteFRsqrt are split to support scalar, XMM and YMM/ZMM instructions.

WriteFSqrt is split into single/double/long-double sizes and scalar, XMM, YMM and ZMM instructions.

This removes all InstrRW overrides for these instructions.

NOTE: There were a couple of typos in the Znver1 model - notably a 1cy throughput for SQRT that is highly unlikely and doesn't tally with Agner.

NOTE: I had to add Agner's numbers for several targets for WriteFSqrt80.
llvm-svn: 331629

6 years agoSkip unreachable blocks for CFIInstrInserter verify
Petar Jovanovic [Mon, 7 May 2018 11:47:48 +0000 (11:47 +0000)]
Skip unreachable blocks for CFIInstrInserter verify

Iterate only through reachable blocks. This finetunes r330706 and
it resolves build issue reported by Craig Topper.

llvm-svn: 331628

6 years ago[SystemZ] Bugfix for MVCLoop CC clobbering.
Jonas Paulsson [Mon, 7 May 2018 10:48:43 +0000 (10:48 +0000)]
[SystemZ]  Bugfix for MVCLoop CC clobbering.

MVCLoop clobbers CC (since it emits a compare/branch), but this was not
modelled.

Review: Ulrich Weigand
llvm-svn: 331627

6 years ago[sanitizer] Be more accurate when calculating the previous instruction address on...
Igor Kudrin [Mon, 7 May 2018 10:07:22 +0000 (10:07 +0000)]
[sanitizer] Be more accurate when calculating the previous instruction address on ARM.

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

llvm-svn: 331626

6 years ago[InstCombine][NFC] Add tests for one more masked merge pattern.
Roman Lebedev [Mon, 7 May 2018 09:42:45 +0000 (09:42 +0000)]
[InstCombine][NFC] Add tests for one more masked merge pattern.

This pattern came up in D46494.
I'm pretty sure we want to canonicalize it from
(x | ~m) & (y &  m)
to
(x &  m) | (y & ~m)

https://rise4fun.com/Alive/TEM

llvm-svn: 331625

6 years agoRe-land r331622 "[llvm-exegesis] Add a library to cluster benchmark results."
Clement Courbet [Mon, 7 May 2018 09:09:48 +0000 (09:09 +0000)]
Re-land r331622 "[llvm-exegesis] Add a library to cluster benchmark results."

Add missing move.

llvm-svn: 331624

6 years agoRevert r331622 "[llvm-exegesis] Add a library to cluster benchmark results."
Clement Courbet [Mon, 7 May 2018 08:30:18 +0000 (08:30 +0000)]
Revert r331622 "[llvm-exegesis] Add a library to cluster benchmark results."

Breaks build over llvm::Error copy construction.

llvm-svn: 331623

6 years ago[llvm-exegesis] Add a library to cluster benchmark results.
Clement Courbet [Mon, 7 May 2018 08:20:00 +0000 (08:20 +0000)]
[llvm-exegesis] Add a library to cluster benchmark results.

Reviewers: gchatelet

Subscribers: mgorny, tschuett, llvm-commits

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

llvm-svn: 331622

6 years agoRemove now-unnecessary check for non-zero nvsize in addition to
Richard Smith [Mon, 7 May 2018 06:43:31 +0000 (06:43 +0000)]
Remove now-unnecessary check for non-zero nvsize in addition to
emptyness in MS record layout.

llvm-svn: 331621

6 years agoNon-zero-length bit-fields make a class non-empty.
Richard Smith [Mon, 7 May 2018 06:43:30 +0000 (06:43 +0000)]
Non-zero-length bit-fields make a class non-empty.

This implements the rule intended by the standard (see LWG 2358)
and the rule intended by the Itanium C++ ABI (see
https://github.com/itanium-cxx-abi/cxx-abi/pull/51), and makes
Clang match the behavior of GCC, ICC, and MSVC.

A pedantic reading of both the standard and the ABI indicate that Clang
is currently technically correct, but that's not worth much when it's
clear that the wording is wrong in both those places.

This is an ABI break for classes that derive from a class that is empty
other than one or more unnamed non-zero-length bit-fields. Such cases
are expected to be rare, but -fclang-abi-compat=6 restores the old
behavior just in case.

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

llvm-svn: 331620

6 years ago[sanitizer] Add operator== and operator!= for InternalMmapVectorNoCtor
Vitaly Buka [Mon, 7 May 2018 06:14:12 +0000 (06:14 +0000)]
[sanitizer] Add operator== and operator!= for InternalMmapVectorNoCtor

llvm-svn: 331619

6 years ago[sanitizer] Replace InternalScopedBuffer with InternalMmapVector
Vitaly Buka [Mon, 7 May 2018 05:56:36 +0000 (05:56 +0000)]
[sanitizer] Replace InternalScopedBuffer with InternalMmapVector

llvm-svn: 331618

6 years ago[sanitizer] Remove reserving constructor from InternalMmapVector
Vitaly Buka [Mon, 7 May 2018 05:56:24 +0000 (05:56 +0000)]
[sanitizer] Remove reserving constructor from InternalMmapVector

llvm-svn: 331617

6 years ago[sanitizer] Implement InternalScopedBuffer with InternalMmapVector
Vitaly Buka [Mon, 7 May 2018 05:56:12 +0000 (05:56 +0000)]
[sanitizer] Implement InternalScopedBuffer with InternalMmapVector

llvm-svn: 331616

6 years agoFix comment. NFC
Fangrui Song [Mon, 7 May 2018 05:21:20 +0000 (05:21 +0000)]
Fix comment. NFC

llvm-svn: 331615

6 years ago[ARM] Select result 1 from ConvertBooleanCarryToCarryFlag's result automatically...
Amaury Sechet [Mon, 7 May 2018 01:43:42 +0000 (01:43 +0000)]
[ARM] Select result 1 from ConvertBooleanCarryToCarryFlag's result automatically. NFC

The old behavior return the value 0, which is error prone.

llvm-svn: 331614

6 years ago[TargetLowering] Use StringRef::split instead of SplitString. NFC
Craig Topper [Mon, 7 May 2018 01:32:18 +0000 (01:32 +0000)]
[TargetLowering] Use StringRef::split instead of SplitString. NFC

SplitString splits based on a list of delimeters, but we're only using one delimeter so we should use the simpler split.

llvm-svn: 331613

6 years ago[sanitizer] Make InternalScopedBuffer::size() behavior similar to vector.
Vitaly Buka [Mon, 7 May 2018 01:08:13 +0000 (01:08 +0000)]
[sanitizer] Make InternalScopedBuffer::size() behavior similar to vector.

llvm-svn: 331612

6 years ago[X86] Fix copy/paste mistake in comment. NFC
Craig Topper [Mon, 7 May 2018 00:47:02 +0000 (00:47 +0000)]
[X86] Fix copy/paste mistake in comment. NFC

llvm-svn: 331611

6 years ago[llvm-dwp] Define InitLLVM.
Fangrui Song [Sun, 6 May 2018 23:08:29 +0000 (23:08 +0000)]
[llvm-dwp] Define InitLLVM.

llvm-svn: 331610

6 years ago[NFC][DAGCombine] unfoldMaskedMerge(): rename two variables
Roman Lebedev [Sun, 6 May 2018 20:02:22 +0000 (20:02 +0000)]
[NFC][DAGCombine] unfoldMaskedMerge(): rename two variables

The current names can be confused with the A and B sides
of the canonical masked merge pattern.

llvm-svn: 331609

6 years agoELF Thunks: fix build error: missing 'overrides'
Roman Lebedev [Sun, 6 May 2018 19:50:04 +0000 (19:50 +0000)]
ELF Thunks: fix build error: missing 'overrides'

llvm-svn: 331608

6 years ago[PPC64] Emit plt call stubs to the text section rather then the plt section.
Sean Fertile [Sun, 6 May 2018 19:13:29 +0000 (19:13 +0000)]
[PPC64] Emit plt call stubs to the text section rather then the plt section.

On PowerPC calls to functions through the plt must be done through a call stub
that is responsible for:
1) Saving the toc pointer to the stack.
2) Loading the target functions address from the plt into both r12 and the
   count register.
3) Indirectly branching to the target function.

Previously we have been emitting these call stubs to the .plt section, however
the .plt section should be reserved for the lazy symbol resolution stubs. This
patch moves the call stubs to the text section by moving the implementation from
writePlt to the thunk framework.

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

llvm-svn: 331607

6 years ago[X86] Enable reciprocal estimates for v16f32 vectors by using VRCP14PS/VRSQRT14PS
Craig Topper [Sun, 6 May 2018 17:48:21 +0000 (17:48 +0000)]
[X86] Enable reciprocal estimates for v16f32 vectors by using VRCP14PS/VRSQRT14PS

Summary:
The legacy VRCPPS/VRSQRTPS instructions aren't available in 512-bit versions. The new increased precision versions are. So we can use those to implement v16f32 reciprocal estimates.

For KNL CPUs we can probably use VRCP28PS/VRSQRT28PS and avoid the NR step altogether, but I leave that for a future patch.

Reviewers: spatel

Reviewed By: spatel

Subscribers: RKSimon, llvm-commits, mehdi_amini

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

llvm-svn: 331606

6 years ago[X86] Add test cases for reciprocal estimation for v16f32 vectors with AVX512F.
Craig Topper [Sun, 6 May 2018 17:45:40 +0000 (17:45 +0000)]
[X86] Add test cases for reciprocal estimation for v16f32 vectors with AVX512F.

We should be able to use the vrsqrt14ps and vrcp14ps instructions for these cases.

llvm-svn: 331605

6 years agoAdd test cases for large integer legalization of add and sub. NFC
Amaury Sechet [Sun, 6 May 2018 16:00:23 +0000 (16:00 +0000)]
Add test cases for large integer legalization of add and sub. NFC

llvm-svn: 331604

6 years ago[globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC
Daniel Sanders [Sat, 5 May 2018 21:19:59 +0000 (21:19 +0000)]
[globalisel] Remove redundant -global-isel option from tests that use -run-pass. NFC

As Roman Tereshin pointed out in https://reviews.llvm.org/D45541, the
-global-isel option is redundant when -run-pass is given. -global-isel sets up
the GlobalISel passes in the pass manager but -run-pass skips that entirely and
configures it's own pipeline.

llvm-svn: 331603

6 years ago[MC] Remove unused MCOI::GenericOperandType
Fangrui Song [Sat, 5 May 2018 20:54:03 +0000 (20:54 +0000)]
[MC] Remove unused MCOI::GenericOperandType

llvm-svn: 331602

6 years ago[globalisel] Update GlobalISel emitter to match new representation of extending loads
Daniel Sanders [Sat, 5 May 2018 20:53:24 +0000 (20:53 +0000)]
[globalisel] Update GlobalISel emitter to match new representation of extending loads

Summary:
Previously, a extending load was represented at (G_*EXT (G_LOAD x)).
This had a few drawbacks:
* G_LOAD had to be legal for all sizes you could extend from, even if
  registers didn't naturally hold those sizes.
* All sizes you could extend from had to be allocatable just in case the
  extend went missing (e.g. by optimization).
* At minimum, G_*EXT and G_TRUNC had to be legal for these sizes. As we
  improve optimization of extends and truncates, this legality requirement
  would spread without considerable care w.r.t when certain combines were
  permitted.
* The SelectionDAG importer required some ugly and fragile pattern
  rewriting to translate patterns into this style.

This patch changes the representation to:
* (G_[SZ]EXTLOAD x)
* (G_LOAD x) any-extends when MMO.getSize() * 8 < ResultTy.getSizeInBits()
which resolves these issues by allowing targets to work entirely in their
native register sizes, and by having a more direct translation from
SelectionDAG patterns.

Each extending load can be lowered by the legalizer into separate extends
and loads, however a target that supports s1 will need the any-extending
load to extend to at least s8 since LLVM does not represent memory accesses
smaller than 8 bit. The legalizer can widenScalar G_LOAD into an
any-extending load but sign/zero-extending loads need help from something
else like a combiner pass. A follow-up patch that adds combiner helpers for
for this will follow.

The new representation requires that the MMO correctly reflect the memory
access so this has been corrected in a couple tests. I've also moved the
extending loads to their own tests since they are (mostly) separate opcodes
now. Additionally, the re-write appears to have invalidated two tests from
select-with-no-legality-check.mir since the matcher table no longer contains
loads that result in s1's and they aren't legal in AArch64 anymore.

Depends on D45540

Reviewers: ab, aditya_nandakumar, bogner, rtereshin, volkan, rovka, javed.absar

Reviewed By: rtereshin

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

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

llvm-svn: 331601

6 years ago[MIRPraser] Improve error checking for typed immediate operands
Heejin Ahn [Sat, 5 May 2018 20:53:23 +0000 (20:53 +0000)]
[MIRPraser] Improve error checking for typed immediate operands

Summary:
This improves error checks for typed immediate operands introduced in
D45948 (rL331586), and removes a code block copied by mistake.

Reviewers: rtereshin

Subscribers: dschuff, sbc100, jgravelle-google, llvm-commits

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

llvm-svn: 331600

6 years agoSimplify LLVM_ATTRIBUTE_USED call sites.
Fangrui Song [Sat, 5 May 2018 20:14:38 +0000 (20:14 +0000)]
Simplify LLVM_ATTRIBUTE_USED call sites.

llvm-svn: 331599

6 years agoDisallow pointers to const in __sync_fetch_and_xxx.
Aaron Ballman [Sat, 5 May 2018 17:38:42 +0000 (17:38 +0000)]
Disallow pointers to const in __sync_fetch_and_xxx.

Diagnoses code like:

void f(const int *ptr) {
  __sync_fetch_and_add(ptr, 1);
}

which matches the behavior of GCC and ICC.

llvm-svn: 331598

6 years agoAdd -target to address errors in test from r331592
Teresa Johnson [Sat, 5 May 2018 16:37:31 +0000 (16:37 +0000)]
Add -target to address errors in test from r331592

The error turns out to be:
Assertion failed: (Target.isCompatibleDataLayout(getDataLayout()) && "Can't create a MachineFunction using a Module with a " "Target-incompatible DataLayout attached\n"), function init, file /Users/buildslave/jenkins/workspace/clang-stage1-cmake-RA-incremental/llvm/lib/CodeGen/MachineFunction.cpp, line 180.

Add -target to address this. Also re-enable the test I had temporarily
commented, and move it further down in case there is still a failure
(since it pipes stderr to FileCheck).

llvm-svn: 331597

6 years agoSkip part of test added in r331592 to help debug bot failures
Teresa Johnson [Sat, 5 May 2018 15:54:57 +0000 (15:54 +0000)]
Skip part of test added in r331592 to help debug bot failures

Trying to debug why/where a few bots getting exit code 256 e.g.
http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-incremental/48471/testReport/Clang/CodeGen/thinlto_diagnostic_handler_remarks_with_hotness_ll/

and a few windows bots getting no output from that RUN line e.g.
http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/11865/steps/ninja%20check%201/logs/FAIL%3A%20Clang%3A%3Athinlto-diagnostic-handler-remarks-with-hotness.ll

llvm-svn: 331596