#pragma once
#include <stddef.h>
#include <stdint.h>
namespace skcms_private {
#define SKCMS_WORK_OPS(M) …
#define SKCMS_STORE_OPS(M) …
enum class Op : int { … };
#if defined(__clang__) || defined(__GNUC__)
static constexpr float INFINITY_ = …;
#else
static const union {
uint32_t bits;
float f;
} inf_ = { 0x7f800000 };
#define INFINITY_ …
#endif
#if defined(__clang__)
Vec __attribute__((ext_vector_type(N)));
#elif defined(__GNUC__)
template <int N, typename T> struct VecHelper {
typedef T __attribute__((vector_size(N * sizeof(T)))) V;
};
template <int N, typename T> using Vec = typename VecHelper<N, T>::V;
#endif
namespace baseline {
void run_program(const Op* program, const void** contexts, ptrdiff_t programSize,
const char* src, char* dst, int n,
const size_t src_bpp, const size_t dst_bpp);
}
namespace hsw {
void run_program(const Op* program, const void** contexts, ptrdiff_t programSize,
const char* src, char* dst, int n,
const size_t src_bpp, const size_t dst_bpp);
}
namespace skx {
void run_program(const Op* program, const void** contexts, ptrdiff_t programSize,
const char* src, char* dst, int n,
const size_t src_bpp, const size_t dst_bpp);
}
}