Commit Graph

149104 Commits

Author SHA1 Message Date
Craig Topper
eba544c71c [X86] Cleanup some of the check-prefixes in the vector-lzcnt tests.
Remove an unneeded prefix from the 32-bit command line. Make all the 64-bit triples match. Replace ALL with X64 and remove it from the 32-bit test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303019 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-14 19:38:09 +00:00
Craig Topper
3cf7734d13 [X86] Remove unused value from IntrinsicType enum. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303018 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-14 19:38:06 +00:00
Simon Pilgrim
3f74b0ee2c [X86][AVX1] Account for cost of extract/insert of 256-bit SDIV/UDIV by mul sequences
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303017 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-14 18:52:15 +00:00
Dimitry Andric
a435f21458 Fix DynamicLibraryTest.cpp on FreeBSD and NetBSD
Summary:

After rL301562, on FreeBSD the DynamicLibrary unittests fail, because
the test uses getMainExecutable("DynamicLibraryTests", Ptr), and since
the path does not contain any slashes, retrieving the main executable
will not work.

Reimplement getMainExecutable() for FreeBSD and NetBSD using sysctl(3),
which is more reliable than fiddling with relative or absolute paths.

Also add retrieval of the original argv[] from the GoogleTest framework,
to use as a fallback for other OSes.

Reviewers: emaste, marsupial, hans, krytarowski

Reviewed By: krytarowski

Subscribers: krytarowski, llvm-commits

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303015 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-14 18:35:38 +00:00
Shoaib Meenai
61e19cf8a4 [COFF] Gracefully handle empty .drectve sections
Running `llvm-readobj -coff-directives msvcrt.lib` resulted in this error:

    Invalid data was encountered while parsing the file

This happened because some of the object files in the archive have empty
`.drectve` sections. These empty sections result in a `parse_failed` error being
returned from `COFFObjectFile::getSectionContents()`, which in turn caused
`llvm-readobj` to stop. With this change, `getSectionContents` now returns
success, and like before the resulting array is empty.

Patch by Dave Lee.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303014 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-14 18:34:56 +00:00
Simon Pilgrim
40a0941bb9 [X86][XOP] XOP's general v16i8 shifts will be used instead of v8i16 shift + mask.
Tweak cost model to match what lowering actually does.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303013 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-14 17:59:46 +00:00
Simon Pilgrim
7adcab9058 [X86][SSE] Account for cost of extract/insert of v32i8 vector shifts
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303012 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-14 17:36:07 +00:00
Zachary Turner
1ccd7cfa2b [StringExtras] Add llvm::to_integer.
This is a very thin wrapper around StringRef::getAsInteger.
It serves three purposes.

1) It allows a cleaner syntax when you have something other than
   a StringRef - for example, a std::string or an llvm::SmallString.
   Previously, in this case you would have to write something like:
      StringRef(MyStr).getAsInteger(0, Result)
   by explicitly constructing a temporary StringRef.  This can be
   done implicitly however with the new function by just writing:
      to_integer(MyStr, ...).
2) Correcting the travesty that is getAsInteger's return value.
   This function returns true on success, and false on failure.
   While this may cause confusion with people familiar with the
   getAsInteger API, there seems to be widespread agreement that
   the return semantics of getAsInteger was a mistake.
3) It allows the Radix to be deduced as a default argument by
   putting it last in the parameter list.  Most uses of getAsInteger
   pass 0 for the first argument.  With this syntax it can just be
   omitted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303011 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-14 17:11:05 +00:00
