From 2ffa8e7805a87e18c8adc907bbfbf5c1e7e11540 Mon Sep 17 00:00:00 2001 From: AZero13 Date: Wed, 6 Aug 2025 20:13:10 -0400 Subject: [PATCH 1/2] [ARM] [IR] [Builtins] Give the data barrier instructions the same attributes they have in AArch64 They are IntrNoFree and IntrWillReturn, so give them that. --- llvm/include/llvm/IR/IntrinsicsARM.td | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/llvm/include/llvm/IR/IntrinsicsARM.td b/llvm/include/llvm/IR/IntrinsicsARM.td index 1219ce2f86da8..89e412180fc31 100644 --- a/llvm/include/llvm/IR/IntrinsicsARM.td +++ b/llvm/include/llvm/IR/IntrinsicsARM.td @@ -299,13 +299,12 @@ def int_arm_ldaexd : Intrinsic<[llvm_i32_ty, llvm_i32_ty], [llvm_ptr_ty]>; //===----------------------------------------------------------------------===// // Data barrier instructions -// TODO: Add applicable default attributes. def int_arm_dmb : ClangBuiltin<"__builtin_arm_dmb">, MSBuiltin<"__dmb">, - Intrinsic<[], [llvm_i32_ty]>; + Intrinsic<[], [llvm_i32_ty], [IntrNoFree, IntrWillReturn]>; def int_arm_dsb : ClangBuiltin<"__builtin_arm_dsb">, MSBuiltin<"__dsb">, - Intrinsic<[], [llvm_i32_ty]>; + Intrinsic<[], [llvm_i32_ty], [IntrNoFree, IntrWillReturn]>; def int_arm_isb : ClangBuiltin<"__builtin_arm_isb">, MSBuiltin<"__isb">, - Intrinsic<[], [llvm_i32_ty]>; + Intrinsic<[], [llvm_i32_ty], [IntrNoFree, IntrWillReturn]>; //===----------------------------------------------------------------------===// // VFP From 544ed7eb2b8193f19e93c4bfb2bf9d8171fdacef Mon Sep 17 00:00:00 2001 From: AZero13 Date: Wed, 6 Aug 2025 20:15:56 -0400 Subject: [PATCH 2/2] Give hint default attributes too --- llvm/include/llvm/IR/IntrinsicsARM.td | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/include/llvm/IR/IntrinsicsARM.td b/llvm/include/llvm/IR/IntrinsicsARM.td index 89e412180fc31..38b4afeb271b3 100644 --- a/llvm/include/llvm/IR/IntrinsicsARM.td +++ b/llvm/include/llvm/IR/IntrinsicsARM.td @@ -409,8 +409,8 @@ def int_arm_cmse_ttat : ClangBuiltin<"__builtin_arm_cmse_TTAT">, //===----------------------------------------------------------------------===// // HINT +def int_arm_hint : DefaultAttrsIntrinsic<[], [llvm_i32_ty]>; // TODO: Add applicable default attributes. -def int_arm_hint : Intrinsic<[], [llvm_i32_ty]>; def int_arm_dbg : Intrinsic<[], [llvm_i32_ty]>; //===----------------------------------------------------------------------===//