xref: /netbsd-src/external/apache2/llvm/dist/clang/lib/Headers/serializeintrin.h (revision e038c9c4676b0f19b1b7dd08a940c6ed64a6d5ae)
1*e038c9c4Sjoerg /*===--------------- serializeintrin.h - serialize intrinsics --------------===
2*e038c9c4Sjoerg  *
3*e038c9c4Sjoerg  * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*e038c9c4Sjoerg  * See https://llvm.org/LICENSE.txt for license information.
5*e038c9c4Sjoerg  * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*e038c9c4Sjoerg  *
7*e038c9c4Sjoerg  *===-----------------------------------------------------------------------===
8*e038c9c4Sjoerg  */
9*e038c9c4Sjoerg 
10*e038c9c4Sjoerg #ifndef __IMMINTRIN_H
11*e038c9c4Sjoerg #error "Never use <serializeintrin.h> directly; include <immintrin.h> instead."
12*e038c9c4Sjoerg #endif
13*e038c9c4Sjoerg 
14*e038c9c4Sjoerg #ifndef __SERIALIZEINTRIN_H
15*e038c9c4Sjoerg #define __SERIALIZEINTRIN_H
16*e038c9c4Sjoerg 
17*e038c9c4Sjoerg /// Serialize instruction fetch and execution.
18*e038c9c4Sjoerg ///
19*e038c9c4Sjoerg /// \headerfile <x86intrin.h>
20*e038c9c4Sjoerg ///
21*e038c9c4Sjoerg /// This intrinsic corresponds to the <c> SERIALIZE </c> instruction.
22*e038c9c4Sjoerg ///
23*e038c9c4Sjoerg static __inline__ void
24*e038c9c4Sjoerg __attribute__((__always_inline__, __nodebug__, __target__("serialize")))
_serialize(void)25*e038c9c4Sjoerg _serialize (void)
26*e038c9c4Sjoerg {
27*e038c9c4Sjoerg   __builtin_ia32_serialize ();
28*e038c9c4Sjoerg }
29*e038c9c4Sjoerg 
30*e038c9c4Sjoerg #endif /* __SERIALIZEINTRIN_H */
31