forked from OSchip/llvm-project
[X86] Support __SSC_MARK(const int id)
Differential Revision: https://reviews.llvm.org/D108682
This commit is contained in:
parent
4c29dc18cf
commit
80f7ce8993
|
@ -20,4 +20,9 @@
|
|||
#include <uintrintrin.h>
|
||||
#endif
|
||||
|
||||
#define __SSC_MARK(Tag) \
|
||||
__asm__ __volatile__("movl %%ebx, %%eax; movl %0, %%ebx; .byte 0x64, 0x67, " \
|
||||
"0x90; movl %%eax, %%ebx;" ::"i"(Tag) \
|
||||
: "%eax");
|
||||
|
||||
#endif /* __X86GPRINTRIN_H */
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
// REQUIRES: x86-registered-target
|
||||
// RUN: %clang_cc1 %s -triple=x86_64-unknown-unknown -S -ffreestanding -o - | FileCheck %s
|
||||
// RUN: %clang_cc1 %s -triple=i386-unknown-unknown -S -ffreestanding -o - | FileCheck %s
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
// The ebx may be use for base pointer, we need to restore it in time.
|
||||
void ssc_mark() {
|
||||
// CHECK-LABEL: ssc_mark
|
||||
// CHECK: #APP
|
||||
// CHECK: movl %ebx, %eax
|
||||
// CHECK: movl $0, %ebx
|
||||
// CHECK: .byte 100
|
||||
// CHECK: .byte 103
|
||||
// CHECK: .byte 144
|
||||
// CHECK: movl %eax, %ebx
|
||||
// CHECK: #NO_APP
|
||||
|
||||
__SSC_MARK(0x0);
|
||||
}
|
Loading…
Reference in New Issue