1*9f96a58cSHeejin Ahn// WebAssemblyInstrRef.td - WebAssembly reference type codegen --*- tablegen -*- 2*9f96a58cSHeejin Ahn// 3*9f96a58cSHeejin Ahn// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*9f96a58cSHeejin Ahn// See https://llvm.org/LICENSE.txt for license information. 5*9f96a58cSHeejin Ahn// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*9f96a58cSHeejin Ahn// 7*9f96a58cSHeejin Ahn//===----------------------------------------------------------------------===// 8*9f96a58cSHeejin Ahn/// 9*9f96a58cSHeejin Ahn/// \file 10*9f96a58cSHeejin Ahn/// WebAssembly refence type operand codegen constructs. 11*9f96a58cSHeejin Ahn/// 12*9f96a58cSHeejin Ahn//===----------------------------------------------------------------------===// 13*9f96a58cSHeejin Ahn 14*9f96a58cSHeejin Ahndefm SELECT_EXNREF : I<(outs EXNREF:$dst), 15*9f96a58cSHeejin Ahn (ins EXNREF:$lhs, EXNREF:$rhs, I32:$cond), 16*9f96a58cSHeejin Ahn (outs), (ins), 17*9f96a58cSHeejin Ahn [(set EXNREF:$dst, 18*9f96a58cSHeejin Ahn (select I32:$cond, EXNREF:$lhs, EXNREF:$rhs))], 19*9f96a58cSHeejin Ahn "exnref.select\t$dst, $lhs, $rhs, $cond", 20*9f96a58cSHeejin Ahn "exnref.select", 0x1b>; 21*9f96a58cSHeejin Ahn 22*9f96a58cSHeejin Ahndef : Pat<(select (i32 (setne I32:$cond, 0)), EXNREF:$lhs, EXNREF:$rhs), 23*9f96a58cSHeejin Ahn (SELECT_EXNREF EXNREF:$lhs, EXNREF:$rhs, I32:$cond)>; 24*9f96a58cSHeejin Ahndef : Pat<(select (i32 (seteq I32:$cond, 0)), EXNREF:$lhs, EXNREF:$rhs), 25*9f96a58cSHeejin Ahn (SELECT_EXNREF EXNREF:$rhs, EXNREF:$lhs, I32:$cond)>; 26