Lines Matching defs:extract
442 void set_extract(Instruction* extract)
445 instr = extract;
1383 /* convert this extract into a copy instruction */
1708 /* Don't remove label_extract if we can't apply the extract to
2909 /* Remove superfluous extract after ds_read like so:
2913 apply_ds_extract(opt_ctx& ctx, aco_ptr<Instruction>& extract)
2916 if (!ctx.info[extract->operands[0].tempId()].is_usedef() ||
2917 ctx.uses[extract->operands[0].tempId()] > 1)
2921 Instruction* ds = ctx.info[extract->operands[0].tempId()].instr;
2925 unsigned extract_idx = extract->operands[1].constantValue();
2926 unsigned bits_extracted = extract->operands[2].constantValue();
2927 unsigned sign_ext = extract->operands[3].constantValue();
2928 unsigned dst_bitsize = extract->definitions[0].bytes() * 8u;
2953 /* The DS now produces the exact same thing as the extract, remove the extract. */
2954 std::swap(ds->definitions[0], extract->definitions[0]);
2955 ctx.uses[extract->definitions[0].tempId()] = 0;
3254 // TODO: delay applying extract to a point where we know better
3675 aco_ptr<Pseudo_instruction> extract{create_instruction<Pseudo_instruction>(
3677 extract->operands[0] = op;
3678 extract->definitions[0] = instr->definitions[idx];
3679 instr = std::move(extract);
3688 aco_ptr<Pseudo_instruction> extract{create_instruction<Pseudo_instruction>(
3690 extract->operands[0] = instr->operands[0];
3691 extract->operands[1] =
3693 extract->definitions[0] = instr->definitions[idx];
3694 instr = std::move(extract);