[WebAssembly] Bitselect intrinsic and instruction
Summary: Depends on D52755.
Reviewers: aheejin, dschuff
Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D52805
llvm-svn: 343739
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
index a8992d8..d5dcbf1 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
@@ -965,6 +965,11 @@
switch (IntNo) {
default:
return {}; // Don't custom lower most intrinsics.
+
+ case Intrinsic::wasm_bitselect:
+ return DAG.getNode(WebAssemblyISD::BITSELECT, DL, Op.getValueType(),
+ Op.getOperand(1), Op.getOperand(2), Op.getOperand(3));
+
case Intrinsic::wasm_anytrue:
case Intrinsic::wasm_alltrue: {
unsigned OpCode = IntNo == Intrinsic::wasm_anytrue
@@ -972,6 +977,7 @@
: WebAssemblyISD::ALLTRUE;
return DAG.getNode(OpCode, DL, Op.getValueType(), Op.getOperand(1));
}
+
case Intrinsic::wasm_lsda:
// TODO For now, just return 0 not to crash
return DAG.getConstant(0, DL, Op.getValueType());