SuccessChanges

Summary

  1. [IROutliner] Adapting to hoisted bitcasts in CodeExtractor (details)
  2. [dsymutil] Warn on timestmap mismatch between object file and debug map (details)
  3. [X86][SSE] canonicalizeShuffleMaskWithHorizOp - simplify shuffle(HOP(HOP(X,Y),HOP(Z,W))) style chains. (details)
  4. [X86][AVX] Add test for another 'reverse HADD' pattern mentioned in PR41813 (details)
  5. [DAG] visitVECTOR_SHUFFLE - use all_of to check for all-undef shuffle mask. NFCI. (details)
  6. [ARM] Add a pass that re-arranges blocks when there is a backwards WLS branch (details)
  7. [gn build] Port 60fda8ebb6d (details)
Commit 05b1a15f703c3e01f4123424700bc37188af8af1 by andrew.litteken
[IROutliner] Adapting to hoisted bitcasts in CodeExtractor

In commit 700d2417d8281ea56dfd7ac72d1a1473d03d2d59 the CodeExtractor
was updated so that bitcasts that have lifetime markers that beginning
outside of the region are deduplicated outside the region and are not
used as an output.  This caused a discrepancy in the IROutliner, where
in these cases there were arguments added to the aggregate function
that were not needed causing assertion errors.

The IROutliner queries the CodeExtractor twice to determine the inputs
and outputs, before and after `findAllocas` is called with the same
ValueSet for the outputs causing the duplication. This has been fixed
with a dummy ValueSet for the first call.

However, the additional bitcasts prevent us from using the same
similarity relationships that were previously defined by the
IR Similarity Analysis Pass. In these cases, we check whether the
initial version of the region being analyzed for outlining is still the
same as it was previously.  If it is not, i.e. because of the additional
bitcast instructions from the CodeExtractor, we discard the region.

Reviewers: yroux

Differential Revision: https://reviews.llvm.org/D94303
The file was addedllvm/test/Transforms/IROutliner/outlining-bitcasts.ll
The file was modifiedllvm/lib/Transforms/IPO/IROutliner.cpp
Commit 48d2068fb738302b9fba91c9bf8e4b051c3909eb by Jonas Devlieghere
[dsymutil] Warn on timestmap mismatch between object file and debug map

This re-lands e5553b9a6ab9 with two small fixes to the tests:

- Don't touch the source directory in debug-map-parsing.test but
   instead copy everything over in a temporary directory in
   timestamp-mismatch.test.
- Don't redirect stderr to stdout to avoid the output getting
   intertwined in extern-alias.test.
The file was modifiedllvm/tools/dsymutil/BinaryHolder.cpp
The file was modifiedllvm/tools/dsymutil/DwarfLinkerForBinary.cpp
The file was modifiedllvm/test/tools/dsymutil/debug-map-parsing.test
The file was addedllvm/test/tools/dsymutil/X86/timestamp-mismatch.test
The file was modifiedllvm/tools/dsymutil/BinaryHolder.h
The file was modifiedllvm/test/tools/dsymutil/ARM/extern-alias.test
The file was modifiedllvm/test/tools/dsymutil/X86/swift-ast-x86_64.test
Commit cbbfc8258615bc971a54c6287abe33c4215d2eac by llvm-dev
[X86][SSE] canonicalizeShuffleMaskWithHorizOp - simplify shuffle(HOP(HOP(X,Y),HOP(Z,W))) style chains.

See if we can remove the shuffle by resorting a HOP chain so that the HOP args are pre-shuffled.

This initial version just handles (the most common) v4i32/v4f32 hadd/hsub reduction patterns - future work can extend this to v8i16 types plus PACK chains (2f64 HADD/HSUB should already be handled in the half-lane combine code later on).
The file was modifiedllvm/test/CodeGen/X86/horizontal-sum.ll
The file was modifiedllvm/lib/Target/X86/X86ISelLowering.cpp
Commit efb6e45d2be8e3e0843bdc4c2766e6910083c08e by llvm-dev
[X86][AVX] Add test for another 'reverse HADD' pattern mentioned in PR41813
The file was modifiedllvm/test/CodeGen/X86/haddsub-4.ll
Commit 993c488ed2b347011d9d71990af38a82aaf5bdf5 by llvm-dev
[DAG] visitVECTOR_SHUFFLE - use all_of to check for all-undef shuffle mask. NFCI.
The file was modifiedllvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
Commit 60fda8ebb6dc4e2ac1cc181c0ab8019c4309cb22 by samuel.tebbs
[ARM] Add a pass that re-arranges blocks when there is a backwards WLS branch

Blocks can be laid out such that a t2WhileLoopStart branches backwards. This is forbidden by the architecture and so it fails to be converted into a low-overhead loop. This new pass checks for these cases and moves the target block, fixing any fall-through that would then be broken.

Differential Revision: https://reviews.llvm.org/D92385
The file was addedllvm/lib/Target/ARM/ARMBlockPlacement.cpp
The file was addedllvm/test/CodeGen/Thumb2/block-placement.mir
The file was modifiedllvm/lib/Target/ARM/CMakeLists.txt
The file was modifiedllvm/lib/Target/ARM/ARM.h
The file was modifiedllvm/test/CodeGen/ARM/O3-pipeline.ll
The file was modifiedllvm/lib/Target/ARM/ARMTargetMachine.cpp
Commit 14f322f074b933af1e26bf6288b88ec2e7c3a551 by llvmgnsyncbot
[gn build] Port 60fda8ebb6d
The file was modifiedllvm/utils/gn/secondary/llvm/lib/Target/ARM/BUILD.gn