Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  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.
  31. static __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.
  51. static __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.