Lines Matching defs:smem
814 skip_smem_offset_align(opt_ctx& ctx, SMEM_instruction* smem)
816 bool soe = smem->operands.size() >= (!smem->definitions.empty() ? 3 : 4);
817 if (soe && !smem->operands[1].isConstant())
823 Operand& op = smem->operands[soe ? smem->operands.size() - 1 : 1];
844 skip_smem_offset_align(ctx, &instr->smem());
848 SMEM_instruction& smem = instr->smem();
853 bool prevent_overflow = smem.operands[0].size() > 2 || smem.prevent_overflow;
862 bool soe = smem.operands.size() >= (!smem.definitions.empty() ? 3 : 4);
864 if (ctx.info[smem.operands.back().tempId()].is_constant_or_literal(32) &&
865 ctx.info[smem.operands.back().tempId()].val == 0) {
866 smem.operands[1] = Operand::c32(offset);
867 smem.operands.back() = Operand(base);
871 smem.opcode, Format::SMEM, smem.operands.size() + 1, smem.definitions.size());
872 new_instr->operands[0] = smem.operands[0];
874 if (smem.definitions.empty())
875 new_instr->operands[2] = smem.operands[2];
877 if (!smem.definitions.empty())
878 new_instr->definitions[0] = smem.definitions[0];
879 new_instr->sync = smem.sync;
880 new_instr->glc = smem.glc;
881 new_instr->dlc = smem.dlc;
882 new_instr->nv = smem.nv;
883 new_instr->disable_wqm = smem.disable_wqm;
891 skip_smem_offset_align(ctx, &instr->smem());