瀏覽代碼

nir: add a helper function for getting the number of source components

Unlike with non-SSA ALU instructions, where if they're per-component
you have to look at the writemask to know which source channels are
being used, SSA ALU instructions always have all the possible channels
enabled so we can just look at the number of components in the SSA
definition for per-component instructions to say how many source
components are being used.

v2: use new name nir_ssa_alu_instr_src_components()

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
Signed-off-by: Connor Abbott <cwabbott0@gmail.com>
tags/10.5-branchpoint
Connor Abbott 10 年之前
父節點
當前提交
816f0515a2
共有 1 個文件被更改,包括 15 次插入0 次删除
  1. 15
    0
      src/glsl/nir/nir.h

+ 15
- 0
src/glsl/nir/nir.h 查看文件

@@ -652,6 +652,21 @@ nir_alu_instr_channel_used(nir_alu_instr *instr, unsigned src, unsigned channel)
return (instr->dest.write_mask >> channel) & 1;
}

/*
* For instructions whose destinations are SSA, get the number of channels
* used for a source
*/
static inline unsigned
nir_ssa_alu_instr_src_components(nir_alu_instr *instr, unsigned src)
{
assert(instr->dest.dest.is_ssa);

if (nir_op_infos[instr->op].input_sizes[src] > 0)
return nir_op_infos[instr->op].input_sizes[src];

return instr->dest.dest.ssa.num_components;
}

typedef enum {
nir_deref_type_var,
nir_deref_type_array,

Loading…
取消
儲存