Changes from Git (git http://labmaster3.local/git/llvm-project.git)


  1. [mlir][ods] Fix StringRef initialization in builders (details)
  2. [WebAssembly][InstrEmitter] Foundation for multivalue call lowering (details)
Commit f2dc179d686a77de8daa1b31c8984b39823e9a3d by antiagainst
[mlir][ods] Fix StringRef initialization in builders
For the generated builder taking in unwrapped attribute values, if the
argument is a string, we should avoid wrapping it in quotes; otherwise
we are always setting the string attribute to contain the string
argument's name. The quotes come from StrinAttr's
`constBuilderCall`, which is reasonable for string literals, but not
function arguments containing strings.
Differential Revision: https://reviews.llvm.org/D72977
The file was modifiedmlir/test/mlir-tblgen/op-attribute.td
The file was modifiedmlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
The file was modifiedmlir/include/mlir/TableGen/Attribute.h
Commit 3ef169e586f4d14efe690c23c878d5aa92a80eb5 by tlively
[WebAssembly][InstrEmitter] Foundation for multivalue call lowering
Summary: WebAssembly is unique among upstream targets in that it does
not at any point use physical registers to store values. Instead, it
uses virtual registers to model positions in its value stack. This means
that some target-independent lowering activities that would use physical
registers need to use virtual registers instead for WebAssembly and
similar downstream targets. This CL generalizes the existing
`usesPhysRegsForPEI` lowering hook to
`usesPhysRegsForValues` in preparation for using it in more places.
One such place is in InstrEmitter for instructions that have variadic
defs. On register machines, it only makes sense for these defs to be
physical registers, but for WebAssembly they must be virtual registers
like any other values. This CL changes InstrEmitter to check the new
target lowering hook to determine whether variadic defs should be
physical or virtual registers.
These changes are necessary to support a generalized CALL instruction
for WebAssembly that is capable of returning an arbitrary number of
arguments. Fully implementing that instruction will require additional
changes that are described in comments here but left for a follow up
Reviewers: aheejin, dschuff, qcolombet
Subscribers: sbc100, jgravelle-google, hiraditya, sunfish, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71484
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyUtilities.h
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyUtilities.cpp
The file was modifiedllvm/include/llvm/Target/TargetMachine.h
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.h
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp
The file was modifiedllvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyInstrCall.td
The file was modifiedllvm/lib/CodeGen/PrologEpilogInserter.cpp
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
The file was modifiedllvm/test/CodeGen/WebAssembly/multivalue.ll
The file was modifiedllvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.h
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyISD.def