FailedChanges

Summary

  1. [ELF][ARM] Fix -Werror buildbots NFC. (details)
  2. [clangd] Fix a crash when renaming operator. (details)
  3. Added return statement to fix compile and build warning: (details)
  4. [SLPVectorizer] Don't dereference a dyn_cast result. NFCI. (details)
  5. [SLPVectorizer] Assert that we find a LastInst to silence analyzer null (details)
  6. [VPlanSLP] Don't dereference a cast_or_null<VPInstruction> result. NFCI. (details)
  7. Implement semantic selections. (details)
  8. gn build: Merge r371976 (details)
  9. [InstCombine] fix comments to match code; NFC (details)
  10. [InstCombine] add icmp tests with extra uses; NFC (details)
  11. [clangd] Bump vscode-clangd v0.0.17 (details)
  12. [InstCombine] remove unneeded one-use checks for icmp fold (details)
  13. [ARM] Fold VCMP into VPT (details)
  14. [docs][llvm-size] Write llvm-size documentation (details)
  15. [docs][llvm-strings] Write llvm-strings documentation (details)
  16. Move some definitions from Sema to Basic to fix shared libs build (details)
  17. [clangd][vscode] update the development doc. (details)
  18. [InstCombine] add/move tests for icmp with add operand; NFC (details)
  19. [X86][NFC] Add a `use-aa` feature. (details)
  20. AMDGPU/GlobalISel: Remove another illegal select test (details)
  21. AMDGPU/GlobalISel: Fix RegBankSelect for G_FRINT and G_FCEIL (details)
  22. AMDGPU/GlobalISel: Fix some broken run lines (details)
  23. AMDGPU/GlobalISel: Fail select of G_INSERT non-32-bit source (details)
  24. [NFC] remove unused functions (details)
  25. [SystemZ]  Call erase() on the right MBB in (details)
  26. [LV] Add ARM MVE tail-folding tests (details)
  27. [libFuzzer] Remove unused version of FuzzedDataProvider.h. (details)
  28. [ExecutionEngine] Don't dereference a dyn_cast result. NFCI. (details)
  29. [ARM] Add patterns for CTLZ on MVE (details)
  30. [ARM] Lower CTTZ on MVE (details)
  31. [ARM] Add patterns for bitreverse intrinsic on MVE (details)
  32. [ARM] Add patterns for BSWAP intrinsic on MVE (details)
  33. [InstCombine] move tests for icmp+add; NFC (details)
  34. [InstCombine] remove unneeded one-use checks for icmp fold (details)
  35. [clangd] Simplify semantic highlighting visitor (details)
  36. [SimplifyCFG] FoldTwoEntryPHINode(): consider *total* speculation cost, (details)
