Index: include/clang/Basic/BuiltinsAArch64.def =================================================================== --- include/clang/Basic/BuiltinsAArch64.def +++ include/clang/Basic/BuiltinsAArch64.def @@ -46,6 +46,9 @@ BUILTIN(__builtin_arm_crc32cd, "UiUiLUi", "nc") // Memory barrier +BUILTIN(__dmb, "vUi", "nc") +BUILTIN(__dsb, "vUi", "nc") +BUILTIN(__isb, "vUi", "nc") BUILTIN(__builtin_arm_dmb, "vUi", "nc") BUILTIN(__builtin_arm_dsb, "vUi", "nc") BUILTIN(__builtin_arm_isb, "vUi", "nc") Index: test/CodeGen/builtins-arm64.c =================================================================== --- test/CodeGen/builtins-arm64.c +++ test/CodeGen/builtins-arm64.c @@ -30,6 +30,9 @@ } void barriers() { + __dmb(1); //CHECK: call {{.*}} @llvm.aarch64.dmb(i32 1) + __dsb(2); //CHECK: call {{.*}} @llvm.aarch64.dsb(i32 2) + __isb(3); //CHECK: call {{.*}} @llvm.aarch64.isb(i32 3) __builtin_arm_dmb(1); //CHECK: call {{.*}} @llvm.aarch64.dmb(i32 1) __builtin_arm_dsb(2); //CHECK: call {{.*}} @llvm.aarch64.dsb(i32 2) __builtin_arm_isb(3); //CHECK: call {{.*}} @llvm.aarch64.isb(i32 3)