//
// /build/openvkl/src/build/openvkl/devices/cpu/ispc_openvkl_module_cpu_device_16_avx512skx-i32x16sse2/ParticleVolume_ispc.h
// (Header automatically generated by the ispc compiler.)
// DO NOT EDIT THIS FILE.
//

#pragma once
#include <stdint.h>



#ifdef __cplusplus
namespace ispc { /* namespace */
#endif // __cplusplus


/* Portable alignment macro that works across different compilers and standards */
#if defined(__cplusplus) && __cplusplus >= 201103L
/* C++11 or newer - use alignas keyword */
#define __ISPC_ALIGN__(x) alignas(x)
#elif defined(__GNUC__) || defined(__clang__)
/* GCC or Clang - use __attribute__ */
#define __ISPC_ALIGN__(x) __attribute__((aligned(x)))
#elif defined(_MSC_VER)
/* Microsoft Visual C++ - use __declspec */
#define __ISPC_ALIGN__(x) __declspec(align(x))
#else
/* Unknown compiler/standard - alignment not supported */
#define __ISPC_ALIGN__(x)
#warning "Alignment not supported on this compiler"
#endif // defined(__cplusplus) && __cplusplus >= 201103L
#ifndef __ISPC_ALIGNED_STRUCT__
#if defined(__clang__) || !defined(_MSC_VER) || _MSC_VER > 1943
// Clang, GCC, ICC, Visual Studio
#define __ISPC_ALIGNED_STRUCT__(s) struct __ISPC_ALIGN__(s)
#else
// Older Visual Studio
#define __ISPC_ALIGNED_STRUCT__(s) __ISPC_ALIGN__(s) struct
#endif // defined(__clang__) || !defined(_MSC_VER) || _MSC_VER > 1943
#endif // __ISPC_ALIGNED_STRUCT__

#ifndef __ISPC_STRUCT_vec3f__
#define __ISPC_STRUCT_vec3f__
struct vec3f {
    float x;
    float y;
    float z;
};
#endif

#ifndef __ISPC_STRUCT_box3f__
#define __ISPC_STRUCT_box3f__
struct box3f {
    struct vec3f lower;
    struct vec3f upper;
};
#endif

#ifndef __ISPC_STRUCT_Data1D__
#define __ISPC_STRUCT_Data1D__
struct Data1D {
    const uint8_t * addr;
    uint64_t byteStride;
    uint64_t numItems;
    uint32_t dataType;
    bool compact;
};
#endif


///////////////////////////////////////////////////////////////////////////
// Functions exported from ispc code
///////////////////////////////////////////////////////////////////////////
#if defined(__cplusplus) && (! defined(__ISPC_NO_EXTERN_C) || !__ISPC_NO_EXTERN_C )
extern "C" {
#endif // __cplusplus
    extern void VKLParticleSampler_Constructor16(void * _volume, void * _self);
    extern void VKLParticleSampler_Destructor16(void * _sampler);
    extern void VKLParticleVolume_Constructor16(void * _self);
    extern void VKLParticleVolume_Destructor16(void * _self);
    extern void VKLParticleVolume_gradient_export16(const int32_t * imask, void * _sampler, const void * _objectCoordinates, void * _gradients);
    extern void VKLParticleVolume_sample_export16(const int32_t * imask, const void * _sampler, const void * _objectCoordinates, void * _samples);
#if defined(__cplusplus)
    extern void VKLParticleVolume_set16(void * _self, const struct box3f &_bbox, const struct Data1D * _positions, const struct Data1D * _radii, const struct Data1D * _weights, const float _radiusSupportFactor, const float _clampMaxCumulativeValue, const void * bvhRoot);
#else
    extern void VKLParticleVolume_set16(void * _self, const struct box3f *_bbox, const struct Data1D * _positions, const struct Data1D * _radii, const struct Data1D * _weights, const float _radiusSupportFactor, const float _clampMaxCumulativeValue, const void * bvhRoot);
#endif // VKLParticleVolume_set16 function declaraion
#if defined(__cplusplus) && (! defined(__ISPC_NO_EXTERN_C) || !__ISPC_NO_EXTERN_C )
} /* end extern C */
#endif // __cplusplus


/* Portable alignment macro that works across different compilers and standards */
#if defined(__cplusplus) && __cplusplus >= 201103L
/* C++11 or newer - use alignas keyword */
#define __ISPC_ALIGN__(x) alignas(x)
#elif defined(__GNUC__) || defined(__clang__)
/* GCC or Clang - use __attribute__ */
#define __ISPC_ALIGN__(x) __attribute__((aligned(x)))
#elif defined(_MSC_VER)
/* Microsoft Visual C++ - use __declspec */
#define __ISPC_ALIGN__(x) __declspec(align(x))
#else
/* Unknown compiler/standard - alignment not supported */
#define __ISPC_ALIGN__(x)
#warning "Alignment not supported on this compiler"
#endif // defined(__cplusplus) && __cplusplus >= 201103L
#ifndef __ISPC_ALIGNED_STRUCT__
#if defined(__clang__) || !defined(_MSC_VER) || _MSC_VER > 1943
// Clang, GCC, ICC, Visual Studio
#define __ISPC_ALIGNED_STRUCT__(s) struct __ISPC_ALIGN__(s)
#else
// Older Visual Studio
#define __ISPC_ALIGNED_STRUCT__(s) __ISPC_ALIGN__(s) struct
#endif // defined(__clang__) || !defined(_MSC_VER) || _MSC_VER > 1943
#endif // __ISPC_ALIGNED_STRUCT__



#ifdef __cplusplus
} /* namespace */
#endif // __cplusplus
