SuccessChanges

Summary

  1. [DAGCombiner] Extending pattern detection for vector shuffle (REAPPLIED) If all the operands of a BUILD_VECTOR extract elements from same vector then split the vector efficiently based on the maximum vector access index. Reapplied with fix to only work with simple value types. Committed on behalf of @jbhateja (Jatin Bhateja) Differential Revision: https://reviews.llvm.org/D35788
  2. [Triple] Add isThumb and isARM functions. Summary: isThumb returns true for Thumb triples (little and big endian), isARM returns true for ARM triples (little and big endian). There are a few more checks using arm/thumb that are not covered by those functions, e.g. that the architecture is either ARM or Thumb (little endian) or ARM/Thumb little endian only. Reviewers: javed.absar, rengolin, kristof.beyls, t.p.northover Reviewed By: rengolin Subscribers: llvm-commits, aemerson Differential Revision: https://reviews.llvm.org/D34682
  3. [X86] Regenerate merge store tests. NFCI. Gives us a much better idea of what is going on than just relying on a few checks.
  4. [BDCE] clear poison generators after turning a value into zero (PR33695, PR34037) nsw, nuw, and exact carry implicit assumptions about their operands, so we need to clear those after trivializing a value. We decided there was no danger for llvm.assume or metadata, so there's just a comment about that. This fixes miscompiles as shown in: https://bugs.llvm.org/show_bug.cgi?id=33695 https://bugs.llvm.org/show_bug.cgi?id=34037 Differential Revision: https://reviews.llvm.org/D36592
Revision 310782 by rksimon:
[DAGCombiner] Extending pattern detection for vector shuffle (REAPPLIED)

If all the operands of a BUILD_VECTOR extract elements from same vector then split the vector efficiently based on the maximum vector access index.

Reapplied with fix to only work with simple value types.

Committed on behalf of @jbhateja (Jatin Bhateja)

Differential Revision: https://reviews.llvm.org/D35788
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cppllvm.src/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/shuffle-vs-trunc-512.llllvm.src/test/CodeGen/X86/shuffle-vs-trunc-512.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shuffle-512-v16.llllvm.src/test/CodeGen/X86/vector-shuffle-512-v16.ll
The file was modified/llvm/trunk/test/CodeGen/X86/vector-shuffle-512-v8.llllvm.src/test/CodeGen/X86/vector-shuffle-512-v8.ll
The file was modified/llvm/trunk/test/CodeGen/X86/x86-interleaved-access.llllvm.src/test/CodeGen/X86/x86-interleaved-access.ll
Revision 310781 by fhahn:
[Triple] Add isThumb and isARM functions.

Summary:
isThumb returns true for Thumb triples (little and big endian), isARM
returns true for ARM triples (little and big endian).
There are a few more checks using arm/thumb that are not covered by
those functions, e.g. that the architecture is either ARM or Thumb
(little endian) or ARM/Thumb little endian only.

Reviewers: javed.absar, rengolin, kristof.beyls, t.p.northover

Reviewed By: rengolin

Subscribers: llvm-commits, aemerson

Differential Revision: https://reviews.llvm.org/D34682
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/ADT/Triple.hllvm.src/include/llvm/ADT/Triple.h
The file was modified/llvm/trunk/lib/MC/MCSectionELF.cppllvm.src/lib/MC/MCSectionELF.cpp
The file was modified/llvm/trunk/lib/Object/ELFObjectFile.cppllvm.src/lib/Object/ELFObjectFile.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cppllvm.src/lib/Target/ARM/ARMAsmPrinter.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMAsmPrinter.hllvm.src/lib/Target/ARM/ARMAsmPrinter.h
The file was modified/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cppllvm.src/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
Revision 310780 by rksimon:
[X86] Regenerate merge store tests. NFCI.

Gives us a much better idea of what is going on than just relying on a few checks.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/MergeConsecutiveStores.llllvm.src/test/CodeGen/X86/MergeConsecutiveStores.ll
Revision 310779 by spatel:
[BDCE] clear poison generators after turning a value into zero (PR33695, PR34037)

nsw, nuw, and exact carry implicit assumptions about their operands, so we need
to clear those after trivializing a value. We decided there was no danger for
llvm.assume or metadata, so there's just a comment about that.

This fixes miscompiles as shown in:
https://bugs.llvm.org/show_bug.cgi?id=33695
https://bugs.llvm.org/show_bug.cgi?id=34037

Differential Revision: https://reviews.llvm.org/D36592
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Scalar/BDCE.cppllvm.src/lib/Transforms/Scalar/BDCE.cpp
The file was modified/llvm/trunk/test/Transforms/BDCE/invalidate-assumptions.llllvm.src/test/Transforms/BDCE/invalidate-assumptions.ll