mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-15 16:28:04 +02:00
nir/compiler: keep same bit size when lowering with flrp
This was probably not caught before because no supported test was exercising the flrp lowering with other bit size different than 32. With the arrival of VK_KHR_shader_float_controls we will have some of those and, unless we keep the bit size, we will end with something like: ../src/compiler/nir/nir_builder.h:420: nir_builder_alu_instr_finish_and_insert: Assertion `src_bit_size == bit_size' failed. Fixes:158370ed2a("nir/flrp: Add new lowering pass for flrp instructions") Fixes:ae02622d8f("nir/flrp: Lower flrp(a, b, c) differently if another flrp(_, b, c) exists") Signed-off-by: Andres Gomez <agomez@igalia.com> Reviewed-by: Jason Ekstrand <jason@jlekstrnd.net>
This commit is contained in:
parent
16842b2391
commit
9aadd5d688
1 changed files with 2 additions and 2 deletions
|
|
@ -84,7 +84,7 @@ replace_with_single_ffma(struct nir_builder *bld, struct u_vector *dead_flrp,
|
|||
nir_instr_as_alu(neg_c->parent_instr)->exact = alu->exact;
|
||||
|
||||
nir_ssa_def *const one_minus_c =
|
||||
nir_fadd(bld, nir_imm_float(bld, 1.0f), neg_c);
|
||||
nir_fadd(bld, nir_imm_floatN_t(bld, 1.0f, c->bit_size), neg_c);
|
||||
nir_instr_as_alu(one_minus_c->parent_instr)->exact = alu->exact;
|
||||
|
||||
nir_ssa_def *const b_times_c = nir_fmul(bld, b, c);
|
||||
|
|
@ -117,7 +117,7 @@ replace_with_strict(struct nir_builder *bld, struct u_vector *dead_flrp,
|
|||
nir_instr_as_alu(neg_c->parent_instr)->exact = alu->exact;
|
||||
|
||||
nir_ssa_def *const one_minus_c =
|
||||
nir_fadd(bld, nir_imm_float(bld, 1.0f), neg_c);
|
||||
nir_fadd(bld, nir_imm_floatN_t(bld, 1.0f, c->bit_size), neg_c);
|
||||
nir_instr_as_alu(one_minus_c->parent_instr)->exact = alu->exact;
|
||||
|
||||
nir_ssa_def *const first_product = nir_fmul(bld, a, one_minus_c);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue