mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-16 08:40:29 +01:00
tgsi: add generic instruction builder
When translating an incoming shader (rather than building one from scratch) it's preferable to be able to call a single, generic instruction emitter rather than figuring out which of the opcode-specific functions to call.
This commit is contained in:
parent
7ee4f32dcd
commit
b570a7e6b6
2 changed files with 33 additions and 0 deletions
|
|
@ -605,6 +605,29 @@ ureg_fixup_insn_size(struct ureg_program *ureg,
|
|||
}
|
||||
|
||||
|
||||
void
|
||||
ureg_insn(struct ureg_program *ureg,
|
||||
unsigned opcode,
|
||||
const struct ureg_dst *dst,
|
||||
unsigned nr_dst,
|
||||
const struct ureg_src *src,
|
||||
unsigned nr_src )
|
||||
{
|
||||
unsigned insn, i;
|
||||
boolean saturate;
|
||||
|
||||
saturate = nr_dst ? dst[0].Saturate : FALSE;
|
||||
|
||||
insn = ureg_emit_insn( ureg, opcode, saturate, nr_dst, nr_src );
|
||||
|
||||
for (i = 0; i < nr_dst; i++)
|
||||
ureg_emit_dst( ureg, dst[i] );
|
||||
|
||||
for (i = 0; i < nr_src; i++)
|
||||
ureg_emit_src( ureg, src[i] );
|
||||
|
||||
ureg_fixup_insn_size( ureg, insn );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -199,6 +199,16 @@ ureg_fixup_label(struct ureg_program *ureg,
|
|||
unsigned instruction_number );
|
||||
|
||||
|
||||
/* Generic instruction emitter. Use if you need to pass the opcode as
|
||||
* a parameter, rather than using the emit_OP() varients below.
|
||||
*/
|
||||
void
|
||||
ureg_insn(struct ureg_program *ureg,
|
||||
unsigned opcode,
|
||||
const struct ureg_dst *dst,
|
||||
unsigned nr_dst,
|
||||
const struct ureg_src *src,
|
||||
unsigned nr_src );
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue