From 5a5607a16ce7bf5eace2cf4b267af304aef05e90 Mon Sep 17 00:00:00 2001 From: Francisco Jerez Date: Tue, 14 Jul 2015 19:32:03 +0300 Subject: [PATCH] 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 --- src/mesa/drivers/dri/i965/brw_fs_builder.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) 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); -- 2.7.4