Simon Pilgrim
90e60b5e99 [X86][XOP] Account for cost of extract/insert of 256-bit vector shifts
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303010 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-14 13:38:53 +00:00
Simon Pilgrim
8390fe6ccf [X86][AVX] Allow 32-bit targets to peek through subvectors to extract constant splats for vXi64 shifts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303009 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-14 11:46:26 +00:00
Simon Pilgrim
dc5d066e45 [X86][AVX] Add additional 32-bit target vector shift tests
Shows issue with 32-bits not being able to peek through subvectors to extract constant splats

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303008 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-14 11:13:03 +00:00
Sylvestre Ledru
9775111940 update of the url
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303005 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-14 07:55:01 +00:00
Craig Topper
462d5d6cc2 [InstSimplify] Add patterns for folding (A & B) | (~A ^ B) -> (~A ^ B) and its commuted variants.
We already had (A & ~B) | (A ^ B), but we missed the cases where the not was part of the xor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303004 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-14 07:54:43 +00:00
Craig Topper
b72b7c24b7 foo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303003 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-14 07:54:40 +00:00
Craig Topper
94b63a884e [BasicAA] Alphabetize includes. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303002 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-14 06:18:34 +00:00
Xinliang David Li
d72fa38136 Renable test that was disabled due to cost analysis
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303000 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-14 02:58:39 +00:00
Xinliang David Li
affec73618 Fix test failure on windows -- do not return deleted func
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302999 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-14 02:54:02 +00:00
Zachary Turner
4afda8f7b6 [llvm-pdbdump] Add the option to sort functions and data.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302998 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-14 01:13:40 +00:00
Simon Pilgrim
72a3a14d8b [SelectionDAG] Added support for EXTRACT_SUBVECTOR/CONCAT_VECTORS demandedelts in ComputeNumSignBits
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302997 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 22:10:58 +00:00
Peter Collingbourne
7b655bd47a Add missing files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302996 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 22:10:13 +00:00
Peter Collingbourne
a844915ce0 Move lib/LibDriver -> lib/ToolDrivers/llvm-lib. NFCI.
This reorganisation prevents us from cluttering up the top-level lib directory
with more driver libraries such as llvm-dlltool (see D29892).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302995 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 22:06:46 +00:00
Simon Pilgrim
e7198dbba5 [X86][SSE] Test showing missing EXTRACT_SUBVECTOR/CONCAT_VECTORS demandedelts support in ComputeNumSignBits
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302994 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 21:50:18 +00:00
Simon Pilgrim
bacfc66c2e [SelectionDAG] Add VECTOR_SHUFFLE support to ComputeNumSignBits
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302993 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 19:57:10 +00:00
Simon Pilgrim
ba64adafb1 [X86][SSE] Test showing inability of ComputeNumSignBits to resolve shuffles
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302992 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 17:41:07 +00:00
Craig Topper
a7f9de4432 [ValueTracking] Remove const_casts on several calls to computeKnownBits and ComputeSignBit. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302991 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 17:22:16 +00:00
Justin Bogner
ef50c73737 MSan: Mark MemorySanitizer tests that use x86 intrinsics as REQUIRES: x86
Tests that use target intrinsics are inherently target specific. Mark
them as such.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302990 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 16:24:38 +00:00
Simon Pilgrim
3c8af5480a [x86, SSE] AVX1 PR28129 (256-bit all-ones rematerialization)
Further perf tests on Jaguar indicate that:

vxorps  %ymm0, %ymm0, %ymm0
vcmpps  $15, %ymm0, %ymm0, %ymm0

is consistently faster (by about 9%) than:

vpcmpeqd  %xmm0, %xmm0, %xmm0
vinsertf128  $1, %xmm0, %ymm0, %ymm0

Testing equivalent code on a SandyBridge (E5-2640) puts it slightly (~3%) faster as well.

Committed on behalf of @dtemirbulatov

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302989 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 13:42:35 +00:00
Simon Pilgrim
07ac640d6c [LoopOptimizer][Fix]PR32859, PR24738
The Loop vectorizer pass introduced undef value while it is fixing output of LCSSA form.
Here it is:

before: %e.0.ph = phi i32 [ 0, %for.inc.2.i ]
after: %e.0.ph = phi i32 [ 0, %for.inc.2.i ], [ undef, %middle.block ]

and after this change we have:

%e.0.ph = phi i32 [ 0, %for.inc.2.i ]
%e.0.ph = phi i32 [ 0, %for.inc.2.i ], [ 0, %middle.block ]

Committed on behalf of @dtemirbulatov

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302988 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 13:25:57 +00:00
Vivek Pandya
e3abce209b This reverts r302984
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302985 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 10:59:05 +00:00
Vivek Pandya
1ec28e35ff Simplify MIR Output used for Codegen Testing
- MIRYamlMapping: Default value provided for fields which have optional
mappings. Implemented == operators for required classes. When a field's value is
same as default value specified YAML IO class will not print it.

- MIRPrinter: Above mentioned behaviour is not on by default. If -simplify-mir
option not specified, then make yaml::Output to print fields with default values
too.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302984 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 08:55:43 +00:00
Craig Topper
f3c348a537 [APInt] Use Lo_32/Hi_32/Make_64 in a few more places in the divide code. NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302983 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 07:14:17 +00:00
Craig Topper
f671e9e87b [InstCombine] Prevent InstCombine from triggering an extra iteration if something changed in the initial Worklist creation
Summary:
If the Worklist build causes an IR change this change flag currently factors into the flag for running another iteration of the iteration loop. But only changes during processing should trigger another loop.

This patch captures the worklist creation change flag into the outside the loop flag currently used for DbgDeclares and only sends that flag up to the caller. Rerunning the loop only depends on IC.run() now.

This uses the debug output of InstCombine to determine if one or two iterations run. I couldn't think of a better way to detect it since the second spurious iteration shoudn't make any visible changes. Just wasted computation.

