@@ -19,14 +19,14 @@ let TargetPrefix = "hexagon" in {
19
19
list<LLVMType> param_types,
20
20
list<IntrinsicProperty> properties>
21
21
: ClangBuiltin<!strconcat("__builtin_", GCCIntSuffix)>,
22
- Intrinsic <ret_types, param_types, properties>;
22
+ DefaultAttrsIntrinsic <ret_types, param_types, properties>;
23
23
24
24
/// Hexagon_NonGCC_Intrinsic - Base class for bitcode convertible Hexagon
25
25
/// intrinsics.
26
26
class Hexagon_NonGCC_Intrinsic<list<LLVMType> ret_types,
27
27
list<LLVMType> param_types,
28
28
list<IntrinsicProperty> properties>
29
- : Intrinsic <ret_types, param_types, properties>;
29
+ : DefaultAttrsIntrinsic <ret_types, param_types, properties>;
30
30
}
31
31
32
32
class Hexagon_mem_memmemsi_Intrinsic<string GCCIntSuffix>
@@ -129,19 +129,27 @@ def llvm_ptr32_ty : LLVMPointerType<llvm_i32_ty>;
129
129
def llvm_ptr64_ty : LLVMPointerType<llvm_i64_ty>;
130
130
131
131
// Mark locked loads as read/write to prevent any accidental reordering.
132
- def int_hexagon_L2_loadw_locked :
133
- Hexagon_Intrinsic<"HEXAGON_L2_loadw_locked", [llvm_i32_ty], [llvm_ptr32_ty],
134
- [IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
135
- def int_hexagon_L4_loadd_locked :
136
- Hexagon_Intrinsic<"HEXAGON_L4_loadd_locked", [llvm_i64_ty], [llvm_ptr64_ty],
137
- [IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
138
-
139
- def int_hexagon_S2_storew_locked :
140
- Hexagon_Intrinsic<"HEXAGON_S2_storew_locked", [llvm_i32_ty],
141
- [llvm_ptr32_ty, llvm_i32_ty], [IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
142
- def int_hexagon_S4_stored_locked :
143
- Hexagon_Intrinsic<"HEXAGON_S4_stored_locked", [llvm_i32_ty],
144
- [llvm_ptr64_ty, llvm_i64_ty], [IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
132
+ // These don't use Hexagon_Intrinsic, because they are not nosync, and as such
133
+ // cannot use default attributes.
134
+ let TargetPrefix = "hexagon" in {
135
+ def int_hexagon_L2_loadw_locked :
136
+ ClangBuiltin<"__builtin_HEXAGON_L2_loadw_locked">,
137
+ Intrinsic<[llvm_i32_ty], [llvm_ptr32_ty],
138
+ [IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
139
+ def int_hexagon_L4_loadd_locked :
140
+ ClangBuiltin<"__builtin__HEXAGON_L4_loadd_locked">,
141
+ Intrinsic<[llvm_i64_ty], [llvm_ptr64_ty],
142
+ [IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
143
+
144
+ def int_hexagon_S2_storew_locked :
145
+ ClangBuiltin<"__builtin_HEXAGON_S2_storew_locked">,
146
+ Intrinsic<[llvm_i32_ty],
147
+ [llvm_ptr32_ty, llvm_i32_ty], [IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
148
+ def int_hexagon_S4_stored_locked :
149
+ ClangBuiltin<"__builtin_HEXAGON_S4_stored_locked">,
150
+ Intrinsic<[llvm_i32_ty],
151
+ [llvm_ptr64_ty, llvm_i64_ty], [IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
152
+ }
145
153
146
154
def int_hexagon_vmemcpy : Hexagon_Intrinsic<"hexagon_vmemcpy",
147
155
[], [llvm_ptr_ty, llvm_ptr_ty, llvm_i32_ty],
0 commit comments