remove more assembly-related code
authorBrian <brian@yutani.localnet.net>
Fri, 2 Feb 2007 22:05:46 +0000 (15:05 -0700)
committerBrian <brian@yutani.localnet.net>
Fri, 2 Feb 2007 22:05:46 +0000 (15:05 -0700)
src/mesa/shader/slang/slang_assemble.h
src/mesa/shader/slang/slang_compile.c
src/mesa/shader/slang/slang_compile.h
src/mesa/shader/slang/slang_print.c
src/mesa/shader/slang/slang_print.h
src/mesa/shader/slang/slang_storage.c
src/mesa/shader/slang/slang_storage.h

index 7e380b3c3340d4b6c451fd21ca9b6af65fd5526f..bd49791a89ce426cd2b423b3b3b41ba0cf2742c1 100644 (file)
 #include "slang_utility.h"
 #include "slang_vartable.h"
 
-#if defined __cplusplus
-extern "C" {
-#endif
-
 
 struct slang_operation_;
 
-typedef enum slang_assembly_type_
-{
-   /* core */
-   slang_asm_none,
-   slang_asm_float_copy,
-   slang_asm_float_move,
-   slang_asm_float_push,
-   slang_asm_float_deref,
-   slang_asm_float_add,       /* a = pop(); b = pop(); push(a + b); */
-   slang_asm_float_subtract,
-   slang_asm_float_multiply,
-   slang_asm_float_divide,
-   slang_asm_float_negate,    /* push(-pop()) */
-   slang_asm_float_less,      /* a = pop(); b = pop(); push(a < b); */
-   slang_asm_float_equal_exp,
-   slang_asm_float_equal_int,
-   slang_asm_float_to_int,    /* push(floatToInt(pop())) */
-   slang_asm_float_sine,      /* push(sin(pop()) */
-   slang_asm_float_cosine,
-   slang_asm_float_arcsine,
-   slang_asm_float_arctan,
-   slang_asm_float_power,     /* push(pow(pop(), pop())) */
-   slang_asm_float_exp,
-   slang_asm_float_exp2,
-   slang_asm_float_rsq,
-   slang_asm_float_rcp,
-   slang_asm_float_log2,
-   slang_asm_float_min,
-   slang_asm_float_max,
-   slang_asm_float_ceil,
-   slang_asm_float_noise1,    /* push(noise1(pop()) */
-   slang_asm_float_noise2,    /* push(noise2(pop(), pop())) */
-   slang_asm_float_noise3,
-   slang_asm_float_noise4,
-
-   slang_asm_int_copy,
-   slang_asm_int_move,
-   slang_asm_int_push,
-   slang_asm_int_deref,
-   slang_asm_int_to_float,
-   slang_asm_int_to_addr,
-
-   slang_asm_bool_copy,
-   slang_asm_bool_move,
-   slang_asm_bool_push,
-   slang_asm_bool_deref,
-
-   slang_asm_addr_copy,
-   slang_asm_addr_push,
-   slang_asm_addr_deref,
-   slang_asm_addr_add,
-   slang_asm_addr_multiply,
-
-   slang_asm_vec4_tex1d,
-   slang_asm_vec4_tex2d,
-   slang_asm_vec4_tex3d,
-   slang_asm_vec4_texcube,
-   slang_asm_vec4_shad1d,
-   slang_asm_vec4_shad2d,
-
-   slang_asm_jump,
-   slang_asm_jump_if_zero,
-
-   slang_asm_enter,
-   slang_asm_leave,
-
-   slang_asm_local_alloc,
-   slang_asm_local_free,
-   slang_asm_local_addr,
-   slang_asm_global_addr,
-
-   slang_asm_call,          /* push(ip); jump(inst->param[0]); */
-   slang_asm_return,
-
-   slang_asm_discard,
-   slang_asm_exit,
-   /* GL_MESA_shader_debug */
-   slang_asm_float_print,
-   slang_asm_int_print,
-   slang_asm_bool_print,
-   /* vec4 */
-   slang_asm_float_to_vec4,
-   slang_asm_vec4_add,
-   slang_asm_vec4_subtract,
-   slang_asm_vec4_multiply,
-   slang_asm_vec4_divide,
-   slang_asm_vec4_negate,
-   slang_asm_vec4_min,
-   slang_asm_vec4_max,
-   slang_asm_vec4_seq,
-   slang_asm_vec4_sne,
-   slang_asm_vec4_sge,
-   slang_asm_vec4_sgt,
-   slang_asm_vec4_dot,
-   slang_asm_vec3_dot,
-   slang_asm_vec3_cross,
-   slang_asm_vec4_floor,
-   slang_asm_vec4_frac,
-   slang_asm_vec4_abs,
-
-   slang_asm_vec4_copy,
-   slang_asm_vec4_deref,
-   slang_asm_vec4_equal_int,
-   /* not a real assembly instruction */
-   slang_asm__last
-} slang_assembly_type;
-
-
-/**
- * An assembly-level shader instruction.
- */
-typedef struct slang_assembly_
-{
-   slang_assembly_type type;  /**< The instruction opcode */
-   GLfloat literal;           /**< float literal */
-   GLuint param[2];           /**< Two integer/address parameters */
-} slang_assembly;
-
-
-/**
- * A list of slang_assembly instructions
- */
-typedef struct slang_assembly_file_
-{
-   slang_assembly *code;
-   GLuint count;
-   GLuint capacity;
-} slang_assembly_file;
-
-
-extern GLvoid
-_slang_assembly_file_ctr(slang_assembly_file *);
-
-extern GLvoid
-slang_assembly_file_destruct(slang_assembly_file *);
-
-extern GLboolean
-slang_assembly_file_push(slang_assembly_file *, slang_assembly_type);
-
-extern GLboolean
-slang_assembly_file_push_label(slang_assembly_file *,
-                               slang_assembly_type, GLuint);
-
-extern GLboolean
-slang_assembly_file_push_label2(slang_assembly_file *, slang_assembly_type,
-                                GLuint, GLuint);
-
-extern GLboolean
-slang_assembly_file_push_literal(slang_assembly_file *,
-                                 slang_assembly_type, GLfloat);
-
-
-typedef struct slang_assembly_file_restore_point_
-{
-   GLuint count;
-} slang_assembly_file_restore_point;
-
-
-extern GLboolean
-slang_assembly_file_restore_point_save(slang_assembly_file *,
-                                       slang_assembly_file_restore_point *);
-
-extern GLboolean
-slang_assembly_file_restore_point_load(slang_assembly_file *,
-                                       slang_assembly_file_restore_point *);
-
-
-typedef struct slang_assembly_flow_control_
-{
-   GLuint loop_start;           /**< for "continue" statement */
-   GLuint loop_end;             /**< for "break" statement */
-   GLuint function_end;         /**< for "return" statement */
-} slang_assembly_flow_control;
-
-typedef struct slang_assembly_local_info_
-{
-   GLuint ret_size;
-   GLuint addr_tmp;
-   GLuint swizzle_tmp;
-} slang_assembly_local_info;
-
-typedef enum
-{
-   slang_ref_force,
-   slang_ref_forbid             /**< slang_ref_freelance */
-} slang_ref_type;
 
 /**
  * Holds complete information about vector swizzle - the <swizzle>
@@ -246,12 +56,8 @@ typedef struct slang_assembly_name_space_
 
 typedef struct slang_assemble_ctx_
 {
-   slang_assembly_file *file;
    slang_atom_pool *atoms;
    slang_assembly_name_space space;
-   slang_assembly_flow_control flow;
-   slang_assembly_local_info local;
-   slang_ref_type ref;
    slang_swizzle swz;
    struct gl_program *program;
    slang_var_table *vartable;
@@ -268,36 +74,17 @@ _slang_locate_function(const struct slang_function_scope_ *funcs,
                        const slang_assembly_name_space *space,
                        slang_atom_pool *);
 
-extern GLboolean
-_slang_assemble_function(slang_assemble_ctx *, struct slang_function_ *);
-
-extern GLboolean
-_slang_cleanup_stack(slang_assemble_ctx *, struct slang_operation_ *);
 
 extern GLboolean
-_slang_dereference(slang_assemble_ctx *, struct slang_operation_ *);
+_slang_is_swizzle(const char *field, GLuint rows, slang_swizzle *swz);
 
 extern GLboolean
-_slang_assemble_function_call(slang_assemble_ctx *, struct slang_function_ *,
-                              struct slang_operation_ *, GLuint, GLboolean);
+_slang_is_swizzle_mask(const slang_swizzle *swz, GLuint rows);
 
-extern GLboolean
-_slang_assemble_function_call_name(slang_assemble_ctx *, const char *,
-                                   struct slang_operation_ *, GLuint,
-                                   GLboolean);
-
-extern GLboolean
-_slang_assemble_operation(slang_assemble_ctx *, struct slang_operation_ *,
-                          slang_ref_type);
-
-
-#ifdef __cplusplus
-}
-#endif
+extern GLvoid
+_slang_multiply_swizzles(slang_swizzle *, const slang_swizzle *,
+                         const slang_swizzle *);
 
-#include "slang_assemble_assignment.h"
 #include "slang_assemble_typeinfo.h"
-#include "slang_assemble_constructor.h"
-#include "slang_assemble_conditional.h"
 
 #endif
index 67fcbaef92d6b76d55493fdad1d143077a60017a..615dfc1bf28030a0aa8a734c3b34719cf427df63 100644 (file)
@@ -100,9 +100,6 @@ _slang_code_object_ctr(slang_code_object * self)
    for (i = 0; i < SLANG_BUILTIN_TOTAL; i++)
       _slang_code_unit_ctr(&self->builtin[i], self);
    _slang_code_unit_ctr(&self->unit, self);
-#if 0
-   _slang_assembly_file_ctr(&self->assembly);
-#endif
    self->varpool.next_addr = 0;
    slang_atom_pool_construct(&self->atompool);
 }
@@ -115,9 +112,6 @@ _slang_code_object_dtr(slang_code_object * self)
    for (i = 0; i < SLANG_BUILTIN_TOTAL; i++)
       _slang_code_unit_dtr(&self->builtin[i]);
    _slang_code_unit_dtr(&self->unit);
-#if 0
-   slang_assembly_file_destruct(&self->assembly);
-#endif
    slang_atom_pool_destruct(&self->atompool);
 }
 
@@ -242,7 +236,6 @@ typedef struct slang_output_ctx_
    slang_variable_scope *vars;
    slang_function_scope *funs;
    slang_struct_scope *structs;
-   slang_assembly_file *assembly;
    slang_var_pool *global_pool;
    struct gl_program *program;
    slang_var_table *vartable;
@@ -377,8 +370,7 @@ calculate_var_size(slang_parse_ctx * C, slang_output_ctx * O,
    if (!slang_storage_aggregate_construct(&agg))
       return GL_FALSE;
    if (!_slang_aggregate_variable(&agg, &var->type.specifier, var->array_len,
-                                  O->funs, O->structs, O->vars,
-                                  O->assembly, C->atoms)) {
+                                  O->funs, O->structs, O->vars, C->atoms)) {
       slang_storage_aggregate_destruct(&agg);
       return GL_FALSE;
    }
@@ -1544,30 +1536,9 @@ parse_function_definition(slang_parse_ctx * C, slang_output_ctx * O,
 static GLboolean
 initialize_global(slang_assemble_ctx * A, slang_variable * var)
 {
-#if 01
-   slang_assembly_file_restore_point point;
-#endif
-   slang_assembly_local_info save_local = A->local;
    slang_operation op_id, op_assign;
    GLboolean result;
 
-#if 0
-   /* save the current assembly */
-   if (!slang_assembly_file_restore_point_save(A->file, &point))
-      return GL_FALSE;
-#endif
-
-   /* allocate local storage for expression */
-   A->local.ret_size = 0;
-   A->local.addr_tmp = 0;
-   A->local.swizzle_tmp = 4;
-#if 0
-   if (!slang_assembly_file_push_label(A->file, slang_asm_local_alloc, 20))
-      return GL_FALSE;
-   if (!slang_assembly_file_push_label(A->file, slang_asm_enter, 20))
-      return GL_FALSE;
-#endif
-
    /* construct the left side of assignment */
    if (!slang_operation_construct(&op_id))
       return GL_FALSE;
@@ -1603,12 +1574,7 @@ initialize_global(slang_assemble_ctx * A, slang_variable * var)
    op_assign.children[0] = op_id;
    op_assign.children[1] = *var->initializer;
 
-#if 0 /* this should go away */
-   /* insert the actual expression */
-   result = _slang_assemble_operation(A, &op_assign, slang_ref_forbid);
-#else
    result = 1;
-#endif
 
    /* carefully destroy the operations */
    op_assign.num_children = 0;
@@ -1620,16 +1586,6 @@ initialize_global(slang_assemble_ctx * A, slang_variable * var)
 
    if (!result)
       return GL_FALSE;
-#if 0
-   if (!slang_assembly_file_push(A->file, slang_asm_exit))
-      return GL_FALSE;
-#endif
-#if 0
-   /* restore the old assembly */
-   if (!slang_assembly_file_restore_point_load(A->file, &point))
-      return GL_FALSE;
-#endif
-   A->local = save_local;
 
    return GL_TRUE;
 }
