Index: lib/Headers/arm64intr.h =================================================================== --- lib/Headers/arm64intr.h +++ lib/Headers/arm64intr.h @@ -45,5 +45,9 @@ _ARM64_BARRIER_OSHLD = 0x1 } _ARM64INTR_BARRIER_TYPE; +unsigned __int64 __getReg(int); +__int64 _ReadStatusReg(int); +void _WriteStatusReg(int, __int64); + #endif /* __ARM64INTR_H */ #endif /* _MSC_VER */ Index: test/CodeGen/arm64-microsoft-intrinsics.c =================================================================== --- test/CodeGen/arm64-microsoft-intrinsics.c +++ test/CodeGen/arm64-microsoft-intrinsics.c @@ -59,3 +59,19 @@ // CHECK-MSVC: @llvm.aarch64.hint(i32 5) // CHECK-LINUX: error: implicit declaration of function '__sevl' + +unsigned __int64 check__getReg(void) { + return __getReg(1); +} +// CHECK-MSVC: call i32 bitcast (i32 (...)* @__getReg to i32 (i32)*)(i32 1) + +__int64 check_ReadStatusReg(void) { + return _ReadStatusReg(1); +} +// CHECK-MSVC: call i32 bitcast (i32 (...)* @_ReadStatusReg to i32 (i32)*)(i32 1) + +void check_WriteStatusReg(void) { + __int64 x; + _WriteStatusReg(1, x); +} +// CHECK-MSVC: call i32 bitcast (i32 (...)* @_WriteStatusReg to i32 (i32, i64)*)(i32 1, i64 %0)