From: Francisco Jerez Date: Tue, 14 Jul 2015 16:32:03 +0000 (+0300) Subject: i965/fs: Add builder emit method taking a variable number of source registers. X-Git-Tag: upstream/17.1.0~17351 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5a5607a16ce7bf5eace2cf4b267af304aef05e90;p=platform%2Fupstream%2Fmesa.git i965/fs: Add builder emit method taking a variable number of source registers. And start using it in fs_builder::LOAD_PAYLOAD(). This will be used to emit logical send message opcodes which have an unusually large number of arguments. Reviewed-by: Jason Ekstrand --- diff --git a/src/mesa/drivers/dri/i965/brw_fs_builder.h b/src/mesa/drivers/dri/i965/brw_fs_builder.h index c4ee9d4..eea1eae 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_builder.h +++ b/src/mesa/drivers/dri/i965/brw_fs_builder.h @@ -307,6 +307,17 @@ namespace brw { } /** + * Create and insert an instruction with a variable number of sources + * into the program. + */ + instruction * + emit(enum opcode opcode, const dst_reg &dst, const src_reg srcs[], + unsigned n) const + { + return emit(instruction(opcode, dispatch_width(), dst, srcs, n)); + } + + /** * Insert a preallocated instruction into the program. */ instruction * @@ -518,9 +529,7 @@ namespace brw { LOAD_PAYLOAD(const dst_reg &dst, const src_reg *src, unsigned sources, unsigned header_size) const { - instruction *inst = emit(instruction(SHADER_OPCODE_LOAD_PAYLOAD, - dispatch_width(), dst, - src, sources)); + instruction *inst = emit(SHADER_OPCODE_LOAD_PAYLOAD, dst, src, sources); inst->header_size = header_size; inst->regs_written = header_size + (sources - header_size) * (dispatch_width() / 8);