OSDN Git Service
Kostya Serebryany [Thu, 19 Jan 2017 19:07:26 +0000 (19:07 +0000)]
[libFuzzer] add two tests for experimenting with equivalence fuzzing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292509
91177308-0d34-0410-b5e6-
96231b3b80d8
Easwaran Raman [Thu, 19 Jan 2017 18:53:16 +0000 (18:53 +0000)]
Add an interface to scale the frequencies of a set of blocks.
The scaling is done with reference to the the new frequency of a reference block.
Differential Revision: https://reviews.llvm.org/D28535
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292507
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Thu, 19 Jan 2017 18:51:56 +0000 (18:51 +0000)]
[InstCombine] Simplify gep (gep p, a), (b-a)
Patch by Andrea Canciani.
Differential Revision: https://reviews.llvm.org/D27413
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292506
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 19 Jan 2017 18:18:32 +0000 (18:18 +0000)]
[X86][SSE] Improve comments describing combineTruncatedArithmetic. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292502
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Thu, 19 Jan 2017 18:07:22 +0000 (18:07 +0000)]
Remove this test from the r292500 commit till Chris and I figure out
why it is failing on a couple of build bots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292501
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Thu, 19 Jan 2017 17:36:31 +0000 (17:36 +0000)]
Add support for the new LC_NOTE load command.
It describes a region of arbitrary data included in a Mach-O file.
Its initial use is to record extra data in MH_CORE files.
rdar://
30001545
rdar://
30001731
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292500
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 19 Jan 2017 16:25:02 +0000 (16:25 +0000)]
[X86][SSE] Attempt to pre-truncate arithmetic operations that have already been extended
As discussed on D28219 - it is profitable to combine trunc(binop (s/zext(x), s/zext(y)) to binop(trunc(s/zext(x)), trunc(s/zext(y))) assuming the trunc(ext()) will simplify further
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292493
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 19 Jan 2017 16:12:10 +0000 (16:12 +0000)]
[InstCombine] icmp Pred (shl nsw X, C1), C0 --> icmp Pred X, C0 >> C1
Try harder to fold icmp with shl nsw as discussed here:
http://lists.llvm.org/pipermail/llvm-dev/2017-January/108749.html
This is similar to the 'shl nuw' transforms that were added with D25913.
This may eventually help solve:
https://llvm.org/bugs/show_bug.cgi?id=30773
Differential Revision: https://reviews.llvm.org/D28406
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292492
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 19 Jan 2017 15:03:00 +0000 (15:03 +0000)]
[X86][SSE] Added tests for pre-truncating arithmetic operations that have already been extended
As discussed on D28219 - it is profitable to combine trunc(binop (s/zext(x), s/zext(y)) to binop(trunc(s/zext(x)), trunc(s/zext(y))) assuming the trunc(ext()) will simplify further
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292487
91177308-0d34-0410-b5e6-
96231b3b80d8
Mikael Holmen [Thu, 19 Jan 2017 13:55:55 +0000 (13:55 +0000)]
[DAG] Don't increase SDNodeOrder for dbg.value/declare.
Summary:
The SDNodeOrder is saved in the IROrder field in the SDNode, and this
field may affects scheduling. Thus, letting dbg.value/declare increase
the order numbers may in turn affect scheduling.
Because of this change we also need to update the code deciding when
dbg values should be output, in ScheduleDAGSDNodes.cpp/ProcessSDDbgValues.
Dbg values now have the same order as the SDNode they are connected to,
not the following orders.
Test cases provided by Florian Hahn.
Reviewers: bogner, aprantl, sunfish, atrick
Reviewed By: atrick
Subscribers: fhahn, probinson, andreadb, llvm-commits, MatzeB
Differential Revision: https://reviews.llvm.org/D25318
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292485
91177308-0d34-0410-b5e6-
96231b3b80d8
Malcolm Parsons [Thu, 19 Jan 2017 13:37:42 +0000 (13:37 +0000)]
[docs] Tell Doxygen to expand LLVM_ALIGNAS to nothing
Summary:
Docs for clang::Decl and clang::TemplateSpecializationType have
not been generated since LLVM_ALIGNAS was added to them.
Tell Doxygen to expand LLVM_ALIGNAS to nothing as described at
https://www.stack.nl/~dimitri/doxygen/manual/preprocessing.html
Reviewers: aaron.ballman, klimek, alexfh
Subscribers: ioeric, cfe-commits
Differential Revision: https://reviews.llvm.org/D28850
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292483
91177308-0d34-0410-b5e6-
96231b3b80d8
Mikael Holmen [Thu, 19 Jan 2017 13:35:13 +0000 (13:35 +0000)]
Test commit access, remove trailing whitespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292482
91177308-0d34-0410-b5e6-
96231b3b80d8
Kristof Beyls [Thu, 19 Jan 2017 13:32:14 +0000 (13:32 +0000)]
[GlobalISel] Pointers are legal operands for G_SELECT on AArch64
Differential Revision: https://reviews.llvm.org/D28805
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292481
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Thu, 19 Jan 2017 12:08:21 +0000 (12:08 +0000)]
Recommiting unsigned saturation with a bugfix.
A test case that crached is added to avx512-trunc.ll.
(PR31589)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292479
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Thu, 19 Jan 2017 11:15:55 +0000 (11:15 +0000)]
Re-commit: [globalisel] Tablegen-erate current Register Bank Information
Summary:
Adds a RegisterBank tablegen class that can be used to declare the register
banks and an associated tablegen pass to generate the necessary code.
Changes since first commit attempt:
* Added missing guards
* Added more missing guards
* Found and fixed a use-after-free bug involving Twine locals
Reviewers: t.p.northover, ab, rovka, qcolombet
Reviewed By: qcolombet
Subscribers: aditya_nandakumar, rengolin, kristof.beyls, vkalintiris, mgorny, dberris, llvm-commits, rovka
Differential Revision: https://reviews.llvm.org/D27338
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292478
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Thu, 19 Jan 2017 07:51:17 +0000 (07:51 +0000)]
GlobalISel: Implement widening for shifts
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292476
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 19 Jan 2017 07:37:45 +0000 (07:37 +0000)]
[AVX-512] Add test cases that show where we are using two subvector inserts to broadcast a 128-bit subvector into a 512-bit vector. We'd be better off using something like SHUFF32X4.
If the subvector comes from a load, we convert to SUBV_BROADCAST and use a broadcast instruction. But if there is no load we keep the inserts. I think we should create the SUBV_BROADCAST even without the load and let isel use the fallback patterns that are used if the load can't be folded. This will use the SHUFF32X4 or similar instruction for the 128-bit into 512-bit case and a single insert for 128 into 256 or 256 into 512.
This should be fixed so subvector broadcast intrinsics can be replaced with native IR since some of those currently lower directly to SHUFF32X4.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292475
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 19 Jan 2017 07:12:35 +0000 (07:12 +0000)]
[AVX-512] Support ADD/SUB/MUL of mask vectors
Summary:
Currently we expand and scalarize these operations, but I think we should be able to implement ADD/SUB with KXOR and MUL with KAND.
We already do this for scalar i1 operations so I just extended it to vectors of i1.
Reviewers: zvi, delena
Reviewed By: delena
Subscribers: guyblank, llvm-commits
Differential Revision: https://reviews.llvm.org/D28888
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292474
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 19 Jan 2017 06:35:27 +0000 (06:35 +0000)]
AMDGPU: Disable some fneg combines unless nsz
For -(x + y) -> (-x) + (-y), if x == -y, this would
change the result from -0.0 to 0.0. Since the fma/fmad
combine is an extension of this problem it also
applies there.
fmul should be fine, and I don't think any of the unary
operators or conversions should be a problem either.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292473
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 19 Jan 2017 06:04:12 +0000 (06:04 +0000)]
AMDGPU: Remove modifiers from v_div_scale_*
They seem to produce nonsense results when used.
This should be applied to the release branch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292472
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 19 Jan 2017 03:49:29 +0000 (03:49 +0000)]
[X86] Merge LowerADD and LowerSUB into a single LowerADD_SUB since they are identical.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292469
91177308-0d34-0410-b5e6-
96231b3b80d8
Mike Aizatsky [Thu, 19 Jan 2017 03:49:18 +0000 (03:49 +0000)]
[sancov] applying blacklist to covered points too
Differential Revision: https://reviews.llvm.org/D28872
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292468
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Thu, 19 Jan 2017 02:58:46 +0000 (02:58 +0000)]
llvm-cxxfilt: filter out invalid manglings
c++filt does not attempt to demangle symbols which do not match its
expected format. This means that the symbol must start with _Z or ___Z
(block invocation function extension). Any other symbols are returned
as is. Note that this is different from the behaviour of __cxa_demangle
which will demangle fragments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292467
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 19 Jan 2017 02:34:29 +0000 (02:34 +0000)]
[AVX-512] Use VSHUF instructions instead of two inserts as fallback for subvector broadcasts that can't fold the load.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292466
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 19 Jan 2017 02:34:25 +0000 (02:34 +0000)]
[AVX-512] Add additional test cases for broadcast intrinsics that demonstates that we don't fold the loads to use a broadcast instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292465
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Thu, 19 Jan 2017 02:21:54 +0000 (02:21 +0000)]
[PM] Add LoopVectorize to the default module pipeline
LV no longer "requires" LCSSA and LoopSimplify, and instead forms
them internally as required. So, there's nothing preventing it from
being enabled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292464
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Thu, 19 Jan 2017 01:20:11 +0000 (01:20 +0000)]
LowerTypeTests: Implement exporting of type identifiers.
Type identifiers are exported by:
- Adding coarse-grained information about how to test the type
identifier to the summary.
- Creating symbols in the object file (aliases and absolute symbols)
containing fine-grained information about the type identifier.
Differential Revision: https://reviews.llvm.org/D28424
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292462
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Thu, 19 Jan 2017 01:05:48 +0000 (01:05 +0000)]
GlobalISel: Implement narrowing for G_LOAD
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292461
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Thu, 19 Jan 2017 01:04:46 +0000 (01:04 +0000)]
GlobalISel: Fix text wrapping in a comment. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292460
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Thu, 19 Jan 2017 01:04:08 +0000 (01:04 +0000)]
Use an actual valid register in test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292459
91177308-0d34-0410-b5e6-
96231b3b80d8
Dehao Chen [Thu, 19 Jan 2017 00:44:11 +0000 (00:44 +0000)]
Add -debug-info-for-profiling to emit more debug info for sample pgo profile collection
Summary:
SamplePGO binaries built with -gmlt to collect profile. The current -gmlt debug info is limited, and we need some additional info:
* start line of all subprograms
* linkage name of all subprograms
* standalone subprograms (functions that has neither inlined nor been inlined)
This patch adds these information to the -gmlt binary. The impact on speccpu2006 binary size (size increase comparing with -g0 binary, also includes data for -g binary, which does not change with this patch):
-gmlt(orig) -gmlt(patched) -g
433.milc 4.68% 5.40% 19.73%
444.namd 8.45% 8.93% 45.99%
447.dealII 97.43% 115.21% 374.89%
450.soplex 27.75% 31.88% 126.04%
453.povray 21.81% 26.16% 92.03%
470.lbm 0.60% 0.67% 1.96%
482.sphinx3 5.77% 6.47% 26.17%
400.perlbench 17.81% 19.43% 73.08%
401.bzip2 3.73% 3.92% 12.18%
403.gcc 31.75% 34.48% 122.75%
429.mcf 0.78% 0.88% 3.89%
445.gobmk 6.08% 7.92% 42.27%
456.hmmer 10.36% 11.25% 35.23%
458.sjeng 5.08% 5.42% 14.36%
462.libquantum 1.71% 1.96% 6.36%
464.h264ref 15.61% 16.56% 43.92%
471.omnetpp 11.93% 15.84% 60.09%
473.astar 3.11% 3.69% 14.18%
483.xalancbmk 56.29% 81.63% 353.22%
geomean 15.60% 18.30% 57.81%
Debug info size change for -gmlt binary with this patch:
433.milc 13.46%
444.namd 5.35%
447.dealII 18.21%
450.soplex 14.68%
453.povray 19.65%
470.lbm 6.03%
482.sphinx3 11.21%
400.perlbench 8.91%
401.bzip2 4.41%
403.gcc 8.56%
429.mcf 8.24%
445.gobmk 29.47%
456.hmmer 8.19%
458.sjeng 6.05%
462.libquantum 11.23%
464.h264ref 5.93%
471.omnetpp 31.89%
473.astar 16.20%
483.xalancbmk 44.62%
geomean 16.83%
Reviewers: davidxl, echristo, dblaikie
Reviewed By: echristo, dblaikie
Subscribers: aprantl, probinson, llvm-commits, mehdi_amini
Differential Revision: https://reviews.llvm.org/D25434
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292457
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Thu, 19 Jan 2017 00:42:28 +0000 (00:42 +0000)]
[LV] Run loop-simplify and LCSSA explicitly instead of "requiring" them
This changes the vectorizer to explicitly use the loopsimplify and lcssa utils,
instead of "requiring" the transformations as if they were analyses.
This is not NFC, since it changes the LCSSA behavior - we no longer run LCSSA
for all loops, but rather only for the loops we expect to modify.
Differential Revision: https://reviews.llvm.org/D28868
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292456
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Thu, 19 Jan 2017 00:32:13 +0000 (00:32 +0000)]
LiveIntervalAnalysis: Cleanup; NFC
- Fix doxygen comments: Do not repeat name, remove duplicated doxygen
comment (on declaration + implementation), etc.
- Use more range based for
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292455
91177308-0d34-0410-b5e6-
96231b3b80d8
Artem Belevich [Thu, 19 Jan 2017 00:14:45 +0000 (00:14 +0000)]
[NVPTX] Fix lowering of fp16 ISD::FNEG.
There's no neg.f16 instruction, so negation has to
be done via subtraction from zero.
Differential Revision: https://reviews.llvm.org/D28876
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292452
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Wed, 18 Jan 2017 23:56:42 +0000 (23:56 +0000)]
[SCEV] Make getUDivExactExpr handle non-nuw multiplies correctly.
To avoid regressions, make ScalarEvolution::createSCEV a bit more
clever.
Also get rid of some useless code in ScalarEvolution::howFarToZero
which was hiding this bug.
No new testcase because it's impossible to actually expose this bug:
we don't have any in-tree users of getUDivExactExpr besides the two
functions I just mentioned, and they both dodged the problem. I'll
try to add some interesting users in a followup.
Differential Revision: https://reviews.llvm.org/D28587
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292449
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Wed, 18 Jan 2017 23:26:37 +0000 (23:26 +0000)]
Preserve domtree and loop-simplify for runtime unrolling.
Mostly straightforward changes; we just didn't do the computation before.
One sort of interesting change in LoopUnroll.cpp: we weren't handling
dominance for children of the loop latch correctly, but
foldBlockIntoPredecessor hid the problem for complete unrolling.
Currently punting on loop peeling; made some minor changes to isolate
that problem to LoopUnrollPeel.cpp.
Adds a flag -unroll-verify-domtree; it verifies the domtree immediately
after we finish updating it. This is on by default for +Asserts builds.
Differential Revision: https://reviews.llvm.org/D28073
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292447
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 18 Jan 2017 23:12:19 +0000 (23:12 +0000)]
Treat segment [B, E) as not overlapping block with boundaries [A, B)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292446
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 18 Jan 2017 23:11:40 +0000 (23:11 +0000)]
[Hexagon] Remove dead defs from the live set when expanding wstores
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292445
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Wed, 18 Jan 2017 23:05:58 +0000 (23:05 +0000)]
Revert r291670 because it introduces a crash.
r291670 doesn't crash on the original testcase from PR31589,
but it crashes on a slightly more complex one.
PR31589 has the new reproducer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292444
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 18 Jan 2017 21:37:11 +0000 (21:37 +0000)]
Improve the `-filter-print-funcs` option to skip the banner for CGSCC pass when nothing is to be printed
Before, it would print a sequence of:
*** IR Dump After Function Integration/Inlining ******
*** IR Dump After Function Integration/Inlining ******
*** IR Dump After Function Integration/Inlining ******
...
for every single function in the module.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292442
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 18 Jan 2017 21:31:21 +0000 (21:31 +0000)]
[InstCombine] add tests for shl nsw with icmp eq/ne; NFCI
These should be fixed with D28406.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292441
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 18 Jan 2017 21:16:12 +0000 (21:16 +0000)]
[InstCombine] add an assert to make a shl+icmp transform assumption explicit; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292440
91177308-0d34-0410-b5e6-
96231b3b80d8
Haicheng Wu [Wed, 18 Jan 2017 21:12:10 +0000 (21:12 +0000)]
[CodeGenPrepare] Fix a typo in the comment. NFC.
encode => endcode.
Differential Revision: https://reviews.llvm.org/D28866
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292438
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 18 Jan 2017 20:09:59 +0000 (20:09 +0000)]
[InstCombine] remove a redundant check; NFCI
I missed deleting this check when I refactored this chunk in:
https://reviews.llvm.org/rL292260
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292433
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 18 Jan 2017 20:03:02 +0000 (20:03 +0000)]
ThinLTOBitcodeWriter: Clear comdats on filtered globals.
Differential Revision: https://reviews.llvm.org/D28839
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292431
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 18 Jan 2017 20:02:31 +0000 (20:02 +0000)]
Cloning: Copy comdats when cloning globals.
Differential Revision: https://reviews.llvm.org/D28838
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292430
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Wed, 18 Jan 2017 19:05:48 +0000 (19:05 +0000)]
Fix up a comment. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292425
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Wed, 18 Jan 2017 19:02:52 +0000 (19:02 +0000)]
[LV] Allow reductions that have several uses outside the loop
We currently check whether a reduction has a single outside user. We don't
really need to require that - we just need to make sure a single value is
used externally. The number of external users of that value shouldn't actually
matter.
Differential Revision: https://reviews.llvm.org/D28830
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292424
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Wed, 18 Jan 2017 19:01:58 +0000 (19:01 +0000)]
cmake: Only sanitize use-after-scope if the host compiler supports it
In r292256, we started adding -fsanitize-use-after-scope when using
the address sanitizer, but that flag wasn't always available. This
fixes the config to only add the flag if the host compiler supports
it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292423
91177308-0d34-0410-b5e6-
96231b3b80d8
Evandro Menezes [Wed, 18 Jan 2017 18:57:08 +0000 (18:57 +0000)]
[AArch64] Generate literals by the little end
ARM seems to prefer that long literals be formed from their little end in
order to promote the fusion of the instrs pairs MOV/MOVK and MOVK/MOVK on
Cortex A57 and others (v. "Cortex A57 Software Optimisation Guide", section
4.14).
Differential revision: https://reviews.llvm.org/D28697
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292422
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Wed, 18 Jan 2017 18:42:28 +0000 (18:42 +0000)]
[NewGVN] We don't use postdom info anymore. Update.
Differential Revision: https://reviews.llvm.org/D28842
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292421
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 18 Jan 2017 18:36:21 +0000 (18:36 +0000)]
[ThinLTO] Add a recursive step in Metadata lazy-loading
Summary:
Without this, we're stressing the RAUW of unique nodes,
which is a costly operation. This is intended to limit
the number of RAUW, and is very effective on the total
link-time of opt with ThinLTO, before:
real 4m4.587s user 15m3.401s sys 0m23.616s
after:
real 3m25.261s user 12m22.132s sys 0m24.152s
Reviewers: tejohnson, pcc
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D28751
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292420
91177308-0d34-0410-b5e6-
96231b3b80d8
Graydon Hoare [Wed, 18 Jan 2017 18:12:20 +0000 (18:12 +0000)]
[lit] Support sharding testsuites, for parallel execution.
Summary:
This change equips lit.py with two new options, --num-shards=M and
--run-shard=N (set by default from env vars LIT_NUM_SHARDS and LIT_RUN_SHARD).
The options must be used together, and N must be in 1..M.
Together these options effect only test selection: they partition the testsuite
into M equal-sized "shards", then select only the Nth shard. They can be used
in a cluster of test machines to achieve a very crude (static) form of
parallelism, with minimal configuration work.
Reviewers: modocache, ddunbar
Reviewed By: ddunbar
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D28789
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292417
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Wed, 18 Jan 2017 18:07:46 +0000 (18:07 +0000)]
[SLP] Add a tests for a fix for PR30787.
Add a test for PR30787: Failure to beneficially vectorize 'copyable'
elements in integer binary ops.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292416
91177308-0d34-0410-b5e6-
96231b3b80d8
Stanislav Mekhanoshin [Wed, 18 Jan 2017 17:30:05 +0000 (17:30 +0000)]
[AMDGPU] Do not allow register coalescer to create big superregs
Limit register coalescer by not allowing it to artificially increase
size of registers beyond dword. Such super-registers are in fact
register sequences and not distinct HW registers.
With more super-regs we would need to allocate adjacent registers
and constraint regalloc more than needed. Moreover, our super
registers are overlapping. For instance we have VGPR0_VGPR1_VGPR2,
VGPR1_VGPR2_VGPR3, VGPR2_VGPR3_VGPR4 etc, which complicates registers
allocation even more, resulting in excessive spilling.
Differential Revision: https://reviews.llvm.org/D28782
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292413
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Wed, 18 Jan 2017 17:29:54 +0000 (17:29 +0000)]
GlobalISel: Implement narrowing for G_STORE
Legalize stores of types that are too wide by breaking them up into
sequences of smaller stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292412
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Wed, 18 Jan 2017 17:28:41 +0000 (17:28 +0000)]
GlobalISel: Correct copy-pasted comment. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292411
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Wed, 18 Jan 2017 16:58:43 +0000 (16:58 +0000)]
Don't create a comdat group for a dropped def with initializer
Non-prevailing weak/linkonce odr symbols will be dropped by ThinLTO to
available_externally when possible. If they had an initializer in the
global_ctors list, a comdat group was being created. This code
already had logic to skip available_externally defs, but now the
EliminateAvailableExternally pass will drop these symbols to
declarations earlier. Change the check to skip all declarations for
linker (which includes available_externally along with declarations).
Reviewers: mehdi_amini
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D28737
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292408
91177308-0d34-0410-b5e6-
96231b3b80d8
Kirill Bobyrev [Wed, 18 Jan 2017 16:34:25 +0000 (16:34 +0000)]
Revert 292404 due to buildbot failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292407
91177308-0d34-0410-b5e6-
96231b3b80d8
Kirill Bobyrev [Wed, 18 Jan 2017 16:15:47 +0000 (16:15 +0000)]
[X86] Minor code cleanup to fix several clang-tidy warnings. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292404
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Wed, 18 Jan 2017 15:52:11 +0000 (15:52 +0000)]
[ARM] Create SubtargetFeatures from build attrs
An ELFObjectFile can now create SubtargetFeatures from the available
ARM build attributes, in a similar manner to MIPS. I've moved the
MIPS code into its own function and the ARM handler also has a
separate function.
Differential Revision: https://reviews.llvm.org/D28291
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292403
91177308-0d34-0410-b5e6-
96231b3b80d8
Pavel Labath [Wed, 18 Jan 2017 15:46:50 +0000 (15:46 +0000)]
raw_fd_ostream: Make file handles non-inheritable by default
Summary:
This makes the file descriptors on unix platform non-inheritable (O_CLOEXEC).
There is no change in behavior on windows, as the handles were already
non-inheritable there.
Reviewers: rnk, rafael
Subscribers: llvm-commits, mgorny
Differential Revision: https://reviews.llvm.org/D28854
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292401
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Wed, 18 Jan 2017 15:02:54 +0000 (15:02 +0000)]
[Assembler] Fix crash when assembling .quad for AArch32.
A 64-bit relocation does not exist in 32-bit ARMELF. Report an error
instead of crashing.
PR23870
Patch by Sanne Wouda (sanwou01).
Differential Revision: https://reviews.llvm.org/D28851
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292373
91177308-0d34-0410-b5e6-
96231b3b80d8
Florian Hahn [Wed, 18 Jan 2017 15:01:22 +0000 (15:01 +0000)]
[thumb,framelowering] Reset NoVRegs in Thumb1FrameLowering::emitPrologue.
Summary:
In this function, virtual registers can be introduced (for example
through calls to emitThumbRegPlusImmInReg). doScavengeFrameVirtualRegs
will replace those virtual registers with concrete registers later on
in PrologEpilogInserter, which sets NoVRegs again.
This patch fixes the Codegen/Thumb/segmented-stacks.ll test case which
failed with expensive checks.
https://llvm.org/bugs/show_bug.cgi?id=27484
Reviewers: rnk, bkramer, olista01
Reviewed By: olista01
Subscribers: llvm-commits, rengolin
Differential Revision: https://reviews.llvm.org/D28829
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292372
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 18 Jan 2017 14:47:49 +0000 (14:47 +0000)]
[InstCombine][AVX2] Add DemandedElts support for VPERMD/VPERMPS shuffles
Simplify a vpermv shuffle mask based on the elements of the mask that are actually demanded.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292371
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Wed, 18 Jan 2017 14:26:12 +0000 (14:26 +0000)]
Re-revert: [globalisel] Tablegen-erate current Register Bank Information
More missing guards. My build didn't notice it due to a stale file left over
from a Global ISel build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292369
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 18 Jan 2017 14:23:06 +0000 (14:23 +0000)]
[InstCombine][AVX2] Tests showing missed opportunities to pass demanded elts through a vpermd/vpermps shuffle
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292368
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Wed, 18 Jan 2017 14:17:50 +0000 (14:17 +0000)]
Re-commit: [globalisel] Tablegen-erate current Register Bank Information
Summary:
Adds a RegisterBank tablegen class that can be used to declare the register
banks and an associated tablegen pass to generate the necessary code.
Changes since last commit:
The new tablegen pass is now correctly guarded by LLVM_BUILD_GLOBAL_ISEL and
this should fix the buildbots however it may not be the whole fix. The previous
buildbot failures suggest there may be a memory bug lurking that I'm unable to
reproduce (including when using asan) or spot in the source. If they re-occur
on this commit then I'll need assistance from the bot owners to track it down.
Reviewers: t.p.northover, ab, rovka, qcolombet
Reviewed By: qcolombet
Subscribers: aditya_nandakumar, rengolin, kristof.beyls, vkalintiris, mgorny, dberris, llvm-commits, rovka
Differential Revision: https://reviews.llvm.org/D27338
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292367
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Wed, 18 Jan 2017 13:52:12 +0000 (13:52 +0000)]
[ARM] Create objdump subtarget from build attrs
Enable an ELFObjectFile to read the its arm build attributes to
produce a target triple with a specific ARM architecture.
llvm-objdump now uses this functionality to automatically produce
a more accurate target.
Differential Revision: https://reviews.llvm.org/D28769
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292366
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 18 Jan 2017 13:44:04 +0000 (13:44 +0000)]
[InstCombine] Remove unnecessary intrinsics demanded elts handling
As discussed on D28777 - we don't need to handle 'all element' shuffles inside InstCombiner::visitCallInst as InstCombiner::SimplifyDemandedVectorElts will do everything we need.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292365
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 18 Jan 2017 11:40:28 +0000 (11:40 +0000)]
Fixed parser error on windows shell evaluation of RUN script line
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292363
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 18 Jan 2017 11:20:31 +0000 (11:20 +0000)]
[X86][SSE] Simplify umax knownbits test
combineSRA doesn't detect sign bits splats that it does itself so just use -1 as the demanded input so that its already splatted
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292361
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zuckerman [Wed, 18 Jan 2017 09:31:13 +0000 (09:31 +0000)]
[X86] Improve mul combine for negative multiplayer (2^c - 1)
This patch improves the mul instruction combine function (combineMul)
by adding new layer of logic.
In this patch, we are adding the ability to fold (mul x, -((1 << c) -1))
or (mul x, -((1 << c) +1)) into (neg(X << c) -x) or (neg((x << c) + x) respective.
Differential Revision: https://reviews.llvm.org/D28232
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292358
91177308-0d34-0410-b5e6-
96231b3b80d8
Renato Golin [Wed, 18 Jan 2017 09:08:43 +0000 (09:08 +0000)]
Revert "[XRay][Arm] Repair XRay table emission on Arm32 and add tests to identify such problem earlier"
This reverts commit r292210, as it broke the Thumb buldbot with:
clang-5.0: error: the clang compiler does not support '-fxray-instrument
on thumbv7-unknown-linux-gnueabihf'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292357
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Wed, 18 Jan 2017 08:32:54 +0000 (08:32 +0000)]
[SystemZ] Proper handling of undef flag while expanding pseudo.
During post-RA pseudo expansion, an 'undef' flag of the source operand should
be propagated by emitGRX32Move().
Review: Ulrich Weigand
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292353
91177308-0d34-0410-b5e6-
96231b3b80d8
Marina Yatsina [Wed, 18 Jan 2017 08:07:51 +0000 (08:07 +0000)]
[X86] Fix for bugzilla 31576 - add support for "data32" instruction prefix
This patch fixes bugzilla 31576 (https://llvm.org/bugs/show_bug.cgi?id=31576).
"data32" instruction prefix was not defined in the llvm.
An exception had to be added to the X86 tablegen and AsmPrinter because both "data16" and "data32" are encoded to 0x66 (but in different modes).
Differential Revision: https://reviews.llvm.org/D28468
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292352
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 18 Jan 2017 02:43:01 +0000 (02:43 +0000)]
[LoopDeletion] (cleanup, NFC) Fix one more local variable that didn't
follow LLVM's naming conventions while I'm here.
Again, sorry I didn't spot this earlier to coalesce with other cleanup
changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292333
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 18 Jan 2017 02:41:26 +0000 (02:41 +0000)]
[PM] Teach LoopDeletion to correctly update the LPM when loops are
deleted.
I've expanded its test coverage a bit including adding one test that
will crash clearly without this change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292332
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 18 Jan 2017 02:29:35 +0000 (02:29 +0000)]
[LoopDeletion] (cleanup, NFC) Make this test actually test what it
claims to test.
LoopSimplify was unifying the multiple exits in this test case, making
it never even test the multiple exit handling of LoopDeletion. Doh.
Now it works (thanks to a great idea from mkuper) and will fail if we
ever change something to make it stop working.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292331
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 18 Jan 2017 02:10:08 +0000 (02:10 +0000)]
DAG: Consider nnan in isKnownNeverNaN
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292328
91177308-0d34-0410-b5e6-
96231b3b80d8
Wei Mi [Wed, 18 Jan 2017 01:53:53 +0000 (01:53 +0000)]
Revert rL292292 since it causes a SEGV on sanitizer-x86_64-linux-fuzzer build bot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292327
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 18 Jan 2017 01:10:18 +0000 (01:10 +0000)]
[libFuzzer] remove stale code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292325
91177308-0d34-0410-b5e6-
96231b3b80d8
Pengxuan Zheng [Wed, 18 Jan 2017 01:03:29 +0000 (01:03 +0000)]
[test-release.sh] Add Polly to the list of projects
Reviewers: zinob, hans, grosser
Reviewed By: hans, grosser
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D28712
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292323
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 18 Jan 2017 01:02:45 +0000 (01:02 +0000)]
[WebAssembly] Update grow_memory's return type.
The grow_memory instruction now returns the previous memory size. Add the
return type to the LLVM intrinsic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292322
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Wed, 18 Jan 2017 00:59:19 +0000 (00:59 +0000)]
MIRParser: Allow regclass specification on operand
You can now define the register class of a virtual register on the
operand itself avoiding the need to use a "registers:" block.
Example: "%0:gr64 = COPY %rax"
Differential Revision: https://reviews.llvm.org/D22398
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292321
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Zelenko [Wed, 18 Jan 2017 00:57:48 +0000 (00:57 +0000)]
[Target, Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292320
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 18 Jan 2017 00:55:29 +0000 (00:55 +0000)]
[libFuzzer] exit(1) on failed merge
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292319
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 18 Jan 2017 00:45:02 +0000 (00:45 +0000)]
[libFuzzer] better link for trophies
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292318
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:29:53 +0000 (00:29 +0000)]
[NVPTX] Support global variables of integer type larger than i64.
Reviewers: tra, majnemer
Subscribers: llvm-commits, jholewinski
Differential Revision: https://reviews.llvm.org/D28825
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292316
91177308-0d34-0410-b5e6-
96231b3b80d8
Xin Tong [Wed, 18 Jan 2017 00:26:17 +0000 (00:26 +0000)]
2 returns next to each other =). NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292315
91177308-0d34-0410-b5e6-
96231b3b80d8
Xin Tong [Wed, 18 Jan 2017 00:15:11 +0000 (00:15 +0000)]
Skip loop header while we can when computing loop safety info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292310
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Fiselier [Wed, 18 Jan 2017 00:12:41 +0000 (00:12 +0000)]
[LIT] Make util.executeCommand python3 friendly
Summary: The parameter `input` to `subprocess.Popen.communicate(...)` must be an object of type `bytes` . This is strictly enforced in python3. This patch (1) allows `to_bytes` to be safely called redundantly. (2) Explicitly convert `input` within `executeCommand`. This allows for usages like `executeCommand(['clang++', '-'], input='int main() {}\n')`.
Reviewers: ddunbar, BinaryKhaos, modocache, dim, EricWF
Reviewed By: EricWF
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D28736
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292308
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:09:36 +0000 (00:09 +0000)]
[NVPTX] Standardize asm printer on "foo \tbar".
Some instructions were printed as "foo\tbar", but most are printed as
"foo \bar". Standardize on the latter form.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292306
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:09:19 +0000 (00:09 +0000)]
[NVPTX] Clean up nested !strconcat calls.
!strconcat is a variadic function; it will concatenate an arbitrary
number of strings. There's no need to nest it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292305
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:09:01 +0000 (00:09 +0000)]
[NVPTX] Implement min/max in tablegen, rather than with custom DAGComine logic.
Summary:
This change also lets us use max.{s,u}16. There's a vague warning in a
test about this maybe being less efficient, but I could not come up with
a case where the resulting SASS (sm_35 or sm_60) was different with or
without max.{s,u}16. It's true that nvcc seems to emit only
max.{s,u}32, but even ptxas 7.0 seems to have no problem generating
efficient SASS from max.{s,u}16 (the casts up to i32 and back down to
i16 seem to be implicit and nops, happening via register aliasing).
In the absence of evidence, better to have fewer special cases, emit
more straightforward code, etc. In particular, if a new GPU has 16-bit
min/max instructions, we want to be able to use them.
Reviewers: tra
Subscribers: jholewinski, llvm-commits
Differential Revision: https://reviews.llvm.org/D28732
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292304
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:08:44 +0000 (00:08 +0000)]
[NVPTX] Lower integer absolute value idiom to abs instruction.
Summary: Previously we lowered it literally, to shifts and xors.
Reviewers: tra
Subscribers: jholewinski, llvm-commits
Differential Revision: https://reviews.llvm.org/D28722
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292303
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:08:27 +0000 (00:08 +0000)]
[NVPTX] Improve lowering of llvm.ctpop.
Summary:
Avoid an unnecessary conversion operation when using the result of
ctpop.i32 or ctpop.i16 as an i32, as in both cases the ptx instruction
we run returns an i32.
(Previously if we used the value as an i32, we'd do an unnecessary
zext+trunc.)
Reviewers: tra
Subscribers: jholewinski, llvm-commits
Differential Revision: https://reviews.llvm.org/D28721
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292302
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:08:10 +0000 (00:08 +0000)]
[NVPTX] Add lowering for llvm.bitreverse.
Reviewers: tra
Subscribers: llvm-commits, jholewinski
Differential Revision: https://reviews.llvm.org/D28720
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292301
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:07:52 +0000 (00:07 +0000)]
[NVPTX] Fix function names in ctlz.ll test. Test-only change.
Looks like a copy/paste mistake, all the functions in ctlz.ll were named
"ctpop".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292300
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Wed, 18 Jan 2017 00:07:35 +0000 (00:07 +0000)]
[NVPTX] Improve lowering of llvm.ctlz.
Summary:
* Disable "ctlz speculation", which inserts a branch on every ctlz(x) which
has defined behavior on x == 0 to check whether x is, in fact zero.
* Add DAG patterns that avoid re-truncating or re-expanding the result
of the 16- and 64-bit ctz instructions.
Reviewers: tra
Subscribers: llvm-commits, jholewinski
Differential Revision: https://reviews.llvm.org/D28719
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292299
91177308-0d34-0410-b5e6-
96231b3b80d8