Commit 1d74940b319c7b6aea49f94730e408586fd76a82 by peter.smith
[ELF][ARM] Fix -Werror buildbots NFC.
Provide a missing initializer to get rid of warning provoking buildbot
failures.
error: missing field 'rel' initializer
[-Werror,-Wmissing-field-initializers]
llvm-svn: 371970
The file was modifiedlld/ELF/ARMErrataFix.cpp (diff)
Commit af28bb65023ef989e9079717626a9e3080bb50d3 by hokein
[clangd] Fix a crash when renaming operator.
Summary: The renamelib uses a tricky way to calculate the end location
by relying on decl name, this is incorrect for the overloaded operator
(the name is
"operator++" instead of "++"), which will cause out-of-file offset.
We also disable renaming operator symbol, this case is tricky, and
renamelib doesnt handle it properly.
Reviewers: ilya-biryukov
Subscribers: MaskRay, jkorous, arphaman, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D67607
llvm-svn: 371971
The file was modifiedclang-tools-extra/clangd/unittests/RenameTests.cpp (diff)
The file was modifiedclang-tools-extra/clangd/refactor/Rename.cpp (diff)
The file was modifiedclang/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h (diff)
Commit 5f349d56a84336e0c5f7b864129c27a6107a0e87 by sjoerd.meijer
Added return statement to fix compile and build warning:
llvm-rtdyld.cpp:966:7: warning: variable ‘Result’ set but not used
llvm-svn: 371972
The file was modifiedllvm/tools/llvm-rtdyld/llvm-rtdyld.cpp (diff)
Commit ae625d70cdb36485de9429b1ea26ae74e535a053 by llvm-dev
[SLPVectorizer] Don't dereference a dyn_cast result. NFCI.
The static analyzer is warning about potential null dereferences of
dyn_cast<> results - in these cases we can safely use cast<> directly as
we know that these cases should all be the correct type, which is why
its working atm and anyway cast<> will assert if they aren't.
llvm-svn: 371973
The file was modifiedllvm/lib/Transforms/Vectorize/SLPVectorizer.cpp (diff)
Commit bfe6b35c7079495a418cf247ef3bec828b8abce9 by llvm-dev
[SLPVectorizer] Assert that we find a LastInst to silence analyzer null
dereference warning. NFCI.
llvm-svn: 371974
The file was modifiedllvm/lib/Transforms/Vectorize/SLPVectorizer.cpp (diff)
Commit 1aaefbca24aba4fd9fa382b85606ef292c740529 by llvm-dev
[VPlanSLP] Don't dereference a cast_or_null<VPInstruction> result. NFCI.
The static analyzer is warning about a potential null dereference of the
cast_or_null result, I've split the cast_or_null check from the
->getUnderlyingInstr() call to avoid this, but it appears that we
weren't seeing any null pointers in the dumped bundles in the first
place.
llvm-svn: 371975
The file was modifiedllvm/lib/Transforms/Vectorize/VPlanSLP.cpp (diff)
Commit 73c09eb7344e103f126811a7e6c670ddfa5fb771 by usx
Implement semantic selections.
Summary: For a given cursor position, it returns ranges that are
interesting to the user. Currently the semantic ranges correspond to the
nodes of the syntax trees.
Subscribers: mgorny, jkorous, arphaman, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D67358
llvm-svn: 371976
The file was addedclang-tools-extra/clangd/unittests/SemanticSelectionTests.cpp
The file was addedclang-tools-extra/clangd/SemanticSelection.h
The file was modifiedclang-tools-extra/clangd/CMakeLists.txt (diff)
The file was addedclang-tools-extra/clangd/SemanticSelection.cpp
The file was modifiedclang-tools-extra/clangd/unittests/CMakeLists.txt (diff)
Commit eded79b0d4bdec1bd5d356ec597e66dadd08fda1 by nicolasweber
gn build: Merge r371976
llvm-svn: 371977
The file was modifiedllvm/utils/gn/secondary/clang-tools-extra/clangd/BUILD.gn (diff)
The file was modifiedllvm/utils/gn/secondary/clang-tools-extra/clangd/unittests/BUILD.gn (diff)
Commit 91c2cd0691d1c84202e08e3d240a0fead0dfd8d5 by spatel
[InstCombine] fix comments to match code; NFC
This blob was written before match() existed, so it could probably be
reduced significantly.
But I suspect it isn't well tested, so tests would have to be added to
reduce risk from logic changes.
llvm-svn: 371978
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineCompares.cpp (diff)
Commit 14ce3fde046ad0e9f4266a611a2f3a040b976749 by spatel
[InstCombine] add icmp tests with extra uses; NFC
llvm-svn: 371979
The file was modifiedllvm/test/Transforms/InstCombine/icmp.ll (diff)
Commit 72b9c4f3bcea2a87580551afa96ad9f68c7cae38 by hokein
[clangd] Bump vscode-clangd v0.0.17
CHANGELOG:
- added semantic highlighting support (under the
clangd.semanticHighlighting
flag);
- better error message when clangd fails to execute refactoring-like
actions;
- improved the readme doc;
llvm-svn: 371980
The file was modifiedclang-tools-extra/clangd/clients/clangd-vscode/package.json (diff)
Commit c5cd80815666f535ffc37cd582e7576a29ba6816 by spatel
[InstCombine] remove unneeded one-use checks for icmp fold
This fold and several others were added in: rL125734
<https://reviews.llvm.org/rL125734>
...with no explanation for the one-use checks other than the code
comments about register pressure.
Given that this is IR canonicalization, we shouldn't be worried about
register pressure though; the backend should be able to adjust for that
as needed.
This is part of solving PR43310 the theoretically right way:
https://bugs.llvm.org/show_bug.cgi?id=43310
...ie, if we don't cripple basic transforms, then we won't need to add
special-case code to detect larger patterns.
rL371940 is a related patch in this series.
llvm-svn: 371981
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineCompares.cpp (diff)
The file was modifiedllvm/test/Transforms/InstCombine/icmp.ll (diff)
Commit ce7328cb61d0aedae2261d0e50c259336f125e88 by david.green
[ARM] Fold VCMP into VPT
MVE has VPT instructions, which perform the duties of both a VCMP and a
VPST in a single instruction, performing the compare and starting the
VPT block in one. This teaches the MVEVPTBlockPass to fold them,
searching back through the basicblock for a valid VCMP and creating the
VPT from its operands.
There are some changes to the VPT instructions to accommodate this,
altering the order of the operands to match the VCMP better, and
changing P0 register defs to be VPR defs, as is used in other places.
Differential Revision: https://reviews.llvm.org/D66577
llvm-svn: 371982
The file was modifiedllvm/lib/Target/ARM/ARMInstrMVE.td (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-masked-load.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vpt-block6.mir (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vcmpfr.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vpt-block5.mir (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vpt-block3.mir (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-pred-and.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-pred-not.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-pred-or.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vpt-block7.mir (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vpt-block4.mir (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-masked-ldst.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-masked-store.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vpt-block8.mir (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vcmpf.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vpt-block2.mir (diff)
The file was modifiedllvm/lib/Target/ARM/MVEVPTBlockPass.cpp (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vcmpfz.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vpt-nots.mir (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vpt-block.mir (diff)
Commit e8ed932683ee6a26154ffc98c58e1888a2112494 by jh7370
[docs][llvm-size] Write llvm-size documentation
Previously we only had a stub document.
Reviewed by: serge-sans-paille, MaskRay
Differential Revision: https://reviews.llvm.org/D67555
llvm-svn: 371983
The file was modifiedllvm/docs/CommandGuide/llvm-size.rst (diff)
Commit 75b6279c5e7b2a77fd65c6f3c3b5f126b728ceb5 by jh7370
[docs][llvm-strings] Write llvm-strings documentation
Previously we only had a stub document.
Reviewed by: MaskRay
Differential Revision: https://reviews.llvm.org/D67554
llvm-svn: 371984
The file was modifiedllvm/docs/CommandGuide/llvm-strings.rst (diff)
Commit b79f3319584c31c6ea7a93bc7d6f99c46eda5923 by erich.keane
Move some definitions from Sema to Basic to fix shared libs build
r371875 moved some functionality around to a Basic header file, but
didn't move its definitions as well.  This patch moves some things
around so that shared library building can work.
llvm-svn: 371985
The file was modifiedclang/lib/Basic/Attributes.cpp (diff)
The file was modifiedclang/utils/TableGen/ClangAttrEmitter.cpp (diff)
The file was modifiedclang/lib/Sema/ParsedAttr.cpp (diff)
Commit 91154d65165e5bc757d307051d6d6daf2e91e697 by hokein
[clangd][vscode] update the development doc.
llvm-svn: 371986
The file was modifiedclang-tools-extra/clangd/clients/clangd-vscode/DEVELOPING.md (diff)
Commit f201b1c91875024224a945862cf394c24c6a29e3 by spatel
[InstCombine] add/move tests for icmp with add operand; NFC
llvm-svn: 371988
The file was modifiedllvm/test/Transforms/InstCombine/icmp-add.ll (diff)
The file was modifiedllvm/test/Transforms/InstCombine/icmp.ll (diff)
Commit 44bfbcc28e715212f9f8ac104424d72e76d38acf by courbet
[X86][NFC] Add a `use-aa` feature.
Summary: This allows enabling useaa on the command-line and will allow
enabling the feature on a per-CPU basis where benchmarking shows
improvements.
This is modelled after the ARM/AArch64 target.
Reviewers: RKSimon, andreadb, craig.topper
Subscribers: javed.absar, kristof.beyls, hiraditya, ychen, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67266
llvm-svn: 371989
The file was modifiedllvm/lib/Target/X86/X86.td (diff)
The file was modifiedllvm/lib/Target/X86/X86Subtarget.h (diff)
Commit bf7524db35befce9c90d4372571efdfde75740ba by Matthew.Arsenault
AMDGPU/GlobalISel: Remove another illegal select test
llvm-svn: 371990
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-load-constant.mir (diff)
Commit 1fc07d66488b914cc8b26e817618a2a490ef2b32 by Matthew.Arsenault
AMDGPU/GlobalISel: Fix RegBankSelect for G_FRINT and G_FCEIL
llvm-svn: 371991
The file was addedllvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-fceil.mir
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp (diff)
The file was addedllvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-frint.mir
Commit 07b85976566d6d0da100fcbde1a5cd9c78ac9259 by Matthew.Arsenault
AMDGPU/GlobalISel: Fix some broken run lines
llvm-svn: 371992
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-fabs.mir (diff)
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-fneg.mir (diff)
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-amdgcn.ldexp.s16.mir (diff)
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-atomicrmw-fadd-local.mir (diff)
Commit fb51e64eaccb49199f06982f4170b160c5737420 by Matthew.Arsenault
AMDGPU/GlobalISel: Fail select of G_INSERT non-32-bit source
This was producing an illegal copy which would hit an assert later.
Error on selection for now until this is implemented.
llvm-svn: 371993
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp (diff)
Commit 98cb8db836b155d0497f9d609a43510fd8eaf83d by gchatelet
[NFC] remove unused functions
Reviewers: courbet
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67616
llvm-svn: 371994
The file was modifiedllvm/include/llvm/Analysis/TargetTransformInfoImpl.h (diff)
The file was modifiedllvm/lib/Analysis/TargetTransformInfo.cpp (diff)
The file was modifiedllvm/include/llvm/Analysis/TargetTransformInfo.h (diff)
Commit b7dadc3562d0488127727c924b8735e4780a2b69 by paulsson
[SystemZ]  Call erase() on the right MBB in
SystemZTargetLowering::emitSelect()
Since MBB was split *before* MI, the MI(s) will reside in JoinMBB (MBB)
at the point of erasing them, so calling StartMBB->erase() is actually
wrong, although it is "working" by all appearances.
Review: Ulrich Weigand llvm-svn: 371995
The file was modifiedllvm/lib/Target/SystemZ/SystemZISelLowering.cpp (diff)
Commit c2bafadd7a3338ab0d7f9c5543754ec1a803b17b by sjoerd.meijer
[LV] Add ARM MVE tail-folding tests
Now that the vectorizer can do tail-folding (rL367592), and the ARM
backend understands MVE masked loads/stores (rL371932), it's time to add
the MVE tail-folding equivalent of the X86 tests that I added.
llvm-svn: 371996
The file was addedllvm/test/Transforms/LoopVectorize/ARM/tail-loop-folding.ll
Commit d0f63f83e7c5c6fc11e964f848d1496234695182 by mmoroz
[libFuzzer] Remove unused version of FuzzedDataProvider.h.
Summary: The actual version lives in compiler-rt/include/fuzzer/.
Reviewers: Dor1s
Reviewed By: Dor1s
Subscribers: delcypher, #sanitizers, llvm-commits
Tags: #llvm, #sanitizers
Differential Revision: https://reviews.llvm.org/D67623
llvm-svn: 371997
The file was removedcompiler-rt/lib/fuzzer/utils/FuzzedDataProvider.h
Commit a48b6e98abc15b2f41570396040454e3c093b568 by llvm-dev
[ExecutionEngine] Don't dereference a dyn_cast result. NFCI.
The static analyzer is warning about potential null dereferences of
dyn_cast<> results - in these cases we can safely use cast<> directly as
we know that these cases should all be the correct type, which is why
its working atm and anyway cast<> will assert if they aren't.
llvm-svn: 371998
The file was modifiedllvm/lib/ExecutionEngine/ExecutionEngine.cpp (diff)
Commit cd1a0b92710e567c00f6d2b932b197e9a1773f7d by oliver.cruickshank
[ARM] Add patterns for CTLZ on MVE
CTLZ intrinsic can use the VCLS instruction on MVE, which produces
better results than expanding.
llvm-svn: 371999
The file was modifiedllvm/lib/Target/ARM/ARMInstrMVE.td (diff)
The file was addedllvm/test/CodeGen/Thumb2/mve-ctlz.ll
The file was modifiedllvm/lib/Target/ARM/ARMISelLowering.cpp (diff)
Commit 5f799ef1627f6f4f548f411a40fb94c620af25b6 by oliver.cruickshank
[ARM] Lower CTTZ on MVE
Lower CTTZ on MVE using VBRSR and VCLS which will reverse the bits and
count the leading zeros, equivalent to a count trailing zeros (CTTZ).
llvm-svn: 372000
The file was addedllvm/test/CodeGen/Thumb2/mve-cttz.ll
The file was modifiedllvm/lib/Target/ARM/ARMISelLowering.cpp (diff)
Commit e9510a6cadb1aeb407184514803065413f8dd7bf by oliver.cruickshank
[ARM] Add patterns for bitreverse intrinsic on MVE
BITREVERSE can use the VBRSR which will reverse and right shift.
Shifting right by 0 will just reverse the bits.
llvm-svn: 372001
The file was modifiedllvm/lib/Target/ARM/ARMInstrMVE.td (diff)
The file was modifiedllvm/lib/Target/ARM/ARMISelLowering.cpp (diff)
The file was addedllvm/test/CodeGen/Thumb2/mve-bitreverse.ll
Commit ee6fbebbaff5af0a0fbe58a0e33ef191340223ea by oliver.cruickshank
[ARM] Add patterns for BSWAP intrinsic on MVE
BSWAP can use the VREV instruction on MVE to produce better results than
expanding.
llvm-svn: 372002
The file was modifiedllvm/lib/Target/ARM/ARMISelLowering.cpp (diff)
The file was addedllvm/test/CodeGen/Thumb2/mve-bswap.ll
The file was modifiedllvm/lib/Target/ARM/ARMInstrMVE.td (diff)
Commit 4d9d0f9cf532ec40f07178693f1c37049c18bc79 by spatel
[InstCombine] move tests for icmp+add; NFC
llvm-svn: 372004
The file was removedllvm/test/Transforms/InstCombine/2009-01-31-Pressure.ll
The file was modifiedllvm/test/Transforms/InstCombine/icmp-add.ll (diff)
Commit 3961a143e13a9cd7fdfec74a9f26e86117618708 by spatel
[InstCombine] remove unneeded one-use checks for icmp fold
Related folds were added in: rL125734
...the code comment about register pressure is discussed in more detail
in: https://bugs.llvm.org/show_bug.cgi?id=2698
But 10 years later, perf testing bzip2 with this change now shows a
slight (0.2% average) improvement on Haswell although that's probably
within test noise.
Given that this is IR canonicalization, we shouldn't be worried about
register pressure though; the backend should be able to adjust for that
as needed.
This is part of solving PR43310 the theoretically right way:
https://bugs.llvm.org/show_bug.cgi?id=43310
...ie, if we don't cripple basic transforms, then we won't need to add
special-case code to detect larger patterns.
rL371940 and rL371981 are related patches in this series.
llvm-svn: 372007
The file was modifiedllvm/test/Transforms/InstCombine/icmp-add.ll (diff)
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineCompares.cpp (diff)
Commit 685d8a95c5a392b016b259b41c17065d30b66afe by ibiryukov
[clangd] Simplify semantic highlighting visitor
Summary:
- Functions to compute highlighting kinds for things are separated from
the ones that add highlighting tokens.
This keeps each of them more focused on what they're doing: getting
locations and figuring out the kind of the entity, correspondingly.
- Less special cases in visitor for various nodes.
This change is an NFC.
Reviewers: hokein
Reviewed By: hokein
Subscribers: MaskRay, jkorous, arphaman, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D67341
llvm-svn: 372008
The file was modifiedclang-tools-extra/clangd/SemanticHighlighting.cpp (diff)
Commit 10151f661854e3ee4922662f1d0f62b327cbfa8c by lebedev.ri
[SimplifyCFG] FoldTwoEntryPHINode(): consider *total* speculation cost,
not per-BB cost
Summary: Previously, if the threshold was 2, we were willing to
speculatively execute 2 cheap instructions in both basic blocks (thus we
were willing to speculatively execute cost = 4), but weren't willing to
speculate when one BB had 3 instructions and other one had no
instructions, even thought that would have total cost of 3.
This looks inconsistent to me. I don't think `cmov`-like instructions
will start executing until both of it's inputs are available:
https://godbolt.org/z/zgHePf So i don't see why the existing behavior is
the correct one.
Also, let's add it's own `cl::opt` for this threshold, with default=4,
so it is not stricter than the previous threshold: will allow to fold
when there are 2 BB's each with cost=2. And since the logic has changed,
it will also allow to fold when one BB has cost=3 and other cost=1, or
there is only one BB with cost=4.
This is an alternative solution to D65148: This fix is mainly motivated
by `signbit-like-value-extension.ll` test. That pattern comes up in JPEG
decoding, see e.g.
`Figure F.12 – Extending the sign bit of a decoded value in V` of `ITU
T.81` (JPEG specification). That branch is not predictable, and it is
within the innermost loop, so the fact that that pattern ends up being
stuck with a branch instead of `select` (i.e. `CMOV` for x86) is
unlikely to be beneficial.
This has great results on the final assembly (vanilla test-suite +
RawSpeed): (metric pass - D67240)
| metric                                 |     old |     new | delta | 
   % |
| x86-mi-counting.NumMachineFunctions    |   37720 |   37721 |     1 |
0.00% |
| x86-mi-counting.NumMachineBasicBlocks  |  773545 |  771181 | -2364 |
-0.31% |
| x86-mi-counting.NumMachineInstructions | 7488843 | 7486442 | -2401 |
-0.03% |
| x86-mi-counting.NumUncondBR            |  135770 |  135543 |  -227 |
-0.17% |
| x86-mi-counting.NumCondBR              |  423753 |  422187 | -1566 |
-0.37% |
| x86-mi-counting.NumCMOV                |   24815 |   25731 |   916 |
3.69% |
| x86-mi-counting.NumVecBlend            |      17 |      17 |     0 |
0.00% |
We significantly decrease basic block count, notably decrease
instruction count, significantly decrease branch count and very
significantly increase `cmov` count.
Performance-wise, unsurprisingly, this has great effect on target
RawSpeed benchmark. I'm seeing 5 **major** improvements:
``` Benchmark                                                          
                                 Time             CPU      Time Old    
Time New       CPU Old       CPU New
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Samsung/NX3000/_3184416.SRW/threads:8/process_time/real_time_pvalue    
                           0.0000          0.0000      U Test,
Repetitions: 49 vs 49
Samsung/NX3000/_3184416.SRW/threads:8/process_time/real_time_mean      
                          -0.3064         -0.3064      226.9913    
157.4452      226.9800      157.4384
Samsung/NX3000/_3184416.SRW/threads:8/process_time/real_time_median    
                          -0.3057         -0.3057      226.8407    
157.4926      226.8282      157.4828
Samsung/NX3000/_3184416.SRW/threads:8/process_time/real_time_stddev    
                          -0.4985         -0.4954        0.3051      
0.1530        0.3040        0.1534
Kodak/DCS760C/86L57188.DCR/threads:8/process_time/real_time_pvalue     
                           0.0000          0.0000      U Test,
Repetitions: 49 vs 49
Kodak/DCS760C/86L57188.DCR/threads:8/process_time/real_time_mean       
                          -0.1747         -0.1747       80.4787     
66.4227       80.4771       66.4146
Kodak/DCS760C/86L57188.DCR/threads:8/process_time/real_time_median     
                          -0.1742         -0.1743       80.4686     
66.4542       80.4690       66.4436
Kodak/DCS760C/86L57188.DCR/threads:8/process_time/real_time_stddev     
                          +0.6089         +0.5797        0.0670      
0.1078        0.0673        0.1062
Sony/DSLR-A230/DSC08026.ARW/threads:8/process_time/real_time_pvalue    
                           0.0000          0.0000      U Test,
Repetitions: 49 vs 49
Sony/DSLR-A230/DSC08026.ARW/threads:8/process_time/real_time_mean      
                          -0.1598         -0.1598      171.6996    
144.2575      171.6915      144.2538
Sony/DSLR-A230/DSC08026.ARW/threads:8/process_time/real_time_median    
                          -0.1598         -0.1597      171.7109    
144.2755      171.7018      144.2766
Sony/DSLR-A230/DSC08026.ARW/threads:8/process_time/real_time_stddev    
                          +0.4024         +0.3850        0.0847      
0.1187        0.0848        0.1175 Canon/EOS
77D/IMG_4049.CR2/threads:8/process_time/real_time_pvalue               
                 0.0000          0.0000      U Test, Repetitions: 49 vs
49 Canon/EOS 77D/IMG_4049.CR2/threads:8/process_time/real_time_mean    
                             -0.0550         -0.0551      280.3046    
264.8800      280.3017      264.8559 Canon/EOS
77D/IMG_4049.CR2/threads:8/process_time/real_time_median               
                -0.0554         -0.0554      280.2628      264.7360    
280.2574      264.7297 Canon/EOS
77D/IMG_4049.CR2/threads:8/process_time/real_time_stddev               
                +0.7005         +0.7041        0.2779        0.4725    
  0.2775        0.4729 Canon/EOS
5DS/2K4A9929.CR2/threads:8/process_time/real_time_pvalue               
                 0.0000          0.0000      U Test, Repetitions: 49 vs
49 Canon/EOS 5DS/2K4A9929.CR2/threads:8/process_time/real_time_mean    
                             -0.0354         -0.0355      316.7396    
305.5208      316.7342      305.4890 Canon/EOS
5DS/2K4A9929.CR2/threads:8/process_time/real_time_median               
                -0.0354         -0.0356      316.6969      305.4798    
316.6917      305.4324 Canon/EOS
5DS/2K4A9929.CR2/threads:8/process_time/real_time_stddev               
                +0.0493         +0.0330        0.3562        0.3737    
  0.3563        0.3681
```
That being said, it's always best-effort, so there will likely be cases
where this worsens things.
Reviewers: efriedma, craig.topper, dmgreen, jmolloy, fhahn, Carrot,
hfinkel, chandlerc
Reviewed By: jmolloy
Subscribers: xbolva00, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67318
llvm-svn: 372009
The file was modifiedllvm/test/Transforms/SimplifyCFG/X86/speculate-cttz-ctlz.ll (diff)
The file was modifiedllvm/test/Transforms/SimplifyCFG/signbit-like-value-extension.ll (diff)
The file was modifiedllvm/test/Transforms/SimplifyCFG/speculate-math.ll (diff)
The file was modifiedllvm/lib/Transforms/Utils/SimplifyCFG.cpp (diff)
The file was modifiedllvm/test/Transforms/SimplifyCFG/SpeculativeExec.ll (diff)
The file was modifiedllvm/test/Transforms/SimplifyCFG/safe-abs.ll (diff)
The file was modifiedllvm/test/Transforms/PGOProfile/chr.ll (diff)
The file was modifiedllvm/test/Transforms/SimplifyCFG/PhiEliminate3.ll (diff)
The file was modifiedllvm/test/Transforms/IndVarSimplify/loop_evaluate_1.ll (diff)
The file was modifiedllvm/test/Transforms/SimplifyCFG/X86/switch_to_lookup_table.ll (diff)
The file was modifiedllvm/test/Transforms/SimplifyCFG/safe-low-bit-extract.ll (diff)