blob: 01e741f1eb611f18bec9e847e15c82765782dfd3 [file] [log] [blame]
Pirama Arumuga Nainar986b8802021-06-03 16:00:34 -07001/*===--------------- x86gprintrin.h - X86 GPR 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 __X86GPRINTRIN_H
11#define __X86GPRINTRIN_H
12
13#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
14 defined(__HRESET__)
15#include <hresetintrin.h>
16#endif
17
18#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
19 defined(__UINTR__)
20#include <uintrintrin.h>
21#endif
22
Pirama Arumuga Nainarec8c89d2022-02-23 09:26:16 -080023#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
24 defined(__CRC32__)
25#include <crc32intrin.h>
26#endif
27
Pirama Arumuga Nainar494f6452021-12-02 10:42:14 -080028#define __SSC_MARK(Tag) \
Pirama Arumuga Nainarec8c89d2022-02-23 09:26:16 -080029 __asm__ __volatile__("mov {%%ebx, %%eax|eax, ebx}; " \
30 "mov {%0, %%ebx|ebx, %0}; " \
31 ".byte 0x64, 0x67, 0x90; " \
32 "mov {%%eax, %%ebx|ebx, eax};" ::"i"(Tag) \
Pirama Arumuga Nainar494f6452021-12-02 10:42:14 -080033 : "%eax");
34
Pirama Arumuga Nainar986b8802021-06-03 16:00:34 -070035#endif /* __X86GPRINTRIN_H */