void BVH4MBRegister () { int features = getCPUFeatures(); SELECT_SYMBOL_DEFAULT_AVX_AVX2(features,BVH4MBTriangle1vIntersector1Moeller); SELECT_SYMBOL_DEFAULT_AVX_AVX2(features,BVH4MBTriangle1vIntersector4ChunkMoeller); SELECT_SYMBOL_AVX_AVX2(features,BVH4MBTriangle1vIntersector8ChunkMoeller); }
void InstanceIntersectorsRegister () { int features = getCPUFeatures(); #if defined(__MIC__) SELECT_SYMBOL_KNC(features,InstanceBoundsFunc); SELECT_SYMBOL_KNC(features,InstanceIntersector1); SELECT_SYMBOL_KNC(features,InstanceIntersector16); #else SELECT_SYMBOL_DEFAULT_AVX_AVX2(features,InstanceBoundsFunc); SELECT_SYMBOL_DEFAULT_AVX_AVX2(features,InstanceIntersector1); SELECT_SYMBOL_DEFAULT_AVX_AVX2(features,InstanceIntersector4); SELECT_SYMBOL_AVX_AVX2(features,InstanceIntersector8); #endif }
void BVH4Register () { int features = getCPUFeatures(); /* select builders */ SELECT_SYMBOL_DEFAULT_AVX(features,BVH4BuilderTwoLevelSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Bezier1vBuilder_OBB_New); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Bezier1iBuilder_OBB_New); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Bezier1iMBBuilder_OBB_New); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4SceneBuilderSAH); SELECT_SYMBOL_AVX (features,BVH4Triangle8SceneBuilderSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4vSceneBuilderSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4iSceneBuilderSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4vMBSceneBuilderSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4SceneBuilderSpatialSAH); SELECT_SYMBOL_AVX (features,BVH4Triangle8SceneBuilderSpatialSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4vSceneBuilderSpatialSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4iSceneBuilderSpatialSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4MeshBuilderSAH); SELECT_SYMBOL_AVX (features,BVH4Triangle8MeshBuilderSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4vMeshBuilderSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4iMeshBuilderSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Bezier1vSceneBuilderSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Bezier1iSceneBuilderSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4VirtualSceneBuilderSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4SubdivPatch1BuilderBinnedSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4SubdivPatch1CachedBuilderBinnedSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4SubdivGridBuilderBinnedSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4SubdivGridEagerBuilderBinnedSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4SubdivGridLazyBuilderBinnedSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4MeshRefitSAH); SELECT_SYMBOL_AVX (features,BVH4Triangle8MeshRefitSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4vMeshRefitSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4iMeshRefitSAH); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4SceneBuilderMortonGeneral); SELECT_SYMBOL_AVX (features,BVH4Triangle8SceneBuilderMortonGeneral); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4vSceneBuilderMortonGeneral); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4iSceneBuilderMortonGeneral); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4MeshBuilderMortonGeneral); SELECT_SYMBOL_AVX (features,BVH4Triangle8MeshBuilderMortonGeneral); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4vMeshBuilderMortonGeneral); SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Triangle4iMeshBuilderMortonGeneral); /* select intersectors1 */ SELECT_SYMBOL_DEFAULT_AVX_AVX2 (features,BVH4Bezier1vIntersector1); SELECT_SYMBOL_DEFAULT_AVX_AVX2 (features,BVH4Bezier1iIntersector1); SELECT_SYMBOL_DEFAULT_AVX_AVX2 (features,BVH4Bezier1vIntersector1_OBB); SELECT_SYMBOL_DEFAULT_AVX_AVX2 (features,BVH4Bezier1iIntersector1_OBB); SELECT_SYMBOL_DEFAULT_AVX_AVX2 (features,BVH4Bezier1iMBIntersector1_OBB); SELECT_SYMBOL_DEFAULT_SSE41_AVX_AVX2(features,BVH4Triangle4Intersector1Moeller); SELECT_SYMBOL_AVX_AVX2 (features,BVH4Triangle8Intersector1Moeller); SELECT_SYMBOL_DEFAULT_SSE41_AVX (features,BVH4Triangle4vIntersector1Pluecker); SELECT_SYMBOL_DEFAULT_SSE41_AVX (features,BVH4Triangle4iIntersector1Pluecker); SELECT_SYMBOL_DEFAULT_SSE41_AVX_AVX2(features,BVH4Triangle4vMBIntersector1Moeller); SELECT_SYMBOL_DEFAULT_SSE41_AVX_AVX2(features,BVH4Subdivpatch1Intersector1); SELECT_SYMBOL_DEFAULT_SSE41_AVX_AVX2(features,BVH4Subdivpatch1CachedIntersector1); SELECT_SYMBOL_DEFAULT_SSE41_AVX_AVX2(features,BVH4GridIntersector1); SELECT_SYMBOL_DEFAULT_SSE41_AVX_AVX2(features,BVH4GridLazyIntersector1); SELECT_SYMBOL_DEFAULT_SSE41_AVX_AVX2(features,BVH4VirtualIntersector1); /* select intersectors4 */ SELECT_SYMBOL_DEFAULT_AVX_AVX2 (features,BVH4Bezier1vIntersector4Chunk); SELECT_SYMBOL_DEFAULT_AVX_AVX2 (features,BVH4Bezier1iIntersector4Chunk); SELECT_SYMBOL_DEFAULT_AVX_AVX2 (features,BVH4Bezier1vIntersector4Single_OBB); SELECT_SYMBOL_DEFAULT_AVX_AVX2 (features,BVH4Bezier1iIntersector4Single_OBB); SELECT_SYMBOL_DEFAULT_AVX_AVX2 (features,BVH4Bezier1iMBIntersector4Single_OBB); SELECT_SYMBOL_DEFAULT_SSE41_AVX_AVX2(features,BVH4Triangle4Intersector4ChunkMoeller); SELECT_SYMBOL_DEFAULT_SSE41_AVX_AVX2(features,BVH4Triangle4Intersector4ChunkMoellerNoFilter); SELECT_SYMBOL_AVX_AVX2 (features,BVH4Triangle8Intersector4ChunkMoeller); SELECT_SYMBOL_DEFAULT2 (features,BVH4Triangle4Intersector4HybridMoeller,BVH4Triangle4Intersector4ChunkMoeller); // hybrid not supported below SSE4.2 SELECT_SYMBOL_AVX_AVX2 (features,BVH4Triangle8Intersector4ChunkMoellerNoFilter); SELECT_SYMBOL_DEFAULT2 (features,BVH4Triangle4Intersector4HybridMoellerNoFilter,BVH4Triangle4Intersector4ChunkMoellerNoFilter); // hybrid not supported below SSE4.2 SELECT_SYMBOL_SSE42_AVX_AVX2 (features,BVH4Triangle4Intersector4HybridMoeller); SELECT_SYMBOL_SSE42_AVX_AVX2 (features,BVH4Triangle4Intersector4HybridMoellerNoFilter); SELECT_SYMBOL_AVX_AVX2 (features,BVH4Triangle8Intersector4HybridMoeller); SELECT_SYMBOL_AVX_AVX2 (features,BVH4Triangle8Intersector4HybridMoellerNoFilter); SELECT_SYMBOL_DEFAULT_SSE41_AVX (features,BVH4Triangle4vIntersector4ChunkPluecker); SELECT_SYMBOL_DEFAULT2 (features,BVH4Triangle4vIntersector4HybridPluecker,BVH4Triangle4vIntersector4ChunkPluecker); // hybrid not supported below SSE4.2 SELECT_SYMBOL_SSE42_AVX (features,BVH4Triangle4vIntersector4HybridPluecker); SELECT_SYMBOL_DEFAULT_SSE41_AVX (features,BVH4Triangle4iIntersector4ChunkPluecker); SELECT_SYMBOL_DEFAULT_SSE41_AVX_AVX2(features,BVH4Triangle4vMBIntersector4ChunkMoeller); SELECT_SYMBOL_DEFAULT_AVX_AVX2 (features,BVH4Subdivpatch1Intersector4); SELECT_SYMBOL_DEFAULT_AVX_AVX2 (features,BVH4Subdivpatch1CachedIntersector4); SELECT_SYMBOL_DEFAULT_AVX_AVX2 (features,BVH4GridIntersector4); SELECT_SYMBOL_DEFAULT_AVX_AVX2 (features,BVH4GridLazyIntersector4); SELECT_SYMBOL_DEFAULT_SSE41_AVX_AVX2(features,BVH4VirtualIntersector4Chunk); /* select intersectors8 */ SELECT_SYMBOL_AVX_AVX2(features,BVH4Bezier1vIntersector8Chunk); SELECT_SYMBOL_AVX_AVX2(features,BVH4Bezier1iIntersector8Chunk); SELECT_SYMBOL_AVX_AVX2(features,BVH4Bezier1vIntersector8Single_OBB); SELECT_SYMBOL_AVX_AVX2(features,BVH4Bezier1iIntersector8Single_OBB); SELECT_SYMBOL_AVX_AVX2(features,BVH4Bezier1iMBIntersector8Single_OBB); SELECT_SYMBOL_AVX_AVX2(features,BVH4Triangle4Intersector8ChunkMoeller); SELECT_SYMBOL_AVX_AVX2(features,BVH4Triangle4Intersector8ChunkMoellerNoFilter); SELECT_SYMBOL_AVX_AVX2(features,BVH4Triangle8Intersector8ChunkMoeller); SELECT_SYMBOL_AVX_AVX2(features,BVH4Triangle8Intersector8ChunkMoellerNoFilter); SELECT_SYMBOL_AVX_AVX2(features,BVH4Triangle4Intersector8HybridMoeller); SELECT_SYMBOL_AVX_AVX2(features,BVH4Triangle4Intersector8HybridMoellerNoFilter); SELECT_SYMBOL_AVX_AVX2(features,BVH4Triangle8Intersector8HybridMoeller); SELECT_SYMBOL_AVX_AVX2(features,BVH4Triangle8Intersector8HybridMoellerNoFilter); SELECT_SYMBOL_AVX (features,BVH4Triangle4vIntersector8ChunkPluecker); SELECT_SYMBOL_AVX (features,BVH4Triangle4vIntersector8HybridPluecker); SELECT_SYMBOL_AVX (features,BVH4Triangle4iIntersector8ChunkPluecker); SELECT_SYMBOL_AVX_AVX2(features,BVH4Triangle4vMBIntersector8ChunkMoeller); SELECT_SYMBOL_AVX_AVX2(features,BVH4Subdivpatch1Intersector8); SELECT_SYMBOL_AVX_AVX2(features,BVH4Subdivpatch1CachedIntersector8); SELECT_SYMBOL_AVX_AVX2(features,BVH4GridIntersector8); SELECT_SYMBOL_AVX_AVX2(features,BVH4GridLazyIntersector8); SELECT_SYMBOL_AVX_AVX2(features,BVH4VirtualIntersector8Chunk); }
void BVH8Register () { int features = getCPUFeatures(); /* select builders */ SELECT_SYMBOL_AVX(features,BVH8Triangle4Builder); SELECT_SYMBOL_AVX(features,BVH8Triangle8Builder); /* select intersectors1 */ SELECT_SYMBOL_AVX_AVX2(features,BVH8Triangle4Intersector1Moeller); SELECT_SYMBOL_AVX_AVX2(features,BVH8Triangle8Intersector1Moeller); /* select intersectors4 */ SELECT_SYMBOL_AVX_AVX2(features,BVH8Triangle4Intersector4HybridMoeller); SELECT_SYMBOL_AVX_AVX2(features,BVH8Triangle4Intersector4HybridMoellerNoFilter); SELECT_SYMBOL_AVX_AVX2(features,BVH8Triangle8Intersector4HybridMoeller); SELECT_SYMBOL_AVX_AVX2(features,BVH8Triangle8Intersector4HybridMoellerNoFilter); /* select intersectors8 */ SELECT_SYMBOL_AVX_AVX2(features,BVH8Triangle4Intersector8ChunkMoeller); SELECT_SYMBOL_AVX_AVX2(features,BVH8Triangle4Intersector8HybridMoeller); SELECT_SYMBOL_AVX_AVX2(features,BVH8Triangle4Intersector8HybridMoellerNoFilter); SELECT_SYMBOL_AVX_AVX2(features,BVH8Triangle8Intersector8ChunkMoeller); SELECT_SYMBOL_AVX_AVX2(features,BVH8Triangle8Intersector8HybridMoeller); SELECT_SYMBOL_AVX_AVX2(features,BVH8Triangle8Intersector8HybridMoellerNoFilter); }