Skip to content

Commit 9ecf41a

Browse files
committed
atomic_fix
1 parent fdf4669 commit 9ecf41a

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/transform/atomicadd_vectorize.cc

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,15 +232,23 @@ class AtomicAddVectorizeRewriter : public StmtExprMutator {
232232
const IntImm memory_order =
233233
node->args.size() >= 3 ? Downcast<IntImm>(node->args[2]) : IntImm(0);
234234
Array<PrimExpr> new_args;
235+
Call address_of_dst =
236+
Call(DataType::Handle(), builtin::address_of(), {dst_node});
237+
Call address_of_value =
238+
Call(DataType::Handle(), builtin::address_of(), {value_node});
235239
if (vector_size_ == 4) {
236240
new_args.push_back(StringImm("AtomicAddx4"));
241+
new_args.push_back(address_of_dst);
242+
new_args.push_back(address_of_value);
237243
} else if (vector_size_ == 2) {
238244
new_args.push_back(StringImm("AtomicAddx2"));
245+
new_args.push_back(address_of_dst);
246+
new_args.push_back(address_of_value);
239247
} else {
240248
new_args.push_back(StringImm("AtomicAdd"));
249+
new_args.push_back(dst_node);
250+
new_args.push_back(value_node);
241251
}
242-
new_args.push_back(dst_node);
243-
new_args.push_back(value_node);
244252
new_args.push_back(memory_order);
245253

246254
Call new_call =

0 commit comments

Comments
 (0)