godot/thirdparty/embree/kernels/common/default.h

// Copyright 2009-2021 Intel Corporation
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "../../common/sys/platform.h"
#include "../../common/sys/sysinfo.h"
#include "../../common/sys/thread.h"
#include "../../common/sys/alloc.h"
#include "../../common/sys/ref.h"
#include "../../common/sys/intrinsics.h"
#include "../../common/sys/atomic.h"
#include "../../common/sys/mutex.h"
#include "../../common/sys/vector.h"
#include "../../common/sys/array.h"
#include "../../common/sys/estring.h"
#include "../../common/sys/regression.h"
#include "../../common/sys/vector.h"

#include "../../common/math/emath.h"
#include "../../common/math/transcendental.h"
#include "../../common/simd/simd.h"
#include "../../common/math/vec2.h"
#include "../../common/math/vec3.h"
#include "../../common/math/vec4.h"
#include "../../common/math/vec2fa.h"
#include "../../common/math/vec3fa.h"
#include "../../common/math/interval.h"
#include "../../common/math/bbox.h"
#include "../../common/math/obbox.h"
#include "../../common/math/lbbox.h"
#include "../../common/math/linearspace2.h"
#include "../../common/math/linearspace3.h"
#include "../../common/math/affinespace.h"
#include "../../common/math/range.h"
#include "../../common/lexers/tokenstream.h"

#define COMMA

#include "../config.h"
#include "isa.h"
#include "stat.h"
#include "profile.h"
#include "rtcore.h"
#include "vector.h"
#include "state.h"
#include "instance_stack.h"

#include <vector>
#include <map>
#include <algorithm>
#include <functional>
#include <utility>
#include <sstream>

namespace embree
{
  ////////////////////////////////////////////////////////////////////////////////
  /// Vec2 shortcuts
  ////////////////////////////////////////////////////////////////////////////////

  Vec2vf;
  Vec2vd;
  Vec2vr;
  Vec2vi;
  Vec2vl;
  Vec2vb;
  Vec2vbf;
  Vec2vbd;

  Vec2vf4;
  Vec2vd4;
  Vec2vr4;
  Vec2vi4;
  Vec2vl4;
  Vec2vb4;
  Vec2vbf4;
  Vec2vbd4;

  Vec2vf8;
  Vec2vd8;
  Vec2vr8;
  Vec2vi8;
  Vec2vl8;
  Vec2vb8;
  Vec2vbf8;
  Vec2vbd8;

  Vec2vf16;
  Vec2vd16;
  Vec2vr16;
  Vec2vi16;
  Vec2vl16;
  Vec2vb16;
  Vec2vbf16;
  Vec2vbd16;

  Vec2vfx;
  Vec2vdx;
  Vec2vrx;
  Vec2vix;
  Vec2vlx;
  Vec2vbx;
  Vec2vbfx;
  Vec2vbdx;

  ////////////////////////////////////////////////////////////////////////////////
  /// Vec3 shortcuts
  ////////////////////////////////////////////////////////////////////////////////

  Vec3vf;
  Vec3vd;
  Vec3vr;
  Vec3vi;
  Vec3vl;
  Vec3vb;
  Vec3vbf;
  Vec3vbd;

  Vec3vf4;
  Vec3vd4;
  Vec3vr4;
  Vec3vi4;
  Vec3vl4;
  Vec3vb4;
  Vec3vbf4;
  Vec3vbd4;

  Vec3vf8;
  Vec3vd8;
  Vec3vr8;
  Vec3vi8;
  Vec3vl8;
  Vec3vb8;
  Vec3vbf8;
  Vec3vbd8;

  Vec3vf16;
  Vec3vd16;
  Vec3vr16;
  Vec3vi16;
  Vec3vl16;
  Vec3vb16;
  Vec3vbf16;
  Vec3vbd16;

  Vec3vfx;
  Vec3vdx;
  Vec3vrx;
  Vec3vix;
  Vec3vlx;
  Vec3vbx;
  Vec3vbfx;
  Vec3vbdx;

  ////////////////////////////////////////////////////////////////////////////////
  /// Vec4 shortcuts
  ////////////////////////////////////////////////////////////////////////////////

  Vec4vf;
  Vec4vd;
  Vec4vr;
  Vec4vi;
  Vec4vl;
  Vec4vb;
  Vec4vbf;
  Vec4vbd;

  Vec4vf4;
  Vec4vd4;
  Vec4vr4;
  Vec4vi4;
  Vec4vl4;
  Vec4vb4;
  Vec4vbf4;
  Vec4vbd4;

  Vec4vf8;
  Vec4vd8;
  Vec4vr8;
  Vec4vi8;
  Vec4vl8;
  Vec4vb8;
  Vec4vbf8;
  Vec4vbd8;

  Vec4vf16;
  Vec4vd16;
  Vec4vr16;
  Vec4vi16;
  Vec4vl16;
  Vec4vb16;
  Vec4vbf16;
  Vec4vbd16;

  Vec4vfx;
  Vec4vdx;
  Vec4vrx;
  Vec4vix;
  Vec4vlx;
  Vec4vbx;
  Vec4vbfx;
  Vec4vbdx;

  ////////////////////////////////////////////////////////////////////////////////
  /// Other shortcuts
  ////////////////////////////////////////////////////////////////////////////////

  BBox3vf;
  BBox3vf4;
  BBox3vf8;
  BBox3vf16;

  /* calculate time segment itime and fractional time ftime */
  __forceinline int getTimeSegment(float time, float numTimeSegments, float& ftime)
  {}

  __forceinline int getTimeSegment(float time, float start_time, float end_time, float numTimeSegments, float& ftime)
  {}

  template<int N>
  __forceinline vint<N> getTimeSegment(const vfloat<N>& time, const vfloat<N>& numTimeSegments, vfloat<N>& ftime)
  {}

  template<int N>
    __forceinline vint<N> getTimeSegment(const vfloat<N>& time, const vfloat<N>& start_time, const vfloat<N>& end_time, const vfloat<N>& numTimeSegments, vfloat<N>& ftime)
  {}

  /* calculate overlapping time segment range */
  __forceinline range<int> getTimeSegmentRange(const BBox1f& time_range, float numTimeSegments)
  {}

  /* calculate overlapping time segment range */
  __forceinline range<int> getTimeSegmentRange(const BBox1f& range, BBox1f time_range, float numTimeSegments)
  {}
}