Changes

Summary

  1. [ORC][llvm-jitlink] Add debugging output to SimpleRemoteEPC (and Server). (details)
  2. [X86] Fold ADD(VPMADDWD(X,Y),VPMADDWD(Z,W)) -> VPMADDWD(SHUFFLE(X,Z), SHUFFLE(Y,W)) (details)
  3. Reintroduce "[ORC] Introduce EPCGenericRTDyldMemoryManager." (details)
  4. [gn build] Port 6498b0e991ba (details)
  5. [ORC] Export process symbols in lli-child-target. (details)
  6. [ORC] Remote OrcRemoteTargetClient and OrcRemoteTargetServer. (details)
  7. [X86] Fold PACK(*_EXTEND_VECTOR_INREG, UNDEF) -> *_EXTEND_VECTOR_INREG (details)
  8. [X86][SSE] combineMulToPMADDWD - enable sext_extend_vector_inreg(vXi16) -> zext_extend_vector_inreg(vXi16) fold (details)
  9. [BasicAA] Don't check whether GEP is sized (NFC) (details)
  10. [lldb] [gdb-remote] Use llvm::StringRef.split() and llvm::to_integer() (details)
Commit 175c1a39e8f924f9199d4c8c94f06ad0d3502235 by Lang Hames
[ORC][llvm-jitlink] Add debugging output to SimpleRemoteEPC (and Server).

Also adds an optional 'debug' argument to the llvm-jitlink-executor tool to
enable debug-logging.
The file was modifiedllvm/include/llvm/ExecutionEngine/Orc/SimpleRemoteEPC.h
The file was modifiedllvm/tools/llvm-jitlink/llvm-jitlink-executor/llvm-jitlink-executor.cpp
The file was modifiedllvm/lib/ExecutionEngine/Orc/SimpleRemoteEPC.cpp
The file was modifiedllvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleRemoteEPCServer.h
The file was modifiedllvm/lib/ExecutionEngine/Orc/TargetProcess/SimpleRemoteEPCServer.cpp
Commit 3fe97672047bcdedbd5d34a26498b10f9dba369d by llvm-dev
[X86] Fold ADD(VPMADDWD(X,Y),VPMADDWD(Z,W)) -> VPMADDWD(SHUFFLE(X,Z), SHUFFLE(Y,W))

Merge addition of VPMADDWD nodes if each element pair doesn't use the upper element in each pair (i.e. its zero) - we can generalize this to either element in the pair if we one day create VPMADDWD with zero lower elements.

There are still a number of issues with extending/shuffling with 256/512-bit VPMADDWD nodes so this initially only works for v2i32/v4i32 cases - I'm working on removing all these limitations but there's still a bit of yak shaving to go.....
The file was modifiedllvm/test/CodeGen/X86/pmaddubsw.ll
The file was modifiedllvm/lib/Target/X86/X86ISelLowering.cpp
The file was modifiedllvm/test/CodeGen/X86/madd.ll
Commit 6498b0e991babe71e69ab02e1afa7f5535f2be0f by Lang Hames
Reintroduce "[ORC] Introduce EPCGenericRTDyldMemoryManager."

This reintroduces "[ORC] Introduce EPCGenericRTDyldMemoryManager."
(bef55a2b47a938ef35cbd7b61a1e5fa74e68c9ed) and "[lli] Add ChildTarget dependence
on OrcTargetProcess library." (7a219d801bf2c3006482cf3cbd3170b3b4ea2e1b) which were
reverted in 99951a56842d8e4cd0706cd17a04f77b5d0f6dd0 due to bot failures.

