//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, 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 <clc/integer/clc_upsample.h>
#include <clc/opencl/integer/upsample.h>

#define __CLC_UPSAMPLE_IMPL(BGENTYPE, GENTYPE, UGENTYPE)                       \
  _CLC_OVERLOAD _CLC_DEF BGENTYPE upsample(GENTYPE hi, UGENTYPE lo) {          \
    return __clc_upsample(hi, lo);                                             \
  }                                                                            \
  _CLC_OVERLOAD _CLC_DEF BGENTYPE##2 upsample(GENTYPE##2 hi, UGENTYPE##2 lo) { \
    return __clc_upsample(hi, lo);                                             \
  }                                                                            \
  _CLC_OVERLOAD _CLC_DEF BGENTYPE##3 upsample(GENTYPE##3 hi, UGENTYPE##3 lo) { \
    return __clc_upsample(hi, lo);                                             \
  }                                                                            \
  _CLC_OVERLOAD _CLC_DEF BGENTYPE##4 upsample(GENTYPE##4 hi, UGENTYPE##4 lo) { \
    return __clc_upsample(hi, lo);                                             \
  }                                                                            \
  _CLC_OVERLOAD _CLC_DEF BGENTYPE##8 upsample(GENTYPE##8 hi, UGENTYPE##8 lo) { \
    return __clc_upsample(hi, lo);                                             \
  }                                                                            \
  _CLC_OVERLOAD _CLC_DEF BGENTYPE##16 upsample(GENTYPE##16 hi,                 \
                                               UGENTYPE##16 lo) {              \
    return __clc_upsample(hi, lo);                                             \
  }

#define __CLC_UPSAMPLE_TYPES()                                                 \
  __CLC_UPSAMPLE_IMPL(short, char, uchar)                                      \
  __CLC_UPSAMPLE_IMPL(ushort, uchar, uchar)                                    \
  __CLC_UPSAMPLE_IMPL(int, short, ushort)                                      \
  __CLC_UPSAMPLE_IMPL(uint, ushort, ushort)                                    \
  __CLC_UPSAMPLE_IMPL(long, int, uint)                                         \
  __CLC_UPSAMPLE_IMPL(ulong, uint, uint)

__CLC_UPSAMPLE_TYPES()

#undef __CLC_UPSAMPLE_TYPES
#undef __CLC_UPSAMPLE_IMPL
