i965/fs: Add fs_inst constructor that takes a list of sources.
authorMatt Turner <mattst88@gmail.com>
Tue, 27 May 2014 01:44:17 +0000 (18:44 -0700)
committerMatt Turner <mattst88@gmail.com>
Sun, 1 Jun 2014 20:29:24 +0000 (13:29 -0700)
Also add an emit() function that calls it.

Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_fs.cpp
src/mesa/drivers/dri/i965/brw_fs.h

index f23a946e7aede6dc833d36f878b18818a85dc7ee..3fa83340b21404bbc9d9bf2442dc366590465eef 100644 (file)
@@ -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()
 {
index b7cfb3c96e98b6252c5ab2acfda9891a90869035..527c3f3bf582a72b9e5165baa031fb283c8edc6c 100644 (file)
@@ -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);