diff options
author | Andres Gomez <[email protected]> | 2019-07-08 16:26:52 +0300 |
---|---|---|
committer | Andres Gomez <[email protected]> | 2019-07-12 16:15:20 +0000 |
commit | 9aadd5d6883667425156bd2dc2aacd040986632f (patch) | |
tree | f819943735bcab293901f43684c3b6d2349edf3c /src | |
parent | 16842b2391bac018326c9a2ee8dd36122b8269ee (diff) |
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: 158370ed2a0 ("nir/flrp: Add new lowering pass for flrp instructions")
Fixes: ae02622d8fd ("nir/flrp: Lower flrp(a, b, c) differently if another flrp(_, b, c) exists")
Signed-off-by: Andres Gomez <[email protected]>
Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/nir/nir_lower_flrp.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/compiler/nir/nir_lower_flrp.c b/src/compiler/nir/nir_lower_flrp.c index bc5d71db1b0..38be18ecc6b 100644 --- a/src/compiler/nir/nir_lower_flrp.c +++ b/src/compiler/nir/nir_lower_flrp.c @@ -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); |