intel/fs: add 64 bit integer multiplication lowering
While NIR's lower_imul64() solves the case of 64 bit integer multiplications generated early, we don't have a way to lower such instructions when they are generated by our own backend, such as the scan/reduce intrinsics. We'll need this soon, so implement it now. An easy way to test this is to simply disable nir_lower_imul64 to let those operations reach the backend. v2: - Fix Q/UQ copy/paste errors (Caio). - Transform an 'if' into 'else if' (Caio). - Add an extra comment to clarify the need for 64b = 32b * 32b (Caio). - Make private functions private (Caio). v3: - Remove ambiguity with 'b' and 'd' variables (Caio). - Allocate potentially less regs for the dwords (Caio). Cc: Jason Ekstrand <jason.ekstrand@intel.com> Cc: Matt Turner <matt.turner@intel.com> Cc: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com> Reviewed-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
This commit is contained in:

committed by
Caio Marcelo de Oliveira Filho

parent
9217cf3b5e
commit
866bb775de
@@ -407,6 +407,7 @@ private:
|
||||
void resolve_inot_sources(const brw::fs_builder &bld, nir_alu_instr *instr,
|
||||
fs_reg *op);
|
||||
void lower_mul_dword_inst(fs_inst *inst, bblock_t *block);
|
||||
void lower_mul_qword_inst(fs_inst *inst, bblock_t *block);
|
||||
void lower_mulh_inst(fs_inst *inst, bblock_t *block);
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user