summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h
diff options
context:
space:
mode:
authorNicolai Hähnle <nhaehnle@gmail.com>2009-10-03 21:28:59 +0200
committerNicolai Hähnle <nhaehnle@gmail.com>2009-10-03 23:37:16 +0200
commitb7cf887ca74561469c144f1d12227e1bcf277e7e (patch)
treec956777f799712573febf464310a1ec0f75f1991 /src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h
parent6d25b9125ec1e66e0e255b0ee20fe18dfe1076fa (diff)
r300/compiler: Introduce control flow instructions and refactor dataflow
Note that control flow instruction support isn't actually fully functional yet. Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com>
Diffstat (limited to 'src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h')
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h69
1 files changed, 2 insertions, 67 deletions
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h
index c9856affe8..76c323d057 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h
@@ -34,79 +34,14 @@ struct radeon_compiler;
struct rc_instruction;
struct rc_swizzle_caps;
-struct rc_dataflow_vector;
-
-struct rc_dataflow_ref {
- struct rc_dataflow_vector * Vector;
-
- /**
- * Linked list of references to the above-mentioned vector.
- * The linked list is \em not sorted.
- */
- /*@{*/
- struct rc_dataflow_ref * Prev;
- struct rc_dataflow_ref * Next;
- /*@}*/
-
- unsigned int UseMask:4;
- struct rc_instruction * ReadInstruction;
-};
-
-struct rc_dataflow_vector {
- rc_register_file File:3;
- unsigned int Index:RC_REGISTER_INDEX_BITS;
-
- /** For private use in compiler passes. MUST BE RESET TO 0 by the end of each pass.
- * The annotate pass uses this bit to track whether a vector is in the
- * update stack.
- */
- unsigned int PassBit:1;
- /** Which of the components have been written with useful values */
- unsigned int ValidMask:4;
- /** Which of the components are used downstream */
- unsigned int UseMask:4;
- /** The instruction that produced this vector */
- struct rc_instruction * WriteInstruction;
-
- /** Linked list of references to this vector */
- struct rc_dataflow_ref Refs;
-};
-
-struct rc_instruction_dataflow {
- struct rc_dataflow_ref * SrcReg[3];
- struct rc_dataflow_ref * SrcRegAddress[3];
-
- /** Reference the components of the destination register
- * that are carried over without being overwritten */
- struct rc_dataflow_ref * DstRegPrev;
- /** Indicates whether the destination register was in use
- * before this instruction */
- unsigned int DstRegAliased:1;
- struct rc_dataflow_vector * DstReg;
-};
-
-/**
- * General functions for manipulating the dataflow structures.
- */
-/*@{*/
-struct rc_dataflow_ref * rc_dataflow_create_ref(struct radeon_compiler * c,
- struct rc_dataflow_vector * vector, struct rc_instruction * inst);
-struct rc_dataflow_vector * rc_dataflow_create_vector(struct radeon_compiler * c,
- rc_register_file file, unsigned int index, struct rc_instruction * inst);
-void rc_dataflow_remove_ref(struct rc_dataflow_ref * ref);
-
-void rc_dataflow_remove_instruction(struct rc_instruction * inst);
-/*@}*/
-
/**
- * Compiler passes based on dataflow structures.
+ * Compiler passes based on dataflow analysis.
*/
/*@{*/
typedef void (*rc_dataflow_mark_outputs_fn)(void * userdata, void * data,
void (*mark_fn)(void * data, unsigned int index, unsigned int mask));
-void rc_dataflow_annotate(struct radeon_compiler * c, rc_dataflow_mark_outputs_fn dce, void * userdata);
-void rc_dataflow_dealias(struct radeon_compiler * c);
+void rc_dataflow_deadcode(struct radeon_compiler * c, rc_dataflow_mark_outputs_fn dce, void * userdata);
void rc_dataflow_swizzles(struct radeon_compiler * c);
/*@}*/