// Copyright 2021 The IREE Authors
//
// Licensed under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

#include "iree/vm/shims.h"

IREE_VM_ABI_DEFINE_SHIM(irIi, v);
IREE_VM_ABI_DEFINE_SHIM(r, i);
IREE_VM_ABI_DEFINE_SHIM(r, I);
IREE_VM_ABI_DEFINE_SHIM(r, ii);
IREE_VM_ABI_DEFINE_SHIM(r, iI);
IREE_VM_ABI_DEFINE_SHIM(r, iii);
IREE_VM_ABI_DEFINE_SHIM(r, iiii);
IREE_VM_ABI_DEFINE_SHIM(r, r);
IREE_VM_ABI_DEFINE_SHIM(r, rI);
IREE_VM_ABI_DEFINE_SHIM(r, v);
IREE_VM_ABI_DEFINE_SHIM(rCiD, i);
IREE_VM_ABI_DEFINE_SHIM(rCrD, v);
IREE_VM_ABI_DEFINE_SHIM(ri, i);
IREE_VM_ABI_DEFINE_SHIM(ri, I);
IREE_VM_ABI_DEFINE_SHIM(ri, f);
IREE_VM_ABI_DEFINE_SHIM(ri, r);
IREE_VM_ABI_DEFINE_SHIM(ri, v);
IREE_VM_ABI_DEFINE_SHIM(rI, i);
IREE_VM_ABI_DEFINE_SHIM(rI, r);
IREE_VM_ABI_DEFINE_SHIM(rI, v);
IREE_VM_ABI_DEFINE_SHIM(riCiD, r);
IREE_VM_ABI_DEFINE_SHIM(riiCID, r);
IREE_VM_ABI_DEFINE_SHIM(riCiiD, r);
IREE_VM_ABI_DEFINE_SHIM(riCrD, r);
IREE_VM_ABI_DEFINE_SHIM(rIi, i);
IREE_VM_ABI_DEFINE_SHIM(rii, r);
IREE_VM_ABI_DEFINE_SHIM(rII, r);
IREE_VM_ABI_DEFINE_SHIM(rii, v);
IREE_VM_ABI_DEFINE_SHIM(rif, v);
IREE_VM_ABI_DEFINE_SHIM(riii, r);
IREE_VM_ABI_DEFINE_SHIM(riiI, r);
IREE_VM_ABI_DEFINE_SHIM(riii, v);
IREE_VM_ABI_DEFINE_SHIM(riirII, r);
IREE_VM_ABI_DEFINE_SHIM(riiirII, r);
IREE_VM_ABI_DEFINE_SHIM(rrrrCrD, r);
IREE_VM_ABI_DEFINE_SHIM(ririi, v);
IREE_VM_ABI_DEFINE_SHIM(rr, i);
IREE_VM_ABI_DEFINE_SHIM(rr, r);
IREE_VM_ABI_DEFINE_SHIM(rr, v);
IREE_VM_ABI_DEFINE_SHIM(rr, ii);
IREE_VM_ABI_DEFINE_SHIM(rr, iI);
IREE_VM_ABI_DEFINE_SHIM(rrr, iI);
IREE_VM_ABI_DEFINE_SHIM(rrr, r);
IREE_VM_ABI_DEFINE_SHIM(rrCirIID, r);
IREE_VM_ABI_DEFINE_SHIM(rriCiD, v);
IREE_VM_ABI_DEFINE_SHIM(rriiCID, v);
IREE_VM_ABI_DEFINE_SHIM(rriCirIID, v);
IREE_VM_ABI_DEFINE_SHIM(rriiii, v);
IREE_VM_ABI_DEFINE_SHIM(rrIIii, v);
IREE_VM_ABI_DEFINE_SHIM(rrirCID, v);
IREE_VM_ABI_DEFINE_SHIM(rrirI, v);
IREE_VM_ABI_DEFINE_SHIM(rrIrII, v);
IREE_VM_ABI_DEFINE_SHIM(rrIii, v);
IREE_VM_ABI_DEFINE_SHIM(rrrIii, v);
IREE_VM_ABI_DEFINE_SHIM(rIrriiiI, r);
IREE_VM_ABI_DEFINE_SHIM(rIrrr, v);
IREE_VM_ABI_DEFINE_SHIM(rIrrCrD, v);
IREE_VM_ABI_DEFINE_SHIM(CrID, r);
IREE_VM_ABI_DEFINE_SHIM(CrD, r);
IREE_VM_ABI_DEFINE_SHIM(iCrD, i);
IREE_VM_ABI_DEFINE_SHIM(iI, rr);
IREE_VM_ABI_DEFINE_SHIM(irII, rr);
IREE_VM_ABI_DEFINE_SHIM(v, i);
IREE_VM_ABI_DEFINE_SHIM(v, r);
IREE_VM_ABI_DEFINE_SHIM(v, v);
