pan/bi: Lower FREXPE.v2f16 and FREXPM.v2f16 on v11+

This was removed on v11.

Fix dEQP-VK.glsl.builtin.precision_fp16_storage16b.frexp.compute.*
failures on v11+.

Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com>
Reviewed-by: Benjamin Lee <benjamin.lee@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33867>
This commit is contained in:
Mary Guillemard 2025-03-04 10:12:41 +01:00 committed by Marge Bot
parent cbc42abdb3
commit 01ec34fe57
2 changed files with 10 additions and 0 deletions

View file

@ -2903,10 +2903,14 @@ bi_emit_alu(bi_builder *b, nir_alu_instr *instr)
break;
case nir_op_frexp_exp:
/* v11 removed FREXPE.v2f16 */
assert(src_sz == 32 || (b->shader->arch < 11 && src_sz == 16));
bi_frexpe_to(b, sz, dst, s0, false, false);
break;
case nir_op_frexp_sig:
/* v11 removed FREXPM.v2f16 */
assert(src_sz == 32 || (b->shader->arch < 11 && src_sz == 16));
bi_frexpm_to(b, sz, dst, s0, false, false);
break;
@ -4892,6 +4896,8 @@ bi_lower_bit_size(const nir_instr *instr, void *data)
case nir_op_fceil:
case nir_op_ffloor:
case nir_op_ftrunc:
case nir_op_frexp_sig:
case nir_op_frexp_exp:
if (pan_arch(gpu_id) < 11)
return 0;
/* On v11+, FROUND.v2s16 is gone */
@ -4937,6 +4943,8 @@ bi_vectorize_filter(const nir_instr *instr, const void *data)
case nir_op_f2f16_rtne:
case nir_op_u2f16:
case nir_op_i2f16:
case nir_op_frexp_sig:
case nir_op_frexp_exp:
if (pan_arch(gpu_id) >= 11)
return 1;

View file

@ -1739,8 +1739,10 @@
<group name="FREXP" title="Fraction/exponent extract" dests="1" opcode="0x99" unused="true" unit="CVT">
<ins name="FREXPM.f32" opcode2="0"/>
<!-- Removed on v11 -->
<ins name="FREXPM.v2f16" opcode2="1"/>
<ins name="FREXPE.f32" opcode2="2"/>
<!-- Removed on v11 -->
<ins name="FREXPE.v2f16" opcode2="3"/>
<desc>
Breaks up the floating-point input into its fractional (mantissa) and