42 lines
1 KiB
C++
42 lines
1 KiB
C++
|
// Copyright 2009-2020 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);
|
||
|
}
|
||
|
}
|