Index: cfe/trunk/include/clang/Basic/BuiltinsX86.def =================================================================== --- cfe/trunk/include/clang/Basic/BuiltinsX86.def +++ cfe/trunk/include/clang/Basic/BuiltinsX86.def @@ -679,7 +679,8 @@ //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 Index: cfe/trunk/lib/Headers/ia32intrin.h =================================================================== --- cfe/trunk/lib/Headers/ia32intrin.h +++ cfe/trunk/lib/Headers/ia32intrin.h @@ -70,4 +70,9 @@ #define _rdpmc(A) __rdpmc(A) +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_wbinvd(void) { + return __builtin_ia32_wbinvd(); +} + #endif /* __IA32INTRIN_H */ Index: cfe/trunk/test/CodeGen/builtin-wbinvd.c =================================================================== --- cfe/trunk/test/CodeGen/builtin-wbinvd.c +++ cfe/trunk/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 + +void test_wbinvd(void) { + //CHECK-LABEL: @test_wbinvd + //CHECK: call void @llvm.x86.wbinvd() + _wbinvd(); +}