Temp val = dst_hint.id() && dst_hint.regClass() == rc ? dst_hint : bld.tmp(rc);
load->definitions[0] = Definition(val);
load->glc = info.glc;
- load->dlc = info.glc && bld.program->chip_class >= GFX10;
+ load->dlc = info.glc && (bld.program->chip_class == GFX10 || bld.program->chip_class == GFX10_3);
load->sync = info.sync;
bld.insert(std::move(load));
return val;
mubuf->operands[2] = soffset;
mubuf->offen = (offset.type() == RegType::vgpr);
mubuf->glc = info.glc;
- mubuf->dlc = info.glc && bld.program->chip_class >= GFX10;
+ mubuf->dlc =
+ info.glc && (bld.program->chip_class == GFX10 || bld.program->chip_class == GFX10_3);
mubuf->slc = info.slc;
mubuf->sync = info.sync;
mubuf->offset = const_offset;
flat->operands[1] = Operand(s1);
}
flat->glc = info.glc;
- flat->dlc = info.glc && bld.program->chip_class >= GFX10;
+ flat->dlc =
+ info.glc && (bld.program->chip_class == GFX10 || bld.program->chip_class == GFX10_3);
flat->sync = info.sync;
assert(global || !const_offset);
flat->offset = const_offset;
load->definitions[0] = Definition(tmp);
load->idxen = true;
load->glc = access & (ACCESS_VOLATILE | ACCESS_COHERENT);
- load->dlc = load->glc && ctx->options->chip_class >= GFX10;
+ load->dlc =
+ load->glc && (ctx->options->chip_class == GFX10 || ctx->options->chip_class == GFX10_3);
load->sync = sync;
load->tfe = is_sparse;
if (load->tfe)
MIMG_instruction* load =
emit_mimg(bld, opcode, Definition(tmp), resource, Operand(s4), coords, 0, vdata);
load->glc = access & (ACCESS_VOLATILE | ACCESS_COHERENT) ? 1 : 0;
- load->dlc = load->glc && ctx->options->chip_class >= GFX10;
+ load->dlc =
+ load->glc && (ctx->options->chip_class == GFX10 || ctx->options->chip_class == GFX10_3);
load->dim = ac_get_image_dim(ctx->options->chip_class, dim, is_array);
load->d16 = d16;
load->dmask = dmask;