41 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright 2009-2021 Intel Corporation
 | |
| // SPDX-License-Identifier: Apache-2.0
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include "../sys/platform.h"
 | |
| #include "../sys/intrinsics.h"
 | |
| #include "../math/constants.h"
 | |
| #include "../sys/alloc.h"
 | |
| #include "varying.h"
 | |
| 
 | |
| #include "vboolf16_avx512.h"
 | |
| #include "vint16_avx512.h"
 | |
| #include "vuint16_avx512.h"
 | |
| #include "vfloat16_avx512.h"
 | |
| 
 | |
| #include "vboold8_avx512.h"
 | |
| #include "vllong8_avx512.h"
 | |
| #include "vdouble8_avx512.h"
 | |
| 
 | |
| namespace embree
 | |
| {
 | |
|   ////////////////////////////////////////////////////////////////////////////////
 | |
|   /// Prefetching
 | |
|   ////////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #define PFHINT_L1   0
 | |
| #define PFHINT_L2   1
 | |
| #define PFHINT_NT   2
 | |
| 
 | |
|   template<const unsigned int mode>
 | |
|     __forceinline void prefetch(const void * __restrict__ const m)
 | |
|   {
 | |
|     if (mode == PFHINT_L1)
 | |
|       _mm_prefetch((const char*)m,_MM_HINT_T0); 
 | |
|     else if (mode == PFHINT_L2) 
 | |
|       _mm_prefetch((const char*)m,_MM_HINT_T1); 
 | |
|     else if (mode == PFHINT_NT) 
 | |
|       _mm_prefetch((const char*)m,_MM_HINT_NTA); 
 | |
|   }
 | |
| }
 |