From 84e0a5c406f2a8f060352eaa4b5c138e3f1a5a86 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Mon, 26 May 2014 18:44:17 -0700 Subject: i965/fs: Add fs_inst constructor that takes a list of sources. Also add an emit() function that calls it. Reviewed-by: Chris Forbes Reviewed-by: Kenneth Graunke --- src/mesa/drivers/dri/i965/brw_fs.cpp | 12 ++++++++++++ src/mesa/drivers/dri/i965/brw_fs.h | 3 +++ 2 files changed, 15 insertions(+) diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index f23a946e7ae..3fa83340b21 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -101,6 +101,11 @@ fs_inst::fs_inst(enum opcode opcode, const fs_reg &dst, const fs_reg &src0, init(opcode, dst, src, 3); } +fs_inst::fs_inst(enum opcode opcode, const fs_reg &dst, fs_reg src[], int sources) +{ + init(opcode, dst, src, sources); +} + fs_inst::fs_inst(const fs_inst &that) { memcpy(this, &that, sizeof(that)); @@ -740,6 +745,13 @@ fs_visitor::emit(enum opcode opcode, fs_reg dst, return emit(new(mem_ctx) fs_inst(opcode, dst, src0, src1, src2)); } +fs_inst * +fs_visitor::emit(enum opcode opcode, fs_reg dst, + fs_reg src[], int sources) +{ + return emit(new(mem_ctx) fs_inst(opcode, dst, src, sources)); +} + void fs_visitor::push_force_uncompressed() { diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h index b7cfb3c96e9..527c3f3bf58 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.h +++ b/src/mesa/drivers/dri/i965/brw_fs.h @@ -198,6 +198,7 @@ public: const fs_reg &src1); fs_inst(enum opcode opcode, const fs_reg &dst, const fs_reg &src0, const fs_reg &src1, const fs_reg &src2); + fs_inst(enum opcode opcode, const fs_reg &dst, fs_reg src[], int sources); fs_inst(const fs_inst &that); void resize_sources(uint8_t num_sources); @@ -295,6 +296,8 @@ public: fs_inst *emit(enum opcode opcode, fs_reg dst, fs_reg src0, fs_reg src1); fs_inst *emit(enum opcode opcode, fs_reg dst, fs_reg src0, fs_reg src1, fs_reg src2); + fs_inst *emit(enum opcode opcode, fs_reg dst, + fs_reg src[], int sources); fs_inst *MOV(fs_reg dst, fs_reg src); fs_inst *NOT(fs_reg dst, fs_reg src); -- cgit v1.2.3