The root cause of the bot failures should be fixed by "[ORC] Fix uninitialized
variable." (0371049277912afc201da721fa659ecef7ab7fba) and "[ORC] Wait for
handleDisconnect to complete in SimpleRemoteEPC::disconnect."
(320832cc9b7e7fea5fc8afbed75c34c4a43287ba).
The file was modifiedllvm/lib/ExecutionEngine/Orc/TargetProcess/RegisterEHFrames.cpp
The file was modifiedllvm/tools/lli/ChildTarget/CMakeLists.txt
The file was modifiedllvm/lib/ExecutionEngine/Orc/TargetProcess/OrcRTBootstrap.cpp
The file was addedllvm/lib/ExecutionEngine/Orc/EPCGenericRTDyldMemoryManager.cpp
The file was removedllvm/tools/lli/RemoteJITUtils.h
The file was modifiedllvm/lib/ExecutionEngine/Orc/CMakeLists.txt
The file was addedllvm/tools/lli/ForwardingMemoryManager.h
The file was modifiedllvm/include/llvm/ExecutionEngine/Orc/TargetProcess/RegisterEHFrames.h
The file was modifiedllvm/tools/lli/ChildTarget/ChildTarget.cpp
The file was addedllvm/include/llvm/ExecutionEngine/Orc/EPCGenericRTDyldMemoryManager.h
The file was modifiedllvm/tools/lli/lli.cpp
The file was modifiedllvm/lib/ExecutionEngine/Orc/Shared/OrcRTBridge.cpp
The file was modifiedllvm/lib/ExecutionEngine/Orc/TargetProcess/SimpleExecutorMemoryManager.cpp
The file was modifiedllvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h
Commit a44b122adead759e6af4d73ccf4cc2b3c813c400 by llvmgnsyncbot
[gn build] Port 6498b0e991ba
The file was modifiedllvm/utils/gn/secondary/llvm/lib/ExecutionEngine/Orc/BUILD.gn
Commit a12c0d5ea66a1059333b9b8ea364e9301c1413c5 by Lang Hames
[ORC] Export process symbols in lli-child-target.

We want this behavior for future testing infrastructure anyway, and it may help
with the failure in https://lab.llvm.org/buildbot/#/builders/98/builds/6401:

/b/fuchsia-x86_64-linux/llvm.obj/tools/clang/stage2-bins/bin/lli: warning:
remote mcjit does not support lazy compilation
Finalization error: could not register eh-frame: __register_frame function not
found
/b/fuchsia-x86_64-linux/llvm.obj/tools/clang/stage2-bins/bin/lli: disconnecting
The file was modifiedllvm/tools/lli/ChildTarget/CMakeLists.txt
Commit f40685138ba182fc823f569f6d88b7d3ddf34b9e by Lang Hames
[ORC] Remote OrcRemoteTargetClient and OrcRemoteTargetServer.

Now that the lli and lli-child-target tools have been updated to use
SimpleRemoteEPC (6498b0e991b) the OrcRemoteTarget* APIs are no longer needed.

Once the LLJITWithRemoteDebugging example has been migrated to SimpleRemoteEPC
we will remove OrcRPCExecutorProcessControl, and the ORC RPC system itself.
The file was removedllvm/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetRPCAPI.h
The file was removedllvm/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h
The file was removedllvm/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetServer.h
Commit ed3e4917b36f2530703115066700daeb2b45b4f0 by llvm-dev
[X86] Fold PACK(*_EXTEND_VECTOR_INREG, UNDEF) -> *_EXTEND_VECTOR_INREG

For 128-bit vectors, we can remove a PACK of a EXTEND_VECTOR_INREG node and just create a smaller extension to the result/packed type.
The file was modifiedllvm/test/CodeGen/X86/pmaddubsw.ll
The file was modifiedllvm/lib/Target/X86/X86ISelLowering.cpp
Commit c0eff50fc5a48990ad9ebfcb7e81c6ab6fea79c5 by llvm-dev
[X86][SSE] combineMulToPMADDWD - enable sext_extend_vector_inreg(vXi16) -> zext_extend_vector_inreg(vXi16) fold

The plan is to allow combineMulToPMADDWD to match illegal vector types (as long as they're still pow2), which should allow us to start removing the 128-bit limit on more of the PMADDWD combines.
The file was modifiedllvm/test/CodeGen/X86/madd.ll
The file was modifiedllvm/lib/Target/X86/X86ISelLowering.cpp
Commit 7a855596c3a29ba7a9b0cc9bcc820f7f78d07afe by nikita.ppv
[BasicAA] Don't check whether GEP is sized (NFC)

GEPs are required to have sized source element type, so we can
just assert that here.
The file was modifiedllvm/lib/Analysis/BasicAliasAnalysis.cpp
Commit e2f780fba96c55b0dcb7aa3c4719110875b36dfb by mgorny
[lldb] [gdb-remote] Use llvm::StringRef.split() and llvm::to_integer()

Replace the uses of StringConvert combined with hand-rolled array
splitting with llvm::StringRef.split() and llvm::to_integer().

Differential Revision: https://reviews.llvm.org/D110472
The file was modifiedlldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
The file was modifiedlldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
The file was modifiedlldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp