r300/compiler: move util functions to radeon_compiler_util
authorMarek Olšák <maraeo@gmail.com>
Thu, 25 Nov 2010 14:07:02 +0000 (15:07 +0100)
committerMarek Olšák <maraeo@gmail.com>
Fri, 26 Nov 2010 01:23:13 +0000 (02:23 +0100)
The compiler seriously needs a cleanup as far as the arrangement of functions
is concerned. It's hard to know whether some function was implemented or not
because there are so many places to search in and it can be anywhere and
named anyhow.

src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c
src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c
src/mesa/drivers/dri/r300/compiler/r500_fragprog.c
src/mesa/drivers/dri/r300/compiler/radeon_compiler.c
src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.c
src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.h
src/mesa/drivers/dri/r300/compiler/radeon_program.c
src/mesa/drivers/dri/r300/compiler/radeon_program.h
src/mesa/drivers/dri/r300/compiler/radeon_program_alu.c
src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c

index ecc5e8219fb894c856b64bd6eb91ba23f54da89f..23671e3cbc30bb98675b74774c519060abd8fa0c 100644 (file)
@@ -24,6 +24,7 @@
 
 #include <stdio.h>
 
+#include "radeon_compiler_util.h"
 #include "radeon_dataflow.h"
 #include "radeon_emulate_branches.h"
 #include "radeon_emulate_loops.h"
index bf8341f0173662a826c003e7e8fbd4b8ed4e75be..a321e26fed6e7df120a5708c40bd872a7869136e 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "../r300_reg.h"
 
+#include "radeon_compiler_util.h"
 #include "radeon_dataflow.h"
 #include "radeon_program_alu.h"
 #include "radeon_swizzle.h"
index 289bb87ae593dd83d5ad8fc46c270782bfa4e0ed..ef81be48f7779afe93c651db5fdfc27198abb0e1 100644 (file)
@@ -29,6 +29,7 @@
 
 #include <stdio.h>
 