I can do a pre-commit of the test case with the CHECK-NOT as a CHECK if this is an ok way to check this.

This is a subset of D31678 as I'm still not sure how to verify the analysis behavior for that.

Reviewers: davide, majnemer, spatel, chandlerc

Reviewed By: davide

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302982 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 06:56:04 +00:00
Justin Bogner
b3213cf9db ConstProp: Split x86 SSE intrinsic tests out of calls.ll
This allows us to mark this as `REQUIRES: x86`, since it uses x86
target specific intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302980 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 05:52:17 +00:00
Justin Bogner
74e8801b8b InstCombine: Move tests that use target intrinsics into subdirectories
Tests with target intrinsics are inherently target specific, so it
doesn't actually make sense to run them if we've excluded their
target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302979 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 05:39:46 +00:00
NAKAMURA Takumi
1c52526318 Disable llvm/test/Transforms/NewGVN/pr32934.ll while Davide is investigating.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302977 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 03:05:38 +00:00
Davide Italiano
278c05b970 [NewGVN] XFAIL a flaky test until I find out what's going on.
I bet the change is correct but this test seems to expose some underlying
problem that manifest only on some buildbots, and I'm not able to reproduce
locally. Unfortunately I can't debug right now but I don't want to annoy
people with spurious failures, so I'll XFAIL until I can take a look (over
the weekend).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302976 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 02:45:47 +00:00
Craig Topper
9ba5c40155 [APInt] Fix typo in comment. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302974 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 00:35:30 +00:00
Dylan McKay
af4bf77761 [AVR] When lowering Select8/Select16, put newly generated MBBs in the same spot
Contributed by Dr. Gergő Érdi.

Fixes a bug.

Raised from (https://github.com/avr-rust/rust/issues/49).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302973 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 00:22:34 +00:00
Justin Bogner
8358665160 AA: Use generic intrinsics for tests instead of target specific ones
Update a few tests to use llvm.masked.load/store instead of arm neon
vector loads and stores, and move the tests that are actually specific
to those arm intrinsics to their own files. This lets us mark the
tests that use target specific intrinsics as requiring those targets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302972 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 00:12:52 +00:00
Justin Bogner
d9cc17e635 [CodeView] Silence some -Wsign-compare warnings
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302971 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 00:11:39 +00:00
Dylan McKay
7aa2fcf2ce [AVR] Remove an unused variable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302970 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-13 00:00:26 +00:00
Xinliang David Li
650f9d4bf5 [PartialInlining] Profile based cost analysis
Implemented frequency based cost/saving analysis
and related options.

The pass is now in a state ready to be turne on
in the pipeline (in follow up).

Differential Revision: http://reviews.llvm.org/D32783


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302967 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-12 23:41:43 +00:00
Aditya Nandakumar
f171aff2b8 [GISel]: Add a getConstantFPVRegVal utility
This might be useful across various GISel Passes

https://reviews.llvm.org/D33051

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302964 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-12 22:54:52 +00:00
Aditya Nandakumar
db0798140d [GISel]: Fix undefined behavior while accessing DefaultAction map
We end up dereferencing the end iterator here when the Aspect doesn't exist in the DefaultAction map.
Change the API to return Optional<LLT> and return None when not found.
Also update the callers to handle the None case

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302963 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-12 22:43:58 +00:00
Eugene Zelenko
2a48022484 [IR] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302961 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-12 22:25:07 +00:00
Andrew Kaylor
a0e10ad06a [TLI] Add mapping for various '__<func>_finite' forms of the math routines to SVML routines
Patch by Chris Chrulski

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302957 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-12 22:11:26 +00:00
Andrew Kaylor
099763519f [ConstantFolding] Add folding for various math '__<func>_finite' routines generated from -ffast-math
Patch by Chris Chrulski

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302956 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-12 22:11:20 +00:00
Andrew Kaylor
8731f0c094 [TLI] Add declarations for various math header file routines from math-finite.h that create '__<func>_finite as functions
Patch by Chris Chrulski

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302955 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-12 22:11:12 +00:00
Craig Topper
5a71fb601c [APInt] Add early outs for a division by 1 to udiv/urem/udivrem
We already counted the number of bits in the RHS so its pretty cheap to just check if the RHS is 1.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302953 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-12 21:45:50 +00:00
Craig Topper
d2329ac508 [APInt] In udivrem, remember the bit width in a local variable so we don't reread it from the LHS which might be aliased with Quotient or Remainder.
This helped the compiler generate better code for the single word case. It was able to remember that the bit width was still a single word when it created the Remainder APInt and not create code for it possibly being multiword.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302952 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-12 21:45:44 +00:00