1 // Copyright 2021 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_PREFETCH_IMPL_H_ 6 #define QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_PREFETCH_IMPL_H_ 7 8 #if defined(_MSC_VER) 9 #include <intrin.h> 10 #endif 11 12 namespace quiche { 13 QuichePrefetchT0Impl(const void * addr)14inline void QuichePrefetchT0Impl(const void* addr) { 15 #if !defined(DISABLE_BUILTIN_PREFETCH) 16 #if defined(__GNUC__) || (defined(_M_ARM64) && defined(__clang__)) 17 __builtin_prefetch(addr, 0, 3); 18 #elif defined(_MSC_VER) 19 _mm_prefetch(reinterpret_cast<const char*>(addr), _MM_HINT_T0); 20 #else 21 (void*)addr; 22 #endif 23 #endif // !defined(DISABLE_BUILTIN_PREFETCH) 24 } 25 26 } // namespace quiche 27 28 #endif // QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_PREFETCH_IMPL_H_ 29