@@ -1721,7 +1677,6 @@ parse_init_declarator(slang_parse_ctx * C, slang_output_ctx * O,
    if (C->global_scope) {
       slang_assemble_ctx A;
 
-      A.file = O->assembly;
       A.atoms = C->atoms;
       A.space.funcs = O->funs;
       A.space.structs = O->structs;
@@ -1747,7 +1702,6 @@ parse_init_declarator(slang_parse_ctx * C, slang_output_ctx * O,
       if (var->initializer != NULL) {
          slang_assemble_ctx A;
 
-         A.file = O->assembly;
          A.atoms = C->atoms;
          A.space.funcs = O->funs;
          A.space.structs = O->structs;
@@ -1878,7 +1832,6 @@ parse_function(slang_parse_ctx * C, slang_output_ctx * O, int definition,
    {
       slang_assemble_ctx A;
 
-      A.file = O->assembly;
       A.atoms = C->atoms;
       A.space.funcs = O->funs;
       A.space.structs = O->structs;
@@ -1888,27 +1841,7 @@ parse_function(slang_parse_ctx * C, slang_output_ctx * O, int definition,
 
       _slang_reset_error();
 
-#if 0
-      printf("*************** Assemble function %s ****\n", (char *) (*parsed_func_ret)->header.a_name);
-      slang_print_var_scope((*parsed_func_ret)->parameters,
-                            (*parsed_func_ret)->param_count);
-#endif
-
-#if 0
-      if (!_slang_assemble_function(&A, *parsed_func_ret)) {
-         /* propogate the error message back through the info log */
-         C->L->text = _mesa_strdup(_slang_error_text());
-         C->L->dont_free_text = GL_FALSE;
-         return GL_FALSE;
-      }
-#endif
-
-#if 0
-      printf("**************************************\n");
-#endif
-#if 1
       _slang_codegen_function(&A, *parsed_func_ret);
-#endif
    }
    return GL_TRUE;
 }
@@ -1967,7 +1900,6 @@ parse_code_unit(slang_parse_ctx * C, slang_code_unit * unit,
    o.funs = &unit->funs;
    o.structs = &unit->structs;
    o.vars = &unit->vars;
-   o.assembly = &unit->object->assembly;
    o.global_pool = &unit->object->varpool;
    o.program = program;
    o.vartable = _slang_new_var_table(maxRegs);
index 3ebe72eca4ab11dc3224af9fc8a70121519e1980..f2731cb574d5d944e2094f161964417228b7903e 100644 (file)
@@ -75,7 +75,9 @@ typedef struct slang_code_object_
 {
    slang_code_unit builtin[SLANG_BUILTIN_TOTAL];
    slang_code_unit unit;
+#if 0
    slang_assembly_file assembly;
+#endif
    slang_var_pool varpool;
    slang_atom_pool atompool;
 } slang_code_object;
index 07509cddbcad1739bea74f08d59da4c49cf97c1f..0ebef818088082ce861d86e8e02fa25b4ded77c5 100644 (file)
@@ -631,7 +631,7 @@ slang_print_function(const slang_function *f, GLboolean body)
 
 
 
-
+#if 0
 
 const char *
 slang_asm_string(slang_assembly_type t)
@@ -784,6 +784,7 @@ slang_asm_string(slang_assembly_type t)
       return "??asm??";
    }
 }
+#endif
 
 
 const char *
index ae39be68060774c754663312d91ebc293c3a029f..81cf0a844eed39f524ed24e823eb087fbfc5df1d 100644 (file)
@@ -10,9 +10,10 @@ extern void
 slang_print_tree(const slang_operation *op, int indent);
 
 
+#if 0
 extern const char *
 slang_asm_string(slang_assembly_type t);
-
+#endif
 
 extern const char *
 slang_type_qual_string(slang_type_qualifier q);
index 472d08e6c17308bd223b03906ca3e95495214c8f..747d8e1d290c149466db93bc29f692dbada63060 100644 (file)
@@ -136,14 +136,14 @@ aggregate_variables(slang_storage_aggregate * agg,
                     slang_variable_scope * vars, slang_function_scope * funcs,
                     slang_struct_scope * structs,
                     slang_variable_scope * globals,
-                    slang_assembly_file * file, slang_atom_pool * atoms)
+                    slang_atom_pool * atoms)
 {
    GLuint i;
 
    for (i = 0; i < vars->num_variables; i++)
       if (!_slang_aggregate_variable(agg, &vars->variables[i]->type.specifier,
                                      vars->variables[i]->array_len, funcs,
-                                     structs, globals, file, atoms))
+                                     structs, globals, atoms))
          return GL_FALSE;
    return GL_TRUE;
 }
@@ -154,7 +154,7 @@ _slang_aggregate_variable(slang_storage_aggregate * agg,
                           slang_function_scope * funcs,
                           slang_struct_scope * structs,
                           slang_variable_scope * vars,
-                          slang_assembly_file * file, slang_atom_pool * atoms)
+                          slang_atom_pool * atoms)
 {
    switch (spec->type) {
    case slang_spec_bool:
@@ -196,7 +196,7 @@ _slang_aggregate_variable(slang_storage_aggregate * agg,
       return aggregate_vector(agg, slang_stor_int, 1);
    case slang_spec_struct:
       return aggregate_variables(agg, spec->_struct->fields, funcs, structs,
-                                 vars, file, atoms);
+                                 vars, atoms);
    case slang_spec_array:
       {
          slang_storage_array *arr;
@@ -216,7 +216,7 @@ _slang_aggregate_variable(slang_storage_aggregate * agg,
             return GL_FALSE;
          }
          if (!_slang_aggregate_variable(arr->aggregate, spec->_array, 0,
-                                        funcs, structs, vars, file, atoms))
+                                        funcs, structs, vars, atoms))
             return GL_FALSE;
          arr->length = array_len;
          /* TODO: check if 0 < arr->length <= 65535 */
index 3fe60c78fec5a1256ebdb60c06aefa5ab60fccf5..b433e8bceca6a1e22cb9eaf7d0ac061cd2eadba6 100644 (file)
@@ -98,7 +98,9 @@ _slang_aggregate_variable(slang_storage_aggregate *agg,
                           slang_function_scope *funcs,
                           slang_struct_scope *structs,
                           slang_variable_scope *vars,
+#if 0
                           slang_assembly_file *file,
+#endif
                           slang_atom_pool *atoms);
 
 /*