//
// /build/openvkl/src/build/testing/apps/ispc_vklTestsCPU_sse4avxavx2avx512skx-i32x16/simd_conformance_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_v4_varying_Hit__
#define __ISPC_STRUCT_v4_varying_Hit__
__ISPC_ALIGNED_STRUCT__(16) v4_varying_Hit {
    __ISPC_ALIGN__(16)     float t[4];
    __ISPC_ALIGN__(16)     float sample[4];
    __ISPC_ALIGN__(16)     float epsilon[4];
};
#endif

#ifndef __ISPC_STRUCT_v4_varying_box1f__
#define __ISPC_STRUCT_v4_varying_box1f__
__ISPC_ALIGNED_STRUCT__(16) v4_varying_box1f {
    __ISPC_ALIGN__(16)     float lower[4];
    __ISPC_ALIGN__(16)     float upper[4];
};
#endif

#ifndef __ISPC_STRUCT_v4_varying_Interval__
#define __ISPC_STRUCT_v4_varying_Interval__
__ISPC_ALIGNED_STRUCT__(16) v4_varying_Interval {
    struct v4_varying_box1f tRange;
    struct v4_varying_box1f valueRange;
    __ISPC_ALIGN__(16)     float nominalDeltaT[4];
};
#endif

#ifndef __ISPC_STRUCT_v4_varying_vec3f__
#define __ISPC_STRUCT_v4_varying_vec3f__
__ISPC_ALIGNED_STRUCT__(16) v4_varying_vec3f {
    __ISPC_ALIGN__(16)     float x[4];
    __ISPC_ALIGN__(16)     float y[4];
    __ISPC_ALIGN__(16)     float z[4];
};
#endif

#ifndef __ISPC_STRUCT___VKLObject__
#define __ISPC_STRUCT___VKLObject__
struct __VKLObject {
    void * host;
    void * device;
};
#endif

#ifndef __ISPC_STRUCT_v4_varying___vkl_vec3f__
#define __ISPC_STRUCT_v4_varying___vkl_vec3f__
__ISPC_ALIGNED_STRUCT__(16) v4_varying___vkl_vec3f {
    __ISPC_ALIGN__(16)     float x[4];
    __ISPC_ALIGN__(16)     float y[4];
    __ISPC_ALIGN__(16)     float z[4];
};
#endif

#ifndef __ISPC_STRUCT___vkl_vec3f__
#define __ISPC_STRUCT___vkl_vec3f__
struct __vkl_vec3f {
    float x;
    float y;
    float z;
};
#endif

#ifndef __ISPC_STRUCT___vkl_box3f__
#define __ISPC_STRUCT___vkl_box3f__
struct __vkl_box3f {
    struct __vkl_vec3f lower;
    struct __vkl_vec3f upper;
};
#endif

#ifndef __ISPC_STRUCT___vkl_box1f__
#define __ISPC_STRUCT___vkl_box1f__
struct __vkl_box1f {
    float lower;
    float upper;
};
#endif

#ifndef __ISPC_STRUCT_v4_varying___vkl_box1f__
#define __ISPC_STRUCT_v4_varying___vkl_box1f__
__ISPC_ALIGNED_STRUCT__(16) v4_varying___vkl_box1f {
    __ISPC_ALIGN__(16)     float lower[4];
    __ISPC_ALIGN__(16)     float upper[4];
};
#endif

#ifndef __ISPC_STRUCT_v4_varying_VKLHit__
#define __ISPC_STRUCT_v4_varying_VKLHit__
__ISPC_ALIGNED_STRUCT__(16) v4_varying_VKLHit {
    __ISPC_ALIGN__(16)     float t[4];
    __ISPC_ALIGN__(16)     float sample[4];
    __ISPC_ALIGN__(16)     float epsilon[4];
};
#endif

