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 // vector size
int vector_size = 1; int vector_size = 1;
/*
int ld = ptrs->get_order()[0]; int ld = ptrs->get_order()[0];
unsigned alignment = alignment_->get(ptr, ld); unsigned alignment = alignment_->get(ptr, ld);
vector_size = gcd(ptrs->axis(ld).contiguous, alignment); 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] = UndefValue::get(VectorType::get(in_value->getType(), vector_size));
packets[id] = builder_->CreateInsertElement(packets.at(id), in_value, linear % vector_size); packets[id] = builder_->CreateInsertElement(packets.at(id), in_value, linear % vector_size);
}); });
*/
for_each(val, [&](indices_t idx){ for_each(ptr, [&](indices_t idx){
Value *rmw_ptr = ptrs->get_value(idx);
Value *rmw_msk = msks->get_value(idx);
unsigned linear = vals->get_linear_index(idx); unsigned linear = vals->get_linear_index(idx);
unsigned id = linear / vector_size; unsigned id = linear / vector_size;
if(linear % vector_size != 0) //if(linear % vector_size != 0)
return; // return;
// num bytes // num bytes
Value *rmw_val = packets[id]; Value *rmw_ptr = ptrs->get_value(idx);
if(vector_size == 1) Value *rmw_msk = msks->get_value(idx);
rmw_val = builder_->CreateExtractElement(rmw_val, builder_->getInt32(0)); 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(); Type* ty = rmw_val->getType();
size_t nbits = ty->getScalarSizeInBits(); size_t nbits = ty->getScalarSizeInBits();
// extract pointer offset // extract pointer offset