Skip to content

Commit

Permalink
[X86] Introduce wbinvd intrinsic
Browse files Browse the repository at this point in the history
A previously missing intrinsic for an old instruction.

Reviewers: craig.topper, echristo

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D45311

llvm-svn: 329937
  • Loading branch information
GBuella committed Apr 12, 2018
1 parent 297c138 commit e708a09
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 1 deletion.
3 changes: 2 additions & 1 deletion clang/include/clang/Basic/BuiltinsX86.def
Expand Up @@ -679,7 +679,8 @@ TARGET_BUILTIN(__builtin_ia32_clflushopt, "vvC*", "", "clflushopt")
//CLWB
TARGET_BUILTIN(__builtin_ia32_clwb, "vvC*", "", "clwb")

//WBNOINVD
//WB[NO]INVD
TARGET_BUILTIN(__builtin_ia32_wbinvd, "v", "", "")
TARGET_BUILTIN(__builtin_ia32_wbnoinvd, "v", "", "wbnoinvd")

// ADX
Expand Down
5 changes: 5 additions & 0 deletions clang/lib/Headers/ia32intrin.h
Expand Up @@ -70,4 +70,9 @@ __rdtscp(unsigned int *__A) {

#define _rdpmc(A) __rdpmc(A)

static __inline__ void __attribute__((__always_inline__, __nodebug__))
_wbinvd(void) {
return __builtin_ia32_wbinvd();
}

#endif /* __IA32INTRIN_H */
10 changes: 10 additions & 0 deletions clang/test/CodeGen/builtin-wbinvd.c
@@ -0,0 +1,10 @@
// RUN: %clang_cc1 %s -ffreestanding -triple=x86_64-unknown-unknown -emit-llvm -o - -Wall -Werror | FileCheck %s
// RUN: %clang_cc1 %s -ffreestanding -triple=i386-unknown-unknown -emit-llvm -o - -Wall -Werror | FileCheck %s

#include <x86intrin.h>

void test_wbinvd(void) {
//CHECK-LABEL: @test_wbinvd
//CHECK: call void @llvm.x86.wbinvd()
_wbinvd();
}

0 comments on commit e708a09

Please sign in to comment.