This commit is contained in:
Philippe Tillet
2020-11-12 16:56:36 -05:00
committed by Philippe Tillet
parent da287bb710
commit 5d84fde733

View File

@@ -713,6 +713,7 @@ void generator::visit_atomic_add_inst(ir::atomic_add_inst* add) {
// vector size
int vector_size = 1;
/*
int ld = ptrs->get_order()[0];
unsigned alignment = alignment_->get(ptr, ld);
vector_size = gcd(ptrs->axis(ld).contiguous, alignment);
@@ -728,18 +729,19 @@ void generator::visit_atomic_add_inst(ir::atomic_add_inst* add) {
packets[id] = UndefValue::get(VectorType::get(in_value->getType(), vector_size));
packets[id] = builder_->CreateInsertElement(packets.at(id), in_value, linear % vector_size);
});
*/
for_each(val, [&](indices_t idx){
Value *rmw_ptr = ptrs->get_value(idx);
Value *rmw_msk = msks->get_value(idx);
for_each(ptr, [&](indices_t idx){
unsigned linear = vals->get_linear_index(idx);
unsigned id = linear / vector_size;
if(linear % vector_size != 0)
return;
//if(linear % vector_size != 0)
// return;
// num bytes
Value *rmw_val = packets[id];
if(vector_size == 1)
rmw_val = builder_->CreateExtractElement(rmw_val, builder_->getInt32(0));
Value *rmw_ptr = ptrs->get_value(idx);
Value *rmw_msk = msks->get_value(idx);
Value *rmw_val = vals->get_value(idx);
//if(vector_size == 1)
// rmw_val = builder_->CreateExtractElement(rmw_val, builder_->getInt32(0));
Type* ty = rmw_val->getType();
size_t nbits = ty->getScalarSizeInBits();
// extract pointer offset