Index: lib/Headers/prfchwintrin.h =================================================================== --- lib/Headers/prfchwintrin.h +++ lib/Headers/prfchwintrin.h @@ -30,6 +30,12 @@ #if defined(__PRFCHW__) || defined(__3dNOW__) static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_prefetch(void *__P) +{ + __builtin_prefetch (__P, 0, 3 /* _MM_HINT_T0 */); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) _m_prefetchw(void *__P) { __builtin_prefetch (__P, 1, 3 /* _MM_HINT_T0 */); Index: test/CodeGen/prefetchw-builtins.c =================================================================== --- test/CodeGen/prefetchw-builtins.c +++ test/CodeGen/prefetchw-builtins.c @@ -5,8 +5,14 @@ #include -void prefetch_w(void *p) { +void test_m_prefetch_w(void *p) { return _m_prefetchw(p); -// CHECK: @prefetch_w +// CHECK-LABEL: define void @test_m_prefetch_w // CHECK: call void @llvm.prefetch({{.*}}, i32 1, i32 3, i32 1) } + +void test_m_prefetch(void *p) { + return _m_prefetch(p); + // CHECK-LABEL: define void @test_m_prefetch + // CHECK: call void @llvm.prefetch({{.*}}, i32 0, i32 3, i32 1) +}