+#include "radeon_compiler_util.h"
 #include "../r300_reg.h"
 
 /**
index 4286baed0c69467de17c64ea169112b0b85c9986..b306bd03ae991ddae0ea17506fbb399aaf694ef9 100644 (file)
@@ -29,6 +29,7 @@
 #include "radeon_dataflow.h"
 #include "radeon_program.h"
 #include "radeon_program_pair.h"
+#include "radeon_compiler_util.h"
 
 
 void rc_init(struct radeon_compiler * c)
index 2b8d284ce9fda110ef65df6bfcb6e044b5b5f094..bf393a9fb160a0b8a9db2e0246f3df479288a17b 100644 (file)
@@ -48,6 +48,91 @@ unsigned int rc_swizzle_to_writemask(unsigned int swz)
        return mask;
 }
 
+rc_swizzle get_swz(unsigned int swz, rc_swizzle idx)
+{
+       if (idx & 0x4)
+               return idx;
+       return GET_SWZ(swz, idx);
+}
+
+unsigned int combine_swizzles4(unsigned int src,
+               rc_swizzle swz_x, rc_swizzle swz_y, rc_swizzle swz_z, rc_swizzle swz_w)
+{
+       unsigned int ret = 0;
+
+       ret |= get_swz(src, swz_x);
+       ret |= get_swz(src, swz_y) << 3;
+       ret |= get_swz(src, swz_z) << 6;
+       ret |= get_swz(src, swz_w) << 9;
+
+       return ret;
+}
+
+unsigned int combine_swizzles(unsigned int src, unsigned int swz)
+{
+       unsigned int ret = 0;
+
+       ret |= get_swz(src, GET_SWZ(swz, RC_SWIZZLE_X));
+       ret |= get_swz(src, GET_SWZ(swz, RC_SWIZZLE_Y)) << 3;
+       ret |= get_swz(src, GET_SWZ(swz, RC_SWIZZLE_Z)) << 6;
+       ret |= get_swz(src, GET_SWZ(swz, RC_SWIZZLE_W)) << 9;
+
+       return ret;
+}
+
+/**
+ * @param mask Must be either RC_MASK_X, RC_MASK_Y, RC_MASK_Z, or RC_MASK_W
+ */
+rc_swizzle rc_mask_to_swizzle(unsigned int mask)
+{
+       switch (mask) {
+       case RC_MASK_X: return RC_SWIZZLE_X;
+       case RC_MASK_Y: return RC_SWIZZLE_Y;
+       case RC_MASK_Z: return RC_SWIZZLE_Z;
+       case RC_MASK_W: return RC_SWIZZLE_W;
+       }
+       return RC_SWIZZLE_UNUSED;
+}
+
+/* Reorder mask bits according to swizzle. */
+unsigned swizzle_mask(unsigned swizzle, unsigned mask)
+{
+       unsigned ret = 0;
+       for (unsigned chan = 0; chan < 4; ++chan) {
+               unsigned swz = GET_SWZ(swizzle, chan);
+               if (swz < 4)
+                       ret |= GET_BIT(mask, swz) << chan;
+       }
+       return ret;
+}
+
+/**
+ * Left multiplication of a register with a swizzle
+ */
+struct rc_src_register lmul_swizzle(unsigned int swizzle, struct rc_src_register srcreg)
+{
+       struct rc_src_register tmp = srcreg;
+       int i;
+       tmp.Swizzle = 0;
+       tmp.Negate = 0;
+       for(i = 0; i < 4; ++i) {
+               rc_swizzle swz = GET_SWZ(swizzle, i);
+               if (swz < 4) {
+                       tmp.Swizzle |= GET_SWZ(srcreg.Swizzle, swz) << (i*3);
+                       tmp.Negate |= GET_BIT(srcreg.Negate, swz) << i;
+               } else {
+                       tmp.Swizzle |= swz << (i*3);
+               }
+       }
+       return tmp;
+}
+
+void reset_srcreg(struct rc_src_register* reg)
+{
+       memset(reg, 0, sizeof(struct rc_src_register));
+       reg->Swizzle = RC_SWIZZLE_XYZW;
+}
+
 unsigned int rc_src_reads_dst_mask(
                rc_register_file src_file,
                unsigned int src_idx,
index e50dfbd4fb9949feb45fe59a7cd6ddd167bdab0c..461ab9ffb10676484bfe5870ddd4ee4072475468 100644 (file)
@@ -8,6 +8,22 @@ struct rc_src_register;
 
 unsigned int rc_swizzle_to_writemask(unsigned int swz);
 
+rc_swizzle get_swz(unsigned int swz, rc_swizzle idx);
+
+unsigned int combine_swizzles4(unsigned int src,
+                              rc_swizzle swz_x, rc_swizzle swz_y,
+                              rc_swizzle swz_z, rc_swizzle swz_w);
+
+unsigned int combine_swizzles(unsigned int src, unsigned int swz);
+
+rc_swizzle rc_mask_to_swizzle(unsigned int mask);
+
+unsigned swizzle_mask(unsigned swizzle, unsigned mask);
+
+struct rc_src_register lmul_swizzle(unsigned int swizzle, struct rc_src_register srcreg);
+
+void reset_srcreg(struct rc_src_register* reg);
+
 unsigned int rc_src_reads_dst_mask(
                rc_register_file src_file,
                unsigned int src_idx,
index 707882882a57ea2a7180265bc68674842a92f697..fe5756ebc45deb990ab2636d3b522ee2749ae7f0 100644 (file)
@@ -71,27 +71,6 @@ void rc_local_transform(
        }
 }
 
-/**
- * Left multiplication of a register with a swizzle
- */
-struct rc_src_register lmul_swizzle(unsigned int swizzle, struct rc_src_register srcreg)
-{
-       struct rc_src_register tmp = srcreg;
-       int i;
-       tmp.Swizzle = 0;
-       tmp.Negate = 0;
-       for(i = 0; i < 4; ++i) {
-               rc_swizzle swz = GET_SWZ(swizzle, i);
-               if (swz < 4) {
-                       tmp.Swizzle |= GET_SWZ(srcreg.Swizzle, swz) << (i*3);
-                       tmp.Negate |= GET_BIT(srcreg.Negate, swz) << i;
-               } else {
-                       tmp.Swizzle |= swz << (i*3);
-               }
-       }
-       return tmp;
-}
-
 struct get_used_temporaries_data {
        unsigned char * Used;
        unsigned int UsedLength;
index 772ea14df341d987836c968e1dcd3337825dcb85..df6c94b35f9ba07bbd1ef0aa76b1028ad3adb113 100644 (file)
@@ -159,74 +159,6 @@ struct rc_program {
        struct rc_constant_list Constants;
 };
 
-static inline rc_swizzle get_swz(unsigned int swz, rc_swizzle idx)
-{
-       if (idx & 0x4)
-               return idx;
-       return GET_SWZ(swz, idx);
-}
-
-static inline unsigned int combine_swizzles4(unsigned int src,
-               rc_swizzle swz_x, rc_swizzle swz_y, rc_swizzle swz_z, rc_swizzle swz_w)
-{
-       unsigned int ret = 0;
-
-       ret |= get_swz(src, swz_x);
-       ret |= get_swz(src, swz_y) << 3;
-       ret |= get_swz(src, swz_z) << 6;
-       ret |= get_swz(src, swz_w) << 9;
-
-       return ret;
-}
-
-static inline unsigned int combine_swizzles(unsigned int src, unsigned int swz)
-{
-       unsigned int ret = 0;
-
-       ret |= get_swz(src, GET_SWZ(swz, RC_SWIZZLE_X));
-       ret |= get_swz(src, GET_SWZ(swz, RC_SWIZZLE_Y)) << 3;
-       ret |= get_swz(src, GET_SWZ(swz, RC_SWIZZLE_Z)) << 6;
-       ret |= get_swz(src, GET_SWZ(swz, RC_SWIZZLE_W)) << 9;
-
-       return ret;
-}
-
-/**
- * @param mask Must be either RC_MASK_X, RC_MASK_Y, RC_MASK_Z, or RC_MASK_W
- */
-static inline rc_swizzle rc_mask_to_swizzle(unsigned int mask)
-{
-       switch (mask) {
-       case RC_MASK_X: return RC_SWIZZLE_X;
-       case RC_MASK_Y: return RC_SWIZZLE_Y;
-       case RC_MASK_Z: return RC_SWIZZLE_Z;
-       case RC_MASK_W: return RC_SWIZZLE_W;
-       }
-       return RC_SWIZZLE_UNUSED;
-}
-
-/* Reorder mask bits according to swizzle. */
-static inline unsigned swizzle_mask(unsigned swizzle, unsigned mask)
-{
-       unsigned ret = 0;
-       for (unsigned chan = 0; chan < 4; ++chan) {
-               unsigned swz = GET_SWZ(swizzle, chan);
-               if (swz < 4)
-                       ret |= GET_BIT(mask, swz) << chan;
-       }
-       return ret;
-}
-
-
-struct rc_src_register lmul_swizzle(unsigned int swizzle, struct rc_src_register srcreg);
-
-static inline void reset_srcreg(struct rc_src_register* reg)
-{
-       memset(reg, 0, sizeof(struct rc_src_register));
-       reg->Swizzle = RC_SWIZZLE_XYZW;
-}
-
-
 /**
  * A transformation that can be passed to \ref rc_local_transform.
  *
index 39408845d5ad80f69d3efe0ae9d4b2bac4beb3df..106e03495d88e63f59539015241448a0e452922e 100644 (file)
@@ -36,6 +36,7 @@
 #include "radeon_program_alu.h"
 
 #include "radeon_compiler.h"
+#include "radeon_compiler_util.h"
 
 
 static struct rc_instruction *emit1(
index 530afa5e08e245984a7acee765f8523b7ad2201a..f9d9f34b6ad9f7e25629450df2ee144f88f0b779 100644 (file)
@@ -28,6 +28,8 @@
 
 #include "radeon_program_tex.h"
 
+#include "radeon_compiler_util.h"
+
 /* Series of transformations to be done on textures. */
 
 static struct rc_src_register shadow_ambient(struct r300_fragment_program_compiler *compiler,