<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Nov 13, 2017 at 12:41 PM, Chema Casanova <span dir="ltr"><<a href="mailto:jmcasanova@igalia.com" target="_blank">jmcasanova@igalia.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 30/10/17 23:40, Jason Ekstrand wrote:<br>
> On Thu, Oct 12, 2017 at 11:38 AM, Jose Maria Casanova Crespo<br>
</span><span class="">> <<a href="mailto:jmcasanova@igalia.com">jmcasanova@igalia.com</a> <mailto:<a href="mailto:jmcasanova@igalia.com">jmcasanova@igalia.com</a>><wbr>> wrote:<br>
><br>
> From: Alejandro Piñeiro <<a href="mailto:apinheiro@igalia.com">apinheiro@igalia.com</a><br>
</span>> <mailto:<a href="mailto:apinheiro@igalia.com">apinheiro@igalia.com</a>>><br>
<span class="">><br>
> By default we don't set the rounding mode. We only set<br>
> round-to-near-even or round-to-zero mode if explicitly set from nir.<br>
><br>
> v2: Use a single SHADER_OPCODE_RND_MODE opcode taking an immediate<br>
> with the rounding mode (Curro)<br>
><br>
> Signed-off-by: Jose Maria Casanova Crespo <<a href="mailto:jmcasanova@igalia.com">jmcasanova@igalia.com</a><br>
</span>> <mailto:<a href="mailto:jmcasanova@igalia.com">jmcasanova@igalia.com</a>><wbr>><br>
> Signed-off-by: Alejandro Piñeiro <<a href="mailto:apinheiro@igalia.com">apinheiro@igalia.com</a><br>
> <mailto:<a href="mailto:apinheiro@igalia.com">apinheiro@igalia.com</a>>><br>
<span class="">> ---<br>
> src/intel/compiler/brw_fs_<wbr>nir.cpp | 8 ++++++++<br>
> 1 file changed, 8 insertions(+)<br>
><br>
> diff --git a/src/intel/compiler/brw_fs_<wbr>nir.cpp<br>
> b/src/intel/compiler/brw_fs_<wbr>nir.cpp<br>
> index 6908c7ea02..b356836e80 100644<br>
> --- a/src/intel/compiler/brw_fs_<wbr>nir.cpp<br>
> +++ b/src/intel/compiler/brw_fs_<wbr>nir.cpp<br>
> @@ -693,6 +693,14 @@ fs_visitor::nir_emit_alu(const fs_builder &bld,<br>
> nir_alu_instr *instr)<br>
> inst->saturate = instr->dest.saturate;<br>
> break;<br>
><br>
> + case nir_op_f2f16_rtne:<br>
> + case nir_op_f2f16_rtz:<br>
> + if (instr->op == nir_op_f2f16_rtz)<br>
> + bld.emit(SHADER_OPCODE_RND_<wbr>MODE, bld.null_reg_ud(),<br>
> brw_imm_d(BRW_RND_MODE_RTZ));<br>
> + else if (instr->op == nir_op_f2f16_rtne)<br>
> + bld.emit(SHADER_OPCODE_RND_<wbr>MODE, bld.null_reg_ud(),<br>
> brw_imm_d(BRW_RND_MODE_RTNE));<br>
> + /* fallthrough */<br>
><br>
><br>
> It might look a little nicer (though it's more lines of code) to have a<br>
> little brw_from_nir_rounding_mode helper and then we could have just the<br>
> one emit call. I don't care too much though.<br>
<br>
<br>
</span>What about this helper?<br>
<br>
static brw_rnd_mode<br>
brw_rnd_mode_from_nir_op (const nir_op op) {<br>
switch (op) {<br>
case nir_op_f2f16_rtz:<br>
return BRW_RND_MODE_RTZ;<br>
case nir_op_f2f16_rtne:<br>
return BRW_RND_MODE_RTNE;<br>
default:<br>
unreachable("Operation doesn't support rounding mode");<br>
}<br>
}<br>
<br>
And ...<br>
<br>
case nir_op_f2f16_rtne:<br>
case nir_op_f2f16_rtz:<br>
bld.emit(SHADER_OPCODE_RND_<wbr>MODE, bld.null_reg_ud(),<br>
brw_imm_d(brw_rnd_mode_from_<wbr>nir_op(instr->op)));<span class="im HOEnZb"><br></span></blockquote><div><br></div><div>Sounds good to me.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="im HOEnZb">
><br>
> +<br>
> /* In theory, it would be better to use BRW_OPCODE_F32TO16.<br>
> Depending<br>
> * on the HW gen, it is a special hw opcode or just a MOV, and<br>
> * brw_F32TO16 (at brw_eu_emit) would do the work to chose.<br>
> --<br>
> 2.13.6<br>
><br>
> ______________________________<wbr>_________________<br>
> mesa-dev mailing list<br>
</span><span class="im HOEnZb">> <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a> <mailto:<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.<wbr>freedesktop.org</a>><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
> <<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.<wbr>org/mailman/listinfo/mesa-dev</a>><br>
><br>
><br>
><br>
><br>
</span><div class="HOEnZb"><div class="h5">> ______________________________<wbr>_________________<br>
> mesa-dev mailing list<br>
> <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
><br>
</div></div></blockquote></div><br></div></div>