1 /*===------------- tsxldtrkintrin.h - tsxldtrk intrinsics ------------------=== 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 __IMMINTRIN_H 11 #error "Never use <tsxldtrkintrin.h> directly; include <immintrin.h> instead." 12 #endif 13 14 #ifndef __TSXLDTRKINTRIN_H 15 #define __TSXLDTRKINTRIN_H 16 17 /* Define the default attributes for the functions in this file */ 18 #define _DEFAULT_FN_ATTRS \ 19 __attribute__((__always_inline__, __nodebug__, __target__("tsxldtrk"))) 20 21 /// Marks the start of an TSX (RTM) suspend load address tracking region. If 22 /// this intrinsic is used inside a transactional region, subsequent loads 23 /// are not added to the read set of the transaction. If it's used inside a 24 /// suspend load address tracking region it will cause transaction abort. 25 /// If it's used outside of a transactional region it behaves like a NOP. 26 /// 27 /// \headerfile <x86intrin.h> 28 /// 29 /// This intrinsic corresponds to the \c XSUSLDTRK instruction. 30 /// 31 static __inline__ void _DEFAULT_FN_ATTRS _xsusldtrk(void)32_xsusldtrk (void) 33 { 34 __builtin_ia32_xsusldtrk(); 35 } 36 37 /// Marks the end of an TSX (RTM) suspend load address tracking region. If this 38 /// intrinsic is used inside a suspend load address tracking region it will 39 /// end the suspend region and all following load addresses will be added to 40 /// the transaction read set. If it's used inside an active transaction but 41 /// not in a suspend region it will cause transaction abort. If it's used 42 /// outside of a transactional region it behaves like a NOP. 43 /// 44 /// \headerfile <x86intrin.h> 45 /// 46 /// This intrinsic corresponds to the \c XRESLDTRK instruction. 47 /// 48 static __inline__ void _DEFAULT_FN_ATTRS _xresldtrk(void)49_xresldtrk (void) 50 { 51 __builtin_ia32_xresldtrk(); 52 } 53 54 #undef _DEFAULT_FN_ATTRS 55 56 #endif /* __TSXLDTRKINTRIN_H */ 57