zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

tsxldtrkintrin.h (2015B) - Raw


      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
     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
     49 _xresldtrk (void)
     50 {
     51     __builtin_ia32_xresldtrk();
     52 }
     53 
     54 #undef _DEFAULT_FN_ATTRS
     55 
     56 #endif /* __TSXLDTRKINTRIN_H */