aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp
diff options
context:
space:
mode:
authorThomas Lively <tlively@google.com>2018-10-31 23:50:53 +0000
committerThomas Lively <tlively@google.com>2018-10-31 23:50:53 +0000
commit6ff31fe34d1332e29fd5e4d84bb91fa53cd704b8 (patch)
treebba3ec13c9be8be92306f105d3c59c6fbe1ceffd /llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp
parent41fb951f874977f4c28c27797cd0693ee17c1b15 (diff)
downloadllvm-6ff31fe34d1332e29fd5e4d84bb91fa53cd704b8.zip
llvm-6ff31fe34d1332e29fd5e4d84bb91fa53cd704b8.tar.gz
llvm-6ff31fe34d1332e29fd5e4d84bb91fa53cd704b8.tar.bz2
[WebAssembly] Handle vector IMPLICIT_DEFs.
Summary: Also reduce the test case for implicit defs and test it with all register classes. Reviewers: aheejin, dschuff Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits Differential Revision: https://reviews.llvm.org/D53855 llvm-svn: 345794
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp')
-rw-r--r--llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp
index 4649230..dc2aab8 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp
@@ -118,6 +118,11 @@ static void ConvertImplicitDefToConstZero(MachineInstr *MI,
ConstantFP *Val = cast<ConstantFP>(Constant::getNullValue(
Type::getDoubleTy(MF.getFunction().getContext())));
MI->addOperand(MachineOperand::CreateFPImm(Val));
+ } else if (RegClass == &WebAssembly::V128RegClass) {
+ // TODO: make splat instead of constant
+ MI->setDesc(TII->get(WebAssembly::CONST_V128_v16i8));
+ for (int I = 0; I < 16; ++I)
+ MI->addOperand(MachineOperand::CreateImm(0));
} else {
llvm_unreachable("Unexpected reg class");
}