1/*===---- prfchiintrin.h - PREFETCHI intrinsic -----------------------------===
2 *
3 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 * See https://llvm.org/LICENSE.txt for license information.
5 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 *
7 *===-----------------------------------------------------------------------===
8 */
9
10#ifndef __PRFCHIINTRIN_H
11#define __PRFCHIINTRIN_H
12
13#ifdef __x86_64__
14
15/* Define the default attributes for the functions in this file. */
16#define __DEFAULT_FN_ATTRS                                                     \
17  __attribute__((__always_inline__, __nodebug__, __target__("prefetchi")))
18
19/// Loads an instruction sequence containing the specified memory address into
20///    all level cache.
21///
22///    Note that the effect of this intrinsic is dependent on the processor
23///    implementation.
24///
25/// \headerfile <x86intrin.h>
26///
27/// This intrinsic corresponds to the \c PREFETCHIT0 instruction.
28///
29/// \param __P
30///    A pointer specifying the memory address to be prefetched.
31static __inline__ void __DEFAULT_FN_ATTRS
32_m_prefetchit0(volatile const void *__P) {
33#pragma clang diagnostic push
34#pragma clang diagnostic ignored "-Wcast-qual"
35  __builtin_ia32_prefetchi((const void *)__P, 3 /* _MM_HINT_T0 */);
36#pragma clang diagnostic pop
37}
38
39/// Loads an instruction sequence containing the specified memory address into
40///    all but the first-level cache.
41///
42///    Note that the effect of this intrinsic is dependent on the processor
43///    implementation.
44///
45/// \headerfile <x86intrin.h>
46///
47/// This intrinsic corresponds to the \c PREFETCHIT1 instruction.
48///
49/// \param __P
50///    A pointer specifying the memory address to be prefetched.
51static __inline__ void __DEFAULT_FN_ATTRS
52_m_prefetchit1(volatile const void *__P) {
53#pragma clang diagnostic push
54#pragma clang diagnostic ignored "-Wcast-qual"
55  __builtin_ia32_prefetchi((const void *)__P, 2 /* _MM_HINT_T1 */);
56#pragma clang diagnostic pop
57}
58#endif /* __x86_64__ */
59#undef __DEFAULT_FN_ATTRS
60
61#endif /* __PRFCHWINTRIN_H */
62