#ifndef __ISPC_STRUCT_v4_varying_VKLInterval__
#define __ISPC_STRUCT_v4_varying_VKLInterval__
__ISPC_ALIGNED_STRUCT__(16) v4_varying_VKLInterval {
    struct v4_varying___vkl_box1f tRange;
    struct v4_varying___vkl_box1f valueRange;
    __ISPC_ALIGN__(16)     float nominalDeltaT[4];
};
#endif


///////////////////////////////////////////////////////////////////////////
// Functions exported from ispc code
///////////////////////////////////////////////////////////////////////////
#if defined(__cplusplus) && (! defined(__ISPC_NO_EXTERN_C) || !__ISPC_NO_EXTERN_C )
extern "C" {
#endif // __cplusplus
    extern void delete_uniform(void * ptr);
    extern void *  newGridAcceleratorIteratorU();
    extern void *  newGridAcceleratorIteratorV();
    extern struct v4_varying_Hit *  newVaryingHit();
    extern struct v4_varying_Interval *  newVaryingInterval();
    extern struct v4_varying_box1f *  newVaryingRange1f();
    extern struct v4_varying_vec3f *  newVaryingVec3f();
    extern int32_t sizeofGridAcceleratorIteratorU();
    extern int32_t sizeofGridAcceleratorIteratorV();
    extern int32_t sizeofVaryingHit();
    extern int32_t sizeofVaryingInterval();
    extern int32_t sizeofVaryingRange1f();
    extern int32_t sizeofVaryingVKLIntervalIterator();
    extern int32_t sizeofVaryingVec3f();
#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__

#ifndef __ISPC_STRUCT_v8_varying_Hit__
#define __ISPC_STRUCT_v8_varying_Hit__
__ISPC_ALIGNED_STRUCT__(32) v8_varying_Hit {
    __ISPC_ALIGN__(32)     float t[8];
    __ISPC_ALIGN__(32)     float sample[8];
    __ISPC_ALIGN__(32)     float epsilon[8];
};
#endif

#ifndef __ISPC_STRUCT_v8_varying_box1f__
#define __ISPC_STRUCT_v8_varying_box1f__
__ISPC_ALIGNED_STRUCT__(32) v8_varying_box1f {
    __ISPC_ALIGN__(32)     float lower[8];
    __ISPC_ALIGN__(32)     float upper[8];
};
#endif

#ifndef __ISPC_STRUCT_v8_varying_Interval__
#define __ISPC_STRUCT_v8_varying_Interval__
__ISPC_ALIGNED_STRUCT__(32) v8_varying_Interval {
    struct v8_varying_box1f tRange;
    struct v8_varying_box1f valueRange;
    __ISPC_ALIGN__(32)     float nominalDeltaT[8];
};
#endif

#ifndef __ISPC_STRUCT_v8_varying_vec3f__
#define __ISPC_STRUCT_v8_varying_vec3f__
__ISPC_ALIGNED_STRUCT__(32) v8_varying_vec3f {
    __ISPC_ALIGN__(32)     float x[8];
    __ISPC_ALIGN__(32)     float y[8];
    __ISPC_ALIGN__(32)     float z[8];
};
#endif

#ifndef __ISPC_STRUCT_v8_varying___vkl_vec3f__
#define __ISPC_STRUCT_v8_varying___vkl_vec3f__
__ISPC_ALIGNED_STRUCT__(32) v8_varying___vkl_vec3f {
    __ISPC_ALIGN__(32)     float x[8];
    __ISPC_ALIGN__(32)     float y[8];
    __ISPC_ALIGN__(32)     float z[8];
};
#endif

#ifndef __ISPC_STRUCT_v8_varying___vkl_box1f__
#define __ISPC_STRUCT_v8_varying___vkl_box1f__
__ISPC_ALIGNED_STRUCT__(32) v8_varying___vkl_box1f {
    __ISPC_ALIGN__(32)     float lower[8];
    __ISPC_ALIGN__(32)     float upper[8];
};
#endif

#ifndef __ISPC_STRUCT_v8_varying_VKLHit__
#define __ISPC_STRUCT_v8_varying_VKLHit__
__ISPC_ALIGNED_STRUCT__(32) v8_varying_VKLHit {
    __ISPC_ALIGN__(32)     float t[8];
    __ISPC_ALIGN__(32)     float sample[8];
    __ISPC_ALIGN__(32)     float epsilon[8];
};
#endif

#ifndef __ISPC_STRUCT_v8_varying_VKLInterval__
#define __ISPC_STRUCT_v8_varying_VKLInterval__
__ISPC_ALIGNED_STRUCT__(32) v8_varying_VKLInterval {
    struct v8_varying___vkl_box1f tRange;
    struct v8_varying___vkl_box1f valueRange;
    __ISPC_ALIGN__(32)     float nominalDeltaT[8];
};
#endif


/* 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_v16_varying_Hit__
#define __ISPC_STRUCT_v16_varying_Hit__
__ISPC_ALIGNED_STRUCT__(64) v16_varying_Hit {
    __ISPC_ALIGN__(64)     float t[16];
    __ISPC_ALIGN__(64)     float sample[16];
    __ISPC_ALIGN__(64)     float epsilon[16];
};
#endif

#ifndef __ISPC_STRUCT_v16_varying_box1f__
#define __ISPC_STRUCT_v16_varying_box1f__
__ISPC_ALIGNED_STRUCT__(64) v16_varying_box1f {
    __ISPC_ALIGN__(64)     float lower[16];
    __ISPC_ALIGN__(64)     float upper[16];
};
#endif

#ifndef __ISPC_STRUCT_v16_varying_Interval__
#define __ISPC_STRUCT_v16_varying_Interval__
__ISPC_ALIGNED_STRUCT__(64) v16_varying_Interval {
    struct v16_varying_box1f tRange;
    struct v16_varying_box1f valueRange;
    __ISPC_ALIGN__(64)     float nominalDeltaT[16];
};
#endif

#ifndef __ISPC_STRUCT_v16_varying_vec3f__
#define __ISPC_STRUCT_v16_varying_vec3f__
__ISPC_ALIGNED_STRUCT__(64) v16_varying_vec3f {
    __ISPC_ALIGN__(64)     float x[16];
    __ISPC_ALIGN__(64)     float y[16];
    __ISPC_ALIGN__(64)     float z[16];
};
#endif

#ifndef __ISPC_STRUCT_v16_varying___vkl_vec3f__
#define __ISPC_STRUCT_v16_varying___vkl_vec3f__
__ISPC_ALIGNED_STRUCT__(64) v16_varying___vkl_vec3f {
    __ISPC_ALIGN__(64)     float x[16];
    __ISPC_ALIGN__(64)     float y[16];
    __ISPC_ALIGN__(64)     float z[16];
};
#endif

#ifndef __ISPC_STRUCT_v16_varying___vkl_box1f__
#define __ISPC_STRUCT_v16_varying___vkl_box1f__
__ISPC_ALIGNED_STRUCT__(64) v16_varying___vkl_box1f {
    __ISPC_ALIGN__(64)     float lower[16];
    __ISPC_ALIGN__(64)     float upper[16];
};
#endif

#ifndef __ISPC_STRUCT_v16_varying_VKLHit__
#define __ISPC_STRUCT_v16_varying_VKLHit__
__ISPC_ALIGNED_STRUCT__(64) v16_varying_VKLHit {
    __ISPC_ALIGN__(64)     float t[16];
    __ISPC_ALIGN__(64)     float sample[16];
    __ISPC_ALIGN__(64)     float epsilon[16];
};
#endif

#ifndef __ISPC_STRUCT_v16_varying_VKLInterval__
#define __ISPC_STRUCT_v16_varying_VKLInterval__
__ISPC_ALIGNED_STRUCT__(64) v16_varying_VKLInterval {
    struct v16_varying___vkl_box1f tRange;
    struct v16_varying___vkl_box1f valueRange;
    __ISPC_ALIGN__(64)     float nominalDeltaT[16];
};
#endif



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