added several useful defines and a warning that '__vec16_i1' might not be working with embree

This commit is contained in:
Anton Mitrokhin
2014-09-11 15:18:36 +04:00
parent 0a5b16dbe6
commit 723baca4c2

View File

@@ -44,6 +44,15 @@
#include <iostream> // for operator<<(m512[i])
#include <iomanip> // for operator<<(m512[i])
#define STRING(x) #x
#define TOSTRING(x) STRING(x)
#define PING std::cout << __FILE__ << " (" << __LINE__ << "): " << __FUNCTION__ << std::endl
#define PRINT(x) std::cout << STRING(x) << " = " << (x) << std::endl
#define PRINT2(x,y) std::cout << STRING(x) << " = " << (x) << ", " << STRING(y) << " = " << (y) << std::endl
#define PRINT3(x,y,z) std::cout << STRING(x) << " = " << (x) << ", " << STRING(y) << " = " << (y) << ", " << STRING(z) << " = " << (z) << std::endl
#define PRINT4(x,y,z,w) std::cout << STRING(x) << " = " << (x) << ", " << STRING(y) << " = " << (y) << ", " << STRING(z) << " = " << (z) << ", " << STRING(w) << " = " << (w) << std::endl
#define FORCEINLINE __forceinline
#ifdef _MSC_VER
#define PRE_ALIGN(x) /*__declspec(align(x))*/
@@ -75,8 +84,11 @@ typedef int64_t __vec1_i64;
struct __vec16_i32;
//typedef __mmask16 POST_ALIGN(2) __vec16_i1;
/* (iw) actually, this *SHOULD* be the right implementation for a
vec16_i1: this one is a class that can have a constructor (which
ISPC sometimes emits for these vectors...) This version might
not be working with embree's ISPC bindings, probably because
embree still uses the 'wrong' implementation */
typedef struct PRE_ALIGN(2) __vec16_i1
{
FORCEINLINE operator __mmask16() const { return v; }