/*
 * Copyright 2020 WebAssembly Community Group participants
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

DELEGATE(Nop);
DELEGATE(Block);
DELEGATE(If);
DELEGATE(Loop);
DELEGATE(Break);
DELEGATE(Switch);
DELEGATE(Call);
DELEGATE(CallIndirect);
DELEGATE(LocalGet);
DELEGATE(LocalSet);
DELEGATE(GlobalGet);
DELEGATE(GlobalSet);
DELEGATE(Load);
DELEGATE(Store);
DELEGATE(AtomicRMW);
DELEGATE(AtomicCmpxchg);
DELEGATE(AtomicWait);
DELEGATE(AtomicNotify);
DELEGATE(AtomicFence);
DELEGATE(Pause);
DELEGATE(SIMDExtract);
DELEGATE(SIMDReplace);
DELEGATE(SIMDShuffle);
DELEGATE(SIMDTernary);
DELEGATE(SIMDShift);
DELEGATE(SIMDLoad);
DELEGATE(SIMDLoadStoreLane);
DELEGATE(MemoryInit);
DELEGATE(DataDrop);
DELEGATE(MemoryCopy);
DELEGATE(MemoryFill);
DELEGATE(Const);
DELEGATE(Unary);
DELEGATE(Binary);
DELEGATE(Select);
DELEGATE(Drop);
DELEGATE(Return);
DELEGATE(MemorySize);
DELEGATE(MemoryGrow);
DELEGATE(Unreachable);
DELEGATE(Pop);
DELEGATE(RefNull);
DELEGATE(RefIsNull);
DELEGATE(RefFunc);
DELEGATE(RefEq);
DELEGATE(TableGet);
DELEGATE(TableSet);
DELEGATE(TableSize);
DELEGATE(TableGrow);
DELEGATE(TableFill);
DELEGATE(TableCopy);
DELEGATE(TableInit);
DELEGATE(ElemDrop);
DELEGATE(Try);
DELEGATE(TryTable);
DELEGATE(Throw);
DELEGATE(Rethrow);
DELEGATE(ThrowRef);
DELEGATE(TupleMake);
DELEGATE(TupleExtract);
DELEGATE(RefI31);
DELEGATE(I31Get);
DELEGATE(CallRef);
DELEGATE(RefTest);
DELEGATE(RefCast);
DELEGATE(RefGetDesc);
DELEGATE(BrOn);
DELEGATE(StructNew);
DELEGATE(StructGet);
DELEGATE(StructSet);
DELEGATE(StructRMW);
DELEGATE(StructCmpxchg);
DELEGATE(ArrayNew);
DELEGATE(ArrayNewData);
DELEGATE(ArrayNewElem);
DELEGATE(ArrayNewFixed);
DELEGATE(ArrayGet);
DELEGATE(ArraySet);
DELEGATE(ArrayLoad);
DELEGATE(ArrayStore);
DELEGATE(ArrayLen);
DELEGATE(ArrayCopy);
DELEGATE(ArrayFill);
DELEGATE(ArrayInitData);
DELEGATE(ArrayInitElem);
DELEGATE(ArrayRMW);
DELEGATE(ArrayCmpxchg);
DELEGATE(RefAs);
DELEGATE(StringNew);
DELEGATE(StringConst);
DELEGATE(StringMeasure);
DELEGATE(StringEncode);
DELEGATE(StringConcat);
DELEGATE(StringEq);
DELEGATE(StringTest);
DELEGATE(StringWTF16Get);
DELEGATE(StringSliceWTF);
DELEGATE(ContNew);
DELEGATE(ContBind);
DELEGATE(Suspend);
DELEGATE(Resume);
DELEGATE(ResumeThrow);
DELEGATE(StackSwitch);
DELEGATE(StructWait);
DELEGATE(StructNotify);

#undef DELEGATE
