diff options
author | David Schleef <ds@schleef.org> | 2012-09-03 12:32:25 -0700 |
---|---|---|
committer | David Schleef <ds@schleef.org> | 2012-09-03 12:34:39 -0700 |
commit | ad8a9d1110164b6bc2260110ed6a25f80315242e (patch) | |
tree | c49cf9c2e7bb505af523b3241fd3a6ae8c2449e7 | |
parent | 299bc5ea3de69c3cfe391b57214c3fb2926608c8 (diff) | |
download | orc-ad8a9d1110164b6bc2260110ed6a25f80315242e.tar.gz |
Reindent
66 files changed, 10233 insertions, 10019 deletions
diff --git a/orc/generate-bytecode.c b/orc/generate-bytecode.c index 32bb2eb..3ff8f09 100644 --- a/orc/generate-bytecode.c +++ b/orc/generate-bytecode.c @@ -24,17 +24,18 @@ char *target = "sse"; } \ } while (0) -void help (void) +void +help (void) { - printf("Usage:\n"); - printf(" generate-bytecode [OPTION...]\n"); - printf("\n"); - printf("Help Options:\n"); - printf(" -h, --help Show help options\n"); - printf("\n"); - printf("Application Options:\n"); - printf(" -o, --output FILE Write output to FILE\n"); - printf("\n"); + printf ("Usage:\n"); + printf (" generate-bytecode [OPTION...]\n"); + printf ("\n"); + printf ("Help Options:\n"); + printf (" -h, --help Show help options\n"); + printf ("\n"); + printf ("Application Options:\n"); + printf (" -o, --output FILE Write output to FILE\n"); + printf ("\n"); exit (0); } @@ -52,25 +53,24 @@ main (int argc, char *argv[]) orc_init (); - for(i=1;i<argc;i++) { - if (strcmp (argv[i], "--output") == 0 || - strcmp(argv[i], "-o") == 0) { - if (i+1 < argc) { - output_file = argv[i+1]; + for (i = 1; i < argc; i++) { + if (strcmp (argv[i], "--output") == 0 || strcmp (argv[i], "-o") == 0) { + if (i + 1 < argc) { + output_file = argv[i + 1]; i++; } else { - help(); + help (); } } else if (strcmp (argv[i], "--header") == 0) { output_header = TRUE; - } else if (strncmp(argv[i], "-", 1) == 0) { - printf("Unknown option: %s\n", argv[i]); + } else if (strncmp (argv[i], "-", 1) == 0) { + printf ("Unknown option: %s\n", argv[i]); exit (1); } else { if (input_file == NULL) { input_file = argv[i]; } else { - printf("More than one input file specified: %s\n", argv[i]); + printf ("More than one input file specified: %s\n", argv[i]); exit (1); } } @@ -82,110 +82,109 @@ main (int argc, char *argv[]) output = fopen (output_file, "w"); if (!output) { - printf("Could not write output file: %s\n", output_file); - exit(1); + printf ("Could not write output file: %s\n", output_file); + exit (1); } opcode_set = orc_opcode_set_get ("sys"); - fprintf(output, "\n"); - fprintf(output, "/* autogenerated by generate-bytecode */\n"); - fprintf(output, "\n"); + fprintf (output, "\n"); + fprintf (output, "/* autogenerated by generate-bytecode */\n"); + fprintf (output, "\n"); if (output_header) { - fprintf(output, "#include <math.h>\n"); - fprintf(output, "#include <orc/orc.h>\n"); + fprintf (output, "#include <math.h>\n"); + fprintf (output, "#include <orc/orc.h>\n"); if (include_file) { - fprintf(output, "#include <%s>\n", include_file); + fprintf (output, "#include <%s>\n", include_file); } - fprintf(output, "\n"); - - fprintf(output, "typedef enum {\n"); - fprintf(output, " ORC_BC_END,\n"); - fprintf(output, " ORC_BC_BEGIN_FUNCTION,\n"); - fprintf(output, " ORC_BC_END_FUNCTION,\n"); - fprintf(output, " ORC_BC_SET_CONSTANT_N,\n"); - fprintf(output, " ORC_BC_SET_N_MULTIPLE,\n"); - fprintf(output, " ORC_BC_SET_N_MINIMUM,\n"); - fprintf(output, " ORC_BC_SET_N_MAXIMUM,\n"); - fprintf(output, " ORC_BC_SET_2D,\n"); - fprintf(output, " ORC_BC_SET_CONSTANT_M,\n"); - fprintf(output, " ORC_BC_SET_NAME,\n"); - fprintf(output, " ORC_BC_SET_BACKUP_FUNCTION,\n"); - fprintf(output, " ORC_BC_ADD_DESTINATION,\n"); - fprintf(output, " ORC_BC_ADD_SOURCE,\n"); - fprintf(output, " ORC_BC_ADD_ACCUMULATOR,\n"); - fprintf(output, " ORC_BC_ADD_CONSTANT,\n"); - fprintf(output, " ORC_BC_ADD_CONSTANT_INT64,\n"); - fprintf(output, " ORC_BC_ADD_PARAMETER,\n"); - fprintf(output, " ORC_BC_ADD_PARAMETER_FLOAT,\n"); - fprintf(output, " ORC_BC_ADD_PARAMETER_INT64,\n"); - fprintf(output, " ORC_BC_ADD_PARAMETER_DOUBLE,\n"); - fprintf(output, " ORC_BC_ADD_TEMPORARY,\n"); - for (i=21;i<32;i++){ - fprintf(output, " ORC_BC_RESERVED_%d,\n", i); + fprintf (output, "\n"); + + fprintf (output, "typedef enum {\n"); + fprintf (output, " ORC_BC_END,\n"); + fprintf (output, " ORC_BC_BEGIN_FUNCTION,\n"); + fprintf (output, " ORC_BC_END_FUNCTION,\n"); + fprintf (output, " ORC_BC_SET_CONSTANT_N,\n"); + fprintf (output, " ORC_BC_SET_N_MULTIPLE,\n"); + fprintf (output, " ORC_BC_SET_N_MINIMUM,\n"); + fprintf (output, " ORC_BC_SET_N_MAXIMUM,\n"); + fprintf (output, " ORC_BC_SET_2D,\n"); + fprintf (output, " ORC_BC_SET_CONSTANT_M,\n"); + fprintf (output, " ORC_BC_SET_NAME,\n"); + fprintf (output, " ORC_BC_SET_BACKUP_FUNCTION,\n"); + fprintf (output, " ORC_BC_ADD_DESTINATION,\n"); + fprintf (output, " ORC_BC_ADD_SOURCE,\n"); + fprintf (output, " ORC_BC_ADD_ACCUMULATOR,\n"); + fprintf (output, " ORC_BC_ADD_CONSTANT,\n"); + fprintf (output, " ORC_BC_ADD_CONSTANT_INT64,\n"); + fprintf (output, " ORC_BC_ADD_PARAMETER,\n"); + fprintf (output, " ORC_BC_ADD_PARAMETER_FLOAT,\n"); + fprintf (output, " ORC_BC_ADD_PARAMETER_INT64,\n"); + fprintf (output, " ORC_BC_ADD_PARAMETER_DOUBLE,\n"); + fprintf (output, " ORC_BC_ADD_TEMPORARY,\n"); + for (i = 21; i < 32; i++) { + fprintf (output, " ORC_BC_RESERVED_%d,\n", i); } - for(i=0;i<opcode_set->n_opcodes;i++){ + for (i = 0; i < opcode_set->n_opcodes; i++) { OrcStaticOpcode *opcode = opcode_set->opcodes + i; - if ((i+32)%10 == 0) { - fprintf(output, " /* %d */\n", i+32); + if ((i + 32) % 10 == 0) { + fprintf (output, " /* %d */\n", i + 32); } - fprintf(output, " ORC_BC_%s,\n", opcode->name); + fprintf (output, " ORC_BC_%s,\n", opcode->name); } - fprintf(output, " /* %d */\n", i+32); - fprintf(output, " ORC_BC_LAST\n"); - fprintf(output, "} OrcBytecodes;\n"); + fprintf (output, " /* %d */\n", i + 32); + fprintf (output, " ORC_BC_LAST\n"); + fprintf (output, "} OrcBytecodes;\n"); } else { - fprintf(output, "#ifdef HAVE_CONFIG_H\n"); - fprintf(output, "#include \"config.h\"\n"); - fprintf(output, "#endif\n"); - - fprintf(output, " ORC_BC_END,\n"); - fprintf(output, " ORC_BC_BEGIN_FUNCTION,\n"); - fprintf(output, " ORC_BC_END_FUNCTION,\n"); - fprintf(output, " ORC_BC_SET_CONSTANT_N,\n"); - fprintf(output, " ORC_BC_SET_N_MULTIPLE,\n"); - fprintf(output, " ORC_BC_SET_N_MINIMUM,\n"); - fprintf(output, " ORC_BC_SET_N_MAXIMUM,\n"); - fprintf(output, " ORC_BC_SET_2D,\n"); - fprintf(output, " ORC_BC_SET_CONSTANT_M,\n"); - fprintf(output, " ORC_BC_SET_NAME,\n"); - fprintf(output, " ORC_BC_SET_BACKUP_FUNCTION,\n"); - fprintf(output, " ORC_BC_ADD_DESTINATION,\n"); - fprintf(output, " ORC_BC_ADD_SOURCE,\n"); - fprintf(output, " ORC_BC_ADD_ACCUMULATOR,\n"); - fprintf(output, " ORC_BC_ADD_CONSTANT,\n"); - fprintf(output, " ORC_BC_ADD_CONSTANT_INT64,\n"); - fprintf(output, " ORC_BC_ADD_PARAMETER,\n"); - fprintf(output, " ORC_BC_ADD_PARAMETER_FLOAT,\n"); - fprintf(output, " ORC_BC_ADD_PARAMETER_INT64,\n"); - fprintf(output, " ORC_BC_ADD_PARAMETER_DOUBLE,\n"); - fprintf(output, " ORC_BC_ADD_TEMPORARY,\n"); - for (i=21;i<32;i++){ - fprintf(output, " ORC_BC_RESERVED_%d,\n", i); + fprintf (output, "#ifdef HAVE_CONFIG_H\n"); + fprintf (output, "#include \"config.h\"\n"); + fprintf (output, "#endif\n"); + + fprintf (output, " ORC_BC_END,\n"); + fprintf (output, " ORC_BC_BEGIN_FUNCTION,\n"); + fprintf (output, " ORC_BC_END_FUNCTION,\n"); + fprintf (output, " ORC_BC_SET_CONSTANT_N,\n"); + fprintf (output, " ORC_BC_SET_N_MULTIPLE,\n"); + fprintf (output, " ORC_BC_SET_N_MINIMUM,\n"); + fprintf (output, " ORC_BC_SET_N_MAXIMUM,\n"); + fprintf (output, " ORC_BC_SET_2D,\n"); + fprintf (output, " ORC_BC_SET_CONSTANT_M,\n"); + fprintf (output, " ORC_BC_SET_NAME,\n"); + fprintf (output, " ORC_BC_SET_BACKUP_FUNCTION,\n"); + fprintf (output, " ORC_BC_ADD_DESTINATION,\n"); + fprintf (output, " ORC_BC_ADD_SOURCE,\n"); + fprintf (output, " ORC_BC_ADD_ACCUMULATOR,\n"); + fprintf (output, " ORC_BC_ADD_CONSTANT,\n"); + fprintf (output, " ORC_BC_ADD_CONSTANT_INT64,\n"); + fprintf (output, " ORC_BC_ADD_PARAMETER,\n"); + fprintf (output, " ORC_BC_ADD_PARAMETER_FLOAT,\n"); + fprintf (output, " ORC_BC_ADD_PARAMETER_INT64,\n"); + fprintf (output, " ORC_BC_ADD_PARAMETER_DOUBLE,\n"); + fprintf (output, " ORC_BC_ADD_TEMPORARY,\n"); + for (i = 21; i < 32; i++) { + fprintf (output, " ORC_BC_RESERVED_%d,\n", i); } - for(i=0;i<opcode_set->n_opcodes;i++){ + for (i = 0; i < opcode_set->n_opcodes; i++) { OrcStaticOpcode *opcode = opcode_set->opcodes + i; - if ((i+32)%10 == 0) { - fprintf(output, " /* %d */\n", i+32); + if ((i + 32) % 10 == 0) { + fprintf (output, " /* %d */\n", i + 32); } - fprintf(output, " { \"%s\" },\n", opcode->name); + fprintf (output, " { \"%s\" },\n", opcode->name); } - fprintf(output, " /* %d */\n", i+32); - fprintf(output, " ORC_BC_LAST\n"); - fprintf(output, "} OrcBytecodes;\n"); + fprintf (output, " /* %d */\n", i + 32); + fprintf (output, " ORC_BC_LAST\n"); + fprintf (output, "} OrcBytecodes;\n"); } fclose (output); - if (error) exit(1); + if (error) + exit (1); return 0; } - - diff --git a/orc/generate-emulation.c b/orc/generate-emulation.c index f375c04..b7e824e 100644 --- a/orc/generate-emulation.c +++ b/orc/generate-emulation.c @@ -9,7 +9,7 @@ #include <string.h> #include <ctype.h> -void output_code_emulate (OrcProgram *p, FILE *output); +void output_code_emulate (OrcProgram * p, FILE * output); int verbose = 0; int error = 0; @@ -25,17 +25,18 @@ char *target = "sse"; } \ } while (0) -void help (void) +void +help (void) { - printf("Usage:\n"); - printf(" generate-emulation [OPTION...]\n"); - printf("\n"); - printf("Help Options:\n"); - printf(" -h, --help Show help options\n"); - printf("\n"); - printf("Application Options:\n"); - printf(" -o, --output FILE Write output to FILE\n"); - printf("\n"); + printf ("Usage:\n"); + printf (" generate-emulation [OPTION...]\n"); + printf ("\n"); + printf ("Help Options:\n"); + printf (" -h, --help Show help options\n"); + printf ("\n"); + printf ("Application Options:\n"); + printf (" -o, --output FILE Write output to FILE\n"); + printf ("\n"); exit (0); } @@ -53,25 +54,24 @@ main (int argc, char *argv[]) orc_init (); - for(i=1;i<argc;i++) { - if (strcmp (argv[i], "--output") == 0 || - strcmp(argv[i], "-o") == 0) { - if (i+1 < argc) { - output_file = argv[i+1]; + for (i = 1; i < argc; i++) { + if (strcmp (argv[i], "--output") == 0 || strcmp (argv[i], "-o") == 0) { + if (i + 1 < argc) { + output_file = argv[i + 1]; i++; } else { - help(); + help (); } } else if (strcmp (argv[i], "--header") == 0) { output_header = TRUE; - } else if (strncmp(argv[i], "-", 1) == 0) { - printf("Unknown option: %s\n", argv[i]); + } else if (strncmp (argv[i], "-", 1) == 0) { + printf ("Unknown option: %s\n", argv[i]); exit (1); } else { if (input_file == NULL) { input_file = argv[i]; } else { - printf("More than one input file specified: %s\n", argv[i]); + printf ("More than one input file specified: %s\n", argv[i]); exit (1); } } @@ -83,45 +83,45 @@ main (int argc, char *argv[]) output = fopen (output_file, "w"); if (!output) { - printf("Could not write output file: %s\n", output_file); - exit(1); + printf ("Could not write output file: %s\n", output_file); + exit (1); } opcode_set = orc_opcode_set_get ("sys"); - fprintf(output, "\n"); - fprintf(output, "/* autogenerated by generate-emulation */\n"); - fprintf(output, "\n"); + fprintf (output, "\n"); + fprintf (output, "/* autogenerated by generate-emulation */\n"); + fprintf (output, "\n"); if (output_header) { - fprintf(output, "#ifndef _ORC_EMULATE_OPCODES_H_\n"); - fprintf(output, "#define _ORC_EMULATE_OPCODES_H_\n"); - fprintf(output, "\n"); - for(i=0;i<opcode_set->n_opcodes;i++){ + fprintf (output, "#ifndef _ORC_EMULATE_OPCODES_H_\n"); + fprintf (output, "#define _ORC_EMULATE_OPCODES_H_\n"); + fprintf (output, "\n"); + for (i = 0; i < opcode_set->n_opcodes; i++) { OrcStaticOpcode *opcode = opcode_set->opcodes + i; - fprintf(output, + fprintf (output, "void emulate_%s (OrcOpcodeExecutor *ex, int i, int n);\n", opcode->name); } - fprintf(output, "\n"); - fprintf(output, "#endif\n"); - fprintf(output, "\n"); + fprintf (output, "\n"); + fprintf (output, "#endif\n"); + fprintf (output, "\n"); } else { - - fprintf(output, "#ifdef HAVE_CONFIG_H\n"); - fprintf(output, "#include \"config.h\"\n"); - fprintf(output, "#endif\n"); - fprintf(output, "#include <math.h>\n"); - fprintf(output, "#include <orc/orc.h>\n"); + + fprintf (output, "#ifdef HAVE_CONFIG_H\n"); + fprintf (output, "#include \"config.h\"\n"); + fprintf (output, "#endif\n"); + fprintf (output, "#include <math.h>\n"); + fprintf (output, "#include <orc/orc.h>\n"); if (include_file) { - fprintf(output, "#include <%s>\n", include_file); + fprintf (output, "#include <%s>\n", include_file); } - fprintf(output, "\n"); - fprintf(output, "%s", orc_target_get_asm_preamble ("c")); - fprintf(output, "\n"); + fprintf (output, "\n"); + fprintf (output, "%s", orc_target_get_asm_preamble ("c")); + fprintf (output, "\n"); - for(i=0;i<opcode_set->n_opcodes;i++){ + for (i = 0; i < opcode_set->n_opcodes; i++) { char s[40]; OrcProgram *program; OrcStaticOpcode *opcode = opcode_set->opcodes + i; @@ -130,48 +130,48 @@ main (int argc, char *argv[]) program = orc_program_new (); - sprintf(s, "emulate_%s", opcode->name); + sprintf (s, "emulate_%s", opcode->name); orc_program_set_name (program, s); if (opcode->dest_size[0] != 0) { if (opcode->flags & ORC_STATIC_OPCODE_ACCUMULATOR) { args[n_args++] = - orc_program_add_accumulator (program, opcode->dest_size[0], "d1"); + orc_program_add_accumulator (program, opcode->dest_size[0], "d1"); } else { args[n_args++] = - orc_program_add_destination (program, opcode->dest_size[0], "d1"); + orc_program_add_destination (program, opcode->dest_size[0], "d1"); } } if (opcode->dest_size[1] != 0) { args[n_args++] = - orc_program_add_destination (program, opcode->dest_size[1], "d2"); + orc_program_add_destination (program, opcode->dest_size[1], "d2"); } if (opcode->src_size[0] != 0) { if (opcode->src_size[1] == 0 && opcode->flags & ORC_STATIC_OPCODE_SCALAR) { args[n_args++] = - orc_program_add_parameter (program, opcode->src_size[0], "s1"); + orc_program_add_parameter (program, opcode->src_size[0], "s1"); } else { args[n_args++] = - orc_program_add_source (program, opcode->src_size[0], "s1"); + orc_program_add_source (program, opcode->src_size[0], "s1"); } } if (opcode->src_size[1] != 0) { if (opcode->flags & ORC_STATIC_OPCODE_SCALAR) { args[n_args++] = - orc_program_add_parameter (program, opcode->src_size[1], "s2"); + orc_program_add_parameter (program, opcode->src_size[1], "s2"); } else { args[n_args++] = - orc_program_add_source (program, opcode->src_size[1], "s2"); + orc_program_add_source (program, opcode->src_size[1], "s2"); } } if (opcode->src_size[2] != 0) { if (opcode->flags & ORC_STATIC_OPCODE_SCALAR) { args[n_args++] = - orc_program_add_parameter (program, opcode->src_size[2], "s3"); + orc_program_add_parameter (program, opcode->src_size[2], "s3"); } else { args[n_args++] = - orc_program_add_source (program, opcode->src_size[2], "s3"); + orc_program_add_source (program, opcode->src_size[2], "s3"); } } @@ -184,7 +184,8 @@ main (int argc, char *argv[]) fclose (output); - if (error) exit(1); + if (error) + exit (1); return 0; } @@ -222,122 +223,124 @@ const char *enumnames[] = { #if 0 void -output_prototype (OrcProgram *p, FILE *output) +output_prototype (OrcProgram * p, FILE * output) { OrcVariable *var; int i; int need_comma; - fprintf(output, "%s (", p->name); + fprintf (output, "%s (", p->name); need_comma = FALSE; - for(i=0;i<4;i++){ + for (i = 0; i < 4; i++) { var = &p->vars[ORC_VAR_D1 + i]; if (var->size) { - if (need_comma) fprintf(output, ", "); + if (need_comma) + fprintf (output, ", "); if (var->type_name) { - fprintf(output, "%s * %s", var->type_name, - varnames[ORC_VAR_D1 + i]); + fprintf (output, "%s * %s", var->type_name, varnames[ORC_VAR_D1 + i]); } else { - fprintf(output, "orc_uint%d * %s", var->size*8, + fprintf (output, "orc_uint%d * %s", var->size * 8, varnames[ORC_VAR_D1 + i]); } if (p->is_2d) { - fprintf(output, ", int %s_stride", varnames[ORC_VAR_D1 + i]); + fprintf (output, ", int %s_stride", varnames[ORC_VAR_D1 + i]); } need_comma = TRUE; } } - for(i=0;i<4;i++){ + for (i = 0; i < 4; i++) { var = &p->vars[ORC_VAR_A1 + i]; if (var->size) { - if (need_comma) fprintf(output, ", "); + if (need_comma) + fprintf (output, ", "); if (var->type_name) { - fprintf(output, "%s * %s", var->type_name, - varnames[ORC_VAR_A1 + i]); + fprintf (output, "%s * %s", var->type_name, varnames[ORC_VAR_A1 + i]); } else { - fprintf(output, "orc_uint%d * %s", var->size*8, + fprintf (output, "orc_uint%d * %s", var->size * 8, varnames[ORC_VAR_A1 + i]); } need_comma = TRUE; } } - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { var = &p->vars[ORC_VAR_S1 + i]; if (var->size) { - if (need_comma) fprintf(output, ", "); + if (need_comma) + fprintf (output, ", "); if (var->type_name) { - fprintf(output, "const %s * %s", var->type_name, + fprintf (output, "const %s * %s", var->type_name, varnames[ORC_VAR_S1 + i]); } else { - fprintf(output, "const orc_uint%d * %s", var->size*8, + fprintf (output, "const orc_uint%d * %s", var->size * 8, varnames[ORC_VAR_S1 + i]); } if (p->is_2d) { - fprintf(output, ", int %s_stride", varnames[ORC_VAR_S1 + i]); + fprintf (output, ", int %s_stride", varnames[ORC_VAR_S1 + i]); } need_comma = TRUE; } } - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { var = &p->vars[ORC_VAR_P1 + i]; if (var->size) { - if (need_comma) fprintf(output, ", "); + if (need_comma) + fprintf (output, ", "); if (var->is_float_param) { - REQUIRE(0,4,5,1); + REQUIRE (0, 4, 5, 1); } - fprintf(output, "%s %s", - var->is_float_param ? "float" : "int", - varnames[ORC_VAR_P1 + i]); + fprintf (output, "%s %s", + var->is_float_param ? "float" : "int", varnames[ORC_VAR_P1 + i]); need_comma = TRUE; } } if (p->constant_n == 0) { - if (need_comma) fprintf(output, ", "); - fprintf(output, "int n"); + if (need_comma) + fprintf (output, ", "); + fprintf (output, "int n"); need_comma = TRUE; } if (p->is_2d && p->constant_m == 0) { - if (need_comma) fprintf(output, ", "); - fprintf(output, "int m"); + if (need_comma) + fprintf (output, ", "); + fprintf (output, "int m"); } - fprintf(output, ")"); + fprintf (output, ")"); } void -output_code_header (OrcProgram *p, FILE *output) +output_code_header (OrcProgram * p, FILE * output) { - fprintf(output, "void "); + fprintf (output, "void "); output_prototype (p, output); - fprintf(output, ";\n"); + fprintf (output, ";\n"); } #endif void -output_code_emulate (OrcProgram *p, FILE *output) +output_code_emulate (OrcProgram * p, FILE * output) { - fprintf(output, "void\n"); + fprintf (output, "void\n"); if (p->constant_n) { - fprintf(output, "%s (OrcOpcodeExecutor *ex, int offset)\n", p->name); + fprintf (output, "%s (OrcOpcodeExecutor *ex, int offset)\n", p->name); } else { - fprintf(output, "%s (OrcOpcodeExecutor *ex, int offset, int n)\n", p->name); + fprintf (output, "%s (OrcOpcodeExecutor *ex, int offset, int n)\n", + p->name); } - fprintf(output, "{\n"); + fprintf (output, "{\n"); { OrcCompileResult result; - result = orc_program_compile_full (p, orc_target_get_by_name("c"), + result = orc_program_compile_full (p, orc_target_get_by_name ("c"), ORC_TARGET_C_BARE | ORC_TARGET_C_OPCODE); - if (ORC_COMPILE_RESULT_IS_SUCCESSFUL(result)) { - fprintf(output, "%s\n", orc_program_get_asm_code (p)); + if (ORC_COMPILE_RESULT_IS_SUCCESSFUL (result)) { + fprintf (output, "%s\n", orc_program_get_asm_code (p)); } else { - printf("Failed to compile %s\n", p->name); + printf ("Failed to compile %s\n", p->name); error = TRUE; } } - fprintf(output, "}\n"); - fprintf(output, "\n"); + fprintf (output, "}\n"); + fprintf (output, "\n"); } - - @@ -17,9 +17,9 @@ * @short_description: Library Initialization */ -void _orc_debug_init(void); -void _orc_once_init(void); -void _orc_compiler_init(void); +void _orc_debug_init (void); +void _orc_once_init (void); +void _orc_compiler_init (void); /** * orc_init: @@ -36,29 +36,29 @@ orc_init (void) if (!inited) { orc_global_mutex_lock (); if (!inited) { - ORC_ASSERT(sizeof(OrcExecutor) == sizeof(OrcExecutorAlt)); + ORC_ASSERT (sizeof (OrcExecutor) == sizeof (OrcExecutorAlt)); - _orc_debug_init(); - _orc_compiler_init(); - orc_opcode_init(); - orc_c_init(); + _orc_debug_init (); + _orc_compiler_init (); + orc_opcode_init (); + orc_c_init (); #ifdef ENABLE_BACKEND_C64X - orc_c64x_c_init(); + orc_c64x_c_init (); #endif #ifdef ENABLE_BACKEND_MMX - orc_mmx_init(); + orc_mmx_init (); #endif #ifdef ENABLE_BACKEND_SSE - orc_sse_init(); + orc_sse_init (); #endif #ifdef ENABLE_BACKEND_ALTIVEC - orc_powerpc_init(); + orc_powerpc_init (); #endif #ifdef ENABLE_BACKEND_ARM - orc_arm_init(); + orc_arm_init (); #endif #ifdef ENABLE_BACKEND_NEON - orc_neon_init(); + orc_neon_init (); #endif inited = TRUE; @@ -66,4 +66,3 @@ orc_init (void) orc_global_mutex_unlock (); } } - diff --git a/orc/orcarm.c b/orc/orcarm.c index bfdc246..ad8a638 100644 --- a/orc/orcarm.c +++ b/orc/orcarm.c @@ -30,7 +30,7 @@ orc_arm_cond_name (OrcArmCond cond) if (cond < 0 || cond >= 16) { return "ERROR"; } - return cond_names[cond&0xf]; + return cond_names[cond & 0xf]; } const char * @@ -41,91 +41,93 @@ orc_arm_reg_name (int reg) "a1", "a2", "a3", "a4", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8", - "ip", "sp", "lr", "pc" }; + "ip", "sp", "lr", "pc" + }; #else static const char *gp_regs[] = { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", - "ip", "sp", "lr", "pc" }; - //"r12", "r13", "r14", "r15" }; + "ip", "sp", "lr", "pc" + }; + //"r12", "r13", "r14", "r15" }; #endif - if (reg < ORC_GP_REG_BASE || reg >= ORC_GP_REG_BASE+16) { + if (reg < ORC_GP_REG_BASE || reg >= ORC_GP_REG_BASE + 16) { return "ERROR"; } - return gp_regs[reg&0xf]; + return gp_regs[reg & 0xf]; } void -orc_arm_emit (OrcCompiler *compiler, orc_uint32 insn) +orc_arm_emit (OrcCompiler * compiler, orc_uint32 insn) { ORC_WRITE_UINT32_LE (compiler->codeptr, insn); - compiler->codeptr+=4; + compiler->codeptr += 4; } void -orc_arm_emit_bx_lr (OrcCompiler *compiler) +orc_arm_emit_bx_lr (OrcCompiler * compiler) { - ORC_ASM_CODE(compiler," bx lr\n"); + ORC_ASM_CODE (compiler, " bx lr\n"); orc_arm_emit (compiler, 0xe12fff1e); } void -orc_arm_emit_push (OrcCompiler *compiler, int regs) +orc_arm_emit_push (OrcCompiler * compiler, int regs) { int i; int x = 0; - ORC_ASM_CODE(compiler," push {"); - for(i=0;i<16;i++){ - if (regs & (1<<i)) { - x |= (1<<i); - ORC_ASM_CODE(compiler,"r%d", i); + ORC_ASM_CODE (compiler, " push {"); + for (i = 0; i < 16; i++) { + if (regs & (1 << i)) { + x |= (1 << i); + ORC_ASM_CODE (compiler, "r%d", i); if (x != regs) { - ORC_ASM_CODE(compiler,", "); + ORC_ASM_CODE (compiler, ", "); } } } - ORC_ASM_CODE(compiler,"}\n"); + ORC_ASM_CODE (compiler, "}\n"); orc_arm_emit (compiler, 0xe92d0000 | regs); } void -orc_arm_emit_pop (OrcCompiler *compiler, int regs) +orc_arm_emit_pop (OrcCompiler * compiler, int regs) { int i; int x = 0; - ORC_ASM_CODE(compiler," pop {"); - for(i=0;i<16;i++){ - if (regs & (1<<i)) { - x |= (1<<i); - ORC_ASM_CODE(compiler,"r%d", i); + ORC_ASM_CODE (compiler, " pop {"); + for (i = 0; i < 16; i++) { + if (regs & (1 << i)) { + x |= (1 << i); + ORC_ASM_CODE (compiler, "r%d", i); if (x != regs) { - ORC_ASM_CODE(compiler,", "); + ORC_ASM_CODE (compiler, ", "); } } } - ORC_ASM_CODE(compiler,"}\n"); + ORC_ASM_CODE (compiler, "}\n"); orc_arm_emit (compiler, 0xe8bd0000 | regs); } void -orc_arm_emit_label (OrcCompiler *compiler, int label) +orc_arm_emit_label (OrcCompiler * compiler, int label) { ORC_ASSERT (label < ORC_N_LABELS); - ORC_ASM_CODE(compiler,".L%d:\n", label); + ORC_ASM_CODE (compiler, ".L%d:\n", label); compiler->labels[label] = compiler->codeptr; } void -orc_arm_add_fixup (OrcCompiler *compiler, int label, int type) +orc_arm_add_fixup (OrcCompiler * compiler, int label, int type) { ORC_ASSERT (compiler->n_fixups < ORC_N_FIXUPS); @@ -136,10 +138,10 @@ orc_arm_add_fixup (OrcCompiler *compiler, int label, int type) } void -orc_arm_do_fixups (OrcCompiler *compiler) +orc_arm_do_fixups (OrcCompiler * compiler) { int i; - for(i=0;i<compiler->n_fixups;i++){ + for (i = 0; i < compiler->n_fixups; i++) { unsigned char *label = compiler->labels[compiler->fixups[i].label]; unsigned char *ptr = compiler->fixups[i].ptr; orc_uint32 code; @@ -150,10 +152,10 @@ orc_arm_do_fixups (OrcCompiler *compiler) diff = code; diff = (diff << 8) >> 8; diff += ((label - ptr) >> 2); - if (diff != (diff << 8)>>8) { - ORC_COMPILER_ERROR(compiler, "fixup out of range"); + if (diff != (diff << 8) >> 8) { + ORC_COMPILER_ERROR (compiler, "fixup out of range"); } - ORC_WRITE_UINT32_LE(ptr, (code&0xff000000) | (diff&0x00ffffff)); + ORC_WRITE_UINT32_LE (ptr, (code & 0xff000000) | (diff & 0x00ffffff)); } else { code = ORC_READ_UINT32_LE (ptr); diff = code; @@ -162,47 +164,47 @@ orc_arm_do_fixups (OrcCompiler *compiler) diff = (diff << 24) >> 24; diff += ((label - ptr) >> 2); if (diff != (diff & 0xff)) { - ORC_COMPILER_ERROR(compiler, "fixup out of range (%d > 255)", diff); + ORC_COMPILER_ERROR (compiler, "fixup out of range (%d > 255)", diff); } - ORC_WRITE_UINT32_LE(ptr, (code&0xffffff00) | (diff&0x000000ff)); + ORC_WRITE_UINT32_LE (ptr, (code & 0xffffff00) | (diff & 0x000000ff)); } } } void -orc_arm_emit_align (OrcCompiler *compiler, int align_shift) +orc_arm_emit_align (OrcCompiler * compiler, int align_shift) { int diff; - diff = (compiler->code - compiler->codeptr)&((1<<align_shift) - 1); + diff = (compiler->code - compiler->codeptr) & ((1 << align_shift) - 1); while (diff) { orc_arm_emit_nop (compiler); - diff-=4; + diff -= 4; } } void -orc_arm_emit_nop (OrcCompiler *compiler) +orc_arm_emit_nop (OrcCompiler * compiler) { - ORC_ASM_CODE(compiler," nop\n"); + ORC_ASM_CODE (compiler, " nop\n"); orc_arm_emit (compiler, 0xe1a00000); } void -orc_arm_emit_branch (OrcCompiler *compiler, int cond, int label) +orc_arm_emit_branch (OrcCompiler * compiler, int cond, int label) { orc_uint32 code; code = 0x0afffffe; - code |= (cond&0xf) << 28; + code |= (cond & 0xf) << 28; orc_arm_add_fixup (compiler, label, 0); orc_arm_emit (compiler, code); - ORC_ASM_CODE(compiler," b%s .L%d\n", orc_arm_cond_name(cond), label); + ORC_ASM_CODE (compiler, " b%s .L%d\n", orc_arm_cond_name (cond), label); } void -orc_arm_emit_load_imm (OrcCompiler *compiler, int dest, int imm) +orc_arm_emit_load_imm (OrcCompiler * compiler, int dest, int imm) { orc_uint32 code; int shift2; @@ -219,21 +221,21 @@ orc_arm_emit_load_imm (OrcCompiler *compiler, int dest, int imm) shift2++; } if (x > 0xff) { - ORC_PROGRAM_ERROR(compiler, "bad immediate value"); + ORC_PROGRAM_ERROR (compiler, "bad immediate value"); } } code = 0xe3a00000; - code |= (dest&0xf) << 12; - code |= (((16-shift2)&0xf) << 8); - code |= (x&0xff); + code |= (dest & 0xf) << 12; + code |= (((16 - shift2) & 0xf) << 8); + code |= (x & 0xff); - ORC_ASM_CODE(compiler," mov %s, #0x%08x\n", orc_arm_reg_name (dest), imm); + ORC_ASM_CODE (compiler, " mov %s, #0x%08x\n", orc_arm_reg_name (dest), imm); orc_arm_emit (compiler, code); } void -orc_arm_emit_add_imm (OrcCompiler *compiler, int dest, int src1, int imm) +orc_arm_emit_add_imm (OrcCompiler * compiler, int dest, int src1, int imm) { orc_uint32 code; int shift2; @@ -250,153 +252,145 @@ orc_arm_emit_add_imm (OrcCompiler *compiler, int dest, int src1, int imm) shift2++; } if (x > 0xff) { - ORC_PROGRAM_ERROR(compiler, "bad immediate value"); + ORC_PROGRAM_ERROR (compiler, "bad immediate value"); } } code = 0xe2800000; - code |= (src1&0xf) << 16; - code |= (dest&0xf) << 12; - code |= (((16-shift2)&0xf) << 8); - code |= (x&0xff); + code |= (src1 & 0xf) << 16; + code |= (dest & 0xf) << 12; + code |= (((16 - shift2) & 0xf) << 8); + code |= (x & 0xff); - ORC_ASM_CODE(compiler," add %s, %s, #0x%08x\n", orc_arm_reg_name (dest), - orc_arm_reg_name(src1), imm); + ORC_ASM_CODE (compiler, " add %s, %s, #0x%08x\n", orc_arm_reg_name (dest), + orc_arm_reg_name (src1), imm); orc_arm_emit (compiler, code); } void -orc_arm_emit_and_imm (OrcCompiler *compiler, int dest, int src1, int value) +orc_arm_emit_and_imm (OrcCompiler * compiler, int dest, int src1, int value) { orc_uint32 code; code = 0xe2000000; - code |= (src1&0xf) << 16; - code |= (dest&0xf) << 12; + code |= (src1 & 0xf) << 16; + code |= (dest & 0xf) << 12; code |= (value) << 0; - ORC_ASM_CODE(compiler," and %s, %s, #%d\n", - orc_arm_reg_name (dest), - orc_arm_reg_name (src1), - value); + ORC_ASM_CODE (compiler, " and %s, %s, #%d\n", + orc_arm_reg_name (dest), orc_arm_reg_name (src1), value); orc_arm_emit (compiler, code); } void -orc_arm_emit_cmp (OrcCompiler *compiler, int src1, int src2) +orc_arm_emit_cmp (OrcCompiler * compiler, int src1, int src2) { orc_uint32 code; code = 0xe1500000; - code |= (src1&0xf) << 16; - code |= (src2&0xf) << 0; + code |= (src1 & 0xf) << 16; + code |= (src2 & 0xf) << 0; - ORC_ASM_CODE(compiler," cmp %s, %s\n", - orc_arm_reg_name (src1), - orc_arm_reg_name (src2)); + ORC_ASM_CODE (compiler, " cmp %s, %s\n", + orc_arm_reg_name (src1), orc_arm_reg_name (src2)); orc_arm_emit (compiler, code); } void -orc_arm_emit_asr_imm (OrcCompiler *compiler, int dest, int src1, int value) +orc_arm_emit_asr_imm (OrcCompiler * compiler, int dest, int src1, int value) { orc_uint32 code; if (value == 0) { - ORC_ERROR("bad immediate value"); + ORC_ERROR ("bad immediate value"); } code = 0xe1a00040; - code |= (src1&0xf) << 0; - code |= (dest&0xf) << 12; + code |= (src1 & 0xf) << 0; + code |= (dest & 0xf) << 12; code |= (value) << 7; - ORC_ASM_CODE(compiler," asr %s, %s, #%d\n", - orc_arm_reg_name (dest), - orc_arm_reg_name (src1), - value); + ORC_ASM_CODE (compiler, " asr %s, %s, #%d\n", + orc_arm_reg_name (dest), orc_arm_reg_name (src1), value); orc_arm_emit (compiler, code); } void -orc_arm_emit_lsl_imm (OrcCompiler *compiler, int dest, int src1, int value) +orc_arm_emit_lsl_imm (OrcCompiler * compiler, int dest, int src1, int value) { orc_uint32 code; if (value == 0) { - ORC_ERROR("bad immediate value"); + ORC_ERROR ("bad immediate value"); } code = 0xe1a00000; - code |= (src1&0xf) << 0; - code |= (dest&0xf) << 12; + code |= (src1 & 0xf) << 0; + code |= (dest & 0xf) << 12; code |= (value) << 7; - ORC_ASM_CODE(compiler," lsl %s, %s, #%d\n", - orc_arm_reg_name (dest), - orc_arm_reg_name (src1), - value); + ORC_ASM_CODE (compiler, " lsl %s, %s, #%d\n", + orc_arm_reg_name (dest), orc_arm_reg_name (src1), value); orc_arm_emit (compiler, code); } void -orc_arm_emit_load_reg (OrcCompiler *compiler, int dest, int src1, int offset) +orc_arm_emit_load_reg (OrcCompiler * compiler, int dest, int src1, int offset) { orc_uint32 code; code = 0xe5900000; - code |= (src1&0xf) << 16; - code |= (dest&0xf) << 12; - code |= offset&0xfff; + code |= (src1 & 0xf) << 16; + code |= (dest & 0xf) << 12; + code |= offset & 0xfff; - ORC_ASM_CODE(compiler," ldr %s, [%s, #%d]\n", - orc_arm_reg_name (dest), - orc_arm_reg_name (src1), offset); + ORC_ASM_CODE (compiler, " ldr %s, [%s, #%d]\n", + orc_arm_reg_name (dest), orc_arm_reg_name (src1), offset); orc_arm_emit (compiler, code); } void -orc_arm_emit_store_reg (OrcCompiler *compiler, int src1, int dest, int offset) +orc_arm_emit_store_reg (OrcCompiler * compiler, int src1, int dest, int offset) { orc_uint32 code; code = 0xe5800000; - code |= (dest&0xf) << 16; - code |= (src1&0xf) << 12; - code |= offset&0xfff; + code |= (dest & 0xf) << 16; + code |= (src1 & 0xf) << 12; + code |= offset & 0xfff; - ORC_ASM_CODE(compiler," str %s, [%s, #%d]\n", - orc_arm_reg_name (src1), - orc_arm_reg_name (dest), offset); + ORC_ASM_CODE (compiler, " str %s, [%s, #%d]\n", + orc_arm_reg_name (src1), orc_arm_reg_name (dest), offset); orc_arm_emit (compiler, code); } void -orc_arm_emit_mov (OrcCompiler *compiler, int dest, int src) +orc_arm_emit_mov (OrcCompiler * compiler, int dest, int src) { - if (dest == src) return; - orc_arm_emit_mov_r(compiler, ORC_ARM_COND_AL, 0, dest, src); + if (dest == src) + return; + orc_arm_emit_mov_r (compiler, ORC_ARM_COND_AL, 0, dest, src); } void -orc_arm_emit_sub (OrcCompiler *compiler, int dest, int src1, int src2) +orc_arm_emit_sub (OrcCompiler * compiler, int dest, int src1, int src2) { orc_arm_emit_sub_r (compiler, ORC_ARM_COND_AL, 0, dest, src1, src2); } void -orc_arm_emit_sub_imm (OrcCompiler *compiler, int dest, int src1, int value, +orc_arm_emit_sub_imm (OrcCompiler * compiler, int dest, int src1, int value, int record) { orc_arm_emit_sub_i (compiler, ORC_ARM_COND_AL, record, dest, src1, value); } void -orc_arm_emit_add (OrcCompiler *compiler, int dest, int src1, int src2) +orc_arm_emit_add (OrcCompiler * compiler, int dest, int src1, int src2) { orc_arm_emit_add_r (compiler, ORC_ARM_COND_AL, 0, dest, src1, src2); } void -orc_arm_emit_cmp_imm (OrcCompiler *compiler, int src1, int value) +orc_arm_emit_cmp_imm (OrcCompiler * compiler, int src1, int value) { orc_arm_emit_cmp_i (compiler, ORC_ARM_COND_AL, src1, value); } @@ -447,7 +441,7 @@ orc_arm_emit_cmp_imm (OrcCompiler *compiler, int src1, int value) * type 4: <op>{<cond>}{s} {<Rd>,} <Rn>, <Rm>, RRX */ void -orc_arm_emit_dp (OrcCompiler *p, int type, OrcArmCond cond, OrcArmDP opcode, +orc_arm_emit_dp (OrcCompiler * p, int type, OrcArmCond cond, OrcArmDP opcode, int S, int Rd, int Rn, int Rm, int shift, orc_uint32 val) { orc_uint32 code; @@ -482,7 +476,7 @@ orc_arm_emit_dp (OrcCompiler *p, int type, OrcArmCond cond, OrcArmDP opcode, shift++; } if (shift > 15) { - ORC_COMPILER_ERROR(p,"invalid ARM immediate %08x", val); + ORC_COMPILER_ERROR (p, "invalid ARM immediate %08x", val); return; } shifter_op = arm_so_i (shift, imm); @@ -496,24 +490,23 @@ orc_arm_emit_dp (OrcCompiler *p, int type, OrcArmCond cond, OrcArmDP opcode, break; case 2: /* <Rm>, [LSL|LSR|ASR] #imm */ - shifter_op = arm_so_rsi (val,shift,Rm); + shifter_op = arm_so_rsi (val, shift, Rm); sprintf (shifter, "%s, %s #%d", orc_arm_reg_name (Rm), shift_names[shift], val); break; case 3: /* <Rm>, [LSL|LSR|ASR] <Rs> */ - shifter_op = arm_so_rsr (val,shift,Rm); + shifter_op = arm_so_rsr (val, shift, Rm); sprintf (shifter, "%s, %s %s", orc_arm_reg_name (Rm), shift_names[shift], orc_arm_reg_name (val)); break; case 4: /* <Rm>, RRX */ shifter_op = arm_so_rrx (Rm); - sprintf (shifter, "%s, RRX", - orc_arm_reg_name (Rm)); + sprintf (shifter, "%s, RRX", orc_arm_reg_name (Rm)); break; default: - ORC_COMPILER_ERROR(p,"unknown data processing type %d", type); + ORC_COMPILER_ERROR (p, "unknown data processing type %d", type); return; } @@ -521,21 +514,22 @@ orc_arm_emit_dp (OrcCompiler *p, int type, OrcArmCond cond, OrcArmDP opcode, if (op_Rn[opcode]) { /* opcode using Rn */ code = arm_code_dp (cond, I, opcode, S, Rn, Rd, shifter_op); - ORC_ASM_CODE(p," %s%s%s %s, %s, %s\n", - dp_insn_names[opcode], orc_arm_cond_name(cond), (S ? "s" : ""), + ORC_ASM_CODE (p, " %s%s%s %s, %s, %s\n", + dp_insn_names[opcode], orc_arm_cond_name (cond), (S ? "s" : ""), orc_arm_reg_name (Rd), orc_arm_reg_name (Rn), shifter); } else { /* opcode using Rd and val (mov, mvn) */ code = arm_code_dp (cond, I, opcode, S, Rn, Rd, shifter_op); - ORC_ASM_CODE(p," %s%s%s %s, %s\n", - dp_insn_names[opcode], orc_arm_cond_name(cond), (S ? "s" : ""), + ORC_ASM_CODE (p, " %s%s%s %s, %s\n", + dp_insn_names[opcode], orc_arm_cond_name (cond), (S ? "s" : ""), orc_arm_reg_name (Rd), shifter); } } else { /* opcode does not change Rd, change status register (cmp, tst, ..) */ code = arm_code_dp (cond, I, opcode, 1, Rn, 0, shifter_op); - ORC_ASM_CODE(p," %s%s %s, %s\n", - dp_insn_names[opcode], orc_arm_cond_name(cond), orc_arm_reg_name (Rn), shifter); + ORC_ASM_CODE (p, " %s%s %s, %s\n", + dp_insn_names[opcode], orc_arm_cond_name (cond), orc_arm_reg_name (Rn), + shifter); } orc_arm_emit (p, code); } @@ -550,7 +544,7 @@ orc_arm_emit_dp (OrcCompiler *p, int type, OrcArmCond cond, OrcArmDP opcode, #define arm_code_par(cond,mode,Rn,Rd,op,Rm) (((cond)<<28)|((mode)<<20)|(((Rn)&0xf)<<16)|(((Rd)&0xf)<<12)|((op)<<4)|((Rm)&0xf)|0xf00) void -orc_arm_emit_par (OrcCompiler *p, int op, int mode, OrcArmCond cond, +orc_arm_emit_par (OrcCompiler * p, int op, int mode, OrcArmCond cond, int Rd, int Rn, int Rm) { orc_uint32 code; @@ -576,11 +570,9 @@ orc_arm_emit_par (OrcCompiler *p, int op, int mode, OrcArmCond cond, Rn = Rm; Rm = tmp; } - ORC_ASM_CODE(p," %s%s%s %s, %s, %s\n", - par_mode_names[mode], par_op_names[op], orc_arm_cond_name(cond), - orc_arm_reg_name (Rd), - orc_arm_reg_name (Rn), - orc_arm_reg_name (Rm)); + ORC_ASM_CODE (p, " %s%s%s %s, %s, %s\n", + par_mode_names[mode], par_op_names[op], orc_arm_cond_name (cond), + orc_arm_reg_name (Rd), orc_arm_reg_name (Rn), orc_arm_reg_name (Rm)); orc_arm_emit (p, code); } @@ -594,8 +586,8 @@ orc_arm_emit_par (OrcCompiler *p, int op, int mode, OrcArmCond cond, #define arm_code_xt(op,cond,Rn,Rd,r8,Rm) (op|((cond)<<28)|(((Rn)&0xf)<<16)|(((Rd)&0xf)<<12)|((((r8)&0xf)&0x18)<<7)|((Rm)&0xf)) void -orc_arm_emit_xt (OrcCompiler *p, int op, OrcArmCond cond, - int Rd, int Rn, int Rm, int r8) +orc_arm_emit_xt (OrcCompiler * p, int op, OrcArmCond cond, + int Rd, int Rn, int Rm, int r8) { orc_uint32 code; char shifter[64]; @@ -615,25 +607,21 @@ orc_arm_emit_xt (OrcCompiler *p, int op, OrcArmCond cond, code = arm_code_xt (xt_opcodes[op], cond, Rn, Rd, r8, Rm); if (Rn < 15) { /* with Rn */ - ORC_ASM_CODE(p," %s%s %s, %s, %s%s\n", - xt_insn_names[op], orc_arm_cond_name(cond), + ORC_ASM_CODE (p, " %s%s %s, %s, %s%s\n", + xt_insn_names[op], orc_arm_cond_name (cond), orc_arm_reg_name (Rd), - orc_arm_reg_name (Rn), - orc_arm_reg_name (Rm), - shifter); + orc_arm_reg_name (Rn), orc_arm_reg_name (Rm), shifter); } else { - ORC_ASM_CODE(p," %s%s %s, %s%s\n", - xt_insn_names[op], orc_arm_cond_name(cond), - orc_arm_reg_name (Rd), - orc_arm_reg_name (Rm), - shifter); + ORC_ASM_CODE (p, " %s%s %s, %s%s\n", + xt_insn_names[op], orc_arm_cond_name (cond), + orc_arm_reg_name (Rd), orc_arm_reg_name (Rm), shifter); } orc_arm_emit (p, code); } #define arm_code_pkh(op,cond,Rn,Rd,sh,Rm) (op|((cond)<<28)|(((Rn)&0xf)<<16)|(((Rd)&0xf)<<12)|((sh)<<7)|((Rm)&0xf)) void -orc_arm_emit_pkh (OrcCompiler *p, int op, OrcArmCond cond, +orc_arm_emit_pkh (OrcCompiler * p, int op, OrcArmCond cond, int Rd, int Rn, int Rm, int sh) { orc_uint32 code; @@ -642,19 +630,16 @@ orc_arm_emit_pkh (OrcCompiler *p, int op, OrcArmCond cond, static const char *pkh_insn_names[] = { "pkhbt", "pkhtb" }; if (sh > 0) { - sprintf (shifter, ", %s #%d", - (op == 0 ? "LSL" : "ASR"), sh); + sprintf (shifter, ", %s #%d", (op == 0 ? "LSL" : "ASR"), sh); } else { shifter[0] = '\0'; } code = arm_code_pkh (pkh_opcodes[op], cond, Rn, Rd, sh, Rm); - ORC_ASM_CODE(p," %s%s %s, %s, %s%s\n", - pkh_insn_names[op], orc_arm_cond_name(cond), + ORC_ASM_CODE (p, " %s%s %s, %s, %s%s\n", + pkh_insn_names[op], orc_arm_cond_name (cond), orc_arm_reg_name (Rd), - orc_arm_reg_name (Rn), - orc_arm_reg_name (Rm), - shifter); + orc_arm_reg_name (Rn), orc_arm_reg_name (Rm), shifter); orc_arm_emit (p, code); } @@ -669,8 +654,8 @@ orc_arm_emit_pkh (OrcCompiler *p, int op, OrcArmCond cond, (((Rd)&15)<<12)|(((sh)&31)<<7)|(((a)&1)<<6)|\ ((Rm)&15)) void -orc_arm_emit_sat (OrcCompiler *p, int op, OrcArmCond cond, - int Rd, int sat, int Rm, int sh, int asr) +orc_arm_emit_sat (OrcCompiler * p, int op, OrcArmCond cond, + int Rd, int sat, int Rm, int sh, int asr) { orc_uint32 code; char shifter[64]; @@ -680,8 +665,7 @@ orc_arm_emit_sat (OrcCompiler *p, int op, OrcArmCond cond, static const int par_op[] = { 0, 0, 3, 3 }; if (sh > 0) { - sprintf (shifter, ", %s #%d", - (asr&1 ? "ASR" : "LSL"), sh); + sprintf (shifter, ", %s #%d", (asr & 1 ? "ASR" : "LSL"), sh); } else { shifter[0] = '\0'; } @@ -695,33 +679,29 @@ orc_arm_emit_sat (OrcCompiler *p, int op, OrcArmCond cond, code = arm_code_par (cond, par_mode[op], sat - 1, Rd, par_op[op], Rm); } } - ORC_ASM_CODE(p," %s%s %s, #%d, %s%s\n", - sat_insn_names[op], orc_arm_cond_name(cond), - orc_arm_reg_name (Rd), - sat, - orc_arm_reg_name (Rm), - shifter); + ORC_ASM_CODE (p, " %s%s %s, #%d, %s%s\n", + sat_insn_names[op], orc_arm_cond_name (cond), + orc_arm_reg_name (Rd), sat, orc_arm_reg_name (Rm), shifter); orc_arm_emit (p, code); } #define arm_code_rv(op,cond,Rd,Rm) (op|(((cond)&15)<<28)|(((Rd)&15)<<12)|((Rm)&15)) void -orc_arm_emit_rv (OrcCompiler *p, int op, OrcArmCond cond, - int Rd, int Rm) +orc_arm_emit_rv (OrcCompiler * p, int op, OrcArmCond cond, int Rd, int Rm) { orc_uint32 code; static const orc_uint32 rv_opcodes[] = { 0x06bf0f30, 0x06bf0fb0 }; static const char *rv_insn_names[] = { "rev", "rev16" }; code = arm_code_rv (rv_opcodes[op], cond, Rd, Rm); - ORC_ASM_CODE(p," %s%s %s, %s\n", - rv_insn_names[op], orc_arm_cond_name(cond), + ORC_ASM_CODE (p, " %s%s %s, %s\n", + rv_insn_names[op], orc_arm_cond_name (cond), orc_arm_reg_name (Rd), orc_arm_reg_name (Rm)); orc_arm_emit (p, code); } void -orc_arm_flush_cache (OrcCode *code) +orc_arm_flush_cache (OrcCode * code) { #ifdef HAVE_ARM __clear_cache (code->code, code->code + code->code_size); @@ -729,13 +709,12 @@ orc_arm_flush_cache (OrcCode *code) } void -orc_arm_emit_data (OrcCompiler *compiler, orc_uint32 data) +orc_arm_emit_data (OrcCompiler * compiler, orc_uint32 data) { if (compiler->target_flags & ORC_TARGET_CLEAN_COMPILE) { orc_arm_emit_nop (compiler); } else { - ORC_ASM_CODE(compiler," .word 0x%08x\n", data); + ORC_ASM_CODE (compiler, " .word 0x%08x\n", data); orc_arm_emit (compiler, data); } } - diff --git a/orc/orcbytecode.c b/orc/orcbytecode.c index 19af32c..7062ba3 100644 --- a/orc/orcbytecode.c +++ b/orc/orcbytecode.c @@ -10,11 +10,11 @@ #include <string.h> -void bytecode_append_code (OrcBytecode *bytecode, int code); -void bytecode_append_int (OrcBytecode *bytecode, int value); -void bytecode_append_uint32 (OrcBytecode *bytecode, orc_uint32 value); -void bytecode_append_uint64 (OrcBytecode *bytecode, orc_uint64 value); -void bytecode_append_string (OrcBytecode *bytecode, char *s); +void bytecode_append_code (OrcBytecode * bytecode, int code); +void bytecode_append_int (OrcBytecode * bytecode, int value); +void bytecode_append_uint32 (OrcBytecode * bytecode, orc_uint32 value); +void bytecode_append_uint64 (OrcBytecode * bytecode, orc_uint64 value); +void bytecode_append_string (OrcBytecode * bytecode, char *s); OrcBytecode * @@ -22,24 +22,24 @@ orc_bytecode_new (void) { OrcBytecode *bytecode; - bytecode = malloc (sizeof(OrcBytecode)); - memset (bytecode, 0, sizeof(OrcBytecode)); + bytecode = malloc (sizeof (OrcBytecode)); + memset (bytecode, 0, sizeof (OrcBytecode)); bytecode->alloc_len = 256; - bytecode->bytecode = malloc(bytecode->alloc_len); + bytecode->bytecode = malloc (bytecode->alloc_len); return bytecode; } void -orc_bytecode_free (OrcBytecode *bytecode) +orc_bytecode_free (OrcBytecode * bytecode) { free (bytecode->bytecode); free (bytecode); } OrcBytecode * -orc_bytecode_from_program (OrcProgram *p) +orc_bytecode_from_program (OrcProgram * p) { OrcBytecode *bytecode = orc_bytecode_new (); int i; @@ -84,7 +84,7 @@ orc_bytecode_from_program (OrcProgram *p) bytecode_pointer (bytecode, p->backup_function); } #endif - for(i=0;i<4;i++){ + for (i = 0; i < 4; i++) { var = &p->vars[ORC_VAR_D1 + i]; if (var->size) { bytecode_append_code (bytecode, ORC_BC_ADD_DESTINATION); @@ -92,7 +92,7 @@ orc_bytecode_from_program (OrcProgram *p) bytecode_append_int (bytecode, var->alignment); } } - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { var = &p->vars[ORC_VAR_S1 + i]; if (var->size) { bytecode_append_code (bytecode, ORC_BC_ADD_SOURCE); @@ -100,7 +100,7 @@ orc_bytecode_from_program (OrcProgram *p) bytecode_append_int (bytecode, var->alignment); } } - for(i=0;i<4;i++){ + for (i = 0; i < 4; i++) { var = &p->vars[ORC_VAR_A1 + i]; if (var->size) { bytecode_append_code (bytecode, ORC_BC_ADD_ACCUMULATOR); @@ -108,20 +108,21 @@ orc_bytecode_from_program (OrcProgram *p) //bytecode_append_int (bytecode, var->alignment); } } - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { var = &p->vars[ORC_VAR_C1 + i]; - if (var->size == 0) continue; + if (var->size == 0) + continue; if (var->size <= 4) { bytecode_append_code (bytecode, ORC_BC_ADD_CONSTANT); bytecode_append_int (bytecode, var->size); - bytecode_append_uint32 (bytecode, (orc_uint32)var->value.i); + bytecode_append_uint32 (bytecode, (orc_uint32) var->value.i); } else if (var->size > 4) { bytecode_append_code (bytecode, ORC_BC_ADD_CONSTANT_INT64); bytecode_append_int (bytecode, var->size); - bytecode_append_uint64 (bytecode, (orc_uint64)var->value.i); + bytecode_append_uint64 (bytecode, (orc_uint64) var->value.i); } } - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { var = &p->vars[ORC_VAR_P1 + i]; if (var->size) { switch (var->param_type) { @@ -138,13 +139,13 @@ orc_bytecode_from_program (OrcProgram *p) bytecode_append_code (bytecode, ORC_BC_ADD_PARAMETER_INT64); break; default: - ORC_ASSERT(0); + ORC_ASSERT (0); break; } bytecode_append_int (bytecode, var->size); } } - for(i=0;i<16;i++){ + for (i = 0; i < 16; i++) { var = &p->vars[ORC_VAR_T1 + i]; if (var->size) { bytecode_append_code (bytecode, ORC_BC_ADD_TEMPORARY); @@ -152,7 +153,7 @@ orc_bytecode_from_program (OrcProgram *p) } } - for(i=0;i<p->n_insns;i++){ + for (i = 0; i < p->n_insns; i++) { OrcInstruction *insn = p->insns + i; if (insn->flags) { @@ -184,7 +185,7 @@ orc_bytecode_from_program (OrcProgram *p) } void -bytecode_append_byte (OrcBytecode *bytecode, int byte) +bytecode_append_byte (OrcBytecode * bytecode, int byte) { if (bytecode->length >= bytecode->alloc_len) { bytecode->alloc_len += 256; @@ -195,15 +196,15 @@ bytecode_append_byte (OrcBytecode *bytecode, int byte) } void -bytecode_append_code (OrcBytecode *bytecode, int code) +bytecode_append_code (OrcBytecode * bytecode, int code) { bytecode_append_byte (bytecode, code); #if 0 OrcOpcodeSet *opcode_set = orc_opcode_set_get ("sys"); - fprintf(bytecode, "\n "); + fprintf (bytecode, "\n "); if (code >= 32) { - fprintf(bytecode, "ORC_BC_%s, ", opcode_set->opcodes[code-32].name); + fprintf (bytecode, "ORC_BC_%s, ", opcode_set->opcodes[code - 32].name); } else { static char *codes[32] = { "END", @@ -240,15 +241,15 @@ bytecode_append_code (OrcBytecode *bytecode, int code) "RESERVED_31" }; - fprintf(bytecode, "ORC_BC_%s, ", codes[code]); + fprintf (bytecode, "ORC_BC_%s, ", codes[code]); } #endif } void -bytecode_append_int (OrcBytecode *bytecode, int value) +bytecode_append_int (OrcBytecode * bytecode, int value) { - ORC_ASSERT(value >= 0); + ORC_ASSERT (value >= 0); if (value < 255) { bytecode_append_byte (bytecode, value); @@ -257,12 +258,12 @@ bytecode_append_int (OrcBytecode *bytecode, int value) bytecode_append_byte (bytecode, value & 0xff); bytecode_append_byte (bytecode, value >> 8); } else { - ORC_ASSERT(0); + ORC_ASSERT (0); } } void -bytecode_append_uint32 (OrcBytecode *bytecode, orc_uint32 value) +bytecode_append_uint32 (OrcBytecode * bytecode, orc_uint32 value) { bytecode_append_byte (bytecode, value & 0xff); bytecode_append_byte (bytecode, (value >> 8) & 0xff); @@ -272,7 +273,7 @@ bytecode_append_uint32 (OrcBytecode *bytecode, orc_uint32 value) } void -bytecode_append_uint64 (OrcBytecode *bytecode, orc_uint64 value) +bytecode_append_uint64 (OrcBytecode * bytecode, orc_uint64 value) { bytecode_append_byte (bytecode, value & 0xff); bytecode_append_byte (bytecode, (value >> 8) & 0xff); @@ -286,18 +287,19 @@ bytecode_append_uint64 (OrcBytecode *bytecode, orc_uint64 value) } void -bytecode_append_string (OrcBytecode *bytecode, char *s) +bytecode_append_string (OrcBytecode * bytecode, char *s) { int i; - int len = strlen(s); + int len = strlen (s); bytecode_append_int (bytecode, len); - for(i=0;i<len;i++){ + for (i = 0; i < len; i++) { bytecode_append_byte (bytecode, s[i]); } } typedef struct _OrcBytecodeParse OrcBytecodeParse; -struct _OrcBytecodeParse { +struct _OrcBytecodeParse +{ const orc_uint8 *bytecode; int parse_offset; int function_start; @@ -305,7 +307,7 @@ struct _OrcBytecodeParse { }; int -orc_bytecode_parse_get_byte (OrcBytecodeParse *parse) +orc_bytecode_parse_get_byte (OrcBytecodeParse * parse) { int value; value = parse->bytecode[parse->parse_offset]; @@ -314,21 +316,21 @@ orc_bytecode_parse_get_byte (OrcBytecodeParse *parse) } int -orc_bytecode_parse_get_int (OrcBytecodeParse *parse) +orc_bytecode_parse_get_int (OrcBytecodeParse * parse) { int value; - value = orc_bytecode_parse_get_byte(parse); + value = orc_bytecode_parse_get_byte (parse); if (value == 255) { - value = orc_bytecode_parse_get_byte(parse); - value |= orc_bytecode_parse_get_byte(parse) << 8; + value = orc_bytecode_parse_get_byte (parse); + value |= orc_bytecode_parse_get_byte (parse) << 8; } return value; } char * -orc_bytecode_parse_get_string (OrcBytecodeParse *parse) +orc_bytecode_parse_get_string (OrcBytecodeParse * parse) { int len; int i; @@ -336,7 +338,7 @@ orc_bytecode_parse_get_string (OrcBytecodeParse *parse) len = orc_bytecode_parse_get_int (parse); s = malloc (len + 1); - for(i=0;i<len;i++){ + for (i = 0; i < len; i++) { s[i] = orc_bytecode_parse_get_byte (parse); } s[i] = 0; @@ -345,7 +347,7 @@ orc_bytecode_parse_get_string (OrcBytecodeParse *parse) } orc_uint32 -orc_bytecode_parse_get_uint32 (OrcBytecodeParse *parse) +orc_bytecode_parse_get_uint32 (OrcBytecodeParse * parse) { orc_uint32 value; value = orc_bytecode_parse_get_byte (parse); @@ -356,22 +358,22 @@ orc_bytecode_parse_get_uint32 (OrcBytecodeParse *parse) } orc_uint64 -orc_bytecode_parse_get_uint64 (OrcBytecodeParse *parse) +orc_bytecode_parse_get_uint64 (OrcBytecodeParse * parse) { orc_uint64 value; value = orc_bytecode_parse_get_byte (parse); value |= orc_bytecode_parse_get_byte (parse) << 8; value |= orc_bytecode_parse_get_byte (parse) << 16; value |= orc_bytecode_parse_get_byte (parse) << 24; - value |= (orc_uint64)orc_bytecode_parse_get_byte (parse) << 32; - value |= (orc_uint64)orc_bytecode_parse_get_byte (parse) << 40; - value |= (orc_uint64)orc_bytecode_parse_get_byte (parse) << 48; - value |= (orc_uint64)orc_bytecode_parse_get_byte (parse) << 56; + value |= (orc_uint64) orc_bytecode_parse_get_byte (parse) << 32; + value |= (orc_uint64) orc_bytecode_parse_get_byte (parse) << 40; + value |= (orc_uint64) orc_bytecode_parse_get_byte (parse) << 48; + value |= (orc_uint64) orc_bytecode_parse_get_byte (parse) << 56; return value; } int -orc_bytecode_parse_function (OrcProgram *program, const orc_uint8 *bytecode) +orc_bytecode_parse_function (OrcProgram * program, const orc_uint8 * bytecode) { OrcBytecodeParse _parse; OrcBytecodeParse *parse = &_parse; @@ -382,7 +384,7 @@ orc_bytecode_parse_function (OrcProgram *program, const orc_uint8 *bytecode) OrcOpcodeSet *opcode_set; int instruction_flags = 0; - memset (parse, 0, sizeof(*parse)); + memset (parse, 0, sizeof (*parse)); parse->bytecode = bytecode; opcode_set = orc_opcode_set_get ("sys"); @@ -440,20 +442,20 @@ orc_bytecode_parse_function (OrcProgram *program, const orc_uint8 *bytecode) orc_program_add_accumulator (program, size, "a"); break; case ORC_BC_ADD_CONSTANT: - { - orc_uint32 value; - size = orc_bytecode_parse_get_int (parse); - value = orc_bytecode_parse_get_uint32 (parse); - orc_program_add_constant (program, size, value, "c"); - } + { + orc_uint32 value; + size = orc_bytecode_parse_get_int (parse); + value = orc_bytecode_parse_get_uint32 (parse); + orc_program_add_constant (program, size, value, "c"); + } break; case ORC_BC_ADD_CONSTANT_INT64: - { - orc_uint64 value; - size = orc_bytecode_parse_get_int (parse); - value = orc_bytecode_parse_get_uint64 (parse); - orc_program_add_constant_int64 (program, size, value, "c"); - } + { + orc_uint64 value; + size = orc_bytecode_parse_get_int (parse); + value = orc_bytecode_parse_get_uint64 (parse); + orc_program_add_constant_int64 (program, size, value, "c"); + } break; case ORC_BC_ADD_PARAMETER: size = orc_bytecode_parse_get_int (parse); @@ -509,4 +511,3 @@ orc_bytecode_parse_function (OrcProgram *program, const orc_uint8 *bytecode) } } } - diff --git a/orc/orccode.c b/orc/orccode.c index ca5946c..5774a85 100644 --- a/orc/orccode.c +++ b/orc/orccode.c @@ -13,13 +13,13 @@ OrcCode * orc_code_new (void) { OrcCode *code; - code = malloc(sizeof(OrcCode)); - memset (code, 0, sizeof(OrcCode)); + code = malloc (sizeof (OrcCode)); + memset (code, 0, sizeof (OrcCode)); return code; } void -orc_code_free (OrcCode *code) +orc_code_free (OrcCode * code) { if (code->insns) { free (code->insns); @@ -36,6 +36,3 @@ orc_code_free (OrcCode *code) free (code); } - - - diff --git a/orc/orccodemem.c b/orc/orccodemem.c index f470be5..04eef56 100644 --- a/orc/orccodemem.c +++ b/orc/orccodemem.c @@ -26,7 +26,8 @@ typedef struct _OrcCodeRegion OrcCodeRegion; -struct _OrcCodeRegion { +struct _OrcCodeRegion +{ orc_uint8 *write_ptr; orc_uint8 *exec_ptr; int size; @@ -34,8 +35,9 @@ struct _OrcCodeRegion { OrcCodeChunk *chunks; }; -struct _OrcCodeChunk { - /*< private >*/ +struct _OrcCodeChunk +{ + /*< private > */ struct _OrcCodeChunk *next; struct _OrcCodeChunk *prev; struct _OrcCodeRegion *region; @@ -46,7 +48,7 @@ struct _OrcCodeChunk { }; -void orc_code_region_allocate_codemem (OrcCodeRegion *region); +void orc_code_region_allocate_codemem (OrcCodeRegion * region); static OrcCodeRegion **orc_code_regions; static int orc_code_n_regions; @@ -58,13 +60,13 @@ orc_code_region_new (void) OrcCodeRegion *region; OrcCodeChunk *chunk; - region = malloc(sizeof(OrcCodeRegion)); - memset (region, 0, sizeof(OrcCodeRegion)); + region = malloc (sizeof (OrcCodeRegion)); + memset (region, 0, sizeof (OrcCodeRegion)); orc_code_region_allocate_codemem (region); - chunk = malloc(sizeof(OrcCodeChunk)); - memset (chunk, 0, sizeof(OrcCodeChunk)); + chunk = malloc (sizeof (OrcCodeChunk)); + memset (chunk, 0, sizeof (OrcCodeChunk)); chunk->offset = 0; chunk->used = FALSE; @@ -77,12 +79,12 @@ orc_code_region_new (void) } OrcCodeChunk * -orc_code_chunk_split (OrcCodeChunk *chunk, int size) +orc_code_chunk_split (OrcCodeChunk * chunk, int size) { OrcCodeChunk *newchunk; - newchunk = malloc(sizeof(OrcCodeChunk)); - memset (newchunk, 0, sizeof(OrcCodeChunk)); + newchunk = malloc (sizeof (OrcCodeChunk)); + memset (newchunk, 0, sizeof (OrcCodeChunk)); newchunk->region = chunk->region; newchunk->offset = chunk->offset + size; @@ -100,7 +102,7 @@ orc_code_chunk_split (OrcCodeChunk *chunk, int size) } void -orc_code_chunk_merge (OrcCodeChunk *chunk) +orc_code_chunk_merge (OrcCodeChunk * chunk) { OrcCodeChunk *chunk2 = chunk->next; @@ -110,7 +112,7 @@ orc_code_chunk_merge (OrcCodeChunk *chunk) } chunk->size += chunk2->size; - free(chunk2); + free (chunk2); } OrcCodeChunk * @@ -121,9 +123,9 @@ orc_code_region_get_free_chunk (int size) OrcCodeChunk *chunk; orc_global_mutex_lock (); - for(i=0;i<orc_code_n_regions;i++){ + for (i = 0; i < orc_code_n_regions; i++) { region = orc_code_regions[i]; - for(chunk = region->chunks; chunk; chunk = chunk->next) { + for (chunk = region->chunks; chunk; chunk = chunk->next) { if (!chunk->used && size <= chunk->size) { orc_global_mutex_unlock (); return chunk; @@ -132,26 +134,26 @@ orc_code_region_get_free_chunk (int size) } orc_code_regions = realloc (orc_code_regions, - sizeof(void *)*(orc_code_n_regions+1)); + sizeof (void *) * (orc_code_n_regions + 1)); orc_code_regions[orc_code_n_regions] = orc_code_region_new (); region = orc_code_regions[orc_code_n_regions]; orc_code_n_regions++; - for(chunk = region->chunks; chunk; chunk = chunk->next) { - if (!chunk->used && size <= chunk->size){ + for (chunk = region->chunks; chunk; chunk = chunk->next) { + if (!chunk->used && size <= chunk->size) { orc_global_mutex_unlock (); return chunk; } } orc_global_mutex_unlock (); - ORC_ASSERT(0); + ORC_ASSERT (0); return NULL; } void -orc_code_allocate_codemem (OrcCode *code, int size) +orc_code_allocate_codemem (OrcCode * code, int size) { OrcCodeRegion *region; OrcCodeChunk *chunk; @@ -167,14 +169,14 @@ orc_code_allocate_codemem (OrcCode *code, int size) chunk->used = TRUE; code->chunk = chunk; - code->code = ORC_PTR_OFFSET(region->write_ptr, chunk->offset); - code->exec = ORC_PTR_OFFSET(region->exec_ptr, chunk->offset); + code->code = ORC_PTR_OFFSET (region->write_ptr, chunk->offset); + code->exec = ORC_PTR_OFFSET (region->exec_ptr, chunk->offset); code->code_size = size; //compiler->codeptr = ORC_PTR_OFFSET(region->write_ptr, chunk->offset); } void -orc_code_chunk_free (OrcCodeChunk *chunk) +orc_code_chunk_free (OrcCodeChunk * chunk) { if (_orc_compiler_flag_debug) { /* If debug is turned on, don't free code */ @@ -192,16 +194,15 @@ orc_code_chunk_free (OrcCodeChunk *chunk) #ifdef HAVE_CODEMEM_MMAP int -orc_code_region_allocate_codemem_dual_map (OrcCodeRegion *region, +orc_code_region_allocate_codemem_dual_map (OrcCodeRegion * region, const char *dir, int force_unlink) { int fd; int n; char *filename; - filename = malloc (strlen ("/orcexec..") + - strlen (dir) + 6 + 1); - sprintf(filename, "%s/orcexec.XXXXXX", dir); + filename = malloc (strlen ("/orcexec..") + strlen (dir) + 6 + 1); + sprintf (filename, "%s/orcexec.XXXXXX", dir); fd = mkstemp (filename); if (fd == -1) { ORC_WARNING ("failed to create temp file"); @@ -215,19 +216,19 @@ orc_code_region_allocate_codemem_dual_map (OrcCodeRegion *region, n = ftruncate (fd, SIZE); if (n < 0) { - ORC_WARNING("failed to expand file to size"); + ORC_WARNING ("failed to expand file to size"); close (fd); return FALSE; } - region->exec_ptr = mmap (NULL, SIZE, PROT_READ|PROT_EXEC, + region->exec_ptr = mmap (NULL, SIZE, PROT_READ | PROT_EXEC, MAP_SHARED, fd, 0); if (region->exec_ptr == MAP_FAILED) { - ORC_WARNING("failed to create exec map"); + ORC_WARNING ("failed to create exec map"); close (fd); return FALSE; } - region->write_ptr = mmap (NULL, SIZE, PROT_READ|PROT_WRITE, + region->write_ptr = mmap (NULL, SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (region->write_ptr == MAP_FAILED) { ORC_WARNING ("failed to create write map"); @@ -245,12 +246,12 @@ orc_code_region_allocate_codemem_dual_map (OrcCodeRegion *region, #endif int -orc_code_region_allocate_codemem_anon_map (OrcCodeRegion *region) +orc_code_region_allocate_codemem_anon_map (OrcCodeRegion * region) { - region->exec_ptr = mmap (NULL, SIZE, PROT_READ|PROT_WRITE|PROT_EXEC, - MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + region->exec_ptr = mmap (NULL, SIZE, PROT_READ | PROT_WRITE | PROT_EXEC, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); if (region->exec_ptr == MAP_FAILED) { - ORC_WARNING("failed to create write/exec map"); + ORC_WARNING ("failed to create write/exec map"); return FALSE; } region->write_ptr = region->exec_ptr; @@ -259,28 +260,32 @@ orc_code_region_allocate_codemem_anon_map (OrcCodeRegion *region) } void -orc_code_region_allocate_codemem (OrcCodeRegion *region) +orc_code_region_allocate_codemem (OrcCodeRegion * region) { const char *tmpdir; tmpdir = getenv ("TMPDIR"); if (tmpdir && orc_code_region_allocate_codemem_dual_map (region, - tmpdir, FALSE)) return; + tmpdir, FALSE)) + return; - if (orc_code_region_allocate_codemem_dual_map (region, - "/tmp", FALSE)) return; + if (orc_code_region_allocate_codemem_dual_map (region, "/tmp", FALSE)) + return; tmpdir = getenv ("XDG_RUNTIME_DIR"); if (tmpdir && orc_code_region_allocate_codemem_dual_map (region, - tmpdir, FALSE)) return; + tmpdir, FALSE)) + return; tmpdir = getenv ("HOME"); if (tmpdir && orc_code_region_allocate_codemem_dual_map (region, - tmpdir, FALSE)) return; + tmpdir, FALSE)) + return; + + if (orc_code_region_allocate_codemem_anon_map (region)) + return; - if (orc_code_region_allocate_codemem_anon_map (region)) return; - - ORC_ERROR("Failed to create write and exec mmap regions. This " + ORC_ERROR ("Failed to create write and exec mmap regions. This " "is probably because SELinux execmem check is enabled (good) " "and $TMPDIR and $HOME are mounted noexec (bad)."); } @@ -289,9 +294,10 @@ orc_code_region_allocate_codemem (OrcCodeRegion *region) #ifdef HAVE_CODEMEM_VIRTUALALLOC void -orc_code_region_allocate_codemem (OrcCodeRegion *region) +orc_code_region_allocate_codemem (OrcCodeRegion * region) { - region->write_ptr = VirtualAlloc(NULL, SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE); + region->write_ptr = + VirtualAlloc (NULL, SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE); region->exec_ptr = region->write_ptr; region->size = SIZE; } @@ -299,11 +305,10 @@ orc_code_region_allocate_codemem (OrcCodeRegion *region) #ifdef HAVE_CODEMEM_MALLOC void -orc_code_region_allocate_codemem (OrcCodeRegion *region) +orc_code_region_allocate_codemem (OrcCodeRegion * region) { - region->write_ptr = malloc(SIZE); + region->write_ptr = malloc (SIZE); region->exec_ptr = region->write_ptr; region->size = SIZE; } #endif - diff --git a/orc/orccompiler.c b/orc/orccompiler.c index 477bc91..59cd032 100644 --- a/orc/orccompiler.c +++ b/orc/orccompiler.c @@ -32,14 +32,14 @@ * or functions that use ORC_ASM_CODE() internally. */ -void orc_compiler_assign_rules (OrcCompiler *compiler); -void orc_compiler_global_reg_alloc (OrcCompiler *compiler); -void orc_compiler_rewrite_insns (OrcCompiler *compiler); -void orc_compiler_rewrite_vars (OrcCompiler *compiler); -void orc_compiler_rewrite_vars2 (OrcCompiler *compiler); -int orc_compiler_dup_temporary (OrcCompiler *compiler, int var, int j); -int orc_compiler_new_temporary (OrcCompiler *compiler, int size); -void orc_compiler_check_sizes (OrcCompiler *compiler); +void orc_compiler_assign_rules (OrcCompiler * compiler); +void orc_compiler_global_reg_alloc (OrcCompiler * compiler); +void orc_compiler_rewrite_insns (OrcCompiler * compiler); +void orc_compiler_rewrite_vars (OrcCompiler * compiler); +void orc_compiler_rewrite_vars2 (OrcCompiler * compiler); +int orc_compiler_dup_temporary (OrcCompiler * compiler, int var, int j); +int orc_compiler_new_temporary (OrcCompiler * compiler, int size); +void orc_compiler_check_sizes (OrcCompiler * compiler); static char **_orc_compiler_flag_list; int _orc_compiler_flag_backup; @@ -68,16 +68,18 @@ orc_compiler_flag_check (const char *flag) { int i; - if (_orc_compiler_flag_list == NULL) return FALSE; + if (_orc_compiler_flag_list == NULL) + return FALSE; - for (i=0;_orc_compiler_flag_list[i];i++){ - if (strcmp (_orc_compiler_flag_list[i], flag) == 0) return TRUE; + for (i = 0; _orc_compiler_flag_list[i]; i++) { + if (strcmp (_orc_compiler_flag_list[i], flag) == 0) + return TRUE; } return FALSE; } int -orc_compiler_allocate_register (OrcCompiler *compiler, int data_reg) +orc_compiler_allocate_register (OrcCompiler * compiler, int data_reg) { int i; int roff; @@ -93,23 +95,21 @@ orc_compiler_allocate_register (OrcCompiler *compiler, int data_reg) roff = 0; if (_orc_compiler_flag_randomize) { /* for testing */ - roff = rand()&0x1f; + roff = rand () & 0x1f; } - for(i=0;i<32;i++){ - reg = offset + ((roff + i)&0x1f); + for (i = 0; i < 32; i++) { + reg = offset + ((roff + i) & 0x1f); if (compiler->valid_regs[reg] && - !compiler->save_regs[reg] && - compiler->alloc_regs[reg] == 0) { + !compiler->save_regs[reg] && compiler->alloc_regs[reg] == 0) { compiler->alloc_regs[reg]++; compiler->used_regs[reg] = 1; return reg; } } - for(i=0;i<32;i++){ - reg = offset + ((roff + i)&0x1f); - if (compiler->valid_regs[reg] && - compiler->alloc_regs[reg] == 0) { + for (i = 0; i < 32; i++) { + reg = offset + ((roff + i) & 0x1f); + if (compiler->valid_regs[reg] && compiler->alloc_regs[reg] == 0) { compiler->alloc_regs[reg]++; compiler->used_regs[reg] = 1; return reg; @@ -145,7 +145,7 @@ orc_compiler_allocate_register (OrcCompiler *compiler, int data_reg) * Returns: an OrcCompileResult */ OrcCompileResult -orc_program_compile (OrcProgram *program) +orc_program_compile (OrcProgram * program) { return orc_program_compile_for_target (program, orc_target_get_default ()); } @@ -160,7 +160,7 @@ orc_program_compile (OrcProgram *program) * Returns: an OrcCompileResult */ OrcCompileResult -orc_program_compile_for_target (OrcProgram *program, OrcTarget *target) +orc_program_compile_for_target (OrcProgram * program, OrcTarget * target) { unsigned int flags; @@ -183,16 +183,16 @@ orc_program_compile_for_target (OrcProgram *program, OrcTarget *target) * Returns: an OrcCompileResult */ OrcCompileResult -orc_program_compile_full (OrcProgram *program, OrcTarget *target, +orc_program_compile_full (OrcProgram * program, OrcTarget * target, unsigned int flags) { OrcCompiler *compiler; int i; OrcCompileResult result; - ORC_INFO("initializing compiler for program \"%s\"", program->name); - compiler = malloc (sizeof(OrcCompiler)); - memset (compiler, 0, sizeof(OrcCompiler)); + ORC_INFO ("initializing compiler for program \"%s\"", program->name); + compiler = malloc (sizeof (OrcCompiler)); + memset (compiler, 0, sizeof (OrcCompiler)); compiler->program = program; @@ -200,88 +200,87 @@ orc_program_compile_full (OrcProgram *program, OrcTarget *target, compiler->target_flags = flags; { - ORC_LOG("variables"); - for(i=0;i<ORC_N_VARIABLES;i++){ + ORC_LOG ("variables"); + for (i = 0; i < ORC_N_VARIABLES; i++) { if (program->vars[i].size > 0) { - ORC_LOG("%d: %s size %d type %d alloc %d", i, + ORC_LOG ("%d: %s size %d type %d alloc %d", i, program->vars[i].name, program->vars[i].size, - program->vars[i].vartype, - program->vars[i].alloc); + program->vars[i].vartype, program->vars[i].alloc); } } - ORC_LOG("instructions"); - for(i=0;i<program->n_insns;i++){ - ORC_LOG("%d: %s %d %d %d %d", i, + ORC_LOG ("instructions"); + for (i = 0; i < program->n_insns; i++) { + ORC_LOG ("%d: %s %d %d %d %d", i, program->insns[i].opcode->name, program->insns[i].dest_args[0], program->insns[i].dest_args[1], - program->insns[i].src_args[0], - program->insns[i].src_args[1]); + program->insns[i].src_args[0], program->insns[i].src_args[1]); } } memcpy (compiler->insns, program->insns, - program->n_insns * sizeof(OrcInstruction)); + program->n_insns * sizeof (OrcInstruction)); compiler->n_insns = program->n_insns; memcpy (compiler->vars, program->vars, - ORC_N_VARIABLES * sizeof(OrcVariable)); + ORC_N_VARIABLES * sizeof (OrcVariable)); memset (compiler->vars + ORC_N_VARIABLES, 0, - (ORC_N_COMPILER_VARIABLES - ORC_N_VARIABLES) * sizeof(OrcVariable)); + (ORC_N_COMPILER_VARIABLES - ORC_N_VARIABLES) * sizeof (OrcVariable)); compiler->n_temp_vars = program->n_temp_vars; compiler->n_dup_vars = 0; - for(i=0;i<32;i++) { + for (i = 0; i < 32; i++) { compiler->valid_regs[i] = 1; } orc_compiler_check_sizes (compiler); - if (compiler->error) goto error; + if (compiler->error) + goto error; if (compiler->target) { compiler->target->compiler_init (compiler); } orc_compiler_rewrite_insns (compiler); - if (compiler->error) goto error; + if (compiler->error) + goto error; orc_compiler_rewrite_vars (compiler); - if (compiler->error) goto error; + if (compiler->error) + goto error; if (compiler->target) { orc_compiler_global_reg_alloc (compiler); orc_compiler_rewrite_vars2 (compiler); } - #if 0 { - ORC_ERROR("variables"); - for(i=0;i<ORC_N_VARIABLES;i++){ + ORC_ERROR ("variables"); + for (i = 0; i < ORC_N_VARIABLES; i++) { if (compiler->vars[i].size > 0) { - ORC_ERROR("%d: %s size %d type %d alloc %d [%d,%d]", i, + ORC_ERROR ("%d: %s size %d type %d alloc %d [%d,%d]", i, compiler->vars[i].name, compiler->vars[i].size, compiler->vars[i].vartype, compiler->vars[i].alloc, - compiler->vars[i].first_use, - compiler->vars[i].last_use); + compiler->vars[i].first_use, compiler->vars[i].last_use); } } - ORC_ERROR("instructions"); - for(i=0;i<compiler->n_insns;i++){ - ORC_ERROR("%d: %s %d %d %d %d", i, + ORC_ERROR ("instructions"); + for (i = 0; i < compiler->n_insns; i++) { + ORC_ERROR ("%d: %s %d %d %d %d", i, compiler->insns[i].opcode->name, compiler->insns[i].dest_args[0], compiler->insns[i].dest_args[1], - compiler->insns[i].src_args[0], - compiler->insns[i].src_args[1]); + compiler->insns[i].src_args[0], compiler->insns[i].src_args[1]); } } #endif - if (compiler->error) goto error; + if (compiler->error) + goto error; program->orccode = orc_code_new (); @@ -291,18 +290,20 @@ orc_program_compile_full (OrcProgram *program, OrcTarget *target, if (program->backup_func) { program->orccode->exec = program->backup_func; } else { - program->orccode->exec = (void *)orc_executor_emulate; + program->orccode->exec = (void *) orc_executor_emulate; } program->orccode->n_insns = compiler->n_insns; - program->orccode->insns = malloc(sizeof(OrcInstruction) * compiler->n_insns); + program->orccode->insns = + malloc (sizeof (OrcInstruction) * compiler->n_insns); memcpy (program->orccode->insns, compiler->insns, - sizeof(OrcInstruction) * compiler->n_insns); + sizeof (OrcInstruction) * compiler->n_insns); - program->orccode->vars = malloc (sizeof(OrcCodeVariable) * ORC_N_COMPILER_VARIABLES); + program->orccode->vars = + malloc (sizeof (OrcCodeVariable) * ORC_N_COMPILER_VARIABLES); memset (program->orccode->vars, 0, - sizeof(OrcCodeVariable) * ORC_N_COMPILER_VARIABLES); - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ + sizeof (OrcCodeVariable) * ORC_N_COMPILER_VARIABLES); + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { program->orccode->vars[i].vartype = compiler->vars[i].vartype; program->orccode->vars[i].size = compiler->vars[i].size; program->orccode->vars[i].value = compiler->vars[i].value; @@ -315,22 +316,24 @@ orc_program_compile_full (OrcProgram *program, OrcTarget *target, } if (_orc_compiler_flag_emulate || target == NULL) { - program->orccode->exec = (void *)orc_executor_emulate; + program->orccode->exec = (void *) orc_executor_emulate; orc_compiler_error (compiler, "Compilation disabled, using emulation"); compiler->result = ORC_COMPILE_RESULT_UNKNOWN_COMPILE; goto error; } orc_compiler_assign_rules (compiler); - if (compiler->error) goto error; + if (compiler->error) + goto error; - ORC_INFO("allocating code memory"); - compiler->code = malloc(65536); + ORC_INFO ("allocating code memory"); + compiler->code = malloc (65536); compiler->codeptr = compiler->code; - if (compiler->error) goto error; + if (compiler->error) + goto error; - ORC_INFO("compiling for target \"%s\"", compiler->target->name); + ORC_INFO ("compiling for target \"%s\"", compiler->target->name); compiler->target->compile (compiler); if (compiler->error) { compiler->result = ORC_COMPILE_RESULT_UNKNOWN_COMPILE; @@ -354,15 +357,16 @@ orc_program_compile_full (OrcProgram *program, OrcTarget *target, program->asm_code = compiler->asm_code; result = compiler->result; - for (i=0;i<compiler->n_dup_vars;i++){ - free(compiler->vars[ORC_VAR_T1 + compiler->n_temp_vars + i].name); + for (i = 0; i < compiler->n_dup_vars; i++) { + free (compiler->vars[ORC_VAR_T1 + compiler->n_temp_vars + i].name); compiler->vars[ORC_VAR_T1 + compiler->n_temp_vars + i].name = NULL; } free (compiler->code); compiler->code = NULL; - if (compiler->output_insns) free (compiler->output_insns); + if (compiler->output_insns) + free (compiler->output_insns); free (compiler); - ORC_INFO("finished compiling (success)"); + ORC_INFO ("finished compiling (success)"); return result; error: @@ -371,11 +375,12 @@ error: ORC_WARNING ("program %s failed to compile, reason: %s", program->name, compiler->error_msg); } else { - ORC_WARNING("program %s failed to compile, reason %d", + ORC_WARNING ("program %s failed to compile, reason %d", program->name, compiler->result); } result = compiler->result; - if (program->error_msg) free (program->error_msg); + if (program->error_msg) + free (program->error_msg); program->error_msg = compiler->error_msg; if (result == 0) { result = ORC_COMPILE_RESULT_UNKNOWN_COMPILE; @@ -384,26 +389,27 @@ error: free (compiler->asm_code); compiler->asm_code = NULL; } - for (i=0;i<compiler->n_dup_vars;i++){ - free(compiler->vars[ORC_VAR_T1 + compiler->n_temp_vars + i].name); + for (i = 0; i < compiler->n_dup_vars; i++) { + free (compiler->vars[ORC_VAR_T1 + compiler->n_temp_vars + i].name); compiler->vars[ORC_VAR_T1 + compiler->n_temp_vars + i].name = NULL; } free (compiler->code); compiler->code = NULL; - if (compiler->output_insns) free (compiler->output_insns); + if (compiler->output_insns) + free (compiler->output_insns); free (compiler); - ORC_INFO("finished compiling (fail)"); + ORC_INFO ("finished compiling (fail)"); return result; } void -orc_compiler_check_sizes (OrcCompiler *compiler) +orc_compiler_check_sizes (OrcCompiler * compiler) { int i; int j; int max_size = 1; - for(i=0;i<compiler->n_insns;i++) { + for (i = 0; i < compiler->n_insns; i++) { OrcInstruction *insn = compiler->insns + i; OrcStaticOpcode *opcode = insn->opcode; int multiplier = 1; @@ -414,26 +420,30 @@ orc_compiler_check_sizes (OrcCompiler *compiler) multiplier = 4; } - for(j=0;j<ORC_STATIC_OPCODE_N_DEST;j++){ - if (opcode->dest_size[j] == 0) continue; + for (j = 0; j < ORC_STATIC_OPCODE_N_DEST; j++) { + if (opcode->dest_size[j] == 0) + continue; if (multiplier * opcode->dest_size[j] != compiler->vars[insn->dest_args[j]].size) { - ORC_COMPILER_ERROR (compiler, "size mismatch, opcode %s dest[%d] is %d should be %d", + ORC_COMPILER_ERROR (compiler, + "size mismatch, opcode %s dest[%d] is %d should be %d", opcode->name, j, compiler->vars[insn->dest_args[j]].size, multiplier * opcode->dest_size[j]); compiler->result = ORC_COMPILE_RESULT_UNKNOWN_PARSE; return; } - max_size = MAX(max_size, multiplier * opcode->dest_size[j]); + max_size = MAX (max_size, multiplier * opcode->dest_size[j]); } - for(j=0;j<ORC_STATIC_OPCODE_N_SRC;j++){ - if (opcode->src_size[j] == 0) continue; + for (j = 0; j < ORC_STATIC_OPCODE_N_SRC; j++) { + if (opcode->src_size[j] == 0) + continue; if (multiplier * opcode->src_size[j] != compiler->vars[insn->src_args[j]].size && compiler->vars[insn->src_args[j]].vartype != ORC_VAR_TYPE_PARAM && compiler->vars[insn->src_args[j]].vartype != ORC_VAR_TYPE_CONST) { - ORC_COMPILER_ERROR(compiler, "size mismatch, opcode %s src[%d] is %d should be %d", - opcode->name, j, compiler->vars[insn->src_args[j]].size, + ORC_COMPILER_ERROR (compiler, + "size mismatch, opcode %s src[%d] is %d should be %d", opcode->name, + j, compiler->vars[insn->src_args[j]].size, multiplier * opcode->src_size[j]); compiler->result = ORC_COMPILE_RESULT_UNKNOWN_PARSE; return; @@ -441,18 +451,18 @@ orc_compiler_check_sizes (OrcCompiler *compiler) if (opcode->flags & ORC_STATIC_OPCODE_SCALAR && j >= 1 && compiler->vars[insn->src_args[j]].vartype != ORC_VAR_TYPE_PARAM && compiler->vars[insn->src_args[j]].vartype != ORC_VAR_TYPE_CONST) { - ORC_COMPILER_ERROR(compiler, "opcode %s requires const or param source", - opcode->name); + ORC_COMPILER_ERROR (compiler, + "opcode %s requires const or param source", opcode->name); compiler->result = ORC_COMPILE_RESULT_UNKNOWN_PARSE; return; } - max_size = MAX(max_size, multiplier * opcode->src_size[j]); + max_size = MAX (max_size, multiplier * opcode->src_size[j]); } if (opcode->flags & ORC_STATIC_OPCODE_SCALAR && opcode->src_size[1] == 0 && compiler->vars[insn->src_args[0]].vartype != ORC_VAR_TYPE_PARAM && compiler->vars[insn->src_args[0]].vartype != ORC_VAR_TYPE_CONST) { - ORC_COMPILER_ERROR(compiler, "opcode %s requires const or param source", + ORC_COMPILER_ERROR (compiler, "opcode %s requires const or param source", opcode->name); compiler->result = ORC_COMPILE_RESULT_UNKNOWN_PARSE; return; @@ -474,7 +484,7 @@ get_load_opcode_for_size (int size) case 8: return orc_opcode_find_by_name ("loadq"); default: - ORC_ASSERT(0); + ORC_ASSERT (0); } return NULL; } @@ -492,7 +502,7 @@ get_loadp_opcode_for_size (int size) case 8: return orc_opcode_find_by_name ("loadpq"); default: - ORC_ASSERT(0); + ORC_ASSERT (0); } return NULL; } @@ -510,13 +520,13 @@ get_store_opcode_for_size (int size) case 8: return orc_opcode_find_by_name ("storeq"); default: - ORC_ASSERT(0); + ORC_ASSERT (0); } return NULL; } void -orc_compiler_rewrite_insns (OrcCompiler *compiler) +orc_compiler_rewrite_insns (OrcCompiler * compiler) { int i; int j; @@ -524,18 +534,19 @@ orc_compiler_rewrite_insns (OrcCompiler *compiler) OrcProgram *program = compiler->program; compiler->n_insns = 0; - for(j=0;j<program->n_insns;j++){ + for (j = 0; j < program->n_insns; j++) { OrcInstruction insn; OrcInstruction *xinsn; - memcpy (&insn, program->insns + j, sizeof(OrcInstruction)); + memcpy (&insn, program->insns + j, sizeof (OrcInstruction)); opcode = insn.opcode; if (!(opcode->flags & ORC_STATIC_OPCODE_LOAD)) { - for(i=0;i<ORC_STATIC_OPCODE_N_SRC;i++){ + for (i = 0; i < ORC_STATIC_OPCODE_N_SRC; i++) { OrcVariable *var; - if (opcode->src_size[i] == 0) continue; + if (opcode->src_size[i] == 0) + continue; var = compiler->vars + insn.src_args[i]; if (i > 0 && (opcode->flags & ORC_STATIC_OPCODE_SCALAR) && @@ -545,13 +556,13 @@ orc_compiler_rewrite_insns (OrcCompiler *compiler) if (var->vartype == ORC_VAR_TYPE_SRC || var->vartype == ORC_VAR_TYPE_DEST) { OrcInstruction *cinsn; - + cinsn = compiler->insns + compiler->n_insns; compiler->n_insns++; cinsn->flags = insn.flags; cinsn->flags |= ORC_INSN_FLAG_ADDED; - cinsn->flags &= ~(ORC_INSTRUCTION_FLAG_X2|ORC_INSTRUCTION_FLAG_X4); + cinsn->flags &= ~(ORC_INSTRUCTION_FLAG_X2 | ORC_INSTRUCTION_FLAG_X4); cinsn->opcode = get_load_opcode_for_size (var->size); cinsn->dest_args[0] = orc_compiler_new_temporary (compiler, var->size); @@ -586,25 +597,26 @@ orc_compiler_rewrite_insns (OrcCompiler *compiler) } xinsn = compiler->insns + compiler->n_insns; - memcpy (xinsn, &insn, sizeof(OrcInstruction)); + memcpy (xinsn, &insn, sizeof (OrcInstruction)); compiler->n_insns++; if (!(opcode->flags & ORC_STATIC_OPCODE_STORE)) { - for(i=0;i<ORC_STATIC_OPCODE_N_DEST;i++){ + for (i = 0; i < ORC_STATIC_OPCODE_N_DEST; i++) { OrcVariable *var; - if (opcode->dest_size[i] == 0) continue; + if (opcode->dest_size[i] == 0) + continue; var = compiler->vars + insn.dest_args[i]; if (var->vartype == ORC_VAR_TYPE_DEST) { OrcInstruction *cinsn; - + cinsn = compiler->insns + compiler->n_insns; compiler->n_insns++; cinsn->flags = xinsn->flags; cinsn->flags |= ORC_INSN_FLAG_ADDED; - cinsn->flags &= ~(ORC_INSTRUCTION_FLAG_X2|ORC_INSTRUCTION_FLAG_X4); + cinsn->flags &= ~(ORC_INSTRUCTION_FLAG_X2 | ORC_INSTRUCTION_FLAG_X4); cinsn->opcode = get_store_opcode_for_size (var->size); cinsn->src_args[0] = orc_compiler_new_temporary (compiler, var->size); cinsn->dest_args[0] = xinsn->dest_args[i]; @@ -617,11 +629,11 @@ orc_compiler_rewrite_insns (OrcCompiler *compiler) } void -orc_compiler_assign_rules (OrcCompiler *compiler) +orc_compiler_assign_rules (OrcCompiler * compiler) { int i; - for(i=0;i<compiler->n_insns;i++) { + for (i = 0; i < compiler->n_insns; i++) { OrcInstruction *insn = compiler->insns + i; insn->rule = orc_target_get_rule (compiler->target, insn->opcode, @@ -637,19 +649,19 @@ orc_compiler_assign_rules (OrcCompiler *compiler) } int -orc_compiler_get_temp_reg (OrcCompiler *compiler) +orc_compiler_get_temp_reg (OrcCompiler * compiler) { int j; - for(j=0;j<ORC_N_REGS;j++){ + for (j = 0; j < ORC_N_REGS; j++) { compiler->alloc_regs[j] = 0; } - for(j=0;j<ORC_N_COMPILER_VARIABLES;j++){ - if (!compiler->vars[j].alloc) continue; + for (j = 0; j < ORC_N_COMPILER_VARIABLES; j++) { + if (!compiler->vars[j].alloc) + continue; - ORC_DEBUG("var %d: %d %d %d", j, compiler->vars[j].alloc, - compiler->vars[j].first_use, - compiler->vars[j].last_use); + ORC_DEBUG ("var %d: %d %d %d", j, compiler->vars[j].alloc, + compiler->vars[j].first_use, compiler->vars[j].last_use); if (compiler->vars[j].first_use == -1) { compiler->alloc_regs[compiler->vars[j].alloc] = 1; @@ -658,19 +670,20 @@ orc_compiler_get_temp_reg (OrcCompiler *compiler) compiler->alloc_regs[compiler->vars[j].alloc] = 1; } } - for(j=0;j<compiler->n_constants;j++){ + for (j = 0; j < compiler->n_constants; j++) { if (compiler->constants[j].alloc_reg) { compiler->alloc_regs[compiler->constants[j].alloc_reg] = 1; } } - ORC_DEBUG("at insn %d %s", compiler->insn_index, + ORC_DEBUG ("at insn %d %s", compiler->insn_index, compiler->insns[compiler->insn_index].opcode->name); - for(j=compiler->min_temp_reg;j<ORC_VEC_REG_BASE+32;j++){ + for (j = compiler->min_temp_reg; j < ORC_VEC_REG_BASE + 32; j++) { if (compiler->valid_regs[j] && !compiler->alloc_regs[j]) { - compiler->min_temp_reg = j+1; - if (compiler->max_used_temp_reg < j) compiler->max_used_temp_reg = j; + compiler->min_temp_reg = j + 1; + if (compiler->max_used_temp_reg < j) + compiler->max_used_temp_reg = j; return j; } } @@ -682,7 +695,7 @@ orc_compiler_get_temp_reg (OrcCompiler *compiler) } void -orc_compiler_rewrite_vars (OrcCompiler *compiler) +orc_compiler_rewrite_vars (OrcCompiler * compiler) { int j; int k; @@ -691,17 +704,19 @@ orc_compiler_rewrite_vars (OrcCompiler *compiler) int var; int actual_var; - for(j=0;j<ORC_N_COMPILER_VARIABLES;j++){ - if (compiler->vars[j].alloc) continue; + for (j = 0; j < ORC_N_COMPILER_VARIABLES; j++) { + if (compiler->vars[j].alloc) + continue; compiler->vars[j].last_use = -1; } - for(j=0;j<compiler->n_insns;j++){ + for (j = 0; j < compiler->n_insns; j++) { insn = compiler->insns + j; opcode = insn->opcode; /* set up args */ - for(k=0;k<ORC_STATIC_OPCODE_N_SRC;k++){ - if (opcode->src_size[k] == 0) continue; + for (k = 0; k < ORC_STATIC_OPCODE_N_SRC; k++) { + if (opcode->src_size[k] == 0) + continue; var = insn->src_args[k]; if (compiler->vars[var].vartype == ORC_VAR_TYPE_DEST) { @@ -722,7 +737,8 @@ orc_compiler_rewrite_vars (OrcCompiler *compiler) if (!compiler->vars[var].used) { if (compiler->vars[var].vartype == ORC_VAR_TYPE_TEMP) { - ORC_COMPILER_ERROR(compiler, "using uninitialized temp var at line %d", insn->line); + ORC_COMPILER_ERROR (compiler, + "using uninitialized temp var at line %d", insn->line); compiler->result = ORC_COMPILE_RESULT_UNKNOWN_PARSE; } compiler->vars[var].used = TRUE; @@ -731,8 +747,9 @@ orc_compiler_rewrite_vars (OrcCompiler *compiler) compiler->vars[actual_var].last_use = j; } - for(k=0;k<ORC_STATIC_OPCODE_N_DEST;k++){ - if (opcode->dest_size[k] == 0) continue; + for (k = 0; k < ORC_STATIC_OPCODE_N_DEST; k++) { + if (opcode->dest_size[k] == 0) + continue; var = insn->dest_args[k]; @@ -740,25 +757,32 @@ orc_compiler_rewrite_vars (OrcCompiler *compiler) continue; } if (compiler->vars[var].vartype == ORC_VAR_TYPE_SRC) { - ORC_COMPILER_ERROR(compiler,"using src var as dest at line %d", insn->line); + ORC_COMPILER_ERROR (compiler, "using src var as dest at line %d", + insn->line); compiler->result = ORC_COMPILE_RESULT_UNKNOWN_PARSE; } if (compiler->vars[var].vartype == ORC_VAR_TYPE_CONST) { - ORC_COMPILER_ERROR(compiler,"using const var as dest at line %d", insn->line); + ORC_COMPILER_ERROR (compiler, "using const var as dest at line %d", + insn->line); compiler->result = ORC_COMPILE_RESULT_UNKNOWN_PARSE; } if (compiler->vars[var].vartype == ORC_VAR_TYPE_PARAM) { - ORC_COMPILER_ERROR(compiler,"using param var as dest at line %d", insn->line); + ORC_COMPILER_ERROR (compiler, "using param var as dest at line %d", + insn->line); compiler->result = ORC_COMPILE_RESULT_UNKNOWN_PARSE; } if (opcode->flags & ORC_STATIC_OPCODE_ACCUMULATOR) { if (compiler->vars[var].vartype != ORC_VAR_TYPE_ACCUMULATOR) { - ORC_COMPILER_ERROR(compiler,"accumulating opcode to non-accumulator dest at line %d", insn->line); + ORC_COMPILER_ERROR (compiler, + "accumulating opcode to non-accumulator dest at line %d", + insn->line); compiler->result = ORC_COMPILE_RESULT_UNKNOWN_PARSE; } } else { if (compiler->vars[var].vartype == ORC_VAR_TYPE_ACCUMULATOR) { - ORC_COMPILER_ERROR(compiler,"non-accumulating opcode to accumulator dest at line %d", insn->line); + ORC_COMPILER_ERROR (compiler, + "non-accumulating opcode to accumulator dest at line %d", + insn->line); compiler->result = ORC_COMPILE_RESULT_UNKNOWN_PARSE; } } @@ -775,7 +799,8 @@ orc_compiler_rewrite_vars (OrcCompiler *compiler) } else { #if 0 if (compiler->vars[var].vartype == ORC_VAR_TYPE_DEST) { - ORC_COMPILER_ERROR(compiler,"writing dest more than once at line %d", insn->line); + ORC_COMPILER_ERROR (compiler, + "writing dest more than once at line %d", insn->line); compiler->result = ORC_COMPILE_RESULT_UNKNOWN_PARSE; } #endif @@ -794,14 +819,15 @@ orc_compiler_rewrite_vars (OrcCompiler *compiler) } void -orc_compiler_global_reg_alloc (OrcCompiler *compiler) +orc_compiler_global_reg_alloc (OrcCompiler * compiler) { int i; OrcVariable *var; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { var = compiler->vars + i; - if (var->name == NULL) continue; + if (var->name == NULL) + continue; switch (var->vartype) { case ORC_VAR_TYPE_CONST: break; @@ -834,10 +860,11 @@ orc_compiler_global_reg_alloc (OrcCompiler *compiler) break; } - if (compiler->error) break; + if (compiler->error) + break; } - for(i=0;i<compiler->n_insns;i++){ + for (i = 0; i < compiler->n_insns; i++) { OrcInstruction *insn = compiler->insns + i; OrcStaticOpcode *opcode = insn->opcode; @@ -866,20 +893,21 @@ orc_compiler_global_reg_alloc (OrcCompiler *compiler) } void -orc_compiler_rewrite_vars2 (OrcCompiler *compiler) +orc_compiler_rewrite_vars2 (OrcCompiler * compiler) { int i; int j; int k; - for(j=0;j<compiler->n_insns;j++){ + for (j = 0; j < compiler->n_insns; j++) { #if 1 /* must be true to chain src1 to dest: * - rule must handle it * - src1 must be last_use * - only one dest */ - if (compiler->insns[j].flags & ORC_INSN_FLAG_INVARIANT) continue; + if (compiler->insns[j].flags & ORC_INSN_FLAG_INVARIANT) + continue; if (!(compiler->insns[j].opcode->flags & ORC_STATIC_OPCODE_ACCUMULATOR) && compiler->insns[j].opcode->dest_size[1] == 0) { @@ -908,17 +936,21 @@ orc_compiler_rewrite_vars2 (OrcCompiler *compiler) } } - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ - if (compiler->vars[i].name == NULL) continue; - if (compiler->vars[i].last_use == -1) continue; + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { + if (compiler->vars[i].name == NULL) + continue; + if (compiler->vars[i].last_use == -1) + continue; if (compiler->vars[i].first_use == j) { - if (compiler->vars[i].alloc) continue; + if (compiler->vars[i].alloc) + continue; k = orc_compiler_allocate_register (compiler, TRUE); compiler->vars[i].alloc = k; } } - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ - if (compiler->vars[i].name == NULL) continue; + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { + if (compiler->vars[i].name == NULL) + continue; if (compiler->vars[i].last_use == j) { compiler->alloc_regs[compiler->vars[i].alloc]--; } @@ -928,37 +960,37 @@ orc_compiler_rewrite_vars2 (OrcCompiler *compiler) } int -orc_compiler_dup_temporary (OrcCompiler *compiler, int var, int j) +orc_compiler_dup_temporary (OrcCompiler * compiler, int var, int j) { int i = ORC_VAR_T1 + compiler->n_temp_vars + compiler->n_dup_vars; compiler->vars[i].vartype = ORC_VAR_TYPE_TEMP; compiler->vars[i].size = compiler->vars[var].size; - compiler->vars[i].name = malloc (strlen(compiler->vars[var].name) + 10); - sprintf(compiler->vars[i].name, "%s.dup%d", compiler->vars[var].name, j); + compiler->vars[i].name = malloc (strlen (compiler->vars[var].name) + 10); + sprintf (compiler->vars[i].name, "%s.dup%d", compiler->vars[var].name, j); compiler->n_dup_vars++; return i; } int -orc_compiler_new_temporary (OrcCompiler *compiler, int size) +orc_compiler_new_temporary (OrcCompiler * compiler, int size) { int i = ORC_VAR_T1 + compiler->n_temp_vars + compiler->n_dup_vars; compiler->vars[i].vartype = ORC_VAR_TYPE_TEMP; compiler->vars[i].size = size; compiler->vars[i].name = malloc (10); - sprintf(compiler->vars[i].name, "tmp%d", i); + sprintf (compiler->vars[i].name, "tmp%d", i); compiler->n_dup_vars++; return i; } void -orc_compiler_dump_asm (OrcCompiler *compiler) +orc_compiler_dump_asm (OrcCompiler * compiler) { - printf("%s", compiler->asm_code); + printf ("%s", compiler->asm_code); } /** @@ -977,14 +1009,14 @@ orc_compiler_dump_asm (OrcCompiler *compiler) * or implementing a target. */ void -orc_compiler_append_code (OrcCompiler *p, const char *fmt, ...) +orc_compiler_append_code (OrcCompiler * p, const char *fmt, ...) { char tmp[200]; va_list varargs; int n; va_start (varargs, fmt); - vsnprintf(tmp, 200 - 1, fmt, varargs); + vsnprintf (tmp, 200 - 1, fmt, varargs); va_end (varargs); n = strlen (tmp); @@ -994,27 +1026,27 @@ orc_compiler_append_code (OrcCompiler *p, const char *fmt, ...) } int -orc_compiler_label_new (OrcCompiler *compiler) +orc_compiler_label_new (OrcCompiler * compiler) { return compiler->n_labels++; } void -orc_compiler_load_constant (OrcCompiler *compiler, int reg, int size, +orc_compiler_load_constant (OrcCompiler * compiler, int reg, int size, int value) { compiler->target->load_constant (compiler, reg, size, value); } void -orc_compiler_load_constant_long (OrcCompiler *compiler, int reg, - OrcConstant *constant) +orc_compiler_load_constant_long (OrcCompiler * compiler, int reg, + OrcConstant * constant) { compiler->target->load_constant_long (compiler, reg, constant); } int -orc_compiler_get_temp_constant (OrcCompiler *compiler, int size, int value) +orc_compiler_get_temp_constant (OrcCompiler * compiler, int size, int value) { int tmp; @@ -1024,7 +1056,7 @@ orc_compiler_get_temp_constant (OrcCompiler *compiler, int size, int value) } int -orc_compiler_get_constant (OrcCompiler *compiler, int size, int value) +orc_compiler_get_constant (OrcCompiler * compiler, int size, int value) { int i; int tmp; @@ -1032,13 +1064,13 @@ orc_compiler_get_constant (OrcCompiler *compiler, int size, int value) if (size < 4) { if (size < 2) { value &= 0xff; - value |= (value<<8); + value |= (value << 8); } value &= 0xffff; - value |= (value<<16); + value |= (value << 16); } - for(i=0;i<compiler->n_constants;i++){ + for (i = 0; i < compiler->n_constants; i++) { if (compiler->constants[i].is_long == FALSE && compiler->constants[i].value == value) { break; @@ -1063,13 +1095,13 @@ orc_compiler_get_constant (OrcCompiler *compiler, int size, int value) } int -orc_compiler_get_constant_long (OrcCompiler *compiler, +orc_compiler_get_constant_long (OrcCompiler * compiler, orc_uint32 a, orc_uint32 b, orc_uint32 c, orc_uint32 d) { int i; int tmp; - for(i=0;i<compiler->n_constants;i++){ + for (i = 0; i < compiler->n_constants; i++) { if (compiler->constants[i].is_long == TRUE && compiler->constants[i].full_value[0] == a && compiler->constants[i].full_value[1] == b && @@ -1100,12 +1132,12 @@ orc_compiler_get_constant_long (OrcCompiler *compiler, } int -orc_compiler_try_get_constant_long (OrcCompiler *compiler, +orc_compiler_try_get_constant_long (OrcCompiler * compiler, orc_uint32 a, orc_uint32 b, orc_uint32 c, orc_uint32 d) { int i; - for(i=0;i<compiler->n_constants;i++){ + for (i = 0; i < compiler->n_constants; i++) { if (compiler->constants[i].is_long == TRUE && compiler->constants[i].full_value[0] == a && compiler->constants[i].full_value[1] == b && @@ -1135,19 +1167,19 @@ orc_compiler_try_get_constant_long (OrcCompiler *compiler, int -orc_compiler_get_constant_reg (OrcCompiler *compiler) +orc_compiler_get_constant_reg (OrcCompiler * compiler) { int j; - for(j=0;j<ORC_N_REGS;j++){ + for (j = 0; j < ORC_N_REGS; j++) { compiler->alloc_regs[j] = 0; } - for(j=0;j<ORC_N_COMPILER_VARIABLES;j++){ - if (!compiler->vars[j].alloc) continue; + for (j = 0; j < ORC_N_COMPILER_VARIABLES; j++) { + if (!compiler->vars[j].alloc) + continue; - ORC_DEBUG("var %d: %d %d %d", j, compiler->vars[j].alloc, - compiler->vars[j].first_use, - compiler->vars[j].last_use); + ORC_DEBUG ("var %d: %d %d %d", j, compiler->vars[j].alloc, + compiler->vars[j].first_use, compiler->vars[j].last_use); if (compiler->vars[j].first_use == -1) { compiler->alloc_regs[compiler->vars[j].alloc] = 1; @@ -1155,16 +1187,16 @@ orc_compiler_get_constant_reg (OrcCompiler *compiler) compiler->alloc_regs[compiler->vars[j].alloc] = 1; } } - for(j=0;j<compiler->n_constants;j++){ + for (j = 0; j < compiler->n_constants; j++) { if (compiler->constants[j].alloc_reg) { compiler->alloc_regs[compiler->constants[j].alloc_reg] = 1; } } - for(j=ORC_VEC_REG_BASE;j<=compiler->max_used_temp_reg;j++) { + for (j = ORC_VEC_REG_BASE; j <= compiler->max_used_temp_reg; j++) { compiler->alloc_regs[j] = 1; } - for(j=compiler->max_used_temp_reg;j<ORC_VEC_REG_BASE+32;j++){ + for (j = compiler->max_used_temp_reg; j < ORC_VEC_REG_BASE + 32; j++) { if (compiler->valid_regs[j] && !compiler->alloc_regs[j]) { return j; } @@ -1176,12 +1208,13 @@ orc_compiler_get_constant_reg (OrcCompiler *compiler) #define ORC_COMPILER_ERROR_BUFFER_SIZE 200 void -orc_compiler_error_valist (OrcCompiler *compiler, const char *fmt, +orc_compiler_error_valist (OrcCompiler * compiler, const char *fmt, va_list args) { char *s; - if (compiler->error_msg) return; + if (compiler->error_msg) + return; s = malloc (ORC_COMPILER_ERROR_BUFFER_SIZE); vsprintf (s, fmt, args); @@ -1191,7 +1224,7 @@ orc_compiler_error_valist (OrcCompiler *compiler, const char *fmt, } void -orc_compiler_error (OrcCompiler *compiler, const char *fmt, ...) +orc_compiler_error (OrcCompiler * compiler, const char *fmt, ...) { va_list var_args; @@ -1199,4 +1232,3 @@ orc_compiler_error (OrcCompiler *compiler, const char *fmt, ...) orc_compiler_error_valist (compiler, fmt, var_args); va_end (var_args); } - diff --git a/orc/orccpu-arm.c b/orc/orccpu-arm.c index cb013c3..21577d6 100644 --- a/orc/orccpu-arm.c +++ b/orc/orccpu-arm.c @@ -50,12 +50,10 @@ #ifdef __arm__ #if 0 static unsigned long -orc_profile_stamp_xscale(void) +orc_profile_stamp_xscale (void) { unsigned int ts; - __asm__ __volatile__ ( - " mrc p14, 0, %0, c1, c0, 0 \n" - : "=r" (ts)); + __asm__ __volatile__ (" mrc p14, 0, %0, c1, c0, 0 \n":"=r" (ts)); return ts; } #endif @@ -69,31 +67,34 @@ orc_check_neon_proc_auxv (void) ssize_t count; int fd; - fd = open("/proc/self/auxv", O_RDONLY); + fd = open ("/proc/self/auxv", O_RDONLY); if (fd < 0) { return 0; } while (1) { - count = read(fd, aux, sizeof(aux)); - if (count < sizeof(aux)) { + count = read (fd, aux, sizeof (aux)); + if (count < sizeof (aux)) { break; } if (aux[0] == AT_HWCAP) { //if (aux[1] & 64) flags |= ORC_TARGET_NEON_VFP; //if (aux[1] & 512) flags |= ORC_TARGET_NEON_IWMMXT; - if (aux[1] & 4096) flags |= ORC_TARGET_NEON_NEON; - if (aux[1] & 128) flags |= ORC_TARGET_ARM_EDSP; - ORC_INFO("arm hwcap %08x", aux[1]); - } if (aux[0] == AT_PLATFORM) { - ORC_INFO("arm platform %s", (char *)aux[1]); + if (aux[1] & 4096) + flags |= ORC_TARGET_NEON_NEON; + if (aux[1] & 128) + flags |= ORC_TARGET_ARM_EDSP; + ORC_INFO ("arm hwcap %08x", aux[1]); + } + if (aux[0] == AT_PLATFORM) { + ORC_INFO ("arm platform %s", (char *) aux[1]); } else if (aux[0] == AT_NULL) { break; } } - close(fd); + close (fd); return flags; } @@ -107,13 +108,13 @@ orc_cpu_arm_getflags_cpuinfo (char *cpuinfo) char **flags; char **f; - cpuinfo_flags = get_cpuinfo_line(cpuinfo, "Features"); + cpuinfo_flags = get_cpuinfo_line (cpuinfo, "Features"); if (cpuinfo_flags == NULL) { free (cpuinfo); return; } - flags = strsplit(cpuinfo_flags, ' '); + flags = strsplit (cpuinfo_flags, ' '); for (f = flags; *f; f++) { #if 0 if (strcmp (*f, "edsp") == 0) { @@ -139,16 +140,17 @@ get_proc_cpuinfo (void) int fd; int n; - cpuinfo = malloc(4096); - if (cpuinfo == NULL) return NULL; + cpuinfo = malloc (4096); + if (cpuinfo == NULL) + return NULL; - fd = open("/proc/cpuinfo", O_RDONLY); + fd = open ("/proc/cpuinfo", O_RDONLY); if (fd < 0) { free (cpuinfo); return NULL; } - n = read(fd, cpuinfo, 4095); + n = read (fd, cpuinfo, 4095); if (n < 0) { free (cpuinfo); close (fd); @@ -176,18 +178,19 @@ orc_arm_get_cpu_flags (void) char *cpuinfo; char *s; - cpuinfo = get_proc_cpuinfo(); - if (cpuinfo == NULL) return; + cpuinfo = get_proc_cpuinfo (); + if (cpuinfo == NULL) + return; - s = get_cpuinfo_line(cpuinfo, "CPU implementer"); + s = get_cpuinfo_line (cpuinfo, "CPU implementer"); if (s) { arm_implementer = strtoul (s, NULL, 0); - free(s); + free (s); } - switch(arm_implementer) { - case 0x69: /* Intel */ - case 0x41: /* ARM */ + switch (arm_implementer) { + case 0x69: /* Intel */ + case 0x41: /* ARM */ /* ARM chips are known to not have timestamping available from * user space */ break; @@ -196,13 +199,13 @@ orc_arm_get_cpu_flags (void) } #if 0 - s = get_cpuinfo_line(cpuinfo, "CPU architecture"); + s = get_cpuinfo_line (cpuinfo, "CPU architecture"); if (s) { int arm_arch; arm_arch = strtoul (s, NULL, 0); if (arm_arch >= 6) orc_cpu_flags |= ORC_CPU_FLAG_ARM6; - free(s); + free (s); } #endif @@ -217,5 +220,3 @@ orc_arm_get_cpu_flags (void) return neon_flags; } #endif - - diff --git a/orc/orccpu-powerpc.c b/orc/orccpu-powerpc.c index 93c9910..a6ee92b 100644 --- a/orc/orccpu-powerpc.c +++ b/orc/orccpu-powerpc.c @@ -60,17 +60,17 @@ #if 0 static unsigned long -orc_profile_stamp_tb(void) +orc_profile_stamp_tb (void) { unsigned long ts; - __asm__ __volatile__("mftb %0\n" : "=r" (ts)); + __asm__ __volatile__ ("mftb %0\n":"=r" (ts)); return ts; } #endif #if !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__) && !defined(__OpenBSD__) && !defined(__APPLE__) && !defined(__linux__) static void -test_altivec (void * ignored) +test_altivec (void *ignored) { asm volatile ("vor v0, v0, v0\n"); } @@ -90,8 +90,8 @@ orc_check_altivec_sysctl_bsd (void) int ret, vu; size_t len; - len = sizeof(vu); - ret = sysctlbyname(SYSCTL, &vu, &len, NULL, 0); + len = sizeof (vu); + ret = sysctlbyname (SYSCTL, &vu, &len, NULL, 0); if (!ret && vu) { cpu_flags |= ORC_TARGET_ALTIVEC_ALTIVEC; } @@ -111,8 +111,8 @@ orc_check_altivec_sysctl_openbsd (void) mib[0] = CTL_MACHDEP; mib[1] = CPU_ALTIVEC; - len = sizeof(vu); - ret = sysctl(mib, 2, &vu, &len, NULL, 0); + len = sizeof (vu); + ret = sysctl (mib, 2, &vu, &len, NULL, 0); if (!ret && vu) { cpu_flags |= ORC_TARGET_ALTIVEC_ALTIVEC; } @@ -137,32 +137,32 @@ orc_check_altivec_proc_auxv (void) return 0; } - fd = open("/proc/self/auxv", O_RDONLY); + fd = open ("/proc/self/auxv", O_RDONLY); if (fd < 0) { goto out; } more: - count = read(fd, buf, sizeof(buf)); + count = read (fd, buf, sizeof (buf)); if (count < 0) { goto out_close; } - for (i=0; i < (count / sizeof(unsigned long)); i += 2) { + for (i = 0; i < (count / sizeof (unsigned long)); i += 2) { if (buf[i] == AT_HWCAP) { - new_avail = !!(buf[i+1] & PPC_FEATURE_HAS_ALTIVEC); + new_avail = ! !(buf[i + 1] & PPC_FEATURE_HAS_ALTIVEC); goto out_close; } else if (buf[i] == AT_NULL) { goto out_close; } } - if (count == sizeof(buf)) { + if (count == sizeof (buf)) { goto more; } out_close: - close(fd); + close (fd); out: available = new_avail; @@ -179,7 +179,7 @@ static void orc_check_altivec_fault (void) { orc_fault_check_enable (); - if (orc_fault_check_try(test_altivec, NULL)) { + if (orc_fault_check_try (test_altivec, NULL)) { ORC_DEBUG ("cpu flag altivec"); orc_cpu_flags |= ORC_IMPL_FLAG_ALTIVEC; } @@ -188,20 +188,17 @@ orc_check_altivec_fault (void) #endif void -orc_cpu_detect_arch(void) +orc_cpu_detect_arch (void) { #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__APPLE__) - orc_check_altivec_sysctl_bsd(); + orc_check_altivec_sysctl_bsd (); #elif defined(__OpenBSD__) - orc_check_altivec_sysctl_openbsd(); + orc_check_altivec_sysctl_openbsd (); #elif defined(__linux__) - orc_check_altivec_proc_auxv(); + orc_check_altivec_proc_auxv (); #else - orc_check_altivec_fault(); + orc_check_altivec_fault (); #endif //_orc_profile_stamp = orc_profile_stamp_tb; } - - - diff --git a/orc/orccpu-x86.c b/orc/orccpu-x86.c index 813dbc8..d4aa4f0 100644 --- a/orc/orccpu-x86.c +++ b/orc/orccpu-x86.c @@ -53,10 +53,11 @@ int orc_x86_microarchitecture; #if defined(_MSC_VER) static void -get_cpuid (orc_uint32 op, orc_uint32 *a, orc_uint32 *b, orc_uint32 *c, orc_uint32 *d) +get_cpuid (orc_uint32 op, orc_uint32 * a, orc_uint32 * b, orc_uint32 * c, + orc_uint32 * d) { int tmp[4]; - __cpuid(tmp, op); + __cpuid (tmp, op); *a = tmp[0]; *b = tmp[1]; *c = tmp[2]; @@ -64,11 +65,12 @@ get_cpuid (orc_uint32 op, orc_uint32 *a, orc_uint32 *b, orc_uint32 *c, orc_uint3 } static void -get_cpuid_ecx (orc_uint32 op, orc_uint32 init_ecx, orc_uint32 *a, orc_uint32 *b, orc_uint32 *c, orc_uint32 *d) +get_cpuid_ecx (orc_uint32 op, orc_uint32 init_ecx, orc_uint32 * a, + orc_uint32 * b, orc_uint32 * c, orc_uint32 * d) { #if _MSC_VER >= 1500 int tmp[4]; - __cpuidex(tmp, op, init_ecx); + __cpuidex (tmp, op, init_ecx); *a = tmp[0]; *b = tmp[1]; *c = tmp[2]; @@ -83,28 +85,23 @@ get_cpuid_ecx (orc_uint32 op, orc_uint32 init_ecx, orc_uint32 *a, orc_uint32 *b, #elif defined(__GNUC__) || defined (__SUNPRO_C) static void -get_cpuid_ecx (orc_uint32 op, orc_uint32 init_ecx, orc_uint32 *a, orc_uint32 *b, - orc_uint32 *c, orc_uint32 *d) +get_cpuid_ecx (orc_uint32 op, orc_uint32 init_ecx, orc_uint32 * a, + orc_uint32 * b, orc_uint32 * c, orc_uint32 * d) { *a = op; *c = init_ecx; #ifdef __i386__ - __asm__ ( - " pushl %%ebx\n" - " cpuid\n" - " mov %%ebx, %%esi\n" - " popl %%ebx\n" - : "+a" (*a), "=S" (*b), "+c" (*c), "=d" (*d)); +__asm__ (" pushl %%ebx\n" " cpuid\n" " mov %%ebx, %%esi\n" " popl %%ebx\n":"+a" (*a), "=S" (*b), "+c" (*c), + "=d" + (*d)); #elif defined(__amd64__) - __asm__ ( - " cpuid\n" - : "+a" (*a), "=b" (*b), "+c" (*c), "=d" (*d)); +__asm__ (" cpuid\n":"+a" (*a), "=b" (*b), "+c" (*c), "=d" (*d)); #endif } static void -get_cpuid (orc_uint32 op, orc_uint32 *a, orc_uint32 *b, - orc_uint32 *c, orc_uint32 *d) +get_cpuid (orc_uint32 op, orc_uint32 * a, orc_uint32 * b, + orc_uint32 * c, orc_uint32 * d) { get_cpuid_ecx (op, 0, a, b, c, d); } @@ -117,55 +114,56 @@ get_cpuid (orc_uint32 op, orc_uint32 *a, orc_uint32 *b, #endif -struct desc_struct { +struct desc_struct +{ int desc; int level; int size; }; struct desc_struct cache_descriptors[] = { - { 0x0a, 1, 8*1024 }, - { 0x0c, 1, 16*1024 }, - { 0x0d, 1, 16*1024 }, - { 0x0e, 1, 24*1024 }, - { 0x21, 2, 256*1024 }, - { 0x22, 3, 512*1024 }, - { 0x23, 3, 1024*1024 }, - { 0x25, 3, 2*1024*1024 }, - { 0x29, 3, 4*1024*1024 }, - { 0x2c, 1, 32*1024 }, - { 0x41, 2, 128*1024 }, - { 0x42, 2, 256*1024 }, - { 0x43, 2, 512*1024 }, - { 0x44, 2, 1*1024*1024 }, - { 0x45, 2, 2*1024*1024 }, - { 0x46, 3, 4*1024*1024 }, - { 0x47, 3, 8*1024*1024 }, - { 0x48, 2, 3*1024*1024 }, - { 0x49, 2, 4*1024*1024 }, /* special case */ - { 0x4a, 3, 6*1024*1024 }, - { 0x4b, 3, 8*1024*1024 }, - { 0x4c, 3, 12*1024*1024 }, - { 0x4d, 3, 16*1024*1024 }, - { 0x4e, 2, 6*1024*1024 }, - { 0x60, 1, 16*1024 }, - { 0x66, 1, 8*1024 }, - { 0x67, 1, 16*1024 }, - { 0x68, 1, 32*1024 }, - { 0x78, 2, 1*1024*1024 }, - { 0x79, 2, 128*1024 }, - { 0x7a, 2, 256*1024 }, - { 0x7b, 2, 512*1024 }, - { 0x7c, 2, 1*1024*1024 }, - { 0x7d, 2, 2*1024*1024 }, - { 0x7f, 2, 512*1024 }, - { 0x80, 2, 512*1024 }, - { 0x82, 2, 256*1024 }, - { 0x83, 2, 512*1024 }, - { 0x84, 2, 1*1024*1024 }, - { 0x85, 2, 2*1024*1024 }, - { 0x86, 2, 512*1024 }, - { 0x87, 2, 1*1024*1024 }, - { 0xe4, 3, 8*1024*1024 } + {0x0a, 1, 8 * 1024}, + {0x0c, 1, 16 * 1024}, + {0x0d, 1, 16 * 1024}, + {0x0e, 1, 24 * 1024}, + {0x21, 2, 256 * 1024}, + {0x22, 3, 512 * 1024}, + {0x23, 3, 1024 * 1024}, + {0x25, 3, 2 * 1024 * 1024}, + {0x29, 3, 4 * 1024 * 1024}, + {0x2c, 1, 32 * 1024}, + {0x41, 2, 128 * 1024}, + {0x42, 2, 256 * 1024}, + {0x43, 2, 512 * 1024}, + {0x44, 2, 1 * 1024 * 1024}, + {0x45, 2, 2 * 1024 * 1024}, + {0x46, 3, 4 * 1024 * 1024}, + {0x47, 3, 8 * 1024 * 1024}, + {0x48, 2, 3 * 1024 * 1024}, + {0x49, 2, 4 * 1024 * 1024}, /* special case */ + {0x4a, 3, 6 * 1024 * 1024}, + {0x4b, 3, 8 * 1024 * 1024}, + {0x4c, 3, 12 * 1024 * 1024}, + {0x4d, 3, 16 * 1024 * 1024}, + {0x4e, 2, 6 * 1024 * 1024}, + {0x60, 1, 16 * 1024}, + {0x66, 1, 8 * 1024}, + {0x67, 1, 16 * 1024}, + {0x68, 1, 32 * 1024}, + {0x78, 2, 1 * 1024 * 1024}, + {0x79, 2, 128 * 1024}, + {0x7a, 2, 256 * 1024}, + {0x7b, 2, 512 * 1024}, + {0x7c, 2, 1 * 1024 * 1024}, + {0x7d, 2, 2 * 1024 * 1024}, + {0x7f, 2, 512 * 1024}, + {0x80, 2, 512 * 1024}, + {0x82, 2, 256 * 1024}, + {0x83, 2, 512 * 1024}, + {0x84, 2, 1 * 1024 * 1024}, + {0x85, 2, 2 * 1024 * 1024}, + {0x86, 2, 512 * 1024}, + {0x87, 2, 1 * 1024 * 1024}, + {0xe4, 3, 8 * 1024 * 1024} }; static void @@ -173,18 +171,20 @@ handle_cache_descriptor (unsigned int desc) { int i; - if (desc == 0) return; + if (desc == 0) + return; /* special case */ if (desc == 0x49 && _orc_cpu_family == 0xf && _orc_cpu_model == 0x6) { - ORC_DEBUG("level %d size %d", 3, 4*1024*1024); - _orc_data_cache_size_level3 = 4*1024*1024; + ORC_DEBUG ("level %d size %d", 3, 4 * 1024 * 1024); + _orc_data_cache_size_level3 = 4 * 1024 * 1024; return; } - for(i=0;i<sizeof(cache_descriptors)/sizeof(cache_descriptors[0]);i++){ + for (i = 0; i < sizeof (cache_descriptors) / sizeof (cache_descriptors[0]); + i++) { if (desc == cache_descriptors[i].desc) { - ORC_DEBUG("level %d size %d", cache_descriptors[i].level, + ORC_DEBUG ("level %d size %d", cache_descriptors[i].level, cache_descriptors[i].size); switch (cache_descriptors[i].level) { case 1: @@ -212,12 +212,13 @@ orc_x86_detect_cpuid (void) orc_uint32 ebx, edx; orc_uint32 level; - if (inited) return; + if (inited) + return; inited = 1; get_cpuid (0x00000000, &level, &ebx, &orc_x86_vendor, &edx); - ORC_DEBUG("cpuid %d %08x %08x %08x", level, ebx, edx, orc_x86_vendor); + ORC_DEBUG ("cpuid %d %08x %08x %08x", level, ebx, edx, orc_x86_vendor); #define ORC_X86_GenuineIntel (('n'<<0)|('t'<<8)|('e'<<16)|('l'<<24)) #define ORC_X86_AuthenticAMD (('c'<<0)|('A'<<8)|('M'<<16)|('D'<<24)) @@ -239,7 +240,7 @@ orc_x86_detect_cpuid (void) orc_sse_detect_cpuid_amd (level); break; default: - ORC_INFO("unhandled vendor %08x %08x %08x", ebx, edx, orc_x86_vendor); + ORC_INFO ("unhandled vendor %08x %08x %08x", ebx, edx, orc_x86_vendor); orc_sse_detect_cpuid_generic (level); break; } @@ -274,20 +275,20 @@ static void orc_x86_cpuid_get_branding_string (void) { get_cpuid (0x80000002, - (orc_uint32 *)(orc_x86_processor_string+0), - (orc_uint32 *)(orc_x86_processor_string+4), - (orc_uint32 *)(orc_x86_processor_string+8), - (orc_uint32 *)(orc_x86_processor_string+12)); + (orc_uint32 *) (orc_x86_processor_string + 0), + (orc_uint32 *) (orc_x86_processor_string + 4), + (orc_uint32 *) (orc_x86_processor_string + 8), + (orc_uint32 *) (orc_x86_processor_string + 12)); get_cpuid (0x80000003, - (orc_uint32 *)(orc_x86_processor_string+16), - (orc_uint32 *)(orc_x86_processor_string+20), - (orc_uint32 *)(orc_x86_processor_string+24), - (orc_uint32 *)(orc_x86_processor_string+28)); + (orc_uint32 *) (orc_x86_processor_string + 16), + (orc_uint32 *) (orc_x86_processor_string + 20), + (orc_uint32 *) (orc_x86_processor_string + 24), + (orc_uint32 *) (orc_x86_processor_string + 28)); get_cpuid (0x80000004, - (orc_uint32 *)(orc_x86_processor_string+32), - (orc_uint32 *)(orc_x86_processor_string+36), - (orc_uint32 *)(orc_x86_processor_string+40), - (orc_uint32 *)(orc_x86_processor_string+44)); + (orc_uint32 *) (orc_x86_processor_string + 32), + (orc_uint32 *) (orc_x86_processor_string + 36), + (orc_uint32 *) (orc_x86_processor_string + 40), + (orc_uint32 *) (orc_x86_processor_string + 44)); ORC_INFO ("processor string '%s'", orc_x86_processor_string); @@ -301,25 +302,25 @@ orc_x86_cpuid_handle_standard_flags (void) get_cpuid (0x00000001, &eax, &ebx, &ecx, &edx); - if (edx & (1<<23)) { + if (edx & (1 << 23)) { orc_x86_mmx_flags |= ORC_TARGET_MMX_MMX; } - if (edx & (1<<26)) { + if (edx & (1 << 26)) { orc_x86_sse_flags |= ORC_TARGET_SSE_SSE2; orc_x86_mmx_flags |= ORC_TARGET_MMX_MMXEXT; } - if (ecx & (1<<0)) { + if (ecx & (1 << 0)) { orc_x86_sse_flags |= ORC_TARGET_SSE_SSE3; } - if (ecx & (1<<9)) { + if (ecx & (1 << 9)) { orc_x86_sse_flags |= ORC_TARGET_SSE_SSSE3; orc_x86_mmx_flags |= ORC_TARGET_MMX_SSSE3; } - if (ecx & (1<<19)) { + if (ecx & (1 << 19)) { orc_x86_sse_flags |= ORC_TARGET_SSE_SSE4_1; orc_x86_mmx_flags |= ORC_TARGET_MMX_SSE4_1; } - if (ecx & (1<<20)) { + if (ecx & (1 << 20)) { orc_x86_sse_flags |= ORC_TARGET_SSE_SSE4_2; } } @@ -335,14 +336,14 @@ orc_x86_cpuid_handle_family_model_stepping (void) get_cpuid (0x00000001, &eax, &ebx, &ecx, &edx); - family_id = (eax>>8)&0xf; - model_id = (eax>>4)&0xf; - ext_family_id = (eax>>20)&0xff; - ext_model_id = (eax>>16)&0xf; + family_id = (eax >> 8) & 0xf; + model_id = (eax >> 4) & 0xf; + ext_family_id = (eax >> 20) & 0xff; + ext_model_id = (eax >> 16) & 0xf; _orc_cpu_family = family_id + ext_family_id; _orc_cpu_model = (ext_model_id << 4) | model_id; - _orc_cpu_stepping = eax&0xf; + _orc_cpu_stepping = eax & 0xf; ORC_INFO ("family_id %d model_id %d stepping %d", _orc_cpu_family, _orc_cpu_model, _orc_cpu_stepping); @@ -370,8 +371,8 @@ orc_sse_detect_cpuid_intel (orc_uint32 level) orc_x86_microarchitecture = ORC_X86_UNKNOWN; if (_orc_cpu_family == 6) { switch (_orc_cpu_model) { - case 6: /* Mendocino */ - case 11: /* Tualatin-256 */ + case 6: /* Mendocino */ + case 11: /* Tualatin-256 */ orc_x86_microarchitecture = ORC_X86_P6; break; case 15: @@ -400,34 +401,34 @@ orc_sse_detect_cpuid_intel (orc_uint32 level) if (level >= 2) { get_cpuid (0x00000002, &eax, &ebx, &ecx, &edx); - if ((eax&0x80000000) == 0) { - handle_cache_descriptor ((eax>>8)&0xff); - handle_cache_descriptor ((eax>>16)&0xff); - handle_cache_descriptor ((eax>>24)&0xff); + if ((eax & 0x80000000) == 0) { + handle_cache_descriptor ((eax >> 8) & 0xff); + handle_cache_descriptor ((eax >> 16) & 0xff); + handle_cache_descriptor ((eax >> 24) & 0xff); } - if ((ebx&0x80000000) == 0) { - handle_cache_descriptor (ebx&0xff); - handle_cache_descriptor ((ebx>>8)&0xff); - handle_cache_descriptor ((ebx>>16)&0xff); - handle_cache_descriptor ((ebx>>24)&0xff); + if ((ebx & 0x80000000) == 0) { + handle_cache_descriptor (ebx & 0xff); + handle_cache_descriptor ((ebx >> 8) & 0xff); + handle_cache_descriptor ((ebx >> 16) & 0xff); + handle_cache_descriptor ((ebx >> 24) & 0xff); } - if ((ecx&0x80000000) == 0) { - handle_cache_descriptor (ecx&0xff); - handle_cache_descriptor ((ecx>>8)&0xff); - handle_cache_descriptor ((ecx>>16)&0xff); - handle_cache_descriptor ((ecx>>24)&0xff); + if ((ecx & 0x80000000) == 0) { + handle_cache_descriptor (ecx & 0xff); + handle_cache_descriptor ((ecx >> 8) & 0xff); + handle_cache_descriptor ((ecx >> 16) & 0xff); + handle_cache_descriptor ((ecx >> 24) & 0xff); } - if ((edx&0x80000000) == 0) { - handle_cache_descriptor (edx&0xff); - handle_cache_descriptor ((edx>>8)&0xff); - handle_cache_descriptor ((edx>>16)&0xff); - handle_cache_descriptor ((edx>>24)&0xff); + if ((edx & 0x80000000) == 0) { + handle_cache_descriptor (edx & 0xff); + handle_cache_descriptor ((edx >> 8) & 0xff); + handle_cache_descriptor ((edx >> 16) & 0xff); + handle_cache_descriptor ((edx >> 24) & 0xff); } } if (level >= 4) { int i; - for(i=0;i<10;i++){ + for (i = 0; i < 10; i++) { int type; int level; int l; @@ -436,13 +437,14 @@ orc_sse_detect_cpuid_intel (orc_uint32 level) int s; get_cpuid_ecx (0x00000004, i, &eax, &ebx, &ecx, &edx); - type = eax&0xf; - if (type == 0) break; + type = eax & 0xf; + if (type == 0) + break; - level = (eax>>5)&0x7; - l = ((ebx>>0)&0xfff)+1; - p = ((ebx>>12)&0x3ff)+1; - w = ((ebx>>22)&0x3ff)+1; + level = (eax >> 5) & 0x7; + l = ((ebx >> 0) & 0xfff) + 1; + p = ((ebx >> 12) & 0x3ff) + 1; + w = ((ebx >> 22) & 0x3ff) + 1; s = ecx + 1; ORC_INFO ("type %d level %d line size %d partitions %d ways %d sets %d", @@ -450,13 +452,13 @@ orc_sse_detect_cpuid_intel (orc_uint32 level) if (type == 1 || type == 3) { switch (level) { case 1: - _orc_data_cache_size_level1 = l*p*w*s; + _orc_data_cache_size_level1 = l * p * w * s; break; case 2: - _orc_data_cache_size_level2 = l*p*w*s; + _orc_data_cache_size_level2 = l * p * w * s; break; case 3: - _orc_data_cache_size_level3 = l*p*w*s; + _orc_data_cache_size_level3 = l * p * w * s; break; } } @@ -471,7 +473,7 @@ orc_sse_detect_cpuid_intel (orc_uint32 level) } } - + static void orc_sse_detect_cpuid_amd (orc_uint32 level) { @@ -511,19 +513,19 @@ orc_sse_detect_cpuid_amd (orc_uint32 level) get_cpuid (0x80000001, &eax, &ebx, &ecx, &edx); /* AMD flags */ - if (ecx & (1<<6)) { + if (ecx & (1 << 6)) { orc_x86_sse_flags |= ORC_TARGET_SSE_SSE4A; } - if (ecx & (1<<11)) { + if (ecx & (1 << 11)) { orc_x86_sse_flags |= ORC_TARGET_SSE_SSE5; } - if (edx & (1<<22)) { + if (edx & (1 << 22)) { orc_x86_mmx_flags |= ORC_TARGET_MMX_MMXEXT; } - if (edx & (1<<31)) { + if (edx & (1 << 31)) { orc_x86_mmx_flags |= ORC_TARGET_MMX_3DNOW; } - if (edx & (1<<30)) { + if (edx & (1 << 30)) { orc_x86_mmx_flags |= ORC_TARGET_MMX_3DNOWEXT; } } @@ -535,32 +537,29 @@ orc_sse_detect_cpuid_amd (orc_uint32 level) if (level >= 6) { get_cpuid (0x80000005, &eax, &ebx, &ecx, &edx); - _orc_data_cache_size_level1 = ((ecx>>24)&0xff) * 1024; + _orc_data_cache_size_level1 = ((ecx >> 24) & 0xff) * 1024; ORC_INFO ("L1 D-cache: %d kbytes, %d-way, %d lines/tag, %d line size", - (ecx>>24)&0xff, (ecx>>16)&0xff, (ecx>>8)&0xff, ecx&0xff); + (ecx >> 24) & 0xff, (ecx >> 16) & 0xff, (ecx >> 8) & 0xff, ecx & 0xff); ORC_INFO ("L1 I-cache: %d kbytes, %d-way, %d lines/tag, %d line size", - (edx>>24)&0xff, (edx>>16)&0xff, (edx>>8)&0xff, edx&0xff); + (edx >> 24) & 0xff, (edx >> 16) & 0xff, (edx >> 8) & 0xff, edx & 0xff); get_cpuid (0x80000006, &eax, &ebx, &ecx, &edx); - _orc_data_cache_size_level2 = ((ecx>>16)&0xffff) * 1024; + _orc_data_cache_size_level2 = ((ecx >> 16) & 0xffff) * 1024; ORC_INFO ("L2 cache: %d kbytes, %d assoc, %d lines/tag, %d line size", - (ecx>>16)&0xffff, (ecx>>12)&0xf, (ecx>>8)&0xf, ecx&0xff); + (ecx >> 16) & 0xffff, (ecx >> 12) & 0xf, (ecx >> 8) & 0xf, ecx & 0xff); } } unsigned int -orc_sse_get_cpu_flags(void) +orc_sse_get_cpu_flags (void) { orc_x86_detect_cpuid (); return orc_x86_sse_flags; } unsigned int -orc_mmx_get_cpu_flags(void) +orc_mmx_get_cpu_flags (void) { orc_x86_detect_cpuid (); return orc_x86_mmx_flags; } - - - diff --git a/orc/orcdebug.c b/orc/orcdebug.c index c4aa7be..3364c98 100644 --- a/orc/orcdebug.c +++ b/orc/orcdebug.c @@ -49,7 +49,7 @@ static int _orc_debug_level = ORC_DEBUG_ERROR; static OrcDebugPrintFunc _orc_debug_print_func = orc_debug_print_valist; void -_orc_debug_init(void) +_orc_debug_init (void) { const char *envvar; @@ -68,18 +68,20 @@ _orc_debug_init(void) static void orc_debug_print_valist (int level, const char *file, const char *func, - int line, const char *format, va_list args) + int line, const char *format, va_list args) { static const char *level_names[] = { "NONE", "ERROR", "WARNING", "INFO", - "DEBUG", "LOG" }; + "DEBUG", "LOG" + }; const char *level_name = "unknown"; - if (level > _orc_debug_level) return; + if (level > _orc_debug_level) + return; - if(level>=ORC_DEBUG_NONE && level<=ORC_DEBUG_LOG){ + if (level >= ORC_DEBUG_NONE && level <= ORC_DEBUG_LOG) { level_name = level_names[level]; } - + fprintf (stderr, "ORC: %s: %s(%d): %s(): ", level_name, file, line, func); vfprintf (stderr, format, args); fprintf (stderr, "\n"); @@ -87,7 +89,7 @@ orc_debug_print_valist (int level, const char *file, const char *func, void orc_debug_print (int level, const char *file, const char *func, - int line, const char *format, ...) + int line, const char *format, ...) { va_list var_args; @@ -138,4 +140,3 @@ orc_debug_set_print_function (OrcDebugPrintFunc func) _orc_debug_print_func = orc_debug_print_valist; } } - diff --git a/orc/orcemulateopcodes.c b/orc/orcemulateopcodes.c index c467aa0..7b006db 100644 --- a/orc/orcemulateopcodes.c +++ b/orc/orcemulateopcodes.c @@ -52,23 +52,23 @@ void -emulate_absb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_absb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; orc_int8 var33; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadb */ var32 = ptr4[i]; /* 1: absb */ - var33 = ORC_ABS(var32); + var33 = ORC_ABS (var32); /* 2: storeb */ ptr0[i] = var33; } @@ -76,19 +76,19 @@ emulate_absb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_addb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_addb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -105,19 +105,19 @@ emulate_addb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_addssb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_addssb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -126,7 +126,7 @@ emulate_addssb (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadb */ var33 = ptr5[i]; /* 2: addssb */ - var34 = ORC_CLAMP_SB(var32 + var33); + var34 = ORC_CLAMP_SB (var32 + var33); /* 3: storeb */ ptr0[i] = var34; } @@ -134,19 +134,19 @@ emulate_addssb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_addusb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_addusb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -155,7 +155,7 @@ emulate_addusb (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadb */ var33 = ptr5[i]; /* 2: addusb */ - var34 = ORC_CLAMP_UB((orc_uint8)var32 + (orc_uint8)var33); + var34 = ORC_CLAMP_UB ((orc_uint8) var32 + (orc_uint8) var33); /* 3: storeb */ ptr0[i] = var34; } @@ -163,19 +163,19 @@ emulate_addusb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_andb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_andb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -192,19 +192,19 @@ emulate_andb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_andnb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_andnb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -221,19 +221,19 @@ emulate_andnb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_avgsb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_avgsb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -242,7 +242,7 @@ emulate_avgsb (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadb */ var33 = ptr5[i]; /* 2: avgsb */ - var34 = (var32 + var33 + 1)>>1; + var34 = (var32 + var33 + 1) >> 1; /* 3: storeb */ ptr0[i] = var34; } @@ -250,19 +250,19 @@ emulate_avgsb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_avgub (OrcOpcodeExecutor *ex, int offset, int n) +emulate_avgub (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -271,7 +271,7 @@ emulate_avgub (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadb */ var33 = ptr5[i]; /* 2: avgub */ - var34 = ((orc_uint8)var32 + (orc_uint8)var33 + 1)>>1; + var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1; /* 3: storeb */ ptr0[i] = var34; } @@ -279,19 +279,19 @@ emulate_avgub (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_cmpeqb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_cmpeqb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -308,19 +308,19 @@ emulate_cmpeqb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_cmpgtsb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_cmpgtsb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -337,16 +337,16 @@ emulate_cmpgtsb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_copyb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_copyb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; orc_int8 var33; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -361,15 +361,15 @@ emulate_copyb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_loadb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_loadb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -382,20 +382,20 @@ emulate_loadb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_loadoffb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_loadoffb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadoffb */ - var32 = ptr4[offset + i + ((orc_union64 *)(ex->src_ptrs[1]))->i]; + var32 = ptr4[offset + i + ((orc_union64 *) (ex->src_ptrs[1]))->i]; /* 1: storeb */ ptr0[i] = var32; } @@ -403,20 +403,20 @@ emulate_loadoffb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_loadupdb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_loadupdb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadupdb */ - var32 = ptr4[(offset + i)>>1]; + var32 = ptr4[(offset + i) >> 1]; /* 1: storeb */ ptr0[i] = var32; } @@ -424,20 +424,23 @@ emulate_loadupdb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_loadupib (OrcOpcodeExecutor *ex, int offset, int n) +emulate_loadupib (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadupib */ - var32 = ((offset + i)&1) ? ((orc_uint8)ptr4[(offset + i)>>1] + (orc_uint8)ptr4[((offset + i)>>1)+1] + 1)>>1 : ptr4[(offset + i)>>1]; + var32 = + ((offset + i) & 1) ? ((orc_uint8) ptr4[(offset + i) >> 1] + + (orc_uint8) ptr4[((offset + i) >> 1) + 1] + 1) >> 1 : ptr4[(offset + + i) >> 1]; /* 1: storeb */ ptr0[i] = var32; } @@ -445,16 +448,16 @@ emulate_loadupib (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_loadpb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_loadpb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr0; orc_int8 var32; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; - /* 0: loadpb */ - var32 = ((orc_union64 *)(ex->src_ptrs[0]))->i; + /* 0: loadpb */ + var32 = ((orc_union64 *) (ex->src_ptrs[0]))->i; for (i = 0; i < n; i++) { /* 1: storeb */ @@ -464,20 +467,22 @@ emulate_loadpb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_ldresnearb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_ldresnearb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: ldresnearb */ - var32 = ptr4[(((orc_union64 *)(ex->src_ptrs[1]))->i + (offset + i)*((orc_union64 *)(ex->src_ptrs[2]))->i)>>16]; + var32 = + ptr4[(((orc_union64 *) (ex->src_ptrs[1]))->i + (offset + + i) * ((orc_union64 *) (ex->src_ptrs[2]))->i) >> 16]; /* 1: storeb */ ptr0[i] = var32; } @@ -485,20 +490,22 @@ emulate_ldresnearb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_ldresnearl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_ldresnearl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: ldresnearl */ - var32 = ptr4[(((orc_union64 *)(ex->src_ptrs[1]))->i + (offset + i)*((orc_union64 *)(ex->src_ptrs[2]))->i)>>16]; + var32 = + ptr4[(((orc_union64 *) (ex->src_ptrs[1]))->i + (offset + + i) * ((orc_union64 *) (ex->src_ptrs[2]))->i) >> 16]; /* 1: storel */ ptr0[i] = var32; } @@ -506,22 +513,26 @@ emulate_ldresnearl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_ldreslinb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_ldreslinb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: ldreslinb */ { - int tmp = ((orc_union64 *)(ex->src_ptrs[1]))->i + (offset + i) * ((orc_union64 *)(ex->src_ptrs[2]))->i; - var32 = ((orc_uint8)ptr4[tmp>>16] * (256-((tmp>>8)&0xff)) + (orc_uint8)ptr4[(tmp>>16)+1] * ((tmp>>8)&0xff))>>8; + int tmp = + ((orc_union64 *) (ex->src_ptrs[1]))->i + (offset + + i) * ((orc_union64 *) (ex->src_ptrs[2]))->i; + var32 = + ((orc_uint8) ptr4[tmp >> 16] * (256 - ((tmp >> 8) & 0xff)) + + (orc_uint8) ptr4[(tmp >> 16) + 1] * ((tmp >> 8) & 0xff)) >> 8; } /* 1: storeb */ ptr0[i] = var32; @@ -530,27 +541,37 @@ emulate_ldreslinb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_ldreslinl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_ldreslinl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: ldreslinl */ { - int tmp = ((orc_union64 *)(ex->src_ptrs[1]))->i + (offset + i) * ((orc_union64 *)(ex->src_ptrs[2]))->i; - orc_union32 a = ptr4[tmp>>16]; - orc_union32 b = ptr4[(tmp>>16)+1]; - var32.x4[0] = ((orc_uint8)a.x4[0] * (256-((tmp>>8)&0xff)) + (orc_uint8)b.x4[0] * ((tmp>>8)&0xff))>>8; - var32.x4[1] = ((orc_uint8)a.x4[1] * (256-((tmp>>8)&0xff)) + (orc_uint8)b.x4[1] * ((tmp>>8)&0xff))>>8; - var32.x4[2] = ((orc_uint8)a.x4[2] * (256-((tmp>>8)&0xff)) + (orc_uint8)b.x4[2] * ((tmp>>8)&0xff))>>8; - var32.x4[3] = ((orc_uint8)a.x4[3] * (256-((tmp>>8)&0xff)) + (orc_uint8)b.x4[3] * ((tmp>>8)&0xff))>>8; + int tmp = + ((orc_union64 *) (ex->src_ptrs[1]))->i + (offset + + i) * ((orc_union64 *) (ex->src_ptrs[2]))->i; + orc_union32 a = ptr4[tmp >> 16]; + orc_union32 b = ptr4[(tmp >> 16) + 1]; + var32.x4[0] = + ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) + + (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8; + var32.x4[1] = + ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) + + (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8; + var32.x4[2] = + ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) + + (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8; + var32.x4[3] = + ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) + + (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8; } /* 1: storel */ ptr0[i] = var32; @@ -559,19 +580,19 @@ emulate_ldreslinl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_maxsb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_maxsb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -580,7 +601,7 @@ emulate_maxsb (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadb */ var33 = ptr5[i]; /* 2: maxsb */ - var34 = ORC_MAX(var32, var33); + var34 = ORC_MAX (var32, var33); /* 3: storeb */ ptr0[i] = var34; } @@ -588,19 +609,19 @@ emulate_maxsb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_maxub (OrcOpcodeExecutor *ex, int offset, int n) +emulate_maxub (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -609,7 +630,7 @@ emulate_maxub (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadb */ var33 = ptr5[i]; /* 2: maxub */ - var34 = ORC_MAX((orc_uint8)var32, (orc_uint8)var33); + var34 = ORC_MAX ((orc_uint8) var32, (orc_uint8) var33); /* 3: storeb */ ptr0[i] = var34; } @@ -617,19 +638,19 @@ emulate_maxub (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_minsb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_minsb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -638,7 +659,7 @@ emulate_minsb (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadb */ var33 = ptr5[i]; /* 2: minsb */ - var34 = ORC_MIN(var32, var33); + var34 = ORC_MIN (var32, var33); /* 3: storeb */ ptr0[i] = var34; } @@ -646,19 +667,19 @@ emulate_minsb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_minub (OrcOpcodeExecutor *ex, int offset, int n) +emulate_minub (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -667,7 +688,7 @@ emulate_minub (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadb */ var33 = ptr5[i]; /* 2: minub */ - var34 = ORC_MIN((orc_uint8)var32, (orc_uint8)var33); + var34 = ORC_MIN ((orc_uint8) var32, (orc_uint8) var33); /* 3: storeb */ ptr0[i] = var34; } @@ -675,19 +696,19 @@ emulate_minub (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mullb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mullb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -704,19 +725,19 @@ emulate_mullb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mulhsb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mulhsb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -733,19 +754,19 @@ emulate_mulhsb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mulhub (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mulhub (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -754,7 +775,8 @@ emulate_mulhub (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadb */ var33 = ptr5[i]; /* 2: mulhub */ - var34 = ((orc_uint32)(orc_uint8)var32 * (orc_uint32)(orc_uint8)var33) >> 8; + var34 = + ((orc_uint32) (orc_uint8) var32 * (orc_uint32) (orc_uint8) var33) >> 8; /* 3: storeb */ ptr0[i] = var34; } @@ -762,19 +784,19 @@ emulate_mulhub (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_orb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_orb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -791,23 +813,23 @@ emulate_orb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_shlb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_shlb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; orc_int8 var33; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadb */ var32 = ptr4[i]; /* 1: shlb */ - var33 = var32 << ((orc_union64 *)(ex->src_ptrs[1]))->i; + var33 = var32 << ((orc_union64 *) (ex->src_ptrs[1]))->i; /* 2: storeb */ ptr0[i] = var33; } @@ -815,23 +837,23 @@ emulate_shlb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_shrsb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_shrsb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; orc_int8 var33; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadb */ var32 = ptr4[i]; /* 1: shrsb */ - var33 = var32 >> ((orc_union64 *)(ex->src_ptrs[1]))->i; + var33 = var32 >> ((orc_union64 *) (ex->src_ptrs[1]))->i; /* 2: storeb */ ptr0[i] = var33; } @@ -839,23 +861,23 @@ emulate_shrsb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_shrub (OrcOpcodeExecutor *ex, int offset, int n) +emulate_shrub (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; orc_int8 var33; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadb */ var32 = ptr4[i]; /* 1: shrub */ - var33 = ((orc_uint8)var32) >> ((orc_union64 *)(ex->src_ptrs[1]))->i; + var33 = ((orc_uint8) var32) >> ((orc_union64 *) (ex->src_ptrs[1]))->i; /* 2: storeb */ ptr0[i] = var33; } @@ -863,23 +885,23 @@ emulate_shrub (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_signb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_signb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; orc_int8 var33; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadb */ var32 = ptr4[i]; /* 1: signb */ - var33 = ORC_CLAMP(var32,-1,1); + var33 = ORC_CLAMP (var32, -1, 1); /* 2: storeb */ ptr0[i] = var33; } @@ -887,15 +909,15 @@ emulate_signb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_storeb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_storeb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -908,19 +930,19 @@ emulate_storeb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_subb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_subb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -937,19 +959,19 @@ emulate_subb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_subssb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_subssb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -958,7 +980,7 @@ emulate_subssb (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadb */ var33 = ptr5[i]; /* 2: subssb */ - var34 = ORC_CLAMP_SB(var32 - var33); + var34 = ORC_CLAMP_SB (var32 - var33); /* 3: storeb */ ptr0[i] = var34; } @@ -966,19 +988,19 @@ emulate_subssb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_subusb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_subusb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -987,7 +1009,7 @@ emulate_subusb (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadb */ var33 = ptr5[i]; /* 2: subusb */ - var34 = ORC_CLAMP_UB((orc_uint8)var32 - (orc_uint8)var33); + var34 = ORC_CLAMP_UB ((orc_uint8) var32 - (orc_uint8) var33); /* 3: storeb */ ptr0[i] = var34; } @@ -995,19 +1017,19 @@ emulate_subusb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_xorb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_xorb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1024,23 +1046,23 @@ emulate_xorb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_absw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_absw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadw */ var32 = ptr4[i]; /* 1: absw */ - var33.i = ORC_ABS(var32.i); + var33.i = ORC_ABS (var32.i); /* 2: storew */ ptr0[i] = var33; } @@ -1048,19 +1070,19 @@ emulate_absw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_addw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_addw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1077,19 +1099,19 @@ emulate_addw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_addssw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_addssw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1098,7 +1120,7 @@ emulate_addssw (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadw */ var33 = ptr5[i]; /* 2: addssw */ - var34.i = ORC_CLAMP_SW(var32.i + var33.i); + var34.i = ORC_CLAMP_SW (var32.i + var33.i); /* 3: storew */ ptr0[i] = var34; } @@ -1106,19 +1128,19 @@ emulate_addssw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_addusw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_addusw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1127,7 +1149,7 @@ emulate_addusw (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadw */ var33 = ptr5[i]; /* 2: addusw */ - var34.i = ORC_CLAMP_UW((orc_uint16)var32.i + (orc_uint16)var33.i); + var34.i = ORC_CLAMP_UW ((orc_uint16) var32.i + (orc_uint16) var33.i); /* 3: storew */ ptr0[i] = var34; } @@ -1135,19 +1157,19 @@ emulate_addusw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_andw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_andw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1164,19 +1186,19 @@ emulate_andw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_andnw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_andnw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1193,19 +1215,19 @@ emulate_andnw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_avgsw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_avgsw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1214,7 +1236,7 @@ emulate_avgsw (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadw */ var33 = ptr5[i]; /* 2: avgsw */ - var34.i = (var32.i + var33.i + 1)>>1; + var34.i = (var32.i + var33.i + 1) >> 1; /* 3: storew */ ptr0[i] = var34; } @@ -1222,19 +1244,19 @@ emulate_avgsw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_avguw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_avguw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1243,7 +1265,7 @@ emulate_avguw (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadw */ var33 = ptr5[i]; /* 2: avguw */ - var34.i = ((orc_uint16)var32.i + (orc_uint16)var33.i + 1)>>1; + var34.i = ((orc_uint16) var32.i + (orc_uint16) var33.i + 1) >> 1; /* 3: storew */ ptr0[i] = var34; } @@ -1251,19 +1273,19 @@ emulate_avguw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_cmpeqw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_cmpeqw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1280,19 +1302,19 @@ emulate_cmpeqw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_cmpgtsw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_cmpgtsw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1309,16 +1331,16 @@ emulate_cmpgtsw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_copyw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_copyw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -1333,23 +1355,25 @@ emulate_copyw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_div255w (OrcOpcodeExecutor *ex, int offset, int n) +emulate_div255w (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadw */ var32 = ptr4[i]; /* 1: div255w */ - var33.i = ((orc_uint16)(((orc_uint16)(var32.i+128)) + (((orc_uint16)(var32.i+128))>>8)))>>8; + var33.i = + ((orc_uint16) (((orc_uint16) (var32.i + 128)) + + (((orc_uint16) (var32.i + 128)) >> 8))) >> 8; /* 2: storew */ ptr0[i] = var33; } @@ -1357,19 +1381,19 @@ emulate_div255w (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_divluw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_divluw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1378,7 +1402,10 @@ emulate_divluw (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadw */ var33 = ptr5[i]; /* 2: divluw */ - var34.i = ((var33.i&0xff) == 0) ? 255 : ORC_CLAMP_UB(((orc_uint16)var32.i)/((orc_uint16)var33.i&0xff)); + var34.i = + ((var33.i & 0xff) == + 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var32.i) / + ((orc_uint16) var33.i & 0xff)); /* 3: storew */ ptr0[i] = var34; } @@ -1386,15 +1413,15 @@ emulate_divluw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_loadw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_loadw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -1407,20 +1434,20 @@ emulate_loadw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_loadoffw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_loadoffw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadoffw */ - var32 = ptr4[offset + i + ((orc_union64 *)(ex->src_ptrs[1]))->i]; + var32 = ptr4[offset + i + ((orc_union64 *) (ex->src_ptrs[1]))->i]; /* 1: storew */ ptr0[i] = var32; } @@ -1428,16 +1455,16 @@ emulate_loadoffw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_loadpw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_loadpw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; + orc_union16 *ORC_RESTRICT ptr0; orc_union16 var32; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; - /* 0: loadpw */ - var32.i = ((orc_union64 *)(ex->src_ptrs[0]))->i; + /* 0: loadpw */ + var32.i = ((orc_union64 *) (ex->src_ptrs[0]))->i; for (i = 0; i < n; i++) { /* 1: storew */ @@ -1447,19 +1474,19 @@ emulate_loadpw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_maxsw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_maxsw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1468,7 +1495,7 @@ emulate_maxsw (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadw */ var33 = ptr5[i]; /* 2: maxsw */ - var34.i = ORC_MAX(var32.i, var33.i); + var34.i = ORC_MAX (var32.i, var33.i); /* 3: storew */ ptr0[i] = var34; } @@ -1476,19 +1503,19 @@ emulate_maxsw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_maxuw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_maxuw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1497,7 +1524,7 @@ emulate_maxuw (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadw */ var33 = ptr5[i]; /* 2: maxuw */ - var34.i = ORC_MAX((orc_uint16)var32.i, (orc_uint16)var33.i); + var34.i = ORC_MAX ((orc_uint16) var32.i, (orc_uint16) var33.i); /* 3: storew */ ptr0[i] = var34; } @@ -1505,19 +1532,19 @@ emulate_maxuw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_minsw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_minsw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1526,7 +1553,7 @@ emulate_minsw (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadw */ var33 = ptr5[i]; /* 2: minsw */ - var34.i = ORC_MIN(var32.i, var33.i); + var34.i = ORC_MIN (var32.i, var33.i); /* 3: storew */ ptr0[i] = var34; } @@ -1534,19 +1561,19 @@ emulate_minsw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_minuw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_minuw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1555,7 +1582,7 @@ emulate_minuw (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadw */ var33 = ptr5[i]; /* 2: minuw */ - var34.i = ORC_MIN((orc_uint16)var32.i, (orc_uint16)var33.i); + var34.i = ORC_MIN ((orc_uint16) var32.i, (orc_uint16) var33.i); /* 3: storew */ ptr0[i] = var34; } @@ -1563,19 +1590,19 @@ emulate_minuw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mullw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mullw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1592,19 +1619,19 @@ emulate_mullw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mulhsw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mulhsw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1621,19 +1648,19 @@ emulate_mulhsw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mulhuw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mulhuw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1642,7 +1669,9 @@ emulate_mulhuw (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadw */ var33 = ptr5[i]; /* 2: mulhuw */ - var34.i = ((orc_uint32)((orc_uint16)var32.i) * (orc_uint32)((orc_uint16)var33.i)) >> 16; + var34.i = + ((orc_uint32) ((orc_uint16) var32.i) * + (orc_uint32) ((orc_uint16) var33.i)) >> 16; /* 3: storew */ ptr0[i] = var34; } @@ -1650,19 +1679,19 @@ emulate_mulhuw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_orw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_orw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1679,23 +1708,23 @@ emulate_orw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_shlw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_shlw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadw */ var32 = ptr4[i]; /* 1: shlw */ - var33.i = var32.i << ((orc_union64 *)(ex->src_ptrs[1]))->i; + var33.i = var32.i << ((orc_union64 *) (ex->src_ptrs[1]))->i; /* 2: storew */ ptr0[i] = var33; } @@ -1703,23 +1732,23 @@ emulate_shlw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_shrsw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_shrsw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadw */ var32 = ptr4[i]; /* 1: shrsw */ - var33.i = var32.i >> ((orc_union64 *)(ex->src_ptrs[1]))->i; + var33.i = var32.i >> ((orc_union64 *) (ex->src_ptrs[1]))->i; /* 2: storew */ ptr0[i] = var33; } @@ -1727,23 +1756,23 @@ emulate_shrsw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_shruw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_shruw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadw */ var32 = ptr4[i]; /* 1: shruw */ - var33.i = ((orc_uint16)var32.i) >> ((orc_union64 *)(ex->src_ptrs[1]))->i; + var33.i = ((orc_uint16) var32.i) >> ((orc_union64 *) (ex->src_ptrs[1]))->i; /* 2: storew */ ptr0[i] = var33; } @@ -1751,23 +1780,23 @@ emulate_shruw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_signw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_signw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadw */ var32 = ptr4[i]; /* 1: signw */ - var33.i = ORC_CLAMP(var32.i,-1,1); + var33.i = ORC_CLAMP (var32.i, -1, 1); /* 2: storew */ ptr0[i] = var33; } @@ -1775,15 +1804,15 @@ emulate_signw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_storew (OrcOpcodeExecutor *ex, int offset, int n) +emulate_storew (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -1796,19 +1825,19 @@ emulate_storew (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_subw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_subw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1825,19 +1854,19 @@ emulate_subw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_subssw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_subssw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1846,7 +1875,7 @@ emulate_subssw (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadw */ var33 = ptr5[i]; /* 2: subssw */ - var34.i = ORC_CLAMP_SW(var32.i - var33.i); + var34.i = ORC_CLAMP_SW (var32.i - var33.i); /* 3: storew */ ptr0[i] = var34; } @@ -1854,19 +1883,19 @@ emulate_subssw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_subusw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_subusw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1875,7 +1904,7 @@ emulate_subusw (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadw */ var33 = ptr5[i]; /* 2: subusw */ - var34.i = ORC_CLAMP_UW((orc_uint16)var32.i - (orc_uint16)var33.i); + var34.i = ORC_CLAMP_UW ((orc_uint16) var32.i - (orc_uint16) var33.i); /* 3: storew */ ptr0[i] = var34; } @@ -1883,19 +1912,19 @@ emulate_subusw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_xorw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_xorw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1912,23 +1941,23 @@ emulate_xorw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_absl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_absl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadl */ var32 = ptr4[i]; /* 1: absl */ - var33.i = ORC_ABS(var32.i); + var33.i = ORC_ABS (var32.i); /* 2: storel */ ptr0[i] = var33; } @@ -1936,19 +1965,19 @@ emulate_absl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_addl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_addl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1965,19 +1994,19 @@ emulate_addl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_addssl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_addssl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -1986,7 +2015,7 @@ emulate_addssl (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadl */ var33 = ptr5[i]; /* 2: addssl */ - var34.i = ORC_CLAMP_SL((orc_int64)var32.i + (orc_int64)var33.i); + var34.i = ORC_CLAMP_SL ((orc_int64) var32.i + (orc_int64) var33.i); /* 3: storel */ ptr0[i] = var34; } @@ -1994,19 +2023,19 @@ emulate_addssl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_addusl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_addusl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2015,7 +2044,9 @@ emulate_addusl (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadl */ var33 = ptr5[i]; /* 2: addusl */ - var34.i = ORC_CLAMP_UL((orc_int64)(orc_uint32)var32.i + (orc_int64)(orc_uint32)var33.i); + var34.i = + ORC_CLAMP_UL ((orc_int64) (orc_uint32) var32.i + + (orc_int64) (orc_uint32) var33.i); /* 3: storel */ ptr0[i] = var34; } @@ -2023,19 +2054,19 @@ emulate_addusl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_andl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_andl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2052,19 +2083,19 @@ emulate_andl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_andnl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_andnl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2081,19 +2112,19 @@ emulate_andnl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_avgsl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_avgsl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2102,7 +2133,7 @@ emulate_avgsl (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadl */ var33 = ptr5[i]; /* 2: avgsl */ - var34.i = ((orc_int64)var32.i + (orc_int64)var33.i + 1)>>1; + var34.i = ((orc_int64) var32.i + (orc_int64) var33.i + 1) >> 1; /* 3: storel */ ptr0[i] = var34; } @@ -2110,19 +2141,19 @@ emulate_avgsl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_avgul (OrcOpcodeExecutor *ex, int offset, int n) +emulate_avgul (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2131,7 +2162,9 @@ emulate_avgul (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadl */ var33 = ptr5[i]; /* 2: avgul */ - var34.i = ((orc_uint64)(orc_uint32)var32.i + (orc_uint64)(orc_uint32)var33.i + 1)>>1; + var34.i = + ((orc_uint64) (orc_uint32) var32.i + (orc_uint64) (orc_uint32) var33.i + + 1) >> 1; /* 3: storel */ ptr0[i] = var34; } @@ -2139,19 +2172,19 @@ emulate_avgul (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_cmpeql (OrcOpcodeExecutor *ex, int offset, int n) +emulate_cmpeql (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2168,19 +2201,19 @@ emulate_cmpeql (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_cmpgtsl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_cmpgtsl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2197,16 +2230,16 @@ emulate_cmpgtsl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_copyl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_copyl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -2221,15 +2254,15 @@ emulate_copyl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_loadl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_loadl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -2242,20 +2275,20 @@ emulate_loadl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_loadoffl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_loadoffl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadoffl */ - var32 = ptr4[offset + i + ((orc_union64 *)(ex->src_ptrs[1]))->i]; + var32 = ptr4[offset + i + ((orc_union64 *) (ex->src_ptrs[1]))->i]; /* 1: storel */ ptr0[i] = var32; } @@ -2263,16 +2296,16 @@ emulate_loadoffl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_loadpl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_loadpl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; + orc_union32 *ORC_RESTRICT ptr0; orc_union32 var32; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; - /* 0: loadpl */ - var32.i = ((orc_union64 *)(ex->src_ptrs[0]))->i; + /* 0: loadpl */ + var32.i = ((orc_union64 *) (ex->src_ptrs[0]))->i; for (i = 0; i < n; i++) { /* 1: storel */ @@ -2282,19 +2315,19 @@ emulate_loadpl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_maxsl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_maxsl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2303,7 +2336,7 @@ emulate_maxsl (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadl */ var33 = ptr5[i]; /* 2: maxsl */ - var34.i = ORC_MAX(var32.i, var33.i); + var34.i = ORC_MAX (var32.i, var33.i); /* 3: storel */ ptr0[i] = var34; } @@ -2311,19 +2344,19 @@ emulate_maxsl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_maxul (OrcOpcodeExecutor *ex, int offset, int n) +emulate_maxul (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2332,7 +2365,7 @@ emulate_maxul (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadl */ var33 = ptr5[i]; /* 2: maxul */ - var34.i = ORC_MAX((orc_uint32)var32.i, (orc_uint32)var33.i); + var34.i = ORC_MAX ((orc_uint32) var32.i, (orc_uint32) var33.i); /* 3: storel */ ptr0[i] = var34; } @@ -2340,19 +2373,19 @@ emulate_maxul (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_minsl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_minsl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2361,7 +2394,7 @@ emulate_minsl (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadl */ var33 = ptr5[i]; /* 2: minsl */ - var34.i = ORC_MIN(var32.i, var33.i); + var34.i = ORC_MIN (var32.i, var33.i); /* 3: storel */ ptr0[i] = var34; } @@ -2369,19 +2402,19 @@ emulate_minsl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_minul (OrcOpcodeExecutor *ex, int offset, int n) +emulate_minul (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2390,7 +2423,7 @@ emulate_minul (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadl */ var33 = ptr5[i]; /* 2: minul */ - var34.i = ORC_MIN((orc_uint32)var32.i, (orc_uint32)var33.i); + var34.i = ORC_MIN ((orc_uint32) var32.i, (orc_uint32) var33.i); /* 3: storel */ ptr0[i] = var34; } @@ -2398,19 +2431,19 @@ emulate_minul (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mulll (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mulll (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2427,19 +2460,19 @@ emulate_mulll (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mulhsl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mulhsl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2448,7 +2481,7 @@ emulate_mulhsl (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadl */ var33 = ptr5[i]; /* 2: mulhsl */ - var34.i = ((orc_int64)var32.i * (orc_int64)var33.i) >> 32; + var34.i = ((orc_int64) var32.i * (orc_int64) var33.i) >> 32; /* 3: storel */ ptr0[i] = var34; } @@ -2456,19 +2489,19 @@ emulate_mulhsl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mulhul (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mulhul (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2477,7 +2510,9 @@ emulate_mulhul (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadl */ var33 = ptr5[i]; /* 2: mulhul */ - var34.i = ((orc_uint64)(orc_uint32)var32.i * (orc_uint64)(orc_uint32)var33.i) >> 32; + var34.i = + ((orc_uint64) (orc_uint32) var32.i * + (orc_uint64) (orc_uint32) var33.i) >> 32; /* 3: storel */ ptr0[i] = var34; } @@ -2485,19 +2520,19 @@ emulate_mulhul (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_orl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_orl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2514,23 +2549,23 @@ emulate_orl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_shll (OrcOpcodeExecutor *ex, int offset, int n) +emulate_shll (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadl */ var32 = ptr4[i]; /* 1: shll */ - var33.i = var32.i << ((orc_union64 *)(ex->src_ptrs[1]))->i; + var33.i = var32.i << ((orc_union64 *) (ex->src_ptrs[1]))->i; /* 2: storel */ ptr0[i] = var33; } @@ -2538,23 +2573,23 @@ emulate_shll (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_shrsl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_shrsl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadl */ var32 = ptr4[i]; /* 1: shrsl */ - var33.i = var32.i >> ((orc_union64 *)(ex->src_ptrs[1]))->i; + var33.i = var32.i >> ((orc_union64 *) (ex->src_ptrs[1]))->i; /* 2: storel */ ptr0[i] = var33; } @@ -2562,23 +2597,23 @@ emulate_shrsl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_shrul (OrcOpcodeExecutor *ex, int offset, int n) +emulate_shrul (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadl */ var32 = ptr4[i]; /* 1: shrul */ - var33.i = ((orc_uint32)var32.i) >> ((orc_union64 *)(ex->src_ptrs[1]))->i; + var33.i = ((orc_uint32) var32.i) >> ((orc_union64 *) (ex->src_ptrs[1]))->i; /* 2: storel */ ptr0[i] = var33; } @@ -2586,23 +2621,23 @@ emulate_shrul (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_signl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_signl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadl */ var32 = ptr4[i]; /* 1: signl */ - var33.i = ORC_CLAMP(var32.i,-1,1); + var33.i = ORC_CLAMP (var32.i, -1, 1); /* 2: storel */ ptr0[i] = var33; } @@ -2610,15 +2645,15 @@ emulate_signl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_storel (OrcOpcodeExecutor *ex, int offset, int n) +emulate_storel (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -2631,19 +2666,19 @@ emulate_storel (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_subl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_subl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2660,19 +2695,19 @@ emulate_subl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_subssl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_subssl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2681,7 +2716,7 @@ emulate_subssl (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadl */ var33 = ptr5[i]; /* 2: subssl */ - var34.i = ORC_CLAMP_SL((orc_int64)var32.i - (orc_int64)var33.i); + var34.i = ORC_CLAMP_SL ((orc_int64) var32.i - (orc_int64) var33.i); /* 3: storel */ ptr0[i] = var34; } @@ -2689,19 +2724,19 @@ emulate_subssl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_subusl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_subusl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2710,7 +2745,9 @@ emulate_subusl (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadl */ var33 = ptr5[i]; /* 2: subusl */ - var34.i = ORC_CLAMP_UL((orc_int64)(orc_uint32)var32.i - (orc_int64)(orc_uint32)var33.i); + var34.i = + ORC_CLAMP_UL ((orc_int64) (orc_uint32) var32.i - + (orc_int64) (orc_uint32) var33.i); /* 3: storel */ ptr0[i] = var34; } @@ -2718,19 +2755,19 @@ emulate_subusl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_xorl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_xorl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2747,15 +2784,15 @@ emulate_xorl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_loadq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_loadq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -2768,16 +2805,16 @@ emulate_loadq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_loadpq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_loadpq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; + orc_union64 *ORC_RESTRICT ptr0; orc_union64 var32; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; - /* 0: loadpq */ - var32.i = ((orc_union64 *)(ex->src_ptrs[0]))->i; + /* 0: loadpq */ + var32.i = ((orc_union64 *) (ex->src_ptrs[0]))->i; for (i = 0; i < n; i++) { /* 1: storeq */ @@ -2787,15 +2824,15 @@ emulate_loadpq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_storeq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_storeq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -2808,23 +2845,27 @@ emulate_storeq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_splatw3q (OrcOpcodeExecutor *ex, int offset, int n) +emulate_splatw3q (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; orc_union64 var33; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadq */ var32 = ptr4[i]; /* 1: splatw3q */ - var33.i = ((((orc_uint64)var32.i)>>48) << 48) | ((((orc_uint64)var32.i)>>48)<<32) | ((((orc_uint64)var32.i)>>48) << 16) | ((((orc_uint64)var32.i)>>48)); + var33.i = + ((((orc_uint64) var32. + i) >> 48) << 48) | ((((orc_uint64) var32.i) >> 48) << 32) | + ((((orc_uint64) var32.i) >> 48) << 16) | ((((orc_uint64) var32. + i) >> 48)); /* 2: storeq */ ptr0[i] = var33; } @@ -2832,16 +2873,16 @@ emulate_splatw3q (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_copyq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_copyq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; orc_union64 var33; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -2856,19 +2897,19 @@ emulate_copyq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_cmpeqq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_cmpeqq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; - const orc_union64 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; orc_union64 var32; orc_union64 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; - ptr5 = (orc_union64 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; + ptr5 = (orc_union64 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2885,19 +2926,19 @@ emulate_cmpeqq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_cmpgtsq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_cmpgtsq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; - const orc_union64 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; orc_union64 var32; orc_union64 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; - ptr5 = (orc_union64 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; + ptr5 = (orc_union64 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2914,19 +2955,19 @@ emulate_cmpgtsq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_andq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_andq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; - const orc_union64 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; orc_union64 var32; orc_union64 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; - ptr5 = (orc_union64 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; + ptr5 = (orc_union64 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2943,19 +2984,19 @@ emulate_andq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_andnq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_andnq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; - const orc_union64 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; orc_union64 var32; orc_union64 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; - ptr5 = (orc_union64 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; + ptr5 = (orc_union64 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -2972,19 +3013,19 @@ emulate_andnq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_orq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_orq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; - const orc_union64 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; orc_union64 var32; orc_union64 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; - ptr5 = (orc_union64 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; + ptr5 = (orc_union64 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -3001,19 +3042,19 @@ emulate_orq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_xorq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_xorq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; - const orc_union64 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; orc_union64 var32; orc_union64 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; - ptr5 = (orc_union64 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; + ptr5 = (orc_union64 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -3030,19 +3071,19 @@ emulate_xorq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_addq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_addq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; - const orc_union64 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; orc_union64 var32; orc_union64 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; - ptr5 = (orc_union64 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; + ptr5 = (orc_union64 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -3059,19 +3100,19 @@ emulate_addq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_subq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_subq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; - const orc_union64 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; orc_union64 var32; orc_union64 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; - ptr5 = (orc_union64 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; + ptr5 = (orc_union64 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -3088,23 +3129,23 @@ emulate_subq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_shlq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_shlq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; orc_union64 var33; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadq */ var32 = ptr4[i]; /* 1: shlq */ - var33.i = var32.i << ((orc_union64 *)(ex->src_ptrs[1]))->i; + var33.i = var32.i << ((orc_union64 *) (ex->src_ptrs[1]))->i; /* 2: storeq */ ptr0[i] = var33; } @@ -3112,23 +3153,23 @@ emulate_shlq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_shrsq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_shrsq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; orc_union64 var33; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadq */ var32 = ptr4[i]; /* 1: shrsq */ - var33.i = var32.i >> ((orc_union64 *)(ex->src_ptrs[1]))->i; + var33.i = var32.i >> ((orc_union64 *) (ex->src_ptrs[1]))->i; /* 2: storeq */ ptr0[i] = var33; } @@ -3136,23 +3177,23 @@ emulate_shrsq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_shruq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_shruq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; orc_union64 var33; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadq */ var32 = ptr4[i]; /* 1: shruq */ - var33.i = ((orc_uint64)var32.i) >> ((orc_union64 *)(ex->src_ptrs[1]))->i; + var33.i = ((orc_uint64) var32.i) >> ((orc_union64 *) (ex->src_ptrs[1]))->i; /* 2: storeq */ ptr0[i] = var33; } @@ -3160,16 +3201,16 @@ emulate_shruq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convsbw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convsbw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -3184,23 +3225,23 @@ emulate_convsbw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convubw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convubw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadb */ var32 = ptr4[i]; /* 1: convubw */ - var33.i = (orc_uint8)var32; + var33.i = (orc_uint8) var32; /* 2: storew */ ptr0[i] = var33; } @@ -3208,23 +3249,23 @@ emulate_convubw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_splatbw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_splatbw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadb */ var32 = ptr4[i]; /* 1: splatbw */ - var33.i = ((var32&0xff) << 8) | (var32&0xff); + var33.i = ((var32 & 0xff) << 8) | (var32 & 0xff); /* 2: storew */ ptr0[i] = var33; } @@ -3232,23 +3273,25 @@ emulate_splatbw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_splatbl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_splatbl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadb */ var32 = ptr4[i]; /* 1: splatbl */ - var33.i = ((var32&0xff) << 24) | ((var32&0xff)<<16) | ((var32&0xff) << 8) | (var32&0xff); + var33.i = + ((var32 & 0xff) << 24) | ((var32 & 0xff) << 16) | ((var32 & 0xff) << 8) + | (var32 & 0xff); /* 2: storel */ ptr0[i] = var33; } @@ -3256,16 +3299,16 @@ emulate_splatbl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convswl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convswl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -3280,23 +3323,23 @@ emulate_convswl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convuwl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convuwl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadw */ var32 = ptr4[i]; /* 1: convuwl */ - var33.i = (orc_uint16)var32.i; + var33.i = (orc_uint16) var32.i; /* 2: storel */ ptr0[i] = var33; } @@ -3304,16 +3347,16 @@ emulate_convuwl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convslq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convslq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union64 var33; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -3328,23 +3371,23 @@ emulate_convslq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convulq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convulq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union64 var33; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadl */ var32 = ptr4[i]; /* 1: convulq */ - var33.i = (orc_uint32)var32.i; + var33.i = (orc_uint32) var32.i; /* 2: storeq */ ptr0[i] = var33; } @@ -3352,16 +3395,16 @@ emulate_convulq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convwb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convwb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_int8 var33; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -3376,23 +3419,23 @@ emulate_convwb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convhwb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convhwb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_int8 var33; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadw */ var32 = ptr4[i]; /* 1: convhwb */ - var33 = ((orc_uint16)var32.i)>>8; + var33 = ((orc_uint16) var32.i) >> 8; /* 2: storeb */ ptr0[i] = var33; } @@ -3400,23 +3443,23 @@ emulate_convhwb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convssswb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convssswb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_int8 var33; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadw */ var32 = ptr4[i]; /* 1: convssswb */ - var33 = ORC_CLAMP_SB(var32.i); + var33 = ORC_CLAMP_SB (var32.i); /* 2: storeb */ ptr0[i] = var33; } @@ -3424,23 +3467,23 @@ emulate_convssswb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convsuswb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convsuswb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_int8 var33; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadw */ var32 = ptr4[i]; /* 1: convsuswb */ - var33 = ORC_CLAMP_UB(var32.i); + var33 = ORC_CLAMP_UB (var32.i); /* 2: storeb */ ptr0[i] = var33; } @@ -3448,23 +3491,23 @@ emulate_convsuswb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convusswb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convusswb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_int8 var33; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadw */ var32 = ptr4[i]; /* 1: convusswb */ - var33 = ORC_MIN((orc_uint16)var32.i,ORC_SB_MAX); + var33 = ORC_MIN ((orc_uint16) var32.i, ORC_SB_MAX); /* 2: storeb */ ptr0[i] = var33; } @@ -3472,23 +3515,23 @@ emulate_convusswb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convuuswb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convuuswb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_int8 var33; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadw */ var32 = ptr4[i]; /* 1: convuuswb */ - var33 = ORC_MIN((orc_uint16)var32.i,ORC_UB_MAX); + var33 = ORC_MIN ((orc_uint16) var32.i, ORC_UB_MAX); /* 2: storeb */ ptr0[i] = var33; } @@ -3496,16 +3539,16 @@ emulate_convuuswb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convlw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convlw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -3520,23 +3563,23 @@ emulate_convlw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convhlw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convhlw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadl */ var32 = ptr4[i]; /* 1: convhlw */ - var33.i = ((orc_uint32)var32.i)>>16; + var33.i = ((orc_uint32) var32.i) >> 16; /* 2: storew */ ptr0[i] = var33; } @@ -3544,23 +3587,23 @@ emulate_convhlw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convssslw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convssslw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadl */ var32 = ptr4[i]; /* 1: convssslw */ - var33.i = ORC_CLAMP_SW(var32.i); + var33.i = ORC_CLAMP_SW (var32.i); /* 2: storew */ ptr0[i] = var33; } @@ -3568,23 +3611,23 @@ emulate_convssslw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convsuslw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convsuslw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadl */ var32 = ptr4[i]; /* 1: convsuslw */ - var33.i = ORC_CLAMP_UW(var32.i); + var33.i = ORC_CLAMP_UW (var32.i); /* 2: storew */ ptr0[i] = var33; } @@ -3592,23 +3635,23 @@ emulate_convsuslw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convusslw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convusslw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadl */ var32 = ptr4[i]; /* 1: convusslw */ - var33.i = ORC_CLAMP((orc_uint32)var32.i,0,ORC_SW_MAX); + var33.i = ORC_CLAMP ((orc_uint32) var32.i, 0, ORC_SW_MAX); /* 2: storew */ ptr0[i] = var33; } @@ -3616,23 +3659,23 @@ emulate_convusslw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convuuslw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convuuslw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadl */ var32 = ptr4[i]; /* 1: convuuslw */ - var33.i = ORC_CLAMP_UW((orc_uint32)var32.i); + var33.i = ORC_CLAMP_UW ((orc_uint32) var32.i); /* 2: storew */ ptr0[i] = var33; } @@ -3640,16 +3683,16 @@ emulate_convuuslw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convql (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convql (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -3664,23 +3707,23 @@ emulate_convql (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convsssql (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convsssql (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadq */ var32 = ptr4[i]; /* 1: convsssql */ - var33.i = ORC_CLAMP_SL(var32.i); + var33.i = ORC_CLAMP_SL (var32.i); /* 2: storel */ ptr0[i] = var33; } @@ -3688,23 +3731,23 @@ emulate_convsssql (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convsusql (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convsusql (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadq */ var32 = ptr4[i]; /* 1: convsusql */ - var33.i = ORC_CLAMP_UL(var32.i); + var33.i = ORC_CLAMP_UL (var32.i); /* 2: storel */ ptr0[i] = var33; } @@ -3712,23 +3755,23 @@ emulate_convsusql (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convussql (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convussql (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadq */ var32 = ptr4[i]; /* 1: convussql */ - var33.i = ORC_CLAMP_SL((orc_uint64)var32.i); + var33.i = ORC_CLAMP_SL ((orc_uint64) var32.i); /* 2: storel */ ptr0[i] = var33; } @@ -3736,23 +3779,23 @@ emulate_convussql (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convuusql (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convuusql (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadq */ var32 = ptr4[i]; /* 1: convuusql */ - var33.i = ORC_CLAMP_UL((orc_uint64)var32.i); + var33.i = ORC_CLAMP_UL ((orc_uint64) var32.i); /* 2: storel */ ptr0[i] = var33; } @@ -3760,19 +3803,19 @@ emulate_convuusql (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mulsbw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mulsbw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -3789,19 +3832,19 @@ emulate_mulsbw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mulubw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mulubw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -3810,7 +3853,7 @@ emulate_mulubw (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadb */ var33 = ptr5[i]; /* 2: mulubw */ - var34.i = ((orc_uint8)var32) * ((orc_uint8)var33); + var34.i = ((orc_uint8) var32) * ((orc_uint8) var33); /* 3: storew */ ptr0[i] = var34; } @@ -3818,19 +3861,19 @@ emulate_mulubw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mulswl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mulswl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -3847,19 +3890,19 @@ emulate_mulswl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_muluwl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_muluwl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -3868,7 +3911,7 @@ emulate_muluwl (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadw */ var33 = ptr5[i]; /* 2: muluwl */ - var34.i = ((orc_uint16)var32.i) * ((orc_uint16)var33.i); + var34.i = ((orc_uint16) var32.i) * ((orc_uint16) var33.i); /* 3: storel */ ptr0[i] = var34; } @@ -3876,19 +3919,19 @@ emulate_muluwl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mulslq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mulslq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -3897,7 +3940,7 @@ emulate_mulslq (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadl */ var33 = ptr5[i]; /* 2: mulslq */ - var34.i = ((orc_int64)var32.i) * ((orc_int64)var33.i); + var34.i = ((orc_int64) var32.i) * ((orc_int64) var33.i); /* 3: storeq */ ptr0[i] = var34; } @@ -3905,19 +3948,19 @@ emulate_mulslq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mululq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mululq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -3926,7 +3969,9 @@ emulate_mululq (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadl */ var33 = ptr5[i]; /* 2: mululq */ - var34.i = ((orc_uint64)((orc_uint32)var32.i)) * ((orc_uint64)((orc_uint32)var33.i)); + var34.i = + ((orc_uint64) ((orc_uint32) var32.i)) * + ((orc_uint64) ((orc_uint32) var33.i)); /* 3: storeq */ ptr0[i] = var34; } @@ -3934,14 +3979,14 @@ emulate_mululq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_accw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_accw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - const orc_union16 * ORC_RESTRICT ptr4; - orc_union16 var12 = { 0 }; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var12 = { 0 }; orc_union16 var32; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -3950,19 +3995,20 @@ emulate_accw (OrcOpcodeExecutor *ex, int offset, int n) /* 1: accw */ var12.i = var12.i + var32.i; } - ((orc_union32 *)ex->dest_ptrs[0])->i = (var12.i + ((orc_union32 *)ex->dest_ptrs[0])->i) & 0xffff; + ((orc_union32 *) ex->dest_ptrs[0])->i = + (var12.i + ((orc_union32 *) ex->dest_ptrs[0])->i) & 0xffff; } void -emulate_accl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_accl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - const orc_union32 * ORC_RESTRICT ptr4; - orc_union32 var12 = { 0 }; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var12 = { 0 }; orc_union32 var32; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -3971,22 +4017,22 @@ emulate_accl (OrcOpcodeExecutor *ex, int offset, int n) /* 1: accl */ var12.i = var12.i + var32.i; } - ((orc_union32 *)ex->dest_ptrs[0])->i += var12.i; + ((orc_union32 *) ex->dest_ptrs[0])->i += var12.i; } void -emulate_accsadubl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_accsadubl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; - orc_union32 var12 = { 0 }; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + orc_union32 var12 = { 0 }; orc_int8 var32; orc_int8 var33; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -3995,30 +4041,32 @@ emulate_accsadubl (OrcOpcodeExecutor *ex, int offset, int n) /* 1: loadb */ var33 = ptr5[i]; /* 2: accsadubl */ - var12.i = var12.i + ORC_ABS((orc_int32)(orc_uint8)var32 - (orc_int32)(orc_uint8)var33); + var12.i = + var12.i + ORC_ABS ((orc_int32) (orc_uint8) var32 - + (orc_int32) (orc_uint8) var33); } - ((orc_union32 *)ex->dest_ptrs[0])->i += var12.i; + ((orc_union32 *) ex->dest_ptrs[0])->i += var12.i; } void -emulate_swapw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_swapw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadw */ var32 = ptr4[i]; /* 1: swapw */ - var33.i = ORC_SWAP_W(var32.i); + var33.i = ORC_SWAP_W (var32.i); /* 2: storew */ ptr0[i] = var33; } @@ -4026,23 +4074,23 @@ emulate_swapw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_swapl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_swapl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadl */ var32 = ptr4[i]; /* 1: swapl */ - var33.i = ORC_SWAP_L(var32.i); + var33.i = ORC_SWAP_L (var32.i); /* 2: storel */ ptr0[i] = var33; } @@ -4050,23 +4098,23 @@ emulate_swapl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_swapwl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_swapwl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadl */ var32 = ptr4[i]; /* 1: swapwl */ - var33.i = ((var32.i&0x0000ffff) << 16) | ((var32.i&0xffff0000) >> 16); + var33.i = ((var32.i & 0x0000ffff) << 16) | ((var32.i & 0xffff0000) >> 16); /* 2: storel */ ptr0[i] = var33; } @@ -4074,23 +4122,23 @@ emulate_swapwl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_swapq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_swapq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; orc_union64 var33; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadq */ var32 = ptr4[i]; /* 1: swapq */ - var33.i = ORC_SWAP_Q(var32.i); + var33.i = ORC_SWAP_Q (var32.i); /* 2: storeq */ ptr0[i] = var33; } @@ -4098,23 +4146,25 @@ emulate_swapq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_swaplq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_swaplq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; orc_union64 var33; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadq */ var32 = ptr4[i]; /* 1: swaplq */ - var33.i = (ORC_UINT64_C(var32.i&0x00000000ffffffff) << 32) | (ORC_UINT64_C(var32.i&0xffffffff00000000) >> 32); + var33.i = + (ORC_UINT64_C (var32.i & 0x00000000ffffffff) << 32) | + (ORC_UINT64_C (var32.i & 0xffffffff00000000) >> 32); /* 2: storeq */ ptr0[i] = var33; } @@ -4122,16 +4172,16 @@ emulate_swaplq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_select0wb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_select0wb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_int8 var33; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -4139,9 +4189,9 @@ emulate_select0wb (OrcOpcodeExecutor *ex, int offset, int n) var32 = ptr4[i]; /* 1: select0wb */ { - orc_union16 _src; - _src.i = var32.i; - var33 = _src.x2[0]; + orc_union16 _src; + _src.i = var32.i; + var33 = _src.x2[0]; } /* 2: storeb */ ptr0[i] = var33; @@ -4150,16 +4200,16 @@ emulate_select0wb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_select1wb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_select1wb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_int8 var33; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -4167,9 +4217,9 @@ emulate_select1wb (OrcOpcodeExecutor *ex, int offset, int n) var32 = ptr4[i]; /* 1: select1wb */ { - orc_union16 _src; - _src.i = var32.i; - var33 = _src.x2[1]; + orc_union16 _src; + _src.i = var32.i; + var33 = _src.x2[1]; } /* 2: storeb */ ptr0[i] = var33; @@ -4178,16 +4228,16 @@ emulate_select1wb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_select0lw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_select0lw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -4195,9 +4245,9 @@ emulate_select0lw (OrcOpcodeExecutor *ex, int offset, int n) var32 = ptr4[i]; /* 1: select0lw */ { - orc_union32 _src; - _src.i = var32.i; - var33.i = _src.x2[0]; + orc_union32 _src; + _src.i = var32.i; + var33.i = _src.x2[0]; } /* 2: storew */ ptr0[i] = var33; @@ -4206,16 +4256,16 @@ emulate_select0lw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_select1lw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_select1lw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union16 var33; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -4223,9 +4273,9 @@ emulate_select1lw (OrcOpcodeExecutor *ex, int offset, int n) var32 = ptr4[i]; /* 1: select1lw */ { - orc_union32 _src; - _src.i = var32.i; - var33.i = _src.x2[1]; + orc_union32 _src; + _src.i = var32.i; + var33.i = _src.x2[1]; } /* 2: storew */ ptr0[i] = var33; @@ -4234,16 +4284,16 @@ emulate_select1lw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_select0ql (OrcOpcodeExecutor *ex, int offset, int n) +emulate_select0ql (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -4251,9 +4301,9 @@ emulate_select0ql (OrcOpcodeExecutor *ex, int offset, int n) var32 = ptr4[i]; /* 1: select0ql */ { - orc_union64 _src; - _src.i = var32.i; - var33.i = _src.x2[0]; + orc_union64 _src; + _src.i = var32.i; + var33.i = _src.x2[0]; } /* 2: storel */ ptr0[i] = var33; @@ -4262,16 +4312,16 @@ emulate_select0ql (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_select1ql (OrcOpcodeExecutor *ex, int offset, int n) +emulate_select1ql (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -4279,9 +4329,9 @@ emulate_select1ql (OrcOpcodeExecutor *ex, int offset, int n) var32 = ptr4[i]; /* 1: select1ql */ { - orc_union64 _src; - _src.i = var32.i; - var33.i = _src.x2[1]; + orc_union64 _src; + _src.i = var32.i; + var33.i = _src.x2[1]; } /* 2: storel */ ptr0[i] = var33; @@ -4290,19 +4340,19 @@ emulate_select1ql (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mergelq (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mergelq (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -4312,10 +4362,10 @@ emulate_mergelq (OrcOpcodeExecutor *ex, int offset, int n) var33 = ptr5[i]; /* 2: mergelq */ { - orc_union64 _dest; - _dest.x2[0] = var32.i; - _dest.x2[1] = var33.i; - var34.i = _dest.i; + orc_union64 _dest; + _dest.x2[0] = var32.i; + _dest.x2[1] = var33.i; + var34.i = _dest.i; } /* 3: storeq */ ptr0[i] = var34; @@ -4324,19 +4374,19 @@ emulate_mergelq (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mergewl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mergewl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union16 * ORC_RESTRICT ptr4; - const orc_union16 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; orc_union16 var32; orc_union16 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; - ptr5 = (orc_union16 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; + ptr5 = (orc_union16 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -4346,10 +4396,10 @@ emulate_mergewl (OrcOpcodeExecutor *ex, int offset, int n) var33 = ptr5[i]; /* 2: mergewl */ { - orc_union32 _dest; - _dest.x2[0] = var32.i; - _dest.x2[1] = var33.i; - var34.i = _dest.i; + orc_union32 _dest; + _dest.x2[0] = var32.i; + _dest.x2[1] = var33.i; + var34.i = _dest.i; } /* 3: storel */ ptr0[i] = var34; @@ -4358,19 +4408,19 @@ emulate_mergewl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mergebw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mergebw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; - const orc_int8 * ORC_RESTRICT ptr5; + orc_union16 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; orc_int8 var32; orc_int8 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr4 = (orc_int8 *)ex->src_ptrs[0]; - ptr5 = (orc_int8 *)ex->src_ptrs[1]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr4 = (orc_int8 *) ex->src_ptrs[0]; + ptr5 = (orc_int8 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -4380,10 +4430,10 @@ emulate_mergebw (OrcOpcodeExecutor *ex, int offset, int n) var33 = ptr5[i]; /* 2: mergebw */ { - orc_union16 _dest; - _dest.x2[0] = var32; - _dest.x2[1] = var33; - var34.i = _dest.i; + orc_union16 _dest; + _dest.x2[0] = var32; + _dest.x2[1] = var33; + var34.i = _dest.i; } /* 3: storew */ ptr0[i] = var34; @@ -4392,19 +4442,19 @@ emulate_mergebw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_splitql (OrcOpcodeExecutor *ex, int offset, int n) +emulate_splitql (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - orc_union32 * ORC_RESTRICT ptr1; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + orc_union32 *ORC_RESTRICT ptr1; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr1 = (orc_union32 *)ex->dest_ptrs[1]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr1 = (orc_union32 *) ex->dest_ptrs[1]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -4412,10 +4462,10 @@ emulate_splitql (OrcOpcodeExecutor *ex, int offset, int n) var32 = ptr4[i]; /* 1: splitql */ { - orc_union64 _src; - _src.i = var32.i; - var33.i = _src.x2[1]; - var34.i = _src.x2[0]; + orc_union64 _src; + _src.i = var32.i; + var33.i = _src.x2[1]; + var34.i = _src.x2[0]; } /* 2: storel */ ptr0[i] = var33; @@ -4426,19 +4476,19 @@ emulate_splitql (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_splitlw (OrcOpcodeExecutor *ex, int offset, int n) +emulate_splitlw (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union16 * ORC_RESTRICT ptr0; - orc_union16 * ORC_RESTRICT ptr1; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 *ORC_RESTRICT ptr1; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union16 var33; orc_union16 var34; - ptr0 = (orc_union16 *)ex->dest_ptrs[0]; - ptr1 = (orc_union16 *)ex->dest_ptrs[1]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union16 *) ex->dest_ptrs[0]; + ptr1 = (orc_union16 *) ex->dest_ptrs[1]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -4446,10 +4496,10 @@ emulate_splitlw (OrcOpcodeExecutor *ex, int offset, int n) var32 = ptr4[i]; /* 1: splitlw */ { - orc_union32 _src; - _src.i = var32.i; - var33.i = _src.x2[1]; - var34.i = _src.x2[0]; + orc_union32 _src; + _src.i = var32.i; + var33.i = _src.x2[1]; + var34.i = _src.x2[0]; } /* 2: storew */ ptr0[i] = var33; @@ -4460,19 +4510,19 @@ emulate_splitlw (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_splitwb (OrcOpcodeExecutor *ex, int offset, int n) +emulate_splitwb (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_int8 * ORC_RESTRICT ptr0; - orc_int8 * ORC_RESTRICT ptr1; - const orc_union16 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr1; + const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var32; orc_int8 var33; orc_int8 var34; - ptr0 = (orc_int8 *)ex->dest_ptrs[0]; - ptr1 = (orc_int8 *)ex->dest_ptrs[1]; - ptr4 = (orc_union16 *)ex->src_ptrs[0]; + ptr0 = (orc_int8 *) ex->dest_ptrs[0]; + ptr1 = (orc_int8 *) ex->dest_ptrs[1]; + ptr4 = (orc_union16 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -4480,10 +4530,10 @@ emulate_splitwb (OrcOpcodeExecutor *ex, int offset, int n) var32 = ptr4[i]; /* 1: splitwb */ { - orc_union16 _src; - _src.i = var32.i; - var33 = _src.x2[1]; - var34 = _src.x2[0]; + orc_union16 _src; + _src.i = var32.i; + var33 = _src.x2[1]; + var34 = _src.x2[0]; } /* 2: storeb */ ptr0[i] = var33; @@ -4494,19 +4544,19 @@ emulate_splitwb (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_addf (OrcOpcodeExecutor *ex, int offset, int n) +emulate_addf (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -4516,13 +4566,13 @@ emulate_addf (OrcOpcodeExecutor *ex, int offset, int n) var33 = ptr5[i]; /* 2: addf */ { - orc_union32 _src1; - orc_union32 _src2; - orc_union32 _dest1; - _src1.i = ORC_DENORMAL(var32.i); - _src2.i = ORC_DENORMAL(var33.i); - _dest1.f = _src1.f + _src2.f; - var34.i = ORC_DENORMAL(_dest1.i); + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var32.i); + _src2.i = ORC_DENORMAL (var33.i); + _dest1.f = _src1.f + _src2.f; + var34.i = ORC_DENORMAL (_dest1.i); } /* 3: storel */ ptr0[i] = var34; @@ -4531,19 +4581,19 @@ emulate_addf (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_subf (OrcOpcodeExecutor *ex, int offset, int n) +emulate_subf (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -4553,13 +4603,13 @@ emulate_subf (OrcOpcodeExecutor *ex, int offset, int n) var33 = ptr5[i]; /* 2: subf */ { - orc_union32 _src1; - orc_union32 _src2; - orc_union32 _dest1; - _src1.i = ORC_DENORMAL(var32.i); - _src2.i = ORC_DENORMAL(var33.i); - _dest1.f = _src1.f - _src2.f; - var34.i = ORC_DENORMAL(_dest1.i); + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var32.i); + _src2.i = ORC_DENORMAL (var33.i); + _dest1.f = _src1.f - _src2.f; + var34.i = ORC_DENORMAL (_dest1.i); } /* 3: storel */ ptr0[i] = var34; @@ -4568,19 +4618,19 @@ emulate_subf (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mulf (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mulf (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -4590,13 +4640,13 @@ emulate_mulf (OrcOpcodeExecutor *ex, int offset, int n) var33 = ptr5[i]; /* 2: mulf */ { - orc_union32 _src1; - orc_union32 _src2; - orc_union32 _dest1; - _src1.i = ORC_DENORMAL(var32.i); - _src2.i = ORC_DENORMAL(var33.i); - _dest1.f = _src1.f * _src2.f; - var34.i = ORC_DENORMAL(_dest1.i); + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var32.i); + _src2.i = ORC_DENORMAL (var33.i); + _dest1.f = _src1.f * _src2.f; + var34.i = ORC_DENORMAL (_dest1.i); } /* 3: storel */ ptr0[i] = var34; @@ -4605,19 +4655,19 @@ emulate_mulf (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_divf (OrcOpcodeExecutor *ex, int offset, int n) +emulate_divf (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -4627,13 +4677,13 @@ emulate_divf (OrcOpcodeExecutor *ex, int offset, int n) var33 = ptr5[i]; /* 2: divf */ { - orc_union32 _src1; - orc_union32 _src2; - orc_union32 _dest1; - _src1.i = ORC_DENORMAL(var32.i); - _src2.i = ORC_DENORMAL(var33.i); - _dest1.f = _src1.f / _src2.f; - var34.i = ORC_DENORMAL(_dest1.i); + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var32.i); + _src2.i = ORC_DENORMAL (var33.i); + _dest1.f = _src1.f / _src2.f; + var34.i = ORC_DENORMAL (_dest1.i); } /* 3: storel */ ptr0[i] = var34; @@ -4642,16 +4692,16 @@ emulate_divf (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_sqrtf (OrcOpcodeExecutor *ex, int offset, int n) +emulate_sqrtf (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -4659,11 +4709,11 @@ emulate_sqrtf (OrcOpcodeExecutor *ex, int offset, int n) var32 = ptr4[i]; /* 1: sqrtf */ { - orc_union32 _src1; - orc_union32 _dest1; - _src1.i = ORC_DENORMAL(var32.i); - _dest1.f = sqrt(_src1.f); - var33.i = ORC_DENORMAL(_dest1.i); + orc_union32 _src1; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var32.i); + _dest1.f = sqrt (_src1.f); + var33.i = ORC_DENORMAL (_dest1.i); } /* 2: storel */ ptr0[i] = var33; @@ -4672,19 +4722,19 @@ emulate_sqrtf (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_maxf (OrcOpcodeExecutor *ex, int offset, int n) +emulate_maxf (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -4696,11 +4746,14 @@ emulate_maxf (OrcOpcodeExecutor *ex, int offset, int n) { orc_union32 _src1; orc_union32 _src2; - _src1.i = ORC_DENORMAL(var32.i); - _src2.i = ORC_DENORMAL(var33.i); - if (ORC_ISNAN(_src1.i)) var34.i = _src1.i; - else if (ORC_ISNAN(_src2.i)) var34.i = _src2.i; - else var34.i = (_src1.f > _src2.f) ? _src1.i : _src2.i; + _src1.i = ORC_DENORMAL (var32.i); + _src2.i = ORC_DENORMAL (var33.i); + if (ORC_ISNAN (_src1.i)) + var34.i = _src1.i; + else if (ORC_ISNAN (_src2.i)) + var34.i = _src2.i; + else + var34.i = (_src1.f > _src2.f) ? _src1.i : _src2.i; } /* 3: storel */ ptr0[i] = var34; @@ -4709,19 +4762,19 @@ emulate_maxf (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_minf (OrcOpcodeExecutor *ex, int offset, int n) +emulate_minf (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -4733,11 +4786,14 @@ emulate_minf (OrcOpcodeExecutor *ex, int offset, int n) { orc_union32 _src1; orc_union32 _src2; - _src1.i = ORC_DENORMAL(var32.i); - _src2.i = ORC_DENORMAL(var33.i); - if (ORC_ISNAN(_src1.i)) var34.i = _src1.i; - else if (ORC_ISNAN(_src2.i)) var34.i = _src2.i; - else var34.i = (_src1.f < _src2.f) ? _src1.i : _src2.i; + _src1.i = ORC_DENORMAL (var32.i); + _src2.i = ORC_DENORMAL (var33.i); + if (ORC_ISNAN (_src1.i)) + var34.i = _src1.i; + else if (ORC_ISNAN (_src2.i)) + var34.i = _src2.i; + else + var34.i = (_src1.f < _src2.f) ? _src1.i : _src2.i; } /* 3: storel */ ptr0[i] = var34; @@ -4746,19 +4802,19 @@ emulate_minf (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_cmpeqf (OrcOpcodeExecutor *ex, int offset, int n) +emulate_cmpeqf (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -4768,11 +4824,11 @@ emulate_cmpeqf (OrcOpcodeExecutor *ex, int offset, int n) var33 = ptr5[i]; /* 2: cmpeqf */ { - orc_union32 _src1; - orc_union32 _src2; - _src1.i = ORC_DENORMAL(var32.i); - _src2.i = ORC_DENORMAL(var33.i); - var34.i = (_src1.f == _src2.f) ? (~0) : 0; + orc_union32 _src1; + orc_union32 _src2; + _src1.i = ORC_DENORMAL (var32.i); + _src2.i = ORC_DENORMAL (var33.i); + var34.i = (_src1.f == _src2.f) ? (~0) : 0; } /* 3: storel */ ptr0[i] = var34; @@ -4781,19 +4837,19 @@ emulate_cmpeqf (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_cmpltf (OrcOpcodeExecutor *ex, int offset, int n) +emulate_cmpltf (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -4803,11 +4859,11 @@ emulate_cmpltf (OrcOpcodeExecutor *ex, int offset, int n) var33 = ptr5[i]; /* 2: cmpltf */ { - orc_union32 _src1; - orc_union32 _src2; - _src1.i = ORC_DENORMAL(var32.i); - _src2.i = ORC_DENORMAL(var33.i); - var34.i = (_src1.f < _src2.f) ? (~0) : 0; + orc_union32 _src1; + orc_union32 _src2; + _src1.i = ORC_DENORMAL (var32.i); + _src2.i = ORC_DENORMAL (var33.i); + var34.i = (_src1.f < _src2.f) ? (~0) : 0; } /* 3: storel */ ptr0[i] = var34; @@ -4816,19 +4872,19 @@ emulate_cmpltf (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_cmplef (OrcOpcodeExecutor *ex, int offset, int n) +emulate_cmplef (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; - const orc_union32 * ORC_RESTRICT ptr5; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + const orc_union32 *ORC_RESTRICT ptr5; orc_union32 var32; orc_union32 var33; orc_union32 var34; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; - ptr5 = (orc_union32 *)ex->src_ptrs[1]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; + ptr5 = (orc_union32 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -4838,11 +4894,11 @@ emulate_cmplef (OrcOpcodeExecutor *ex, int offset, int n) var33 = ptr5[i]; /* 2: cmplef */ { - orc_union32 _src1; - orc_union32 _src2; - _src1.i = ORC_DENORMAL(var32.i); - _src2.i = ORC_DENORMAL(var33.i); - var34.i = (_src1.f <= _src2.f) ? (~0) : 0; + orc_union32 _src1; + orc_union32 _src2; + _src1.i = ORC_DENORMAL (var32.i); + _src2.i = ORC_DENORMAL (var33.i); + var34.i = (_src1.f <= _src2.f) ? (~0) : 0; } /* 3: storel */ ptr0[i] = var34; @@ -4851,16 +4907,16 @@ emulate_cmplef (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convfl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convfl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -4868,10 +4924,11 @@ emulate_convfl (OrcOpcodeExecutor *ex, int offset, int n) var32 = ptr4[i]; /* 1: convfl */ { - int tmp; - tmp = (int)var32.f; - if (tmp == 0x80000000 && !(var32.i&0x80000000)) tmp = 0x7fffffff; - var33.i = tmp; + int tmp; + tmp = (int) var32.f; + if (tmp == 0x80000000 && !(var32.i & 0x80000000)) + tmp = 0x7fffffff; + var33.i = tmp; } /* 2: storel */ ptr0[i] = var33; @@ -4880,23 +4937,23 @@ emulate_convfl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convlf (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convlf (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadl */ var32 = ptr4[i]; /* 1: convlf */ - var33.f = var32.i; + var33.f = var32.i; /* 2: storel */ ptr0[i] = var33; } @@ -4904,19 +4961,19 @@ emulate_convlf (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_addd (OrcOpcodeExecutor *ex, int offset, int n) +emulate_addd (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; - const orc_union64 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; orc_union64 var32; orc_union64 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; - ptr5 = (orc_union64 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; + ptr5 = (orc_union64 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -4926,13 +4983,13 @@ emulate_addd (OrcOpcodeExecutor *ex, int offset, int n) var33 = ptr5[i]; /* 2: addd */ { - orc_union64 _src1; - orc_union64 _src2; - orc_union64 _dest1; - _src1.i = ORC_DENORMAL_DOUBLE(var32.i); - _src2.i = ORC_DENORMAL_DOUBLE(var33.i); - _dest1.f = _src1.f + _src2.f; - var34.i = ORC_DENORMAL_DOUBLE(_dest1.i); + orc_union64 _src1; + orc_union64 _src2; + orc_union64 _dest1; + _src1.i = ORC_DENORMAL_DOUBLE (var32.i); + _src2.i = ORC_DENORMAL_DOUBLE (var33.i); + _dest1.f = _src1.f + _src2.f; + var34.i = ORC_DENORMAL_DOUBLE (_dest1.i); } /* 3: storeq */ ptr0[i] = var34; @@ -4941,19 +4998,19 @@ emulate_addd (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_subd (OrcOpcodeExecutor *ex, int offset, int n) +emulate_subd (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; - const orc_union64 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; orc_union64 var32; orc_union64 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; - ptr5 = (orc_union64 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; + ptr5 = (orc_union64 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -4963,13 +5020,13 @@ emulate_subd (OrcOpcodeExecutor *ex, int offset, int n) var33 = ptr5[i]; /* 2: subd */ { - orc_union64 _src1; - orc_union64 _src2; - orc_union64 _dest1; - _src1.i = ORC_DENORMAL_DOUBLE(var32.i); - _src2.i = ORC_DENORMAL_DOUBLE(var33.i); - _dest1.f = _src1.f - _src2.f; - var34.i = ORC_DENORMAL_DOUBLE(_dest1.i); + orc_union64 _src1; + orc_union64 _src2; + orc_union64 _dest1; + _src1.i = ORC_DENORMAL_DOUBLE (var32.i); + _src2.i = ORC_DENORMAL_DOUBLE (var33.i); + _dest1.f = _src1.f - _src2.f; + var34.i = ORC_DENORMAL_DOUBLE (_dest1.i); } /* 3: storeq */ ptr0[i] = var34; @@ -4978,19 +5035,19 @@ emulate_subd (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_muld (OrcOpcodeExecutor *ex, int offset, int n) +emulate_muld (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; - const orc_union64 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; orc_union64 var32; orc_union64 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; - ptr5 = (orc_union64 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; + ptr5 = (orc_union64 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -5000,13 +5057,13 @@ emulate_muld (OrcOpcodeExecutor *ex, int offset, int n) var33 = ptr5[i]; /* 2: muld */ { - orc_union64 _src1; - orc_union64 _src2; - orc_union64 _dest1; - _src1.i = ORC_DENORMAL_DOUBLE(var32.i); - _src2.i = ORC_DENORMAL_DOUBLE(var33.i); - _dest1.f = _src1.f * _src2.f; - var34.i = ORC_DENORMAL_DOUBLE(_dest1.i); + orc_union64 _src1; + orc_union64 _src2; + orc_union64 _dest1; + _src1.i = ORC_DENORMAL_DOUBLE (var32.i); + _src2.i = ORC_DENORMAL_DOUBLE (var33.i); + _dest1.f = _src1.f * _src2.f; + var34.i = ORC_DENORMAL_DOUBLE (_dest1.i); } /* 3: storeq */ ptr0[i] = var34; @@ -5015,19 +5072,19 @@ emulate_muld (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_divd (OrcOpcodeExecutor *ex, int offset, int n) +emulate_divd (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; - const orc_union64 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; orc_union64 var32; orc_union64 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; - ptr5 = (orc_union64 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; + ptr5 = (orc_union64 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -5037,13 +5094,13 @@ emulate_divd (OrcOpcodeExecutor *ex, int offset, int n) var33 = ptr5[i]; /* 2: divd */ { - orc_union64 _src1; - orc_union64 _src2; - orc_union64 _dest1; - _src1.i = ORC_DENORMAL_DOUBLE(var32.i); - _src2.i = ORC_DENORMAL_DOUBLE(var33.i); - _dest1.f = _src1.f / _src2.f; - var34.i = ORC_DENORMAL_DOUBLE(_dest1.i); + orc_union64 _src1; + orc_union64 _src2; + orc_union64 _dest1; + _src1.i = ORC_DENORMAL_DOUBLE (var32.i); + _src2.i = ORC_DENORMAL_DOUBLE (var33.i); + _dest1.f = _src1.f / _src2.f; + var34.i = ORC_DENORMAL_DOUBLE (_dest1.i); } /* 3: storeq */ ptr0[i] = var34; @@ -5052,16 +5109,16 @@ emulate_divd (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_sqrtd (OrcOpcodeExecutor *ex, int offset, int n) +emulate_sqrtd (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; orc_union64 var33; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -5069,11 +5126,11 @@ emulate_sqrtd (OrcOpcodeExecutor *ex, int offset, int n) var32 = ptr4[i]; /* 1: sqrtd */ { - orc_union64 _src1; - orc_union64 _dest1; - _src1.i = ORC_DENORMAL_DOUBLE(var32.i); - _dest1.f = sqrt(_src1.f); - var33.i = ORC_DENORMAL_DOUBLE(_dest1.i); + orc_union64 _src1; + orc_union64 _dest1; + _src1.i = ORC_DENORMAL_DOUBLE (var32.i); + _dest1.f = sqrt (_src1.f); + var33.i = ORC_DENORMAL_DOUBLE (_dest1.i); } /* 2: storeq */ ptr0[i] = var33; @@ -5082,19 +5139,19 @@ emulate_sqrtd (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_maxd (OrcOpcodeExecutor *ex, int offset, int n) +emulate_maxd (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; - const orc_union64 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; orc_union64 var32; orc_union64 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; - ptr5 = (orc_union64 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; + ptr5 = (orc_union64 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -5106,11 +5163,14 @@ emulate_maxd (OrcOpcodeExecutor *ex, int offset, int n) { orc_union64 _src1; orc_union64 _src2; - _src1.i = ORC_DENORMAL_DOUBLE(var32.i); - _src2.i = ORC_DENORMAL_DOUBLE(var33.i); - if (ORC_ISNAN_DOUBLE(_src1.i)) var34.i = _src1.i; - else if (ORC_ISNAN_DOUBLE(_src2.i)) var34.i = _src2.i; - else var34.i = (_src1.f > _src2.f) ? _src1.i : _src2.i; + _src1.i = ORC_DENORMAL_DOUBLE (var32.i); + _src2.i = ORC_DENORMAL_DOUBLE (var33.i); + if (ORC_ISNAN_DOUBLE (_src1.i)) + var34.i = _src1.i; + else if (ORC_ISNAN_DOUBLE (_src2.i)) + var34.i = _src2.i; + else + var34.i = (_src1.f > _src2.f) ? _src1.i : _src2.i; } /* 3: storeq */ ptr0[i] = var34; @@ -5119,19 +5179,19 @@ emulate_maxd (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_mind (OrcOpcodeExecutor *ex, int offset, int n) +emulate_mind (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; - const orc_union64 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; orc_union64 var32; orc_union64 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; - ptr5 = (orc_union64 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; + ptr5 = (orc_union64 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -5143,11 +5203,14 @@ emulate_mind (OrcOpcodeExecutor *ex, int offset, int n) { orc_union64 _src1; orc_union64 _src2; - _src1.i = ORC_DENORMAL_DOUBLE(var32.i); - _src2.i = ORC_DENORMAL_DOUBLE(var33.i); - if (ORC_ISNAN_DOUBLE(_src1.i)) var34.i = _src1.i; - else if (ORC_ISNAN_DOUBLE(_src2.i)) var34.i = _src2.i; - else var34.i = (_src1.f < _src2.f) ? _src1.i : _src2.i; + _src1.i = ORC_DENORMAL_DOUBLE (var32.i); + _src2.i = ORC_DENORMAL_DOUBLE (var33.i); + if (ORC_ISNAN_DOUBLE (_src1.i)) + var34.i = _src1.i; + else if (ORC_ISNAN_DOUBLE (_src2.i)) + var34.i = _src2.i; + else + var34.i = (_src1.f < _src2.f) ? _src1.i : _src2.i; } /* 3: storeq */ ptr0[i] = var34; @@ -5156,19 +5219,19 @@ emulate_mind (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_cmpeqd (OrcOpcodeExecutor *ex, int offset, int n) +emulate_cmpeqd (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; - const orc_union64 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; orc_union64 var32; orc_union64 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; - ptr5 = (orc_union64 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; + ptr5 = (orc_union64 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -5178,11 +5241,11 @@ emulate_cmpeqd (OrcOpcodeExecutor *ex, int offset, int n) var33 = ptr5[i]; /* 2: cmpeqd */ { - orc_union64 _src1; - orc_union64 _src2; - _src1.i = ORC_DENORMAL_DOUBLE(var32.i); - _src2.i = ORC_DENORMAL_DOUBLE(var33.i); - var34.i = (_src1.f == _src2.f) ? ORC_UINT64_C(~0) : 0; + orc_union64 _src1; + orc_union64 _src2; + _src1.i = ORC_DENORMAL_DOUBLE (var32.i); + _src2.i = ORC_DENORMAL_DOUBLE (var33.i); + var34.i = (_src1.f == _src2.f) ? ORC_UINT64_C (~0) : 0; } /* 3: storeq */ ptr0[i] = var34; @@ -5191,19 +5254,19 @@ emulate_cmpeqd (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_cmpltd (OrcOpcodeExecutor *ex, int offset, int n) +emulate_cmpltd (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; - const orc_union64 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; orc_union64 var32; orc_union64 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; - ptr5 = (orc_union64 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; + ptr5 = (orc_union64 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -5213,11 +5276,11 @@ emulate_cmpltd (OrcOpcodeExecutor *ex, int offset, int n) var33 = ptr5[i]; /* 2: cmpltd */ { - orc_union64 _src1; - orc_union64 _src2; - _src1.i = ORC_DENORMAL_DOUBLE(var32.i); - _src2.i = ORC_DENORMAL_DOUBLE(var33.i); - var34.i = (_src1.f < _src2.f) ? ORC_UINT64_C(~0) : 0; + orc_union64 _src1; + orc_union64 _src2; + _src1.i = ORC_DENORMAL_DOUBLE (var32.i); + _src2.i = ORC_DENORMAL_DOUBLE (var33.i); + var34.i = (_src1.f < _src2.f) ? ORC_UINT64_C (~0) : 0; } /* 3: storeq */ ptr0[i] = var34; @@ -5226,19 +5289,19 @@ emulate_cmpltd (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_cmpled (OrcOpcodeExecutor *ex, int offset, int n) +emulate_cmpled (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; - const orc_union64 * ORC_RESTRICT ptr5; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; + const orc_union64 *ORC_RESTRICT ptr5; orc_union64 var32; orc_union64 var33; orc_union64 var34; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; - ptr5 = (orc_union64 *)ex->src_ptrs[1]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; + ptr5 = (orc_union64 *) ex->src_ptrs[1]; for (i = 0; i < n; i++) { @@ -5248,11 +5311,11 @@ emulate_cmpled (OrcOpcodeExecutor *ex, int offset, int n) var33 = ptr5[i]; /* 2: cmpled */ { - orc_union64 _src1; - orc_union64 _src2; - _src1.i = ORC_DENORMAL_DOUBLE(var32.i); - _src2.i = ORC_DENORMAL_DOUBLE(var33.i); - var34.i = (_src1.f <= _src2.f) ? ORC_UINT64_C(~0) : 0; + orc_union64 _src1; + orc_union64 _src2; + _src1.i = ORC_DENORMAL_DOUBLE (var32.i); + _src2.i = ORC_DENORMAL_DOUBLE (var33.i); + var34.i = (_src1.f <= _src2.f) ? ORC_UINT64_C (~0) : 0; } /* 3: storeq */ ptr0[i] = var34; @@ -5261,16 +5324,16 @@ emulate_cmpled (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convdl (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convdl (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -5278,10 +5341,11 @@ emulate_convdl (OrcOpcodeExecutor *ex, int offset, int n) var32 = ptr4[i]; /* 1: convdl */ { - int tmp; - tmp = var32.f; - if (tmp == 0x80000000 && !(var32.i & ORC_UINT64_C(0x8000000000000000))) tmp = 0x7fffffff; - var33.i = tmp; + int tmp; + tmp = var32.f; + if (tmp == 0x80000000 && !(var32.i & ORC_UINT64_C (0x8000000000000000))) + tmp = 0x7fffffff; + var33.i = tmp; } /* 2: storel */ ptr0[i] = var33; @@ -5290,23 +5354,23 @@ emulate_convdl (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convld (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convld (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union64 var33; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { /* 0: loadl */ var32 = ptr4[i]; /* 1: convld */ - var33.f = var32.i; + var33.f = var32.i; /* 2: storeq */ ptr0[i] = var33; } @@ -5314,16 +5378,16 @@ emulate_convld (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convfd (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convfd (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union64 * ORC_RESTRICT ptr0; - const orc_union32 * ORC_RESTRICT ptr4; + orc_union64 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union64 var33; - ptr0 = (orc_union64 *)ex->dest_ptrs[0]; - ptr4 = (orc_union32 *)ex->src_ptrs[0]; + ptr0 = (orc_union64 *) ex->dest_ptrs[0]; + ptr4 = (orc_union32 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -5331,9 +5395,9 @@ emulate_convfd (OrcOpcodeExecutor *ex, int offset, int n) var32 = ptr4[i]; /* 1: convfd */ { - orc_union32 _src1; - _src1.i = ORC_DENORMAL(var32.i); - var33.f = _src1.f; + orc_union32 _src1; + _src1.i = ORC_DENORMAL (var32.i); + var33.f = _src1.f; } /* 2: storeq */ ptr0[i] = var33; @@ -5342,16 +5406,16 @@ emulate_convfd (OrcOpcodeExecutor *ex, int offset, int n) } void -emulate_convdf (OrcOpcodeExecutor *ex, int offset, int n) +emulate_convdf (OrcOpcodeExecutor * ex, int offset, int n) { int i; - orc_union32 * ORC_RESTRICT ptr0; - const orc_union64 * ORC_RESTRICT ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union64 *ORC_RESTRICT ptr4; orc_union64 var32; orc_union32 var33; - ptr0 = (orc_union32 *)ex->dest_ptrs[0]; - ptr4 = (orc_union64 *)ex->src_ptrs[0]; + ptr0 = (orc_union32 *) ex->dest_ptrs[0]; + ptr4 = (orc_union64 *) ex->src_ptrs[0]; for (i = 0; i < n; i++) { @@ -5359,15 +5423,14 @@ emulate_convdf (OrcOpcodeExecutor *ex, int offset, int n) var32 = ptr4[i]; /* 1: convdf */ { - orc_union64 _src1; - orc_union32 _dest; - _src1.i = ORC_DENORMAL_DOUBLE(var32.i); - _dest.f = _src1.f; - var33.i = ORC_DENORMAL(_dest.i); + orc_union64 _src1; + orc_union32 _dest; + _src1.i = ORC_DENORMAL_DOUBLE (var32.i); + _dest.f = _src1.f; + var33.i = ORC_DENORMAL (_dest.i); } /* 2: storel */ ptr0[i] = var33; } } - diff --git a/orc/orcexecutor.c b/orc/orcexecutor.c index 2a3d0b0..2666396 100644 --- a/orc/orcexecutor.c +++ b/orc/orcexecutor.c @@ -17,12 +17,12 @@ #define CHUNK_SIZE 16 OrcExecutor * -orc_executor_new (OrcProgram *program) +orc_executor_new (OrcProgram * program) { OrcExecutor *ex; - ex = malloc(sizeof(OrcExecutor)); - memset(ex,0,sizeof(OrcExecutor)); + ex = malloc (sizeof (OrcExecutor)); + memset (ex, 0, sizeof (OrcExecutor)); ex->program = program; ex->arrays[ORC_VAR_A2] = program->orccode; @@ -31,16 +31,16 @@ orc_executor_new (OrcProgram *program) } void -orc_executor_free (OrcExecutor *ex) +orc_executor_free (OrcExecutor * ex) { free (ex); } void -orc_executor_run (OrcExecutor *ex) +orc_executor_run (OrcExecutor * ex) { void (*func) (OrcExecutor *); - OrcCode *code = (OrcCode *)ex->arrays[ORC_VAR_A2]; + OrcCode *code = (OrcCode *) ex->arrays[ORC_VAR_A2]; func = code->exec; if (func) { @@ -52,14 +52,14 @@ orc_executor_run (OrcExecutor *ex) } void -orc_executor_run_backup (OrcExecutor *ex) +orc_executor_run_backup (OrcExecutor * ex) { void (*func) (OrcExecutor *); if (ex->program) { func = ex->program->backup_func; } else { - OrcCode *code = (OrcCode *)ex->arrays[ORC_VAR_A2]; + OrcCode *code = (OrcCode *) ex->arrays[ORC_VAR_A2]; func = code->exec; } if (func) { @@ -71,26 +71,26 @@ orc_executor_run_backup (OrcExecutor *ex) } void -orc_executor_set_program (OrcExecutor *ex, OrcProgram *program) +orc_executor_set_program (OrcExecutor * ex, OrcProgram * program) { ex->program = program; - ex->arrays[ORC_VAR_A1] = (void *)orc_executor_emulate; + ex->arrays[ORC_VAR_A1] = (void *) orc_executor_emulate; } void -orc_executor_set_array (OrcExecutor *ex, int var, void *ptr) +orc_executor_set_array (OrcExecutor * ex, int var, void *ptr) { ex->arrays[var] = ptr; } void -orc_executor_set_stride (OrcExecutor *ex, int var, int stride) +orc_executor_set_stride (OrcExecutor * ex, int var, int stride) { ex->params[var] = stride; } void -orc_executor_set_array_str (OrcExecutor *ex, const char *name, void *ptr) +orc_executor_set_array_str (OrcExecutor * ex, const char *name, void *ptr) { int var; var = orc_program_find_var_by_name (ex->program, name); @@ -98,13 +98,13 @@ orc_executor_set_array_str (OrcExecutor *ex, const char *name, void *ptr) } void -orc_executor_set_param (OrcExecutor *ex, int var, int value) +orc_executor_set_param (OrcExecutor * ex, int var, int value) { ex->params[var] = value; } void -orc_executor_set_param_float (OrcExecutor *ex, int var, float value) +orc_executor_set_param_float (OrcExecutor * ex, int var, float value) { orc_union32 u; u.f = value; @@ -112,25 +112,25 @@ orc_executor_set_param_float (OrcExecutor *ex, int var, float value) } void -orc_executor_set_param_int64 (OrcExecutor *ex, int var, orc_int64 value) +orc_executor_set_param_int64 (OrcExecutor * ex, int var, orc_int64 value) { orc_union64 u; u.i = value; ex->params[var] = u.x2[0]; - ex->params[var + (ORC_VAR_T1-ORC_VAR_P1)] = u.x2[1]; + ex->params[var + (ORC_VAR_T1 - ORC_VAR_P1)] = u.x2[1]; } void -orc_executor_set_param_double (OrcExecutor *ex, int var, double value) +orc_executor_set_param_double (OrcExecutor * ex, int var, double value) { orc_union64 u; u.f = value; ex->params[var] = u.x2[0]; - ex->params[var + (ORC_VAR_T1-ORC_VAR_P1)] = u.x2[1]; + ex->params[var + (ORC_VAR_T1 - ORC_VAR_P1)] = u.x2[1]; } void -orc_executor_set_param_str (OrcExecutor *ex, const char *name, int value) +orc_executor_set_param_str (OrcExecutor * ex, const char *name, int value) { int var; var = orc_program_find_var_by_name (ex->program, name); @@ -138,13 +138,13 @@ orc_executor_set_param_str (OrcExecutor *ex, const char *name, int value) } int -orc_executor_get_accumulator (OrcExecutor *ex, int var) +orc_executor_get_accumulator (OrcExecutor * ex, int var) { return ex->accumulators[var - ORC_VAR_A1]; } int -orc_executor_get_accumulator_str (OrcExecutor *ex, const char *name) +orc_executor_get_accumulator_str (OrcExecutor * ex, const char *name) { int var; var = orc_program_find_var_by_name (ex->program, name); @@ -152,15 +152,15 @@ orc_executor_get_accumulator_str (OrcExecutor *ex, const char *name) } void -orc_executor_set_n (OrcExecutor *ex, int n) +orc_executor_set_n (OrcExecutor * ex, int n) { ex->n = n; } void -orc_executor_set_m (OrcExecutor *ex, int m) +orc_executor_set_m (OrcExecutor * ex, int m) { - ORC_EXECUTOR_M(ex) = m; + ORC_EXECUTOR_M (ex) = m; } static void @@ -168,50 +168,50 @@ load_constant (void *data, int size, orc_uint64 value) { switch (size) { case 1: - { - int l; - orc_int8 *d = data; - for(l=0;l<CHUNK_SIZE;l++) { - d[l] = value; - } + { + int l; + orc_int8 *d = data; + for (l = 0; l < CHUNK_SIZE; l++) { + d[l] = value; } + } break; case 2: - { - int l; - orc_int16 *d = data; - for(l=0;l<CHUNK_SIZE;l++) { - d[l] = value; - } + { + int l; + orc_int16 *d = data; + for (l = 0; l < CHUNK_SIZE; l++) { + d[l] = value; } + } break; case 4: - { - int l; - orc_int32 *d = data; - for(l=0;l<CHUNK_SIZE;l++) { - d[l] = value; - } + { + int l; + orc_int32 *d = data; + for (l = 0; l < CHUNK_SIZE; l++) { + d[l] = value; } + } break; case 8: - { - int l; - orc_int64 *d = data; - for(l=0;l<CHUNK_SIZE;l++) { - d[l] = value; - } + { + int l; + orc_int64 *d = data; + for (l = 0; l < CHUNK_SIZE; l++) { + d[l] = value; } + } break; default: - ORC_ASSERT(0); + ORC_ASSERT (0); } } void -orc_executor_emulate (OrcExecutor *ex) +orc_executor_emulate (OrcExecutor * ex) { int i; int j; @@ -226,7 +226,7 @@ orc_executor_emulate (OrcExecutor *ex) if (ex->program) { code = ex->program->orccode; } else { - code = (OrcCode *)ex->arrays[ORC_VAR_A2]; + code = (OrcCode *) ex->arrays[ORC_VAR_A2]; } ex->accumulators[0] = 0; @@ -234,32 +234,32 @@ orc_executor_emulate (OrcExecutor *ex) ex->accumulators[2] = 0; ex->accumulators[3] = 0; - ORC_DEBUG("emulating"); + ORC_DEBUG ("emulating"); - memset (&opcode_ex, 0, sizeof(opcode_ex)); + memset (&opcode_ex, 0, sizeof (opcode_ex)); if (code == NULL) { - ORC_ERROR("attempt to run program that failed to compile"); - ORC_ASSERT(0); + ORC_ERROR ("attempt to run program that failed to compile"); + ORC_ASSERT (0); } if (code->is_2d) { - m = ORC_EXECUTOR_M(ex); + m = ORC_EXECUTOR_M (ex); } else { m = 1; } - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { OrcCodeVariable *var = code->vars + i; if (var->size) { - tmpspace[i] = malloc(ORC_MAX_VAR_SIZE * CHUNK_SIZE); + tmpspace[i] = malloc (ORC_MAX_VAR_SIZE * CHUNK_SIZE); } } - opcode_ex = malloc(sizeof(OrcOpcodeExecutor)*code->n_insns); + opcode_ex = malloc (sizeof (OrcOpcodeExecutor) * code->n_insns); - for(j=0;j<code->n_insns;j++){ + for (j = 0; j < code->n_insns; j++) { insn = code->insns + j; opcode = insn->opcode; @@ -271,110 +271,115 @@ orc_executor_emulate (OrcExecutor *ex) opcode_ex[j].shift = 2; } - for(k=0;k<ORC_STATIC_OPCODE_N_SRC;k++) { + for (k = 0; k < ORC_STATIC_OPCODE_N_SRC; k++) { OrcCodeVariable *var = code->vars + insn->src_args[k]; - if (opcode->src_size[k] == 0) continue; + if (opcode->src_size[k] == 0) + continue; if (var->vartype == ORC_VAR_TYPE_CONST) { opcode_ex[j].src_ptrs[k] = tmpspace[insn->src_args[k]]; /* FIXME hack */ - load_constant (tmpspace[insn->src_args[k]], 8, - var->value.i); + load_constant (tmpspace[insn->src_args[k]], 8, var->value.i); } else if (var->vartype == ORC_VAR_TYPE_PARAM) { opcode_ex[j].src_ptrs[k] = tmpspace[insn->src_args[k]]; /* FIXME hack */ load_constant (tmpspace[insn->src_args[k]], 8, - (orc_uint64)(orc_uint32)ex->params[insn->src_args[k]] | - (((orc_uint64)(orc_uint32)ex->params[insn->src_args[k] + - (ORC_VAR_T1 - ORC_VAR_P1)])<<32)); + (orc_uint64) (orc_uint32) ex->params[insn->src_args[k]] | + (((orc_uint64) (orc_uint32) ex->params[insn->src_args[k] + + (ORC_VAR_T1 - ORC_VAR_P1)]) << 32)); } else if (var->vartype == ORC_VAR_TYPE_TEMP) { opcode_ex[j].src_ptrs[k] = tmpspace[insn->src_args[k]]; } else if (var->vartype == ORC_VAR_TYPE_SRC) { - if (ORC_PTR_TO_INT(ex->arrays[insn->src_args[k]]) & (var->size - 1)) { - ORC_ERROR("Unaligned array for src%d, program %s", - (insn->src_args[k]-ORC_VAR_S1), ex->program->name); + if (ORC_PTR_TO_INT (ex->arrays[insn->src_args[k]]) & (var->size - 1)) { + ORC_ERROR ("Unaligned array for src%d, program %s", + (insn->src_args[k] - ORC_VAR_S1), ex->program->name); } opcode_ex[j].src_ptrs[k] = ex->arrays[insn->src_args[k]]; } else if (var->vartype == ORC_VAR_TYPE_DEST) { - if (ORC_PTR_TO_INT(ex->arrays[insn->src_args[k]]) & (var->size - 1)) { - ORC_ERROR("Unaligned array for dest%d, program %s", - (insn->src_args[k]-ORC_VAR_D1), ex->program->name); + if (ORC_PTR_TO_INT (ex->arrays[insn->src_args[k]]) & (var->size - 1)) { + ORC_ERROR ("Unaligned array for dest%d, program %s", + (insn->src_args[k] - ORC_VAR_D1), ex->program->name); } opcode_ex[j].src_ptrs[k] = ex->arrays[insn->src_args[k]]; } } - for(k=0;k<ORC_STATIC_OPCODE_N_DEST;k++) { + for (k = 0; k < ORC_STATIC_OPCODE_N_DEST; k++) { OrcCodeVariable *var = code->vars + insn->dest_args[k]; - if (opcode->dest_size[k] == 0) continue; + if (opcode->dest_size[k] == 0) + continue; if (var->vartype == ORC_VAR_TYPE_TEMP) { - ORC_DEBUG("dest vartype tmp %d", insn->dest_args[k]); + ORC_DEBUG ("dest vartype tmp %d", insn->dest_args[k]); opcode_ex[j].dest_ptrs[k] = tmpspace[insn->dest_args[k]]; } else if (var->vartype == ORC_VAR_TYPE_ACCUMULATOR) { opcode_ex[j].dest_ptrs[k] = - &ex->accumulators[insn->dest_args[k] - ORC_VAR_A1]; + &ex->accumulators[insn->dest_args[k] - ORC_VAR_A1]; } else if (var->vartype == ORC_VAR_TYPE_DEST) { - if (ORC_PTR_TO_INT(ex->arrays[insn->dest_args[k]]) & (var->size - 1)) { - ORC_ERROR("Unaligned array for dest%d, program %s", - (insn->dest_args[k]-ORC_VAR_D1), ex->program->name); + if (ORC_PTR_TO_INT (ex->arrays[insn->dest_args[k]]) & (var->size - 1)) { + ORC_ERROR ("Unaligned array for dest%d, program %s", + (insn->dest_args[k] - ORC_VAR_D1), ex->program->name); } opcode_ex[j].dest_ptrs[k] = ex->arrays[insn->dest_args[k]]; } } - ORC_DEBUG("opcode %s %p %p %p", opcode->name, + ORC_DEBUG ("opcode %s %p %p %p", opcode->name, opcode_ex[j].dest_ptrs[0], opcode_ex[j].src_ptrs[0], opcode_ex[j].src_ptrs[1]); } - - ORC_DEBUG("src ptr %p stride %d", ex->arrays[ORC_VAR_S1], ex->params[ORC_VAR_S1]); - for(m_index=0;m_index<m;m_index++){ - ORC_DEBUG("m_index %d m %d", m_index, m); - for(j=0;j<code->n_insns;j++){ + ORC_DEBUG ("src ptr %p stride %d", ex->arrays[ORC_VAR_S1], + ex->params[ORC_VAR_S1]); + for (m_index = 0; m_index < m; m_index++) { + ORC_DEBUG ("m_index %d m %d", m_index, m); + + for (j = 0; j < code->n_insns; j++) { insn = code->insns + j; opcode = insn->opcode; - for(k=0;k<ORC_STATIC_OPCODE_N_SRC;k++) { + for (k = 0; k < ORC_STATIC_OPCODE_N_SRC; k++) { OrcCodeVariable *var = code->vars + insn->src_args[k]; - if (opcode->src_size[k] == 0) continue; + if (opcode->src_size[k] == 0) + continue; if (var->vartype == ORC_VAR_TYPE_SRC) { opcode_ex[j].src_ptrs[k] = - ORC_PTR_OFFSET(ex->arrays[insn->src_args[k]], - ex->params[insn->src_args[k]]*m_index); + ORC_PTR_OFFSET (ex->arrays[insn->src_args[k]], + ex->params[insn->src_args[k]] * m_index); } else if (var->vartype == ORC_VAR_TYPE_DEST) { opcode_ex[j].src_ptrs[k] = - ORC_PTR_OFFSET(ex->arrays[insn->src_args[k]], - ex->params[insn->src_args[k]]*m_index); + ORC_PTR_OFFSET (ex->arrays[insn->src_args[k]], + ex->params[insn->src_args[k]] * m_index); } } - for(k=0;k<ORC_STATIC_OPCODE_N_DEST;k++) { + for (k = 0; k < ORC_STATIC_OPCODE_N_DEST; k++) { OrcCodeVariable *var = code->vars + insn->dest_args[k]; - if (opcode->dest_size[k] == 0) continue; + if (opcode->dest_size[k] == 0) + continue; if (var->vartype == ORC_VAR_TYPE_DEST) { opcode_ex[j].dest_ptrs[k] = - ORC_PTR_OFFSET(ex->arrays[insn->dest_args[k]], - ex->params[insn->dest_args[k]]*m_index); + ORC_PTR_OFFSET (ex->arrays[insn->dest_args[k]], + ex->params[insn->dest_args[k]] * m_index); } } } - for(i=0;i<ex->n;i+=CHUNK_SIZE){ - for(j=0;j<code->n_insns;j++){ + for (i = 0; i < ex->n; i += CHUNK_SIZE) { + for (j = 0; j < code->n_insns; j++) { if (ex->n - i >= CHUNK_SIZE) { - opcode_ex[j].emulateN (opcode_ex + j, i, CHUNK_SIZE << opcode_ex[j].shift); + opcode_ex[j].emulateN (opcode_ex + j, i, + CHUNK_SIZE << opcode_ex[j].shift); } else { - opcode_ex[j].emulateN (opcode_ex + j, i, (ex->n - i) << opcode_ex[j].shift); + opcode_ex[j].emulateN (opcode_ex + j, i, + (ex->n - i) << opcode_ex[j].shift); } } } } free (opcode_ex); - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ - if (tmpspace[i]) free (tmpspace[i]); + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { + if (tmpspace[i]) + free (tmpspace[i]); } } - - diff --git a/orc/orcfunctions.c b/orc/orcfunctions.c index dbe0b7d..1c52f9c 100644 --- a/orc/orcfunctions.c +++ b/orc/orcfunctions.c @@ -47,9 +47,26 @@ typedef unsigned long orc_uint64; #define ORC_UINT64_C(x) (x##UL) #endif #endif -typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; -typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +typedef union +{ + orc_int16 i; + orc_int8 x2[2]; +} orc_union16; +typedef union +{ + orc_int32 i; + float f; + orc_int16 x2[2]; + orc_int8 x4[4]; +} orc_union32; +typedef union +{ + orc_int64 i; + double f; + orc_int32 x2[2]; + float x2f[2]; + orc_int16 x4[4]; +} orc_union64; #endif #ifndef ORC_RESTRICT #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L @@ -64,8 +81,8 @@ typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 #ifndef DISABLE_ORC #include <orc/orc.h> #endif -void orc_memcpy (void * ORC_RESTRICT d1, const void * ORC_RESTRICT s1, int n); -void orc_memset (void * ORC_RESTRICT d1, int p1, int n); +void orc_memcpy (void *ORC_RESTRICT d1, const void *ORC_RESTRICT s1, int n); +void orc_memset (void *ORC_RESTRICT d1, int p1, int n); /* begin Orc C target preamble */ @@ -115,15 +132,16 @@ void orc_memset (void * ORC_RESTRICT d1, int p1, int n); /* orc_memcpy */ #ifdef DISABLE_ORC void -orc_memcpy (void * ORC_RESTRICT d1, const void * ORC_RESTRICT s1, int n){ +orc_memcpy (void *ORC_RESTRICT d1, const void *ORC_RESTRICT s1, int n) +{ int i; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; orc_int8 var33; - ptr0 = (orc_int8 *)d1; - ptr4 = (orc_int8 *)s1; + ptr0 = (orc_int8 *) d1; + ptr4 = (orc_int8 *) s1; for (i = 0; i < n; i++) { @@ -143,13 +161,13 @@ _backup_orc_memcpy (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_int8 * ORC_RESTRICT ptr0; - const orc_int8 * ORC_RESTRICT ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var32; orc_int8 var33; - ptr0 = (orc_int8 *)ex->arrays[0]; - ptr4 = (orc_int8 *)ex->arrays[4]; + ptr0 = (orc_int8 *) ex->arrays[0]; + ptr4 = (orc_int8 *) ex->arrays[4]; for (i = 0; i < n; i++) { @@ -164,7 +182,7 @@ _backup_orc_memcpy (OrcExecutor * ORC_RESTRICT ex) } void -orc_memcpy (void * ORC_RESTRICT d1, const void * ORC_RESTRICT s1, int n) +orc_memcpy (void *ORC_RESTRICT d1, const void *ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; static volatile int p_inited = 0; @@ -182,7 +200,8 @@ orc_memcpy (void * ORC_RESTRICT d1, const void * ORC_RESTRICT s1, int n) orc_program_add_destination (p, 1, "d1"); orc_program_add_source (p, 1, "s1"); - orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); orc_program_compile (p); c = orc_program_take_code (p); @@ -196,7 +215,7 @@ orc_memcpy (void * ORC_RESTRICT d1, const void * ORC_RESTRICT s1, int n) ex->n = n; ex->arrays[ORC_VAR_D1] = d1; - ex->arrays[ORC_VAR_S1] = (void *)s1; + ex->arrays[ORC_VAR_S1] = (void *) s1; func = c->exec; func (ex); @@ -207,16 +226,17 @@ orc_memcpy (void * ORC_RESTRICT d1, const void * ORC_RESTRICT s1, int n) /* orc_memset */ #ifdef DISABLE_ORC void -orc_memset (void * ORC_RESTRICT d1, int p1, int n){ +orc_memset (void *ORC_RESTRICT d1, int p1, int n) +{ int i; - orc_int8 * ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr0; orc_int8 var32; orc_int8 var33; - ptr0 = (orc_int8 *)d1; + ptr0 = (orc_int8 *) d1; - /* 0: loadpb */ - var32 = p1; + /* 0: loadpb */ + var32 = p1; for (i = 0; i < n; i++) { /* 1: copyb */ @@ -233,14 +253,14 @@ _backup_orc_memset (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_int8 * ORC_RESTRICT ptr0; + orc_int8 *ORC_RESTRICT ptr0; orc_int8 var32; orc_int8 var33; - ptr0 = (orc_int8 *)ex->arrays[0]; + ptr0 = (orc_int8 *) ex->arrays[0]; - /* 0: loadpb */ - var32 = ex->params[24]; + /* 0: loadpb */ + var32 = ex->params[24]; for (i = 0; i < n; i++) { /* 1: copyb */ @@ -252,7 +272,7 @@ _backup_orc_memset (OrcExecutor * ORC_RESTRICT ex) } void -orc_memset (void * ORC_RESTRICT d1, int p1, int n) +orc_memset (void *ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; static volatile int p_inited = 0; @@ -270,7 +290,8 @@ orc_memset (void * ORC_RESTRICT d1, int p1, int n) orc_program_add_destination (p, 1, "d1"); orc_program_add_parameter (p, 1, "p1"); - orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); orc_program_compile (p); c = orc_program_take_code (p); @@ -290,5 +311,3 @@ orc_memset (void * ORC_RESTRICT d1, int p1, int n) func (ex); } #endif - - diff --git a/orc/orcmmx.c b/orc/orcmmx.c index 70f00f6..5d5612a 100644 --- a/orc/orcmmx.c +++ b/orc/orcmmx.c @@ -19,14 +19,15 @@ const char * -orc_x86_get_regname_mmx(int i) +orc_x86_get_regname_mmx (int i) { static const char *x86_regs[] = { "mm0", "mm1", "mm2", "mm3", "mm4", "mm5", "mm6", "mm7", "mm8", "mm9", "mm10", "mm11", "mm12", "mm13", "mm14", "mm15" }; - if (i>=X86_MM0 && i<X86_MM0 + 16) return x86_regs[i - X86_MM0]; + if (i >= X86_MM0 && i < X86_MM0 + 16) + return x86_regs[i - X86_MM0]; switch (i) { case 0: return "UNALLOCATED"; @@ -39,81 +40,86 @@ orc_x86_get_regname_mmx(int i) #if 0 void -orc_x86_emit_mov_memindex_mmx (OrcCompiler *compiler, int size, int offset, +orc_x86_emit_mov_memindex_mmx (OrcCompiler * compiler, int size, int offset, int reg1, int regindex, int shift, int reg2, int is_aligned) { switch (size) { case 4: - ORC_ASM_CODE(compiler," movd %d(%%%s,%%%s,%d), %%%s\n", offset, - orc_x86_get_regname_ptr(compiler, reg1), - orc_x86_get_regname_ptr(compiler, regindex), 1<<shift, - orc_x86_get_regname_mmx(reg2)); - orc_x86_emit_rex(compiler, 0, reg2, 0, reg1); + ORC_ASM_CODE (compiler, " movd %d(%%%s,%%%s,%d), %%%s\n", offset, + orc_x86_get_regname_ptr (compiler, reg1), + orc_x86_get_regname_ptr (compiler, regindex), 1 << shift, + orc_x86_get_regname_mmx (reg2)); + orc_x86_emit_rex (compiler, 0, reg2, 0, reg1); *compiler->codeptr++ = 0x0f; *compiler->codeptr++ = 0x6e; break; case 8: - ORC_ASM_CODE(compiler," movq %d(%%%s,%%%s,%d), %%%s\n", offset, orc_x86_get_regname_ptr(compiler, reg1), - orc_x86_get_regname_ptr(compiler, regindex), 1<<shift, - orc_x86_get_regname_mmx(reg2)); - orc_x86_emit_rex(compiler, 0, reg2, 0, reg1); + ORC_ASM_CODE (compiler, " movq %d(%%%s,%%%s,%d), %%%s\n", offset, + orc_x86_get_regname_ptr (compiler, reg1), + orc_x86_get_regname_ptr (compiler, regindex), 1 << shift, + orc_x86_get_regname_mmx (reg2)); + orc_x86_emit_rex (compiler, 0, reg2, 0, reg1); *compiler->codeptr++ = 0x0f; *compiler->codeptr++ = 0x7e; break; default: - ORC_COMPILER_ERROR(compiler, "bad size"); + ORC_COMPILER_ERROR (compiler, "bad size"); break; } orc_x86_emit_modrm_memindex (compiler, reg2, offset, reg1, regindex, shift); } void -orc_x86_emit_mov_memoffset_mmx (OrcCompiler *compiler, int size, int offset, +orc_x86_emit_mov_memoffset_mmx (OrcCompiler * compiler, int size, int offset, int reg1, int reg2, int is_aligned) { switch (size) { case 4: - ORC_ASM_CODE(compiler," movd %d(%%%s), %%%s\n", offset, orc_x86_get_regname_ptr(compiler, reg1), - orc_x86_get_regname_mmx(reg2)); - orc_x86_emit_rex(compiler, 0, reg2, 0, reg1); + ORC_ASM_CODE (compiler, " movd %d(%%%s), %%%s\n", offset, + orc_x86_get_regname_ptr (compiler, reg1), + orc_x86_get_regname_mmx (reg2)); + orc_x86_emit_rex (compiler, 0, reg2, 0, reg1); *compiler->codeptr++ = 0x0f; *compiler->codeptr++ = 0x6e; break; case 8: - ORC_ASM_CODE(compiler," movq %d(%%%s), %%%s\n", offset, orc_x86_get_regname_ptr(compiler, reg1), - orc_x86_get_regname_mmx(reg2)); - orc_x86_emit_rex(compiler, 0, reg2, 0, reg1); + ORC_ASM_CODE (compiler, " movq %d(%%%s), %%%s\n", offset, + orc_x86_get_regname_ptr (compiler, reg1), + orc_x86_get_regname_mmx (reg2)); + orc_x86_emit_rex (compiler, 0, reg2, 0, reg1); *compiler->codeptr++ = 0x0f; *compiler->codeptr++ = 0x6f; break; default: - ORC_COMPILER_ERROR(compiler, "bad size"); + ORC_COMPILER_ERROR (compiler, "bad size"); break; } orc_x86_emit_modrm_memoffset (compiler, offset, reg1, reg2); } void -orc_x86_emit_mov_mmx_memoffset (OrcCompiler *compiler, int size, int reg1, int offset, - int reg2, int aligned, int uncached) +orc_x86_emit_mov_mmx_memoffset (OrcCompiler * compiler, int size, int reg1, + int offset, int reg2, int aligned, int uncached) { switch (size) { case 4: - ORC_ASM_CODE(compiler," movd %%%s, %d(%%%s)\n", orc_x86_get_regname_mmx(reg1), offset, - orc_x86_get_regname_ptr(compiler, reg2)); - orc_x86_emit_rex(compiler, 0, reg1, 0, reg2); + ORC_ASM_CODE (compiler, " movd %%%s, %d(%%%s)\n", + orc_x86_get_regname_mmx (reg1), offset, + orc_x86_get_regname_ptr (compiler, reg2)); + orc_x86_emit_rex (compiler, 0, reg1, 0, reg2); *compiler->codeptr++ = 0x0f; *compiler->codeptr++ = 0x7e; break; case 8: - ORC_ASM_CODE(compiler," movq %%%s, %d(%%%s)\n", orc_x86_get_regname_mmx(reg1), offset, - orc_x86_get_regname_ptr(compiler, reg2)); - orc_x86_emit_rex(compiler, 0, reg1, 0, reg2); + ORC_ASM_CODE (compiler, " movq %%%s, %d(%%%s)\n", + orc_x86_get_regname_mmx (reg1), offset, + orc_x86_get_regname_ptr (compiler, reg2)); + orc_x86_emit_rex (compiler, 0, reg1, 0, reg2); *compiler->codeptr++ = 0x0f; *compiler->codeptr++ = 0x7f; break; default: - ORC_COMPILER_ERROR(compiler, "bad size"); + ORC_COMPILER_ERROR (compiler, "bad size"); break; } @@ -122,7 +128,7 @@ orc_x86_emit_mov_mmx_memoffset (OrcCompiler *compiler, int size, int reg1, int o #endif void -orc_x86_emit_mov_memoffset_mmx (OrcCompiler *compiler, int size, int offset, +orc_x86_emit_mov_memoffset_mmx (OrcCompiler * compiler, int size, int offset, int reg1, int reg2, int is_aligned) { switch (size) { @@ -133,13 +139,13 @@ orc_x86_emit_mov_memoffset_mmx (OrcCompiler *compiler, int size, int offset, orc_mmx_emit_movq_load_memoffset (compiler, offset, reg1, reg2); break; default: - ORC_COMPILER_ERROR(compiler, "bad size"); + ORC_COMPILER_ERROR (compiler, "bad size"); break; } } void -orc_x86_emit_mov_memindex_mmx (OrcCompiler *compiler, int size, int offset, +orc_x86_emit_mov_memindex_mmx (OrcCompiler * compiler, int size, int offset, int reg1, int regindex, int shift, int reg2, int is_aligned) { switch (size) { @@ -152,13 +158,13 @@ orc_x86_emit_mov_memindex_mmx (OrcCompiler *compiler, int size, int offset, reg1, regindex, shift, reg2); break; default: - ORC_COMPILER_ERROR(compiler, "bad size"); + ORC_COMPILER_ERROR (compiler, "bad size"); break; } } void -orc_x86_emit_mov_mmx_memoffset (OrcCompiler *compiler, int size, int reg1, +orc_x86_emit_mov_mmx_memoffset (OrcCompiler * compiler, int size, int reg1, int offset, int reg2, int aligned, int uncached) { switch (size) { @@ -169,9 +175,8 @@ orc_x86_emit_mov_mmx_memoffset (OrcCompiler *compiler, int size, int reg1, orc_mmx_emit_movq_store_memoffset (compiler, offset, reg1, reg2); break; default: - ORC_COMPILER_ERROR(compiler, "bad size"); + ORC_COMPILER_ERROR (compiler, "bad size"); break; } } - diff --git a/orc/orconce.c b/orc/orconce.c index 86315c1..1934668 100644 --- a/orc/orconce.c +++ b/orc/orconce.c @@ -80,15 +80,15 @@ orc_once_cs_init (void) InitializeCriticalSection (&global_mutex); } -__declspec(allocate(".CRT$XCU")) -void (__cdecl * orc_once_cs_init_constructor)(void) = orc_once_cs_init; +__declspec (allocate (".CRT$XCU")) + void (__cdecl * orc_once_cs_init_constructor) (void) = orc_once_cs_init; #elif defined(__GNUC__) -static void orc_once_cs_init (void) __attribute__((constructor)); +static void orc_once_cs_init (void) __attribute__ ((constructor)); static void -orc_once_cs_init (void) +orc_once_cs_init (void) { InitializeCriticalSection (&once_mutex); InitializeCriticalSection (&global_mutex); @@ -122,5 +122,3 @@ orc_once_mutex_unlock (void) } #endif - - diff --git a/orc/orcopcodes.c b/orc/orcopcodes.c index eda8610..b10a274 100644 --- a/orc/orcopcodes.c +++ b/orc/orcopcodes.c @@ -46,7 +46,7 @@ static OrcTarget *default_target; void -orc_target_register (OrcTarget *target) +orc_target_register (OrcTarget * target) { targets[n_targets] = target; n_targets++; @@ -61,9 +61,10 @@ orc_target_get_by_name (const char *name) { int i; - if (name == NULL) return default_target; + if (name == NULL) + return default_target; - for(i=0;i<n_targets;i++){ + for (i = 0; i < n_targets; i++) { if (strcmp (name, targets[i]->name) == 0) { return targets[i]; } @@ -79,23 +80,26 @@ orc_target_get_default (void) } const char * -orc_target_get_name (OrcTarget *target) +orc_target_get_name (OrcTarget * target) { - if (target == NULL) return NULL; + if (target == NULL) + return NULL; return target->name; } unsigned int -orc_target_get_default_flags (OrcTarget *target) +orc_target_get_default_flags (OrcTarget * target) { - if (target == NULL) return 0; - return target->get_default_flags(); + if (target == NULL) + return 0; + return target->get_default_flags (); } const char * -orc_target_get_preamble (OrcTarget *target) +orc_target_get_preamble (OrcTarget * target) { - if (target->get_asm_preamble == NULL) return ""; + if (target->get_asm_preamble == NULL) + return ""; return target->get_asm_preamble (); } @@ -106,22 +110,24 @@ orc_target_get_asm_preamble (const char *target) OrcTarget *t; t = orc_target_get_by_name (target); - if (t == NULL) return ""; + if (t == NULL) + return ""; return orc_target_get_preamble (t); } const char * -orc_target_get_flag_name (OrcTarget *target, int shift) +orc_target_get_flag_name (OrcTarget * target, int shift) { - if (target->get_flag_name == NULL) return ""; + if (target->get_flag_name == NULL) + return ""; return target->get_flag_name (shift); } #if 0 int -orc_opcode_get_list (OrcOpcode **list) +orc_opcode_get_list (OrcOpcode ** list) { (*list) = opcode_list; return n_opcodes; @@ -137,7 +143,7 @@ orc_opcode_register (const char *name, int n_dest, int n_src, if (n_opcodes == n_opcodes_alloc) { n_opcodes_alloc += 100; - opcode_list = realloc(opcode_list, sizeof(OrcOpcode) * n_opcodes_alloc); + opcode_list = realloc (opcode_list, sizeof (OrcOpcode) * n_opcodes_alloc); } opcode = opcode_list + n_opcodes; @@ -153,7 +159,7 @@ orc_opcode_register (const char *name, int n_dest, int n_src, #endif OrcRuleSet * -orc_rule_set_new (OrcOpcodeSet *opcode_set, OrcTarget *target, +orc_rule_set_new (OrcOpcodeSet * opcode_set, OrcTarget * target, unsigned int required_flags) { OrcRuleSet *rule_set; @@ -161,19 +167,19 @@ orc_rule_set_new (OrcOpcodeSet *opcode_set, OrcTarget *target, rule_set = target->rule_sets + target->n_rule_sets; target->n_rule_sets++; - memset (rule_set, 0, sizeof(OrcRuleSet)); + memset (rule_set, 0, sizeof (OrcRuleSet)); rule_set->opcode_major = opcode_set->opcode_major; rule_set->required_target_flags = required_flags; - rule_set->rules = malloc (sizeof(OrcRule) * opcode_set->n_opcodes); - memset (rule_set->rules, 0, sizeof(OrcRule) * opcode_set->n_opcodes); + rule_set->rules = malloc (sizeof (OrcRule) * opcode_set->n_opcodes); + memset (rule_set->rules, 0, sizeof (OrcRule) * opcode_set->n_opcodes); return rule_set; } OrcRule * -orc_target_get_rule (OrcTarget *target, OrcStaticOpcode *opcode, +orc_target_get_rule (OrcTarget * target, OrcStaticOpcode * opcode, unsigned int target_flags) { OrcRule *rule; @@ -181,18 +187,23 @@ orc_target_get_rule (OrcTarget *target, OrcStaticOpcode *opcode, int j; int k; - for(k=0;k<n_opcode_sets;k++){ + for (k = 0; k < n_opcode_sets; k++) { j = opcode - opcode_sets[k].opcodes; - if (j < 0 || j >= opcode_sets[k].n_opcodes) continue; - if (opcode_sets[k].opcodes + j != opcode) continue; + if (j < 0 || j >= opcode_sets[k].n_opcodes) + continue; + if (opcode_sets[k].opcodes + j != opcode) + continue; - for(i=target->n_rule_sets-1;i>=0;i--){ - if (target->rule_sets[i].opcode_major != opcode_sets[k].opcode_major) continue; - if (target->rule_sets[i].required_target_flags & (~target_flags)) continue; + for (i = target->n_rule_sets - 1; i >= 0; i--) { + if (target->rule_sets[i].opcode_major != opcode_sets[k].opcode_major) + continue; + if (target->rule_sets[i].required_target_flags & (~target_flags)) + continue; rule = target->rule_sets[i].rules + j; - if (rule->emit) return rule; + if (rule->emit) + return rule; } } @@ -200,7 +211,7 @@ orc_target_get_rule (OrcTarget *target, OrcStaticOpcode *opcode, } int -orc_opcode_register_static (OrcStaticOpcode *sopcode, char *prefix) +orc_opcode_register_static (OrcStaticOpcode * sopcode, char *prefix) { int n; int major; @@ -213,10 +224,11 @@ orc_opcode_register_static (OrcStaticOpcode *sopcode, char *prefix) major = n_opcode_sets; n_opcode_sets++; - opcode_sets = realloc (opcode_sets, sizeof(OrcOpcodeSet)*n_opcode_sets); - - memset (opcode_sets + major, 0, sizeof(OrcOpcodeSet)); - strncpy(opcode_sets[major].prefix, prefix, sizeof(opcode_sets[major].prefix)-1); + opcode_sets = realloc (opcode_sets, sizeof (OrcOpcodeSet) * n_opcode_sets); + + memset (opcode_sets + major, 0, sizeof (OrcOpcodeSet)); + strncpy (opcode_sets[major].prefix, prefix, + sizeof (opcode_sets[major].prefix) - 1); opcode_sets[major].n_opcodes = n; opcode_sets[major].opcodes = sopcode; opcode_sets[major].opcode_major = major; @@ -229,7 +241,7 @@ orc_opcode_set_get (const char *name) { int i; - for(i=0;i<n_opcode_sets;i++){ + for (i = 0; i < n_opcode_sets; i++) { if (strcmp (opcode_sets[i].prefix, name) == 0) { return opcode_sets + i; } @@ -245,11 +257,11 @@ orc_opcode_set_get_nth (int opcode_major) } int -orc_opcode_set_find_by_name (OrcOpcodeSet *opcode_set, const char *name) +orc_opcode_set_find_by_name (OrcOpcodeSet * opcode_set, const char *name) { int j; - for(j=0;j<opcode_set->n_opcodes;j++){ + for (j = 0; j < opcode_set->n_opcodes; j++) { if (strcmp (name, opcode_set->opcodes[j].name) == 0) { return j; } @@ -264,7 +276,7 @@ orc_opcode_find_by_name (const char *name) int i; int j; - for(i=0;i<n_opcode_sets;i++){ + for (i = 0; i < n_opcode_sets; i++) { j = orc_opcode_set_find_by_name (opcode_sets + i, name); if (j >= 0) { return &opcode_sets[i].opcodes[j]; @@ -275,10 +287,10 @@ orc_opcode_find_by_name (const char *name) } void -emulate_null (OrcOpcodeExecutor *ex, int offset, int n) +emulate_null (OrcOpcodeExecutor * ex, int offset, int n) { /* This is a placeholder for adding new opcodes */ - ORC_ERROR("emulate_null() called. This is a bug."); + ORC_ERROR ("emulate_null() called. This is a bug."); } #include "orc/orcemulateopcodes.h" @@ -286,220 +298,237 @@ emulate_null (OrcOpcodeExecutor *ex, int offset, int n) static OrcStaticOpcode opcodes[] = { /* byte ops */ - { "absb", 0, { 1 }, { 1 }, emulate_absb }, - { "addb", 0, { 1 }, { 1, 1 }, emulate_addb }, - { "addssb", 0, { 1 }, { 1, 1 }, emulate_addssb }, - { "addusb", 0, { 1 }, { 1, 1 }, emulate_addusb }, - { "andb", 0, { 1 }, { 1, 1 }, emulate_andb }, - { "andnb", 0, { 1 }, { 1, 1 }, emulate_andnb }, - { "avgsb", 0, { 1 }, { 1, 1 }, emulate_avgsb }, - { "avgub", 0, { 1 }, { 1, 1 }, emulate_avgub }, - { "cmpeqb", 0, { 1 }, { 1, 1 }, emulate_cmpeqb }, - { "cmpgtsb", 0, { 1 }, { 1, 1 }, emulate_cmpgtsb }, - { "copyb", 0, { 1 }, { 1 }, emulate_copyb }, - { "loadb", ORC_STATIC_OPCODE_LOAD, { 1 }, { 1 }, emulate_loadb }, - { "loadoffb", ORC_STATIC_OPCODE_LOAD|ORC_STATIC_OPCODE_SCALAR, { 1 }, { 1, 4 }, emulate_loadoffb }, - { "loadupdb", ORC_STATIC_OPCODE_LOAD|ORC_STATIC_OPCODE_ITERATOR, { 1 }, { 1 }, emulate_loadupdb }, - { "loadupib", ORC_STATIC_OPCODE_LOAD|ORC_STATIC_OPCODE_ITERATOR, { 1 }, { 1 }, emulate_loadupib }, - { "loadpb", ORC_STATIC_OPCODE_LOAD|ORC_STATIC_OPCODE_SCALAR|ORC_STATIC_OPCODE_INVARIANT, { 1 }, { 1 }, emulate_loadpb }, - { "ldresnearb", ORC_STATIC_OPCODE_LOAD|ORC_STATIC_OPCODE_SCALAR, { 1 }, { 1, 4, 4 }, emulate_ldresnearb }, - { "ldresnearl", ORC_STATIC_OPCODE_LOAD|ORC_STATIC_OPCODE_SCALAR, { 4 }, { 4, 4, 4 }, emulate_ldresnearl }, - { "ldreslinb", ORC_STATIC_OPCODE_LOAD|ORC_STATIC_OPCODE_SCALAR, { 1 }, { 1, 4, 4 }, emulate_ldreslinb }, - { "ldreslinl", ORC_STATIC_OPCODE_LOAD|ORC_STATIC_OPCODE_SCALAR, { 4 }, { 4, 4, 4 }, emulate_ldreslinl }, - { "maxsb", 0, { 1 }, { 1, 1 }, emulate_maxsb }, - { "maxub", 0, { 1 }, { 1, 1 }, emulate_maxub }, - { "minsb", 0, { 1 }, { 1, 1 }, emulate_minsb }, - { "minub", 0, { 1 }, { 1, 1 }, emulate_minub }, - { "mullb", 0, { 1 }, { 1, 1 }, emulate_mullb }, - { "mulhsb", 0, { 1 }, { 1, 1 }, emulate_mulhsb }, - { "mulhub", 0, { 1 }, { 1, 1 }, emulate_mulhub }, - { "orb", 0, { 1 }, { 1, 1 }, emulate_orb }, - { "shlb", ORC_STATIC_OPCODE_SCALAR, { 1 }, { 1, 1 }, emulate_shlb }, - { "shrsb", ORC_STATIC_OPCODE_SCALAR, { 1 }, { 1, 1 }, emulate_shrsb }, - { "shrub", ORC_STATIC_OPCODE_SCALAR, { 1 }, { 1, 1 }, emulate_shrub }, - { "signb", 0, { 1 }, { 1 }, emulate_signb }, - { "storeb", ORC_STATIC_OPCODE_STORE, { 1 }, { 1 }, emulate_storeb }, - { "subb", 0, { 1 }, { 1, 1 }, emulate_subb }, - { "subssb", 0, { 1 }, { 1, 1 }, emulate_subssb }, - { "subusb", 0, { 1 }, { 1, 1 }, emulate_subusb }, - { "xorb", 0, { 1 }, { 1, 1 }, emulate_xorb }, + {"absb", 0, {1}, {1}, emulate_absb}, + {"addb", 0, {1}, {1, 1}, emulate_addb}, + {"addssb", 0, {1}, {1, 1}, emulate_addssb}, + {"addusb", 0, {1}, {1, 1}, emulate_addusb}, + {"andb", 0, {1}, {1, 1}, emulate_andb}, + {"andnb", 0, {1}, {1, 1}, emulate_andnb}, + {"avgsb", 0, {1}, {1, 1}, emulate_avgsb}, + {"avgub", 0, {1}, {1, 1}, emulate_avgub}, + {"cmpeqb", 0, {1}, {1, 1}, emulate_cmpeqb}, + {"cmpgtsb", 0, {1}, {1, 1}, emulate_cmpgtsb}, + {"copyb", 0, {1}, {1}, emulate_copyb}, + {"loadb", ORC_STATIC_OPCODE_LOAD, {1}, {1}, emulate_loadb}, + {"loadoffb", ORC_STATIC_OPCODE_LOAD | ORC_STATIC_OPCODE_SCALAR, {1}, {1, 4}, + emulate_loadoffb}, + {"loadupdb", ORC_STATIC_OPCODE_LOAD | ORC_STATIC_OPCODE_ITERATOR, {1}, {1}, + emulate_loadupdb}, + {"loadupib", ORC_STATIC_OPCODE_LOAD | ORC_STATIC_OPCODE_ITERATOR, {1}, {1}, + emulate_loadupib}, + {"loadpb", + ORC_STATIC_OPCODE_LOAD | ORC_STATIC_OPCODE_SCALAR | + ORC_STATIC_OPCODE_INVARIANT, {1}, {1}, emulate_loadpb}, + {"ldresnearb", ORC_STATIC_OPCODE_LOAD | ORC_STATIC_OPCODE_SCALAR, {1}, {1, 4, + 4}, emulate_ldresnearb}, + {"ldresnearl", ORC_STATIC_OPCODE_LOAD | ORC_STATIC_OPCODE_SCALAR, {4}, {4, 4, + 4}, emulate_ldresnearl}, + {"ldreslinb", ORC_STATIC_OPCODE_LOAD | ORC_STATIC_OPCODE_SCALAR, {1}, {1, 4, + 4}, emulate_ldreslinb}, + {"ldreslinl", ORC_STATIC_OPCODE_LOAD | ORC_STATIC_OPCODE_SCALAR, {4}, {4, 4, + 4}, emulate_ldreslinl}, + {"maxsb", 0, {1}, {1, 1}, emulate_maxsb}, + {"maxub", 0, {1}, {1, 1}, emulate_maxub}, + {"minsb", 0, {1}, {1, 1}, emulate_minsb}, + {"minub", 0, {1}, {1, 1}, emulate_minub}, + {"mullb", 0, {1}, {1, 1}, emulate_mullb}, + {"mulhsb", 0, {1}, {1, 1}, emulate_mulhsb}, + {"mulhub", 0, {1}, {1, 1}, emulate_mulhub}, + {"orb", 0, {1}, {1, 1}, emulate_orb}, + {"shlb", ORC_STATIC_OPCODE_SCALAR, {1}, {1, 1}, emulate_shlb}, + {"shrsb", ORC_STATIC_OPCODE_SCALAR, {1}, {1, 1}, emulate_shrsb}, + {"shrub", ORC_STATIC_OPCODE_SCALAR, {1}, {1, 1}, emulate_shrub}, + {"signb", 0, {1}, {1}, emulate_signb}, + {"storeb", ORC_STATIC_OPCODE_STORE, {1}, {1}, emulate_storeb}, + {"subb", 0, {1}, {1, 1}, emulate_subb}, + {"subssb", 0, {1}, {1, 1}, emulate_subssb}, + {"subusb", 0, {1}, {1, 1}, emulate_subusb}, + {"xorb", 0, {1}, {1, 1}, emulate_xorb}, /* word ops */ - { "absw", 0, { 2 }, { 2 }, emulate_absw }, - { "addw", 0, { 2 }, { 2, 2 }, emulate_addw }, - { "addssw", 0, { 2 }, { 2, 2 }, emulate_addssw }, - { "addusw", 0, { 2 }, { 2, 2 }, emulate_addusw }, - { "andw", 0, { 2 }, { 2, 2 }, emulate_andw }, - { "andnw", 0, { 2 }, { 2, 2 }, emulate_andnw }, - { "avgsw", 0, { 2 }, { 2, 2 }, emulate_avgsw }, - { "avguw", 0, { 2 }, { 2, 2 }, emulate_avguw }, - { "cmpeqw", 0, { 2 }, { 2, 2 }, emulate_cmpeqw }, - { "cmpgtsw", 0, { 2 }, { 2, 2 }, emulate_cmpgtsw }, - { "copyw", 0, { 2 }, { 2 }, emulate_copyw }, - { "div255w", 0, { 2 }, { 2 }, emulate_div255w }, - { "divluw", 0, { 2 }, { 2, 2 }, emulate_divluw }, - { "loadw", ORC_STATIC_OPCODE_LOAD, { 2 }, { 2 }, emulate_loadw }, - { "loadoffw", ORC_STATIC_OPCODE_LOAD|ORC_STATIC_OPCODE_SCALAR, { 2 }, { 2, 4 }, emulate_loadoffw }, - { "loadpw", ORC_STATIC_OPCODE_LOAD|ORC_STATIC_OPCODE_SCALAR|ORC_STATIC_OPCODE_INVARIANT, { 2 }, { 2 }, emulate_loadpw }, - { "maxsw", 0, { 2 }, { 2, 2 }, emulate_maxsw }, - { "maxuw", 0, { 2 }, { 2, 2 }, emulate_maxuw }, - { "minsw", 0, { 2 }, { 2, 2 }, emulate_minsw }, - { "minuw", 0, { 2 }, { 2, 2 }, emulate_minuw }, - { "mullw", 0, { 2 }, { 2, 2 }, emulate_mullw }, - { "mulhsw", 0, { 2 }, { 2, 2 }, emulate_mulhsw }, - { "mulhuw", 0, { 2 }, { 2, 2 }, emulate_mulhuw }, - { "orw", 0, { 2 }, { 2, 2 }, emulate_orw }, - { "shlw", ORC_STATIC_OPCODE_SCALAR, { 2 }, { 2, 2 }, emulate_shlw }, - { "shrsw", ORC_STATIC_OPCODE_SCALAR, { 2 }, { 2, 2 }, emulate_shrsw }, - { "shruw", ORC_STATIC_OPCODE_SCALAR, { 2 }, { 2, 2 }, emulate_shruw }, - { "signw", 0, { 2 }, { 2 }, emulate_signw }, - { "storew", ORC_STATIC_OPCODE_STORE, { 2 }, { 2 }, emulate_storew }, - { "subw", 0, { 2 }, { 2, 2 }, emulate_subw }, - { "subssw", 0, { 2 }, { 2, 2 }, emulate_subssw }, - { "subusw", 0, { 2 }, { 2, 2 }, emulate_subusw }, - { "xorw", 0, { 2 }, { 2, 2 }, emulate_xorw }, + {"absw", 0, {2}, {2}, emulate_absw}, + {"addw", 0, {2}, {2, 2}, emulate_addw}, + {"addssw", 0, {2}, {2, 2}, emulate_addssw}, + {"addusw", 0, {2}, {2, 2}, emulate_addusw}, + {"andw", 0, {2}, {2, 2}, emulate_andw}, + {"andnw", 0, {2}, {2, 2}, emulate_andnw}, + {"avgsw", 0, {2}, {2, 2}, emulate_avgsw}, + {"avguw", 0, {2}, {2, 2}, emulate_avguw}, + {"cmpeqw", 0, {2}, {2, 2}, emulate_cmpeqw}, + {"cmpgtsw", 0, {2}, {2, 2}, emulate_cmpgtsw}, + {"copyw", 0, {2}, {2}, emulate_copyw}, + {"div255w", 0, {2}, {2}, emulate_div255w}, + {"divluw", 0, {2}, {2, 2}, emulate_divluw}, + {"loadw", ORC_STATIC_OPCODE_LOAD, {2}, {2}, emulate_loadw}, + {"loadoffw", ORC_STATIC_OPCODE_LOAD | ORC_STATIC_OPCODE_SCALAR, {2}, {2, 4}, + emulate_loadoffw}, + {"loadpw", + ORC_STATIC_OPCODE_LOAD | ORC_STATIC_OPCODE_SCALAR | + ORC_STATIC_OPCODE_INVARIANT, {2}, {2}, emulate_loadpw}, + {"maxsw", 0, {2}, {2, 2}, emulate_maxsw}, + {"maxuw", 0, {2}, {2, 2}, emulate_maxuw}, + {"minsw", 0, {2}, {2, 2}, emulate_minsw}, + {"minuw", 0, {2}, {2, 2}, emulate_minuw}, + {"mullw", 0, {2}, {2, 2}, emulate_mullw}, + {"mulhsw", 0, {2}, {2, 2}, emulate_mulhsw}, + {"mulhuw", 0, {2}, {2, 2}, emulate_mulhuw}, + {"orw", 0, {2}, {2, 2}, emulate_orw}, + {"shlw", ORC_STATIC_OPCODE_SCALAR, {2}, {2, 2}, emulate_shlw}, + {"shrsw", ORC_STATIC_OPCODE_SCALAR, {2}, {2, 2}, emulate_shrsw}, + {"shruw", ORC_STATIC_OPCODE_SCALAR, {2}, {2, 2}, emulate_shruw}, + {"signw", 0, {2}, {2}, emulate_signw}, + {"storew", ORC_STATIC_OPCODE_STORE, {2}, {2}, emulate_storew}, + {"subw", 0, {2}, {2, 2}, emulate_subw}, + {"subssw", 0, {2}, {2, 2}, emulate_subssw}, + {"subusw", 0, {2}, {2, 2}, emulate_subusw}, + {"xorw", 0, {2}, {2, 2}, emulate_xorw}, /* long ops */ - { "absl", 0, { 4 }, { 4 }, emulate_absl }, - { "addl", 0, { 4 }, { 4, 4 }, emulate_addl }, - { "addssl", 0, { 4 }, { 4, 4 }, emulate_addssl }, - { "addusl", 0, { 4 }, { 4, 4 }, emulate_addusl }, - { "andl", 0, { 4 }, { 4, 4 }, emulate_andl }, - { "andnl", 0, { 4 }, { 4, 4 }, emulate_andnl }, - { "avgsl", 0, { 4 }, { 4, 4 }, emulate_avgsl }, - { "avgul", 0, { 4 }, { 4, 4 }, emulate_avgul }, - { "cmpeql", 0, { 4 }, { 4, 4 }, emulate_cmpeql }, - { "cmpgtsl", 0, { 4 }, { 4, 4 }, emulate_cmpgtsl }, - { "copyl", 0, { 4 }, { 4 }, emulate_copyl }, - { "loadl", ORC_STATIC_OPCODE_LOAD, { 4 }, { 4 }, emulate_loadl }, - { "loadoffl", ORC_STATIC_OPCODE_LOAD|ORC_STATIC_OPCODE_SCALAR, { 4 }, { 4, 4 }, emulate_loadoffl }, - { "loadpl", ORC_STATIC_OPCODE_LOAD|ORC_STATIC_OPCODE_SCALAR|ORC_STATIC_OPCODE_INVARIANT, { 4 }, { 4 }, emulate_loadpl }, - { "maxsl", 0, { 4 }, { 4, 4 }, emulate_maxsl }, - { "maxul", 0, { 4 }, { 4, 4 }, emulate_maxul }, - { "minsl", 0, { 4 }, { 4, 4 }, emulate_minsl }, - { "minul", 0, { 4 }, { 4, 4 }, emulate_minul }, - { "mulll", 0, { 4 }, { 4, 4 }, emulate_mulll }, - { "mulhsl", 0, { 4 }, { 4, 4 }, emulate_mulhsl }, - { "mulhul", 0, { 4 }, { 4, 4 }, emulate_mulhul }, - { "orl", 0, { 4 }, { 4, 4 }, emulate_orl }, - { "shll", ORC_STATIC_OPCODE_SCALAR, { 4 }, { 4, 4 }, emulate_shll }, - { "shrsl", ORC_STATIC_OPCODE_SCALAR, { 4 }, { 4, 4 }, emulate_shrsl }, - { "shrul", ORC_STATIC_OPCODE_SCALAR, { 4 }, { 4, 4 }, emulate_shrul }, - { "signl", 0, { 4 }, { 4 }, emulate_signl }, - { "storel", ORC_STATIC_OPCODE_STORE, { 4 }, { 4 }, emulate_storel }, - { "subl", 0, { 4 }, { 4, 4 }, emulate_subl }, - { "subssl", 0, { 4 }, { 4, 4 }, emulate_subssl }, - { "subusl", 0, { 4 }, { 4, 4 }, emulate_subusl }, - { "xorl", 0, { 4 }, { 4, 4 }, emulate_xorl }, - - { "loadq", ORC_STATIC_OPCODE_LOAD, { 8 }, { 8 }, emulate_loadq }, - { "loadpq", ORC_STATIC_OPCODE_LOAD|ORC_STATIC_OPCODE_SCALAR|ORC_STATIC_OPCODE_INVARIANT, { 8 }, { 8 }, emulate_loadpq }, - { "storeq", ORC_STATIC_OPCODE_STORE, { 8 }, { 8 }, emulate_storeq }, - { "splatw3q", 0, { 8 }, { 8 }, emulate_splatw3q }, - { "copyq", 0, { 8 }, { 8 }, emulate_copyq }, - { "cmpeqq", 0, { 8 }, { 8, 8 }, emulate_cmpeqq }, - { "cmpgtsq", 0, { 8 }, { 8, 8 }, emulate_cmpgtsq }, - { "andq", 0, { 8 }, { 8, 8 }, emulate_andq }, - { "andnq", 0, { 8 }, { 8, 8 }, emulate_andnq }, - { "orq", 0, { 8 }, { 8, 8 }, emulate_orq }, - { "xorq", 0, { 8 }, { 8, 8 }, emulate_xorq }, - { "addq", 0, { 8 }, { 8, 8 }, emulate_addq }, - { "subq", 0, { 8 }, { 8, 8 }, emulate_subq }, - { "shlq", ORC_STATIC_OPCODE_SCALAR, { 8 }, { 8, 8 }, emulate_shlq }, - { "shrsq", ORC_STATIC_OPCODE_SCALAR, { 8 }, { 8, 8 }, emulate_shrsq }, - { "shruq", ORC_STATIC_OPCODE_SCALAR, { 8 }, { 8, 8 }, emulate_shruq }, - - { "convsbw", 0, { 2 }, { 1 }, emulate_convsbw }, - { "convubw", 0, { 2 }, { 1 }, emulate_convubw }, - { "splatbw", 0, { 2 }, { 1 }, emulate_splatbw }, - { "splatbl", 0, { 4 }, { 1 }, emulate_splatbl }, - - { "convswl", 0, { 4 }, { 2 }, emulate_convswl }, - { "convuwl", 0, { 4 }, { 2 }, emulate_convuwl }, - { "convslq", 0, { 8 }, { 4 }, emulate_convslq }, - { "convulq", 0, { 8 }, { 4 }, emulate_convulq }, - - { "convwb", 0, { 1 }, { 2 }, emulate_convwb }, - { "convhwb", 0, { 1 }, { 2 }, emulate_convhwb }, - { "convssswb", 0, { 1 }, { 2 }, emulate_convssswb }, - { "convsuswb", 0, { 1 }, { 2 }, emulate_convsuswb }, - { "convusswb", 0, { 1 }, { 2 }, emulate_convusswb }, - { "convuuswb", 0, { 1 }, { 2 }, emulate_convuuswb }, - - { "convlw", 0, { 2 }, { 4 }, emulate_convlw }, - { "convhlw", 0, { 2 }, { 4 }, emulate_convhlw }, - { "convssslw", 0, { 2 }, { 4 }, emulate_convssslw }, - { "convsuslw", 0, { 2 }, { 4 }, emulate_convsuslw }, - { "convusslw", 0, { 2 }, { 4 }, emulate_convusslw }, - { "convuuslw", 0, { 2 }, { 4 }, emulate_convuuslw }, - - { "convql", 0, { 4 }, { 8 }, emulate_convql }, - { "convsssql", 0, { 4 }, { 8 }, emulate_convsssql }, - { "convsusql", 0, { 4 }, { 8 }, emulate_convsusql }, - { "convussql", 0, { 4 }, { 8 }, emulate_convussql }, - { "convuusql", 0, { 4 }, { 8 }, emulate_convuusql }, - - { "mulsbw", 0, { 2 }, { 1, 1 }, emulate_mulsbw }, - { "mulubw", 0, { 2 }, { 1, 1 }, emulate_mulubw }, - { "mulswl", 0, { 4 }, { 2, 2 }, emulate_mulswl }, - { "muluwl", 0, { 4 }, { 2, 2 }, emulate_muluwl }, - { "mulslq", 0, { 8 }, { 4, 4 }, emulate_mulslq }, - { "mululq", 0, { 8 }, { 4, 4 }, emulate_mululq }, + {"absl", 0, {4}, {4}, emulate_absl}, + {"addl", 0, {4}, {4, 4}, emulate_addl}, + {"addssl", 0, {4}, {4, 4}, emulate_addssl}, + {"addusl", 0, {4}, {4, 4}, emulate_addusl}, + {"andl", 0, {4}, {4, 4}, emulate_andl}, + {"andnl", 0, {4}, {4, 4}, emulate_andnl}, + {"avgsl", 0, {4}, {4, 4}, emulate_avgsl}, + {"avgul", 0, {4}, {4, 4}, emulate_avgul}, + {"cmpeql", 0, {4}, {4, 4}, emulate_cmpeql}, + {"cmpgtsl", 0, {4}, {4, 4}, emulate_cmpgtsl}, + {"copyl", 0, {4}, {4}, emulate_copyl}, + {"loadl", ORC_STATIC_OPCODE_LOAD, {4}, {4}, emulate_loadl}, + {"loadoffl", ORC_STATIC_OPCODE_LOAD | ORC_STATIC_OPCODE_SCALAR, {4}, {4, 4}, + emulate_loadoffl}, + {"loadpl", + ORC_STATIC_OPCODE_LOAD | ORC_STATIC_OPCODE_SCALAR | + ORC_STATIC_OPCODE_INVARIANT, {4}, {4}, emulate_loadpl}, + {"maxsl", 0, {4}, {4, 4}, emulate_maxsl}, + {"maxul", 0, {4}, {4, 4}, emulate_maxul}, + {"minsl", 0, {4}, {4, 4}, emulate_minsl}, + {"minul", 0, {4}, {4, 4}, emulate_minul}, + {"mulll", 0, {4}, {4, 4}, emulate_mulll}, + {"mulhsl", 0, {4}, {4, 4}, emulate_mulhsl}, + {"mulhul", 0, {4}, {4, 4}, emulate_mulhul}, + {"orl", 0, {4}, {4, 4}, emulate_orl}, + {"shll", ORC_STATIC_OPCODE_SCALAR, {4}, {4, 4}, emulate_shll}, + {"shrsl", ORC_STATIC_OPCODE_SCALAR, {4}, {4, 4}, emulate_shrsl}, + {"shrul", ORC_STATIC_OPCODE_SCALAR, {4}, {4, 4}, emulate_shrul}, + {"signl", 0, {4}, {4}, emulate_signl}, + {"storel", ORC_STATIC_OPCODE_STORE, {4}, {4}, emulate_storel}, + {"subl", 0, {4}, {4, 4}, emulate_subl}, + {"subssl", 0, {4}, {4, 4}, emulate_subssl}, + {"subusl", 0, {4}, {4, 4}, emulate_subusl}, + {"xorl", 0, {4}, {4, 4}, emulate_xorl}, + + {"loadq", ORC_STATIC_OPCODE_LOAD, {8}, {8}, emulate_loadq}, + {"loadpq", + ORC_STATIC_OPCODE_LOAD | ORC_STATIC_OPCODE_SCALAR | + ORC_STATIC_OPCODE_INVARIANT, {8}, {8}, emulate_loadpq}, + {"storeq", ORC_STATIC_OPCODE_STORE, {8}, {8}, emulate_storeq}, + {"splatw3q", 0, {8}, {8}, emulate_splatw3q}, + {"copyq", 0, {8}, {8}, emulate_copyq}, + {"cmpeqq", 0, {8}, {8, 8}, emulate_cmpeqq}, + {"cmpgtsq", 0, {8}, {8, 8}, emulate_cmpgtsq}, + {"andq", 0, {8}, {8, 8}, emulate_andq}, + {"andnq", 0, {8}, {8, 8}, emulate_andnq}, + {"orq", 0, {8}, {8, 8}, emulate_orq}, + {"xorq", 0, {8}, {8, 8}, emulate_xorq}, + {"addq", 0, {8}, {8, 8}, emulate_addq}, + {"subq", 0, {8}, {8, 8}, emulate_subq}, + {"shlq", ORC_STATIC_OPCODE_SCALAR, {8}, {8, 8}, emulate_shlq}, + {"shrsq", ORC_STATIC_OPCODE_SCALAR, {8}, {8, 8}, emulate_shrsq}, + {"shruq", ORC_STATIC_OPCODE_SCALAR, {8}, {8, 8}, emulate_shruq}, + + {"convsbw", 0, {2}, {1}, emulate_convsbw}, + {"convubw", 0, {2}, {1}, emulate_convubw}, + {"splatbw", 0, {2}, {1}, emulate_splatbw}, + {"splatbl", 0, {4}, {1}, emulate_splatbl}, + + {"convswl", 0, {4}, {2}, emulate_convswl}, + {"convuwl", 0, {4}, {2}, emulate_convuwl}, + {"convslq", 0, {8}, {4}, emulate_convslq}, + {"convulq", 0, {8}, {4}, emulate_convulq}, + + {"convwb", 0, {1}, {2}, emulate_convwb}, + {"convhwb", 0, {1}, {2}, emulate_convhwb}, + {"convssswb", 0, {1}, {2}, emulate_convssswb}, + {"convsuswb", 0, {1}, {2}, emulate_convsuswb}, + {"convusswb", 0, {1}, {2}, emulate_convusswb}, + {"convuuswb", 0, {1}, {2}, emulate_convuuswb}, + + {"convlw", 0, {2}, {4}, emulate_convlw}, + {"convhlw", 0, {2}, {4}, emulate_convhlw}, + {"convssslw", 0, {2}, {4}, emulate_convssslw}, + {"convsuslw", 0, {2}, {4}, emulate_convsuslw}, + {"convusslw", 0, {2}, {4}, emulate_convusslw}, + {"convuuslw", 0, {2}, {4}, emulate_convuuslw}, + + {"convql", 0, {4}, {8}, emulate_convql}, + {"convsssql", 0, {4}, {8}, emulate_convsssql}, + {"convsusql", 0, {4}, {8}, emulate_convsusql}, + {"convussql", 0, {4}, {8}, emulate_convussql}, + {"convuusql", 0, {4}, {8}, emulate_convuusql}, + + {"mulsbw", 0, {2}, {1, 1}, emulate_mulsbw}, + {"mulubw", 0, {2}, {1, 1}, emulate_mulubw}, + {"mulswl", 0, {4}, {2, 2}, emulate_mulswl}, + {"muluwl", 0, {4}, {2, 2}, emulate_muluwl}, + {"mulslq", 0, {8}, {4, 4}, emulate_mulslq}, + {"mululq", 0, {8}, {4, 4}, emulate_mululq}, /* accumulators */ - { "accw", ORC_STATIC_OPCODE_ACCUMULATOR, { 2 }, { 2 }, emulate_accw }, - { "accl", ORC_STATIC_OPCODE_ACCUMULATOR, { 4 }, { 4 }, emulate_accl }, - { "accsadubl", ORC_STATIC_OPCODE_ACCUMULATOR, { 4 }, { 1, 1 }, emulate_accsadubl }, - - { "swapw", 0, { 2 }, { 2 }, emulate_swapw }, - { "swapl", 0, { 4 }, { 4 }, emulate_swapl }, - { "swapwl", 0, { 4 }, { 4 }, emulate_swapwl }, - { "swapq", 0, { 8 }, { 8 }, emulate_swapq }, - { "swaplq", 0, { 8 }, { 8 }, emulate_swaplq }, - { "select0wb", 0, { 1 }, { 2 }, emulate_select0wb }, - { "select1wb", 0, { 1 }, { 2 }, emulate_select1wb }, - { "select0lw", 0, { 2 }, { 4 }, emulate_select0lw }, - { "select1lw", 0, { 2 }, { 4 }, emulate_select1lw }, - { "select0ql", 0, { 4 }, { 8 }, emulate_select0ql }, - { "select1ql", 0, { 4 }, { 8 }, emulate_select1ql }, - { "mergelq", 0, { 8 }, { 4, 4 }, emulate_mergelq }, - { "mergewl", 0, { 4 }, { 2, 2 }, emulate_mergewl }, - { "mergebw", 0, { 2 }, { 1, 1 }, emulate_mergebw }, - { "splitql", 0, { 4, 4 }, { 8 }, emulate_splitql }, - { "splitlw", 0, { 2, 2 }, { 4 }, emulate_splitlw }, - { "splitwb", 0, { 1, 1 }, { 2 }, emulate_splitwb }, + {"accw", ORC_STATIC_OPCODE_ACCUMULATOR, {2}, {2}, emulate_accw}, + {"accl", ORC_STATIC_OPCODE_ACCUMULATOR, {4}, {4}, emulate_accl}, + {"accsadubl", ORC_STATIC_OPCODE_ACCUMULATOR, {4}, {1, 1}, emulate_accsadubl}, + + {"swapw", 0, {2}, {2}, emulate_swapw}, + {"swapl", 0, {4}, {4}, emulate_swapl}, + {"swapwl", 0, {4}, {4}, emulate_swapwl}, + {"swapq", 0, {8}, {8}, emulate_swapq}, + {"swaplq", 0, {8}, {8}, emulate_swaplq}, + {"select0wb", 0, {1}, {2}, emulate_select0wb}, + {"select1wb", 0, {1}, {2}, emulate_select1wb}, + {"select0lw", 0, {2}, {4}, emulate_select0lw}, + {"select1lw", 0, {2}, {4}, emulate_select1lw}, + {"select0ql", 0, {4}, {8}, emulate_select0ql}, + {"select1ql", 0, {4}, {8}, emulate_select1ql}, + {"mergelq", 0, {8}, {4, 4}, emulate_mergelq}, + {"mergewl", 0, {4}, {2, 2}, emulate_mergewl}, + {"mergebw", 0, {2}, {1, 1}, emulate_mergebw}, + {"splitql", 0, {4, 4}, {8}, emulate_splitql}, + {"splitlw", 0, {2, 2}, {4}, emulate_splitlw}, + {"splitwb", 0, {1, 1}, {2}, emulate_splitwb}, /* float ops */ - { "addf", ORC_STATIC_OPCODE_FLOAT, { 4 }, { 4, 4 }, emulate_addf }, - { "subf", ORC_STATIC_OPCODE_FLOAT, { 4 }, { 4, 4 }, emulate_subf }, - { "mulf", ORC_STATIC_OPCODE_FLOAT, { 4 }, { 4, 4 }, emulate_mulf }, - { "divf", ORC_STATIC_OPCODE_FLOAT, { 4 }, { 4, 4 }, emulate_divf }, - { "sqrtf", ORC_STATIC_OPCODE_FLOAT, { 4 }, { 4 }, emulate_sqrtf }, - { "maxf", ORC_STATIC_OPCODE_FLOAT, { 4 }, { 4, 4 }, emulate_maxf }, - { "minf", ORC_STATIC_OPCODE_FLOAT, { 4 }, { 4, 4 }, emulate_minf }, - { "cmpeqf", ORC_STATIC_OPCODE_FLOAT_SRC, { 4 }, { 4, 4 }, emulate_cmpeqf }, - { "cmpltf", ORC_STATIC_OPCODE_FLOAT_SRC, { 4 }, { 4, 4 }, emulate_cmpltf }, - { "cmplef", ORC_STATIC_OPCODE_FLOAT_SRC, { 4 }, { 4, 4 }, emulate_cmplef }, - { "convfl", ORC_STATIC_OPCODE_FLOAT_SRC, { 4 }, { 4 }, emulate_convfl }, - { "convlf", ORC_STATIC_OPCODE_FLOAT_DEST, { 4 }, { 4 }, emulate_convlf }, + {"addf", ORC_STATIC_OPCODE_FLOAT, {4}, {4, 4}, emulate_addf}, + {"subf", ORC_STATIC_OPCODE_FLOAT, {4}, {4, 4}, emulate_subf}, + {"mulf", ORC_STATIC_OPCODE_FLOAT, {4}, {4, 4}, emulate_mulf}, + {"divf", ORC_STATIC_OPCODE_FLOAT, {4}, {4, 4}, emulate_divf}, + {"sqrtf", ORC_STATIC_OPCODE_FLOAT, {4}, {4}, emulate_sqrtf}, + {"maxf", ORC_STATIC_OPCODE_FLOAT, {4}, {4, 4}, emulate_maxf}, + {"minf", ORC_STATIC_OPCODE_FLOAT, {4}, {4, 4}, emulate_minf}, + {"cmpeqf", ORC_STATIC_OPCODE_FLOAT_SRC, {4}, {4, 4}, emulate_cmpeqf}, + {"cmpltf", ORC_STATIC_OPCODE_FLOAT_SRC, {4}, {4, 4}, emulate_cmpltf}, + {"cmplef", ORC_STATIC_OPCODE_FLOAT_SRC, {4}, {4, 4}, emulate_cmplef}, + {"convfl", ORC_STATIC_OPCODE_FLOAT_SRC, {4}, {4}, emulate_convfl}, + {"convlf", ORC_STATIC_OPCODE_FLOAT_DEST, {4}, {4}, emulate_convlf}, /* double ops */ - { "addd", ORC_STATIC_OPCODE_FLOAT, { 8 }, { 8, 8 }, emulate_addd }, - { "subd", ORC_STATIC_OPCODE_FLOAT, { 8 }, { 8, 8 }, emulate_subd }, - { "muld", ORC_STATIC_OPCODE_FLOAT, { 8 }, { 8, 8 }, emulate_muld }, - { "divd", ORC_STATIC_OPCODE_FLOAT, { 8 }, { 8, 8 }, emulate_divd }, - { "sqrtd", ORC_STATIC_OPCODE_FLOAT, { 8 }, { 8 }, emulate_sqrtd }, - { "maxd", ORC_STATIC_OPCODE_FLOAT, { 8 }, { 8, 8 }, emulate_maxd }, - { "mind", ORC_STATIC_OPCODE_FLOAT, { 8 }, { 8, 8 }, emulate_mind }, - { "cmpeqd", ORC_STATIC_OPCODE_FLOAT_SRC, { 8 }, { 8, 8 }, emulate_cmpeqd }, - { "cmpltd", ORC_STATIC_OPCODE_FLOAT_SRC, { 8 }, { 8, 8 }, emulate_cmpltd }, - { "cmpled", ORC_STATIC_OPCODE_FLOAT_SRC, { 8 }, { 8, 8 }, emulate_cmpled }, - { "convdl", ORC_STATIC_OPCODE_FLOAT_SRC, { 4 }, { 8 }, emulate_convdl }, - { "convld", ORC_STATIC_OPCODE_FLOAT_DEST, { 8 }, { 4 }, emulate_convld }, - { "convfd", ORC_STATIC_OPCODE_FLOAT, { 8 }, { 4 }, emulate_convfd }, - { "convdf", ORC_STATIC_OPCODE_FLOAT, { 4 }, { 8 }, emulate_convdf }, - - { "" } + {"addd", ORC_STATIC_OPCODE_FLOAT, {8}, {8, 8}, emulate_addd}, + {"subd", ORC_STATIC_OPCODE_FLOAT, {8}, {8, 8}, emulate_subd}, + {"muld", ORC_STATIC_OPCODE_FLOAT, {8}, {8, 8}, emulate_muld}, + {"divd", ORC_STATIC_OPCODE_FLOAT, {8}, {8, 8}, emulate_divd}, + {"sqrtd", ORC_STATIC_OPCODE_FLOAT, {8}, {8}, emulate_sqrtd}, + {"maxd", ORC_STATIC_OPCODE_FLOAT, {8}, {8, 8}, emulate_maxd}, + {"mind", ORC_STATIC_OPCODE_FLOAT, {8}, {8, 8}, emulate_mind}, + {"cmpeqd", ORC_STATIC_OPCODE_FLOAT_SRC, {8}, {8, 8}, emulate_cmpeqd}, + {"cmpltd", ORC_STATIC_OPCODE_FLOAT_SRC, {8}, {8, 8}, emulate_cmpltd}, + {"cmpled", ORC_STATIC_OPCODE_FLOAT_SRC, {8}, {8, 8}, emulate_cmpled}, + {"convdl", ORC_STATIC_OPCODE_FLOAT_SRC, {4}, {8}, emulate_convdl}, + {"convld", ORC_STATIC_OPCODE_FLOAT_DEST, {8}, {4}, emulate_convld}, + {"convfd", ORC_STATIC_OPCODE_FLOAT, {8}, {4}, emulate_convfd}, + {"convdf", ORC_STATIC_OPCODE_FLOAT, {4}, {8}, emulate_convdf}, + + {""} }; void @@ -507,5 +536,3 @@ orc_opcode_init (void) { orc_opcode_register_static (opcodes, "sys"); } - - diff --git a/orc/orcparse.c b/orc/orcparse.c index 16fdaf4..86fee89 100644 --- a/orc/orcparse.c +++ b/orc/orcparse.c @@ -18,7 +18,8 @@ typedef struct _OrcParser OrcParser; -struct _OrcParser { +struct _OrcParser +{ const char *code; int code_length; @@ -41,34 +42,34 @@ struct _OrcParser { int log_alloc; }; -static void orc_parse_get_line (OrcParser *parser); -static OrcStaticOpcode * get_opcode (OrcParser *parser, const char *opcode); -static void orc_parse_log (OrcParser *parser, const char *format, ...); -static int opcode_n_args (OrcStaticOpcode *opcode); -static void orc_parse_sanity_check (OrcParser *parser, OrcProgram *program); +static void orc_parse_get_line (OrcParser * parser); +static OrcStaticOpcode *get_opcode (OrcParser * parser, const char *opcode); +static void orc_parse_log (OrcParser * parser, const char *format, ...); +static int opcode_n_args (OrcStaticOpcode * opcode); +static void orc_parse_sanity_check (OrcParser * parser, OrcProgram * program); int -orc_parse (const char *code, OrcProgram ***programs) +orc_parse (const char *code, OrcProgram *** programs) { return orc_parse_full (code, programs, NULL); } int -orc_parse_full (const char *code, OrcProgram ***programs, char **log) +orc_parse_full (const char *code, OrcProgram *** programs, char **log) { OrcParser _parser; OrcParser *parser = &_parser; char *init_function = NULL; - memset (parser, 0, sizeof(*parser)); + memset (parser, 0, sizeof (*parser)); parser->code = code; parser->code_length = strlen (code); parser->line_number = 0; parser->p = code; parser->opcode_set = orc_opcode_set_get ("sys"); - parser->log = malloc(100); + parser->log = malloc (100); parser->log_alloc = 100; parser->log_size = 0; parser->log[0] = 0; @@ -80,13 +81,15 @@ orc_parse_full (const char *code, OrcProgram ***programs, char **log) int n_tokens; orc_parse_get_line (parser); - if (parser->program) orc_program_set_line (parser->program, parser->line_number); + if (parser->program) + orc_program_set_line (parser->program, parser->line_number); p = parser->line; end = p + strlen (p); //printf("%d: %s\n", parser->line_number, parser->line); - while (p[0] == ' ' || p[0] == '\t') p++; + while (p[0] == ' ' || p[0] == '\t') + p++; if (p[0] == 0) { continue; @@ -100,11 +103,14 @@ orc_parse_full (const char *code, OrcProgram ***programs, char **log) n_tokens = 0; while (p < end) { - while (p[0] != 0 && (p[0] == ' ' || p[0] == '\t')) p++; - if (p[0] == 0 || p[0] == '#') break; + while (p[0] != 0 && (p[0] == ' ' || p[0] == '\t')) + p++; + if (p[0] == 0 || p[0] == '#') + break; token[n_tokens] = p; - while (p[0] != 0 && p[0] != ' ' && p[0] != '\t' && p[0] != ',') p++; + while (p[0] != 0 && p[0] != ' ' && p[0] != '\t' && p[0] != ',') + p++; n_tokens++; p[0] = 0; @@ -117,7 +123,7 @@ orc_parse_full (const char *code, OrcProgram ***programs, char **log) { int i; - for(i=0;i<n_tokens;i++){ + for (i = 0; i < n_tokens; i++) { //printf("'%s' ", token[i]); } //printf("\n"); @@ -133,7 +139,7 @@ orc_parse_full (const char *code, OrcProgram ***programs, char **log) if (parser->n_programs == parser->n_programs_alloc) { parser->n_programs_alloc += 32; parser->programs = realloc (parser->programs, - sizeof(OrcProgram *)*parser->n_programs_alloc); + sizeof (OrcProgram *) * parser->n_programs_alloc); } parser->programs[parser->n_programs] = parser->program; parser->n_programs++; @@ -142,24 +148,26 @@ orc_parse_full (const char *code, OrcProgram ***programs, char **log) free (init_function); init_function = NULL; if (n_tokens < 2) { - orc_parse_log (parser, "error: line %d: .init without function name\n", + orc_parse_log (parser, + "error: line %d: .init without function name\n", parser->line_number); } else { init_function = strdup (token[1]); } } else if (strcmp (token[0], ".flags") == 0) { int i; - for(i=1;i<n_tokens;i++){ + for (i = 1; i < n_tokens; i++) { if (!strcmp (token[i], "2d")) { orc_program_set_2d (parser->program); } } } else if (strcmp (token[0], ".n") == 0) { int i; - for(i=1;i<n_tokens;i++){ + for (i = 1; i < n_tokens; i++) { if (strcmp (token[i], "mult") == 0) { if (i == n_tokens - 1) { - orc_parse_log (parser, "error: line %d: .n mult requires multiple value\n", + orc_parse_log (parser, + "error: line %d: .n mult requires multiple value\n", parser->line_number); } else { orc_program_set_n_multiple (parser->program, @@ -168,7 +176,8 @@ orc_parse_full (const char *code, OrcProgram ***programs, char **log) } } else if (strcmp (token[i], "min") == 0) { if (i == n_tokens - 1) { - orc_parse_log (parser, "error: line %d: .n mult requires multiple value\n", + orc_parse_log (parser, + "error: line %d: .n mult requires multiple value\n", parser->line_number); } else { orc_program_set_n_minimum (parser->program, @@ -177,7 +186,8 @@ orc_parse_full (const char *code, OrcProgram ***programs, char **log) } } else if (strcmp (token[i], "max") == 0) { if (i == n_tokens - 1) { - orc_parse_log (parser, "error: line %d: .n mult requires multiple value\n", + orc_parse_log (parser, + "error: line %d: .n mult requires multiple value\n", parser->line_number); } else { orc_program_set_n_maximum (parser->program, @@ -197,13 +207,14 @@ orc_parse_full (const char *code, OrcProgram ***programs, char **log) int var; int i; var = orc_program_add_source (parser->program, size, token[2]); - for(i=3;i<n_tokens;i++){ + for (i = 3; i < n_tokens; i++) { if (strcmp (token[i], "align") == 0) { if (i == n_tokens - 1) { - orc_parse_log (parser, "error: line %d: .source align requires alignment value\n", + orc_parse_log (parser, + "error: line %d: .source align requires alignment value\n", parser->line_number); } else { - int alignment = strtol (token[i+1], NULL, 0); + int alignment = strtol (token[i + 1], NULL, 0); orc_program_set_var_alignment (parser->program, var, alignment); i++; } @@ -216,13 +227,14 @@ orc_parse_full (const char *code, OrcProgram ***programs, char **log) int var; int i; var = orc_program_add_destination (parser->program, size, token[2]); - for(i=3;i<n_tokens;i++){ + for (i = 3; i < n_tokens; i++) { if (strcmp (token[i], "align") == 0) { if (i == n_tokens - 1) { - orc_parse_log (parser, "error: line %d: .source align requires alignment value\n", + orc_parse_log (parser, + "error: line %d: .source align requires alignment value\n", parser->line_number); } else { - int alignment = strtol (token[i+1], NULL, 0); + int alignment = strtol (token[i + 1], NULL, 0); orc_program_set_var_alignment (parser->program, var, alignment); i++; } @@ -249,7 +261,8 @@ orc_parse_full (const char *code, OrcProgram ***programs, char **log) } else if (strcmp (token[0], ".const") == 0) { int size = strtol (token[1], NULL, 0); - orc_program_add_constant_str (parser->program, size, token[3], token[2]); + orc_program_add_constant_str (parser->program, size, token[3], + token[2]); } else if (strcmp (token[0], ".floatparam") == 0) { int size = strtol (token[1], NULL, 0); orc_program_add_parameter_float (parser->program, size, token[2]); @@ -280,12 +293,14 @@ orc_parse_full (const char *code, OrcProgram ***programs, char **log) int i; if (n_tokens != 1 + offset + n_args) { - orc_parse_log (parser, "error: line %d: too %s arguments for %s (expected %d)\n", - parser->line_number, (n_tokens < 1+offset+n_args) ? "few" : "many", - token[offset], n_args); + orc_parse_log (parser, + "error: line %d: too %s arguments for %s (expected %d)\n", + parser->line_number, + (n_tokens < 1 + offset + n_args) ? "few" : "many", token[offset], + n_args); } - for(i=offset+1;i<n_tokens;i++){ + for (i = offset + 1; i < n_tokens; i++) { char *end; double unused ORC_GNUC_UNUSED; @@ -298,18 +313,18 @@ orc_parse_full (const char *code, OrcProgram ***programs, char **log) if (n_tokens - offset == 5) { orc_program_append_str_2 (parser->program, token[offset], flags, - token[offset+1], token[offset+2], token[offset+3], token[offset+4]); + token[offset + 1], token[offset + 2], token[offset + 3], + token[offset + 4]); } else if (n_tokens - offset == 4) { orc_program_append_str_2 (parser->program, token[offset], flags, - token[offset+1], token[offset+2], token[offset+3], NULL); + token[offset + 1], token[offset + 2], token[offset + 3], NULL); } else { orc_program_append_str_2 (parser->program, token[offset], flags, - token[offset+1], token[offset+2], NULL, NULL); + token[offset + 1], token[offset + 2], NULL, NULL); } } else { orc_parse_log (parser, "error: line %d: unknown opcode: %s\n", - parser->line_number, - token[offset]); + parser->line_number, token[offset]); } } } @@ -318,7 +333,8 @@ orc_parse_full (const char *code, OrcProgram ***programs, char **log) orc_parse_sanity_check (parser, parser->program); } - if (parser->line) free (parser->line); + if (parser->line) + free (parser->line); if (log) { *log = parser->log; @@ -335,11 +351,11 @@ orc_parse_full (const char *code, OrcProgram ***programs, char **log) } static OrcStaticOpcode * -get_opcode (OrcParser *parser, const char *opcode) +get_opcode (OrcParser * parser, const char *opcode) { int i; - for(i=0;i<parser->opcode_set->n_opcodes;i++){ + for (i = 0; i < parser->opcode_set->n_opcodes; i++) { if (strcmp (opcode, parser->opcode_set->opcodes[i].name) == 0) { return parser->opcode_set->opcodes + i; } @@ -349,28 +365,30 @@ get_opcode (OrcParser *parser, const char *opcode) } static int -opcode_n_args (OrcStaticOpcode *opcode) +opcode_n_args (OrcStaticOpcode * opcode) { int i; int n = 0; - for(i=0;i<ORC_STATIC_OPCODE_N_DEST;i++){ - if (opcode->dest_size[i] != 0) n++; + for (i = 0; i < ORC_STATIC_OPCODE_N_DEST; i++) { + if (opcode->dest_size[i] != 0) + n++; } - for(i=0;i<ORC_STATIC_OPCODE_N_SRC;i++){ - if (opcode->src_size[i] != 0) n++; + for (i = 0; i < ORC_STATIC_OPCODE_N_SRC; i++) { + if (opcode->src_size[i] != 0) + n++; } return n; } static void -orc_parse_log_valist (OrcParser *parser, const char *format, va_list args) +orc_parse_log_valist (OrcParser * parser, const char *format, va_list args) { char s[100]; int len; - + if (parser->error_program != parser->program) { - sprintf(s, "In function %s:\n", parser->program->name); - len = strlen(s); + sprintf (s, "In function %s:\n", parser->program->name); + len = strlen (s); if (parser->log_size + len + 1 >= parser->log_alloc) { parser->log_alloc += 100; @@ -382,8 +400,8 @@ orc_parse_log_valist (OrcParser *parser, const char *format, va_list args) parser->error_program = parser->program; } - vsprintf(s, format, args); - len = strlen(s); + vsprintf (s, format, args); + len = strlen (s); if (parser->log_size + len + 1 >= parser->log_alloc) { parser->log_alloc += 100; @@ -395,7 +413,7 @@ orc_parse_log_valist (OrcParser *parser, const char *format, va_list args) } static void -orc_parse_log (OrcParser *parser, const char *format, ...) +orc_parse_log (OrcParser * parser, const char *format, ...) { va_list var_args; @@ -405,7 +423,7 @@ orc_parse_log (OrcParser *parser, const char *format, ...) } static void -orc_parse_get_line (OrcParser *parser) +orc_parse_get_line (OrcParser * parser) { const char *end; int n; @@ -434,15 +452,17 @@ orc_parse_get_line (OrcParser *parser) static void -orc_parse_sanity_check (OrcParser *parser, OrcProgram *program) +orc_parse_sanity_check (OrcParser * parser, OrcProgram * program) { int i; int j; - for(i=0;i<=ORC_VAR_T15;i++) { - if (program->vars[i].size == 0) continue; - for(j=i+1;j<=ORC_VAR_T15;j++) { - if (program->vars[j].size == 0) continue; + for (i = 0; i <= ORC_VAR_T15; i++) { + if (program->vars[i].size == 0) + continue; + for (j = i + 1; j <= ORC_VAR_T15; j++) { + if (program->vars[j].size == 0) + continue; if (strcmp (program->vars[i].name, program->vars[j].name) == 0) { orc_parse_log (parser, "error: duplicate variable name: %s\n", @@ -451,22 +471,25 @@ orc_parse_sanity_check (OrcParser *parser, OrcProgram *program) } } - for(i=0;i<program->n_insns;i++){ + for (i = 0; i < program->n_insns; i++) { OrcInstruction *insn = program->insns + i; OrcStaticOpcode *opcode = insn->opcode; - for(j=0;j<ORC_STATIC_OPCODE_N_DEST;j++){ - if (opcode->dest_size[j] == 0) continue; + for (j = 0; j < ORC_STATIC_OPCODE_N_DEST; j++) { + if (opcode->dest_size[j] == 0) + continue; if (program->vars[insn->dest_args[j]].used && program->vars[insn->dest_args[j]].vartype == ORC_VAR_TYPE_DEST) { - orc_parse_log (parser, "error: destination \"%s\" written multiple times\n", + orc_parse_log (parser, + "error: destination \"%s\" written multiple times\n", program->vars[insn->dest_args[j]].name); } program->vars[insn->dest_args[j]].used = TRUE; } - for(j=0;j<ORC_STATIC_OPCODE_N_SRC;j++){ - if (opcode->src_size[j] == 0) continue; + for (j = 0; j < ORC_STATIC_OPCODE_N_SRC; j++) { + if (opcode->src_size[j] == 0) + continue; if (program->vars[insn->src_args[j]].used && program->vars[insn->src_args[j]].vartype == ORC_VAR_TYPE_SRC) { orc_parse_log (parser, "error: source \"%s\" read multiple times\n", @@ -474,7 +497,8 @@ orc_parse_sanity_check (OrcParser *parser, OrcProgram *program) } if (!program->vars[insn->src_args[j]].used && program->vars[insn->src_args[j]].vartype == ORC_VAR_TYPE_TEMP) { - orc_parse_log (parser, "error: variable \"%s\" used before being written\n", + orc_parse_log (parser, + "error: variable \"%s\" used before being written\n", program->vars[insn->src_args[j]].name); } } @@ -484,8 +508,7 @@ orc_parse_sanity_check (OrcParser *parser, OrcProgram *program) } const char * -orc_parse_get_init_function (OrcProgram *program) +orc_parse_get_init_function (OrcProgram * program) { return program->init_function; } - diff --git a/orc/orcpowerpc.c b/orc/orcpowerpc.c index 1d9c6c8..c7d92c1 100644 --- a/orc/orcpowerpc.c +++ b/orc/orcpowerpc.c @@ -18,12 +18,12 @@ */ -void orc_compiler_powerpc_init (OrcCompiler *compiler); -void orc_compiler_powerpc_assemble (OrcCompiler *compiler); -void orc_compiler_powerpc_register_rules (OrcTarget *target); +void orc_compiler_powerpc_init (OrcCompiler * compiler); +void orc_compiler_powerpc_assemble (OrcCompiler * compiler); +void orc_compiler_powerpc_register_rules (OrcTarget * target); const char * -powerpc_get_regname(int i) +powerpc_get_regname (int i) { static const char *powerpc_regs[] = { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", @@ -36,7 +36,7 @@ powerpc_get_regname(int i) "v30", "v31", }; - if (i>=ORC_GP_REG_BASE && i<ORC_GP_REG_BASE + 64) { + if (i >= ORC_GP_REG_BASE && i < ORC_GP_REG_BASE + 64) { return powerpc_regs[i - ORC_GP_REG_BASE]; } switch (i) { @@ -52,327 +52,321 @@ powerpc_get_regname(int i) int powerpc_regnum (int i) { - return (i-ORC_GP_REG_BASE)&0x1f; + return (i - ORC_GP_REG_BASE) & 0x1f; } void -powerpc_emit(OrcCompiler *compiler, unsigned int insn) +powerpc_emit (OrcCompiler * compiler, unsigned int insn) { - *compiler->codeptr++ = (insn>>24); - *compiler->codeptr++ = (insn>>16); - *compiler->codeptr++ = (insn>>8); - *compiler->codeptr++ = (insn>>0); + *compiler->codeptr++ = (insn >> 24); + *compiler->codeptr++ = (insn >> 16); + *compiler->codeptr++ = (insn >> 8); + *compiler->codeptr++ = (insn >> 0); } void -powerpc_emit_add (OrcCompiler *compiler, int regd, int rega, int regb) +powerpc_emit_add (OrcCompiler * compiler, int regd, int rega, int regb) { unsigned int insn; - ORC_ASM_CODE(compiler," add %s, %s, %s\n", - powerpc_get_regname(regd), - powerpc_get_regname(rega), - powerpc_get_regname(regb)); - insn = 0x7c000214 | (powerpc_regnum (regd)<<21) | (powerpc_regnum (rega)<<16); - insn |= (powerpc_regnum (regb)<<11); + ORC_ASM_CODE (compiler, " add %s, %s, %s\n", + powerpc_get_regname (regd), + powerpc_get_regname (rega), powerpc_get_regname (regb)); + insn = + 0x7c000214 | (powerpc_regnum (regd) << 21) | (powerpc_regnum (rega) << + 16); + insn |= (powerpc_regnum (regb) << 11); powerpc_emit (compiler, insn); } void -powerpc_emit_addi_rec (OrcCompiler *compiler, int regd, int rega, int imm) +powerpc_emit_addi_rec (OrcCompiler * compiler, int regd, int rega, int imm) { unsigned int insn; - ORC_ASM_CODE(compiler," addic. %s, %s, %d\n", - powerpc_get_regname(regd), - powerpc_get_regname(rega), imm); - insn = 0x34000000 | (powerpc_regnum (regd)<<21) | (powerpc_regnum (rega)<<16); - insn |= imm&0xffff; + ORC_ASM_CODE (compiler, " addic. %s, %s, %d\n", + powerpc_get_regname (regd), powerpc_get_regname (rega), imm); + insn = + 0x34000000 | (powerpc_regnum (regd) << 21) | (powerpc_regnum (rega) << + 16); + insn |= imm & 0xffff; powerpc_emit (compiler, insn); } void -powerpc_emit_addi (OrcCompiler *compiler, int regd, int rega, int imm) +powerpc_emit_addi (OrcCompiler * compiler, int regd, int rega, int imm) { unsigned int insn; - ORC_ASM_CODE(compiler," addi %s, %s, %d\n", - powerpc_get_regname(regd), - powerpc_get_regname(rega), imm); - insn = (14<<26) | (powerpc_regnum (regd)<<21) | (powerpc_regnum (rega)<<16); - insn |= imm&0xffff; + ORC_ASM_CODE (compiler, " addi %s, %s, %d\n", + powerpc_get_regname (regd), powerpc_get_regname (rega), imm); + insn = + (14 << 26) | (powerpc_regnum (regd) << 21) | (powerpc_regnum (rega) << + 16); + insn |= imm & 0xffff; powerpc_emit (compiler, insn); } void -powerpc_emit_lwz (OrcCompiler *compiler, int regd, int rega, int imm) +powerpc_emit_lwz (OrcCompiler * compiler, int regd, int rega, int imm) { unsigned int insn; - ORC_ASM_CODE(compiler," lwz %s, %d(%s)\n", - powerpc_get_regname(regd), - imm, powerpc_get_regname(rega)); - insn = (32<<26) | (powerpc_regnum (regd)<<21) | (powerpc_regnum (rega)<<16); - insn |= imm&0xffff; + ORC_ASM_CODE (compiler, " lwz %s, %d(%s)\n", + powerpc_get_regname (regd), imm, powerpc_get_regname (rega)); + insn = + (32 << 26) | (powerpc_regnum (regd) << 21) | (powerpc_regnum (rega) << + 16); + insn |= imm & 0xffff; powerpc_emit (compiler, insn); } void -powerpc_emit_stw (OrcCompiler *compiler, int regs, int rega, int offset) +powerpc_emit_stw (OrcCompiler * compiler, int regs, int rega, int offset) { unsigned int insn; - ORC_ASM_CODE(compiler," stw %s, %d(%s)\n", - powerpc_get_regname(regs), - offset, powerpc_get_regname(rega)); - insn = 0x90000000 | (powerpc_regnum (regs)<<21) | (powerpc_regnum (rega)<<16); - insn |= offset&0xffff; + ORC_ASM_CODE (compiler, " stw %s, %d(%s)\n", + powerpc_get_regname (regs), offset, powerpc_get_regname (rega)); + insn = + 0x90000000 | (powerpc_regnum (regs) << 21) | (powerpc_regnum (rega) << + 16); + insn |= offset & 0xffff; powerpc_emit (compiler, insn); } void -powerpc_emit_stwu (OrcCompiler *compiler, int regs, int rega, int offset) +powerpc_emit_stwu (OrcCompiler * compiler, int regs, int rega, int offset) { unsigned int insn; - ORC_ASM_CODE(compiler," stwu %s, %d(%s)\n", - powerpc_get_regname(regs), - offset, powerpc_get_regname(rega)); - insn = (37<<26) | (powerpc_regnum (regs)<<21) | (powerpc_regnum (rega)<<16); - insn |= offset&0xffff; + ORC_ASM_CODE (compiler, " stwu %s, %d(%s)\n", + powerpc_get_regname (regs), offset, powerpc_get_regname (rega)); + insn = + (37 << 26) | (powerpc_regnum (regs) << 21) | (powerpc_regnum (rega) << + 16); + insn |= offset & 0xffff; powerpc_emit (compiler, insn); } void -powerpc_emit_srawi (OrcCompiler *compiler, int regd, int rega, int shift, +powerpc_emit_srawi (OrcCompiler * compiler, int regd, int rega, int shift, int record) { unsigned int insn; - ORC_ASM_CODE(compiler," srawi%s %s, %s, %d\n", (record)?".":"", - powerpc_get_regname(regd), - powerpc_get_regname(rega), shift); + ORC_ASM_CODE (compiler, " srawi%s %s, %s, %d\n", (record) ? "." : "", + powerpc_get_regname (regd), powerpc_get_regname (rega), shift); - insn = (31<<26) | (powerpc_regnum (regd)<<21) | (powerpc_regnum (rega)<<16); - insn |= (shift<<11) | (824<<1) | record; + insn = + (31 << 26) | (powerpc_regnum (regd) << 21) | (powerpc_regnum (rega) << + 16); + insn |= (shift << 11) | (824 << 1) | record; powerpc_emit (compiler, insn); } void -powerpc_emit_655510 (OrcCompiler *compiler, int major, int d, int a, int b, +powerpc_emit_655510 (OrcCompiler * compiler, int major, int d, int a, int b, int minor) { unsigned int insn; - insn = (major<<26) | (d<<21) | (a<<16); - insn |= (b<<11) | (minor<<0); + insn = (major << 26) | (d << 21) | (a << 16); + insn |= (b << 11) | (minor << 0); powerpc_emit (compiler, insn); } void -powerpc_emit_D (OrcCompiler *compiler, const char *name, +powerpc_emit_D (OrcCompiler * compiler, const char *name, unsigned int insn, int regd, int rega, int imm) { - ORC_ASM_CODE(compiler," %s %s, %s, %d\n", name, - powerpc_get_regname(regd), - powerpc_get_regname(rega), imm); - insn |= (powerpc_regnum (regd)<<21) | (powerpc_regnum (rega)<<16); - insn |= imm&0xffff; + ORC_ASM_CODE (compiler, " %s %s, %s, %d\n", name, + powerpc_get_regname (regd), powerpc_get_regname (rega), imm); + insn |= (powerpc_regnum (regd) << 21) | (powerpc_regnum (rega) << 16); + insn |= imm & 0xffff; powerpc_emit (compiler, insn); } void -powerpc_emit_X (OrcCompiler *compiler, unsigned int insn, int d, int a, int b) +powerpc_emit_X (OrcCompiler * compiler, unsigned int insn, int d, int a, int b) { #if 0 unsigned int insn; - insn = (major<<26) | (d<<21) | (a<<16); - insn |= (b<<11) | (minor<<1) | (0<<0); + insn = (major << 26) | (d << 21) | (a << 16); + insn |= (b << 11) | (minor << 1) | (0 << 0); powerpc_emit (compiler, insn); #endif - insn |= ((d&0x1f)<<21); - insn |= ((a&0x1f)<<16); - insn |= ((b&0x1f)<<11); + insn |= ((d & 0x1f) << 21); + insn |= ((a & 0x1f) << 16); + insn |= ((b & 0x1f) << 11); powerpc_emit (compiler, insn); } void -powerpc_emit_VA (OrcCompiler *compiler, const char *name, unsigned int insn, +powerpc_emit_VA (OrcCompiler * compiler, const char *name, unsigned int insn, int d, int a, int b, int c) { - ORC_ASM_CODE(compiler," %s %s, %s, %s, %s\n", name, - powerpc_get_regname(d), - powerpc_get_regname(a), - powerpc_get_regname(b), - powerpc_get_regname(c)); + ORC_ASM_CODE (compiler, " %s %s, %s, %s, %s\n", name, + powerpc_get_regname (d), + powerpc_get_regname (a), + powerpc_get_regname (b), powerpc_get_regname (c)); - insn |= ((d&0x1f)<<21) | ((a&0x1f)<<16) | ((b&0x1f)<<11) | ((c&0x1f)<<6); + insn |= + ((d & 0x1f) << 21) | ((a & 0x1f) << 16) | ((b & 0x1f) << 11) | ((c & 0x1f) + << 6); powerpc_emit (compiler, insn); } void -powerpc_emit_VA_acb (OrcCompiler *compiler, const char *name, unsigned int insn, - int d, int a, int b, int c) +powerpc_emit_VA_acb (OrcCompiler * compiler, const char *name, + unsigned int insn, int d, int a, int b, int c) { - ORC_ASM_CODE(compiler," %s %s, %s, %s, %s\n", name, - powerpc_get_regname(d), - powerpc_get_regname(a), - powerpc_get_regname(c), - powerpc_get_regname(b)); + ORC_ASM_CODE (compiler, " %s %s, %s, %s, %s\n", name, + powerpc_get_regname (d), + powerpc_get_regname (a), + powerpc_get_regname (c), powerpc_get_regname (b)); - insn |= ((d&0x1f)<<21) | ((a&0x1f)<<16) | ((b&0x1f)<<11) | ((c&0x1f)<<6); + insn |= + ((d & 0x1f) << 21) | ((a & 0x1f) << 16) | ((b & 0x1f) << 11) | ((c & 0x1f) + << 6); powerpc_emit (compiler, insn); } void -powerpc_emit_VXR (OrcCompiler *compiler, const char *name, unsigned int insn, +powerpc_emit_VXR (OrcCompiler * compiler, const char *name, unsigned int insn, int d, int a, int b, int record) { - ORC_ASM_CODE(compiler," %s %s, %s, %s\n", name, - powerpc_get_regname(d), - powerpc_get_regname(a), - powerpc_get_regname(b)); + ORC_ASM_CODE (compiler, " %s %s, %s, %s\n", name, + powerpc_get_regname (d), + powerpc_get_regname (a), powerpc_get_regname (b)); - insn |= ((d&0x1f)<<21) | ((a&0x1f)<<16) | ((b&0x1f)<<11); - insn |= ((record&0x1)<<10); + insn |= ((d & 0x1f) << 21) | ((a & 0x1f) << 16) | ((b & 0x1f) << 11); + insn |= ((record & 0x1) << 10); powerpc_emit (compiler, insn); } void -powerpc_emit_VX (OrcCompiler *compiler, unsigned int insn, int d, int a, int b) +powerpc_emit_VX (OrcCompiler * compiler, unsigned int insn, int d, int a, int b) { - insn |= ((d&0x1f)<<21); - insn |= ((a&0x1f)<<16); - insn |= ((b&0x1f)<<11); + insn |= ((d & 0x1f) << 21); + insn |= ((a & 0x1f) << 16); + insn |= ((b & 0x1f) << 11); powerpc_emit (compiler, insn); } void -powerpc_emit_VX_2 (OrcCompiler *p, const char *name, +powerpc_emit_VX_2 (OrcCompiler * p, const char *name, unsigned int insn, int d, int a, int b) { - ORC_ASM_CODE(p," %s %s, %s, %s\n", name, - powerpc_get_regname(d), - powerpc_get_regname(a), - powerpc_get_regname(b)); - powerpc_emit_VX(p, insn, - powerpc_regnum(d), - powerpc_regnum(a), - powerpc_regnum(b)); + ORC_ASM_CODE (p, " %s %s, %s, %s\n", name, + powerpc_get_regname (d), + powerpc_get_regname (a), powerpc_get_regname (b)); + powerpc_emit_VX (p, insn, + powerpc_regnum (d), powerpc_regnum (a), powerpc_regnum (b)); } void -powerpc_emit_VX_b (OrcCompiler *p, const char *name, - unsigned int insn, int b) +powerpc_emit_VX_b (OrcCompiler * p, const char *name, unsigned int insn, int b) { - ORC_ASM_CODE(p," %s %s\n", name, powerpc_get_regname(b)); - powerpc_emit_VX(p, insn, 0, 0, powerpc_regnum(b)); + ORC_ASM_CODE (p, " %s %s\n", name, powerpc_get_regname (b)); + powerpc_emit_VX (p, insn, 0, 0, powerpc_regnum (b)); } void -powerpc_emit_VX_db (OrcCompiler *p, const char *name, unsigned int insn, +powerpc_emit_VX_db (OrcCompiler * p, const char *name, unsigned int insn, int d, int b) { - ORC_ASM_CODE(p," %s %s, %s\n", name, - powerpc_get_regname(d), - powerpc_get_regname(b)); - powerpc_emit_VX(p, insn, powerpc_regnum(d), 0, powerpc_regnum(b)); + ORC_ASM_CODE (p, " %s %s, %s\n", name, + powerpc_get_regname (d), powerpc_get_regname (b)); + powerpc_emit_VX (p, insn, powerpc_regnum (d), 0, powerpc_regnum (b)); } void -powerpc_emit_VX_dbi (OrcCompiler *p, const char *name, unsigned int insn, +powerpc_emit_VX_dbi (OrcCompiler * p, const char *name, unsigned int insn, int d, int b, int imm) { - ORC_ASM_CODE(p," %s %s, %s, %d\n", name, - powerpc_get_regname(d), - powerpc_get_regname(b), imm); - powerpc_emit_VX(p, insn, powerpc_regnum(d), imm, powerpc_regnum(b)); + ORC_ASM_CODE (p, " %s %s, %s, %d\n", name, + powerpc_get_regname (d), powerpc_get_regname (b), imm); + powerpc_emit_VX (p, insn, powerpc_regnum (d), imm, powerpc_regnum (b)); } void -powerpc_emit_VX_3_reg (OrcCompiler *p, const char *name, +powerpc_emit_VX_3_reg (OrcCompiler * p, const char *name, unsigned int insn, int d, int a, int b, int c) { - ORC_ASM_CODE(p," %s %s, %s, %s, %s\n", name, - powerpc_get_regname(d), - powerpc_get_regname(a), - powerpc_get_regname(b), - powerpc_get_regname(c)); - powerpc_emit_VX(p, insn, - powerpc_regnum(d), - powerpc_regnum(a), - powerpc_regnum(b)); + ORC_ASM_CODE (p, " %s %s, %s, %s, %s\n", name, + powerpc_get_regname (d), + powerpc_get_regname (a), + powerpc_get_regname (b), powerpc_get_regname (c)); + powerpc_emit_VX (p, insn, + powerpc_regnum (d), powerpc_regnum (a), powerpc_regnum (b)); } void -powerpc_emit_VX_3 (OrcCompiler *p, const char *name, +powerpc_emit_VX_3 (OrcCompiler * p, const char *name, unsigned int insn, int d, int a, int b, int c) { - ORC_ASM_CODE(p," %s %s, %s, %s, %d\n", name, - powerpc_get_regname(d), - powerpc_get_regname(a), - powerpc_get_regname(b), c); - powerpc_emit_VX(p, insn, - powerpc_regnum(d), - powerpc_regnum(a), - powerpc_regnum(b)); + ORC_ASM_CODE (p, " %s %s, %s, %s, %d\n", name, + powerpc_get_regname (d), + powerpc_get_regname (a), powerpc_get_regname (b), c); + powerpc_emit_VX (p, insn, + powerpc_regnum (d), powerpc_regnum (a), powerpc_regnum (b)); } void -powerpc_emit_VX_4 (OrcCompiler *p, const char *name, +powerpc_emit_VX_4 (OrcCompiler * p, const char *name, unsigned int insn, int d, int a) { - ORC_ASM_CODE(p," %s %s, %s\n", name, - powerpc_get_regname(d), - powerpc_get_regname(a)); - powerpc_emit_VX(p, insn, - powerpc_regnum(d), - 0, - powerpc_regnum(a)); + ORC_ASM_CODE (p, " %s %s, %s\n", name, + powerpc_get_regname (d), powerpc_get_regname (a)); + powerpc_emit_VX (p, insn, powerpc_regnum (d), 0, powerpc_regnum (a)); } void -powerpc_do_fixups (OrcCompiler *compiler) +powerpc_do_fixups (OrcCompiler * compiler) { int i; unsigned int insn; - for(i=0;i<compiler->n_fixups;i++){ + for (i = 0; i < compiler->n_fixups; i++) { unsigned char *label = compiler->labels[compiler->fixups[i].label]; unsigned char *ptr = compiler->fixups[i].ptr; - insn = *(unsigned int *)ptr; + insn = *(unsigned int *) ptr; switch (compiler->fixups[i].type) { - case 0: - *(unsigned int *)ptr = (insn&0xffff0000) | ((insn + (label-ptr))&0xffff); - break; - case 1: - *(unsigned int *)ptr = (insn&0xffff0000) | ((insn + (label-compiler->code))&0xffff); - break; - case 2: - *(unsigned int *)ptr = (insn&0xfc000000) | ((insn + (label-ptr))&0x03ffffff); - break; + case 0: + *(unsigned int *) ptr = + (insn & 0xffff0000) | ((insn + (label - ptr)) & 0xffff); + break; + case 1: + *(unsigned int *) ptr = + (insn & 0xffff0000) | ((insn + (label - compiler->code)) & 0xffff); + break; + case 2: + *(unsigned int *) ptr = + (insn & 0xfc000000) | ((insn + (label - ptr)) & 0x03ffffff); + break; } } } void -orc_powerpc_flush_cache (OrcCode *code) +orc_powerpc_flush_cache (OrcCode * code) { #ifdef HAVE_POWERPC unsigned char *ptr; @@ -381,53 +375,50 @@ orc_powerpc_flush_cache (OrcCode *code) int size = code->code_size; ptr = code->code; - for (i=0;i<size;i+=cache_line_size) { - __asm__ __volatile__ ("dcbst %0,%1" :: "b" (ptr), "r" (i)); + for (i = 0; i < size; i += cache_line_size) { + __asm__ __volatile__ ("dcbst %0,%1"::"b" (ptr), "r" (i)); } __asm__ __volatile ("sync"); - ptr = (void *)code->exec; - for (i=0;i<size;i+=cache_line_size) { - __asm__ __volatile__ ("icbi %0,%1" :: "b" (ptr), "r" (i)); + ptr = (void *) code->exec; + for (i = 0; i < size; i += cache_line_size) { + __asm__ __volatile__ ("icbi %0,%1"::"b" (ptr), "r" (i)); } __asm__ __volatile ("isync"); #endif } static void -powerpc_load_constant (OrcCompiler *p, int i, int reg) +powerpc_load_constant (OrcCompiler * p, int i, int reg) { int j; int value = p->constants[i].value; switch (p->constants[i].type) { case ORC_CONST_ZERO: - powerpc_emit_VX_2(p, "vxor", 0x100004c4, reg, reg, reg); + powerpc_emit_VX_2 (p, "vxor", 0x100004c4, reg, reg, reg); return; case ORC_CONST_SPLAT_B: if (value < 16 && value >= -16) { - ORC_ASM_CODE(p," vspltisb %s, %d\n", - powerpc_get_regname(reg), value); - powerpc_emit_VX(p, 0x1000030c, - powerpc_regnum(reg), value & 0x1f, 0); + ORC_ASM_CODE (p, " vspltisb %s, %d\n", + powerpc_get_regname (reg), value); + powerpc_emit_VX (p, 0x1000030c, powerpc_regnum (reg), value & 0x1f, 0); return; } break; case ORC_CONST_SPLAT_W: if (value < 16 && value >= -16) { - ORC_ASM_CODE(p," vspltish %s, %d\n", - powerpc_get_regname(reg), value); - powerpc_emit_VX(p, 0x1000034c, - powerpc_regnum(reg), value & 0x1f, 0); + ORC_ASM_CODE (p, " vspltish %s, %d\n", + powerpc_get_regname (reg), value); + powerpc_emit_VX (p, 0x1000034c, powerpc_regnum (reg), value & 0x1f, 0); return; } break; case ORC_CONST_SPLAT_L: if (value < 16 && value >= -16) { - ORC_ASM_CODE(p," vspltisw %s, %d\n", - powerpc_get_regname(reg), value); - powerpc_emit_VX(p, 0x1000038c, - powerpc_regnum(reg), value & 0x1f, 0); + ORC_ASM_CODE (p, " vspltisw %s, %d\n", + powerpc_get_regname (reg), value); + powerpc_emit_VX (p, 0x1000038c, powerpc_regnum (reg), value & 0x1f, 0); return; } break; @@ -437,27 +428,27 @@ powerpc_load_constant (OrcCompiler *p, int i, int reg) switch (p->constants[i].type) { case ORC_CONST_ZERO: - for(j=0;j<4;j++){ + for (j = 0; j < 4; j++) { p->constants[i].full_value[j] = 0; } break; case ORC_CONST_SPLAT_B: value &= 0xff; - value |= (value<<8); - value |= (value<<16); - for(j=0;j<4;j++){ + value |= (value << 8); + value |= (value << 16); + for (j = 0; j < 4; j++) { p->constants[i].full_value[j] = value; } break; case ORC_CONST_SPLAT_W: value &= 0xffff; - value |= (value<<16); - for(j=0;j<4;j++){ + value |= (value << 16); + for (j = 0; j < 4; j++) { p->constants[i].full_value[j] = value; } break; case ORC_CONST_SPLAT_L: - for(j=0;j<4;j++){ + for (j = 0; j < 4; j++) { p->constants[i].full_value[j] = value; } break; @@ -466,14 +457,13 @@ powerpc_load_constant (OrcCompiler *p, int i, int reg) } powerpc_load_long_constant (p, reg, - p->constants[i].full_value[0], - p->constants[i].full_value[1], - p->constants[i].full_value[2], - p->constants[i].full_value[3]); + p->constants[i].full_value[0], + p->constants[i].full_value[1], + p->constants[i].full_value[2], p->constants[i].full_value[3]); } void -powerpc_load_long_constant (OrcCompiler *p, int reg, orc_uint32 a, +powerpc_load_long_constant (OrcCompiler * p, int reg, orc_uint32 a, orc_uint32 b, orc_uint32 c, orc_uint32 d) { int label_skip, label_data; @@ -485,58 +475,55 @@ powerpc_load_long_constant (OrcCompiler *p, int reg, orc_uint32 a, powerpc_emit_b (p, label_skip); while ((p->codeptr - p->code) & 0xf) { - ORC_ASM_CODE(p," .long 0x00000000\n"); + ORC_ASM_CODE (p, " .long 0x00000000\n"); powerpc_emit (p, 0x00000000); } powerpc_emit_label (p, label_data); - ORC_ASM_CODE(p," .long 0x%08x\n", a); + ORC_ASM_CODE (p, " .long 0x%08x\n", a); powerpc_emit (p, a); - ORC_ASM_CODE(p," .long 0x%08x\n", b); + ORC_ASM_CODE (p, " .long 0x%08x\n", b); powerpc_emit (p, b); - ORC_ASM_CODE(p," .long 0x%08x\n", c); + ORC_ASM_CODE (p, " .long 0x%08x\n", c); powerpc_emit (p, c); - ORC_ASM_CODE(p," .long 0x%08x\n", d); + ORC_ASM_CODE (p, " .long 0x%08x\n", d); powerpc_emit (p, d); powerpc_emit_label (p, label_skip); powerpc_emit_lwz (p, greg, - POWERPC_R3, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[ORC_VAR_A2])); - powerpc_emit_lwz (p, - greg, greg, - (int)ORC_STRUCT_OFFSET(OrcCode, exec)); + POWERPC_R3, (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[ORC_VAR_A2])); + powerpc_emit_lwz (p, greg, greg, (int) ORC_STRUCT_OFFSET (OrcCode, exec)); powerpc_add_fixup (p, 1, p->codeptr, label_data); { unsigned int insn; - ORC_ASM_CODE(p," addi %s, %s, %db - %s\n", - powerpc_get_regname(greg), - powerpc_get_regname(greg), label_data, p->program->name); - insn = (14<<26) | (powerpc_regnum (greg)<<21) | (powerpc_regnum (greg)<<16); + ORC_ASM_CODE (p, " addi %s, %s, %db - %s\n", + powerpc_get_regname (greg), + powerpc_get_regname (greg), label_data, p->program->name); + insn = + (14 << 26) | (powerpc_regnum (greg) << 21) | (powerpc_regnum (greg) << + 16); insn |= 0; powerpc_emit (p, insn); } - ORC_ASM_CODE(p," lvx %s, 0, %s\n", - powerpc_get_regname(reg), - powerpc_get_regname(greg)); + ORC_ASM_CODE (p, " lvx %s, 0, %s\n", + powerpc_get_regname (reg), powerpc_get_regname (greg)); powerpc_emit_X (p, 0x7c0000ce, reg, 0, greg); } int -powerpc_get_constant (OrcCompiler *p, int type, int value) +powerpc_get_constant (OrcCompiler * p, int type, int value) { int reg = orc_compiler_get_temp_reg (p); int i; - for(i=0;i<p->n_constants;i++){ - if (p->constants[i].type == type && - p->constants[i].value == value) { + for (i = 0; i < p->n_constants; i++) { + if (p->constants[i].type == type && p->constants[i].value == value) { if (p->constants[i].alloc_reg != 0) { return p->constants[i].alloc_reg; } @@ -556,16 +543,15 @@ powerpc_get_constant (OrcCompiler *p, int type, int value) } int -powerpc_get_constant_full (OrcCompiler *p, int value0, int value1, +powerpc_get_constant_full (OrcCompiler * p, int value0, int value1, int value2, int value3) { int reg = p->tmpreg; int i; - for(i=0;i<p->n_constants;i++){ + for (i = 0; i < p->n_constants; i++) { #if 0 - if (p->constants[i].type == type && - p->constants[i].value == value) { + if (p->constants[i].type == type && p->constants[i].value == value) { if (p->constants[i].alloc_reg != 0) { return p->constants[i].alloc_reg; } @@ -588,61 +574,66 @@ powerpc_get_constant_full (OrcCompiler *p, int value0, int value1, return reg; } -void powerpc_emit_ret (OrcCompiler *compiler) +void +powerpc_emit_ret (OrcCompiler * compiler) { - ORC_ASM_CODE(compiler," ret\n"); + ORC_ASM_CODE (compiler, " ret\n"); //*compiler->codeptr++ = 0xc3; } void -powerpc_add_fixup (OrcCompiler *compiler, int type, unsigned char *ptr, int label) +powerpc_add_fixup (OrcCompiler * compiler, int type, unsigned char *ptr, + int label) { compiler->fixups[compiler->n_fixups].ptr = ptr; compiler->fixups[compiler->n_fixups].label = label; compiler->fixups[compiler->n_fixups].type = type; compiler->n_fixups++; if (compiler->n_fixups >= ORC_N_FIXUPS) { - ORC_ERROR("too many fixups"); + ORC_ERROR ("too many fixups"); } } void -powerpc_add_label (OrcCompiler *compiler, unsigned char *ptr, int label) +powerpc_add_label (OrcCompiler * compiler, unsigned char *ptr, int label) { compiler->labels[label] = ptr; } -void powerpc_emit_b (OrcCompiler *compiler, int label) +void +powerpc_emit_b (OrcCompiler * compiler, int label) { - ORC_ASM_CODE(compiler," b %d%c\n", label, - (compiler->labels[label]!=NULL) ? 'b' : 'f'); + ORC_ASM_CODE (compiler, " b %d%c\n", label, + (compiler->labels[label] != NULL) ? 'b' : 'f'); powerpc_add_fixup (compiler, 2, compiler->codeptr, label); powerpc_emit (compiler, 0x48000000); } -void powerpc_emit_beq (OrcCompiler *compiler, int label) +void +powerpc_emit_beq (OrcCompiler * compiler, int label) { - ORC_ASM_CODE(compiler," ble- %d%c\n", label, - (compiler->labels[label]!=NULL) ? 'b' : 'f'); + ORC_ASM_CODE (compiler, " ble- %d%c\n", label, + (compiler->labels[label] != NULL) ? 'b' : 'f'); powerpc_add_fixup (compiler, 0, compiler->codeptr, label); powerpc_emit (compiler, 0x40810000); } -void powerpc_emit_bne (OrcCompiler *compiler, int label) +void +powerpc_emit_bne (OrcCompiler * compiler, int label) { - ORC_ASM_CODE(compiler," bdnz+ %d%c\n", label, - (compiler->labels[label]!=NULL) ? 'b' : 'f'); + ORC_ASM_CODE (compiler, " bdnz+ %d%c\n", label, + (compiler->labels[label] != NULL) ? 'b' : 'f'); powerpc_add_fixup (compiler, 0, compiler->codeptr, label); powerpc_emit (compiler, 0x42000000); } -void powerpc_emit_label (OrcCompiler *compiler, int label) +void +powerpc_emit_label (OrcCompiler * compiler, int label) { - ORC_ASM_CODE(compiler,"%d:\n", label); + ORC_ASM_CODE (compiler, "%d:\n", label); powerpc_add_label (compiler, compiler->codeptr, label); } - diff --git a/orc/orcprogram-altivec.c b/orc/orcprogram-altivec.c index 3801b88..3555ed9 100644 --- a/orc/orcprogram-altivec.c +++ b/orc/orcprogram-altivec.c @@ -12,14 +12,14 @@ #include <orc/orcdebug.h> -void orc_compiler_powerpc_init (OrcCompiler *compiler); +void orc_compiler_powerpc_init (OrcCompiler * compiler); unsigned int orc_compiler_powerpc_get_default_flags (void); -void orc_compiler_powerpc_assemble (OrcCompiler *compiler); -void orc_compiler_powerpc_register_rules (OrcTarget *target); +void orc_compiler_powerpc_assemble (OrcCompiler * compiler); +void orc_compiler_powerpc_register_rules (OrcTarget * target); void -powerpc_emit_prologue (OrcCompiler *compiler) +powerpc_emit_prologue (OrcCompiler * compiler) { int i; @@ -28,7 +28,7 @@ powerpc_emit_prologue (OrcCompiler *compiler) powerpc_emit_stwu (compiler, POWERPC_R1, POWERPC_R1, -16); - for(i=POWERPC_R13;i<=POWERPC_R31;i++){ + for (i = POWERPC_R13; i <= POWERPC_R31; i++) { if (compiler->used_regs[i]) { //powerpc_emit_push (compiler, 4, i); } @@ -36,19 +36,19 @@ powerpc_emit_prologue (OrcCompiler *compiler) } void -powerpc_emit_epilogue (OrcCompiler *compiler) +powerpc_emit_epilogue (OrcCompiler * compiler) { int i; - for(i=POWERPC_R31;i>=POWERPC_R31;i--){ + for (i = POWERPC_R31; i >= POWERPC_R31; i--) { if (compiler->used_regs[i]) { //powerpc_emit_pop (compiler, 4, i); } } powerpc_emit_addi (compiler, POWERPC_R1, POWERPC_R1, 16); - ORC_ASM_CODE(compiler," blr\n"); - powerpc_emit(compiler, 0x4e800020); + ORC_ASM_CODE (compiler, " blr\n"); + powerpc_emit (compiler, 0x4e800020); } static OrcTarget altivec_target = { @@ -62,13 +62,12 @@ static OrcTarget altivec_target = { orc_compiler_powerpc_get_default_flags, orc_compiler_powerpc_init, orc_compiler_powerpc_assemble, - { { 0 } }, + {{0}}, 0, NULL, NULL, NULL, orc_powerpc_flush_cache - }; void @@ -86,29 +85,29 @@ orc_compiler_powerpc_get_default_flags (void) } void -orc_compiler_powerpc_init (OrcCompiler *compiler) +orc_compiler_powerpc_init (OrcCompiler * compiler) { int i; - for(i=0;i<32;i++){ - compiler->valid_regs[POWERPC_R0+i] = 1; - compiler->valid_regs[POWERPC_V0+i] = 1; + for (i = 0; i < 32; i++) { + compiler->valid_regs[POWERPC_R0 + i] = 1; + compiler->valid_regs[POWERPC_V0 + i] = 1; } compiler->valid_regs[POWERPC_R0] = 0; /* used for temp space */ compiler->valid_regs[POWERPC_R1] = 0; /* stack pointer */ compiler->valid_regs[POWERPC_R2] = 0; /* TOC pointer */ compiler->valid_regs[POWERPC_R3] = 0; /* pointer to OrcExecutor */ - compiler->valid_regs[POWERPC_R13] = 0; /* reserved */ + compiler->valid_regs[POWERPC_R13] = 0; /* reserved */ compiler->tmpreg = POWERPC_V0; compiler->gp_tmpreg = POWERPC_R4; compiler->valid_regs[compiler->tmpreg] = 0; compiler->valid_regs[compiler->gp_tmpreg] = 0; - for(i=14;i<32;i++){ + for (i = 14; i < 32; i++) { compiler->save_regs[POWERPC_R0 + i] = 1; } - for(i=20;i<32;i++){ + for (i = 20; i < 32; i++) { compiler->save_regs[POWERPC_V0 + i] = 1; } @@ -117,23 +116,23 @@ orc_compiler_powerpc_init (OrcCompiler *compiler) } void -powerpc_load_inner_constants (OrcCompiler *compiler) +powerpc_load_inner_constants (OrcCompiler * compiler) { int i; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ - if (compiler->vars[i].name == NULL) continue; + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { + if (compiler->vars[i].name == NULL) + continue; switch (compiler->vars[i].vartype) { case ORC_VAR_TYPE_SRC: case ORC_VAR_TYPE_DEST: if (compiler->vars[i].ptr_register) { powerpc_emit_lwz (compiler, compiler->vars[i].ptr_register, - POWERPC_R3, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i])); + POWERPC_R3, (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i])); } else { /* FIXME */ - ORC_ASM_CODE(compiler,"ERROR"); + ORC_ASM_CODE (compiler, "ERROR"); } break; default: @@ -143,19 +142,20 @@ powerpc_load_inner_constants (OrcCompiler *compiler) } static int -orc_program_has_float (OrcCompiler *compiler) +orc_program_has_float (OrcCompiler * compiler) { int j; - for(j=0;j<compiler->n_insns;j++){ + for (j = 0; j < compiler->n_insns; j++) { OrcInstruction *insn = compiler->insns + j; OrcStaticOpcode *opcode = insn->opcode; - if (opcode->flags & ORC_STATIC_OPCODE_FLOAT) return TRUE; + if (opcode->flags & ORC_STATIC_OPCODE_FLOAT) + return TRUE; } return FALSE; } void -orc_compiler_powerpc_assemble (OrcCompiler *compiler) +orc_compiler_powerpc_assemble (OrcCompiler * compiler) { int j; int k; @@ -179,74 +179,74 @@ orc_compiler_powerpc_assemble (OrcCompiler *compiler) set_vscr = TRUE; - ORC_ASM_CODE(compiler," vspltish %s, %d\n", - powerpc_get_regname(tmp), 1); - powerpc_emit_VX(compiler, 0x1000034c, - powerpc_regnum(tmp), 1, 0); + ORC_ASM_CODE (compiler, " vspltish %s, %d\n", + powerpc_get_regname (tmp), 1); + powerpc_emit_VX (compiler, 0x1000034c, powerpc_regnum (tmp), 1, 0); - powerpc_emit_VX_b(compiler, "mtvscr", 0x10000644, tmp); + powerpc_emit_VX_b (compiler, "mtvscr", 0x10000644, tmp); } if (compiler->program->is_2d) { powerpc_emit_lwz (compiler, POWERPC_R0, POWERPC_R3, - (int)ORC_STRUCT_OFFSET(OrcExecutorAlt, m)); + (int) ORC_STRUCT_OFFSET (OrcExecutorAlt, m)); powerpc_emit_srawi (compiler, POWERPC_R0, POWERPC_R0, compiler->loop_shift, 1); powerpc_emit_beq (compiler, label_leave); powerpc_emit_stw (compiler, POWERPC_R0, POWERPC_R3, - (int)ORC_STRUCT_OFFSET(OrcExecutorAlt, m_index)); + (int) ORC_STRUCT_OFFSET (OrcExecutorAlt, m_index)); } - //powerpc_load_constants (compiler); powerpc_load_inner_constants (compiler); - for(k=0;k<4;k++){ + for (k = 0; k < 4; k++) { OrcVariable *var = &compiler->vars[ORC_VAR_A1 + k]; - if (compiler->vars[ORC_VAR_A1 + k].name == NULL) continue; + if (compiler->vars[ORC_VAR_A1 + k].name == NULL) + continue; - //powerpc_emit_VX_2(p, "vxor", 0x100004c4, reg, reg, reg); + //powerpc_emit_VX_2(p, "vxor", 0x100004c4, reg, reg, reg); powerpc_emit_vxor (compiler, var->alloc, var->alloc, var->alloc); } powerpc_emit_label (compiler, label_outer_loop_start); powerpc_emit_lwz (compiler, POWERPC_R0, POWERPC_R3, - (int)ORC_STRUCT_OFFSET(OrcExecutor, n)); + (int) ORC_STRUCT_OFFSET (OrcExecutor, n)); powerpc_emit_srawi (compiler, POWERPC_R0, POWERPC_R0, compiler->loop_shift, 1); powerpc_emit_beq (compiler, label_leave); powerpc_emit (compiler, 0x7c0903a6); - ORC_ASM_CODE (compiler, " mtctr %s\n", powerpc_get_regname(POWERPC_R0)); + ORC_ASM_CODE (compiler, " mtctr %s\n", powerpc_get_regname (POWERPC_R0)); powerpc_emit_label (compiler, label_loop_start); - for(j=0;j<compiler->n_insns;j++){ + for (j = 0; j < compiler->n_insns; j++) { insn = compiler->insns + j; opcode = insn->opcode; compiler->insn_index = j; - ORC_ASM_CODE(compiler,"# %d: %s\n", j, insn->opcode->name); + ORC_ASM_CODE (compiler, "# %d: %s\n", j, insn->opcode->name); #if 0 /* set up args */ - for(k=0;k<opcode->n_src + opcode->n_dest;k++){ + for (k = 0; k < opcode->n_src + opcode->n_dest; k++) { args[k] = compiler->vars + insn->args[k]; - ORC_ASM_CODE(compiler," %d", args[k]->alloc); + ORC_ASM_CODE (compiler, " %d", args[k]->alloc); if (args[k]->is_chained) { - ORC_ASM_CODE(compiler," (chained)"); + ORC_ASM_CODE (compiler, " (chained)"); } } - ORC_ASM_CODE(compiler,"\n"); + ORC_ASM_CODE (compiler, "\n"); #endif - for(k=0;k<ORC_STATIC_OPCODE_N_SRC;k++){ + for (k = 0; k < ORC_STATIC_OPCODE_N_SRC; k++) { OrcVariable *var = compiler->vars + insn->src_args[k]; - if (opcode->src_size[k] == 0) continue; + if (opcode->src_size[k] == 0) + continue; switch (var->vartype) { case ORC_VAR_TYPE_SRC: @@ -268,13 +268,14 @@ orc_compiler_powerpc_assemble (OrcCompiler *compiler) if (rule) { rule->emit (compiler, rule->emit_user, insn); } else { - ORC_ASM_CODE(compiler,"No rule for: %s\n", opcode->name); + ORC_ASM_CODE (compiler, "No rule for: %s\n", opcode->name); } - for(k=0;k<ORC_STATIC_OPCODE_N_DEST;k++){ + for (k = 0; k < ORC_STATIC_OPCODE_N_DEST; k++) { OrcVariable *var = compiler->vars + insn->dest_args[k]; - if (opcode->dest_size[k] == 0) continue; + if (opcode->dest_size[k] == 0) + continue; switch (var->vartype) { case ORC_VAR_TYPE_DEST: @@ -288,8 +289,9 @@ orc_compiler_powerpc_assemble (OrcCompiler *compiler) } } - for(k=0;k<ORC_N_COMPILER_VARIABLES;k++){ - if (compiler->vars[k].name == NULL) continue; + for (k = 0; k < ORC_N_COMPILER_VARIABLES; k++) { + if (compiler->vars[k].name == NULL) + continue; if (compiler->vars[k].vartype == ORC_VAR_TYPE_SRC || compiler->vars[k].vartype == ORC_VAR_TYPE_DEST) { if (compiler->vars[k].ptr_register) { @@ -298,7 +300,7 @@ orc_compiler_powerpc_assemble (OrcCompiler *compiler) compiler->vars[k].ptr_register, compiler->vars[k].size << compiler->loop_shift); } else { - ORC_ASM_CODE(compiler,"ERROR\n"); + ORC_ASM_CODE (compiler, "ERROR\n"); } } } @@ -307,36 +309,33 @@ orc_compiler_powerpc_assemble (OrcCompiler *compiler) if (compiler->program->is_2d) { powerpc_emit_lwz (compiler, POWERPC_R0, POWERPC_R3, - (int)ORC_STRUCT_OFFSET(OrcExecutorAlt, m_index)); + (int) ORC_STRUCT_OFFSET (OrcExecutorAlt, m_index)); powerpc_emit_addi_rec (compiler, POWERPC_R0, POWERPC_R0, -1); powerpc_emit_beq (compiler, label_leave); powerpc_emit_stw (compiler, POWERPC_R0, POWERPC_R3, - (int)ORC_STRUCT_OFFSET(OrcExecutorAlt, m_index)); + (int) ORC_STRUCT_OFFSET (OrcExecutorAlt, m_index)); - for(k=0;k<ORC_N_COMPILER_VARIABLES;k++){ - if (compiler->vars[k].name == NULL) continue; + for (k = 0; k < ORC_N_COMPILER_VARIABLES; k++) { + if (compiler->vars[k].name == NULL) + continue; if (compiler->vars[k].vartype == ORC_VAR_TYPE_SRC || compiler->vars[k].vartype == ORC_VAR_TYPE_DEST) { if (compiler->vars[k].ptr_register) { powerpc_emit_lwz (compiler, compiler->vars[k].ptr_register, - POWERPC_R3, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[k])); + POWERPC_R3, (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[k])); powerpc_emit_lwz (compiler, POWERPC_R0, - POWERPC_R3, - (int)ORC_STRUCT_OFFSET(OrcExecutorAlt, strides[k])); + POWERPC_R3, (int) ORC_STRUCT_OFFSET (OrcExecutorAlt, strides[k])); powerpc_emit_add (compiler, compiler->vars[k].ptr_register, - compiler->vars[k].ptr_register, - POWERPC_R0); + compiler->vars[k].ptr_register, POWERPC_R0); powerpc_emit_stw (compiler, compiler->vars[k].ptr_register, - POWERPC_R3, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[k])); + POWERPC_R3, (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[k])); } else { - ORC_ASM_CODE(compiler,"ERROR\n"); + ORC_ASM_CODE (compiler, "ERROR\n"); } } } @@ -346,50 +345,45 @@ orc_compiler_powerpc_assemble (OrcCompiler *compiler) powerpc_emit_label (compiler, label_leave); - for(k=0;k<4;k++){ + for (k = 0; k < 4; k++) { OrcVariable *var = &compiler->vars[ORC_VAR_A1 + k]; - if (compiler->vars[ORC_VAR_A1 + k].name == NULL) continue; + if (compiler->vars[ORC_VAR_A1 + k].name == NULL) + continue; powerpc_emit_addi (compiler, POWERPC_R0, - POWERPC_R3, - (int)ORC_STRUCT_OFFSET(OrcExecutor, accumulators[k])); + POWERPC_R3, (int) ORC_STRUCT_OFFSET (OrcExecutor, accumulators[k])); if (var->size == 2) { powerpc_emit_vxor (compiler, POWERPC_V0, POWERPC_V0, POWERPC_V0); powerpc_emit_vmrghh (compiler, var->alloc, POWERPC_V0, var->alloc); } - ORC_ASM_CODE(compiler," lvsr %s, 0, %s\n", - powerpc_get_regname (POWERPC_V0), - powerpc_get_regname (POWERPC_R0)); - powerpc_emit_X (compiler, 0x7c00004c, powerpc_regnum(POWERPC_V0), - 0, powerpc_regnum(POWERPC_R0)); + ORC_ASM_CODE (compiler, " lvsr %s, 0, %s\n", + powerpc_get_regname (POWERPC_V0), powerpc_get_regname (POWERPC_R0)); + powerpc_emit_X (compiler, 0x7c00004c, powerpc_regnum (POWERPC_V0), + 0, powerpc_regnum (POWERPC_R0)); powerpc_emit_vperm (compiler, var->alloc, var->alloc, var->alloc, POWERPC_V0); - ORC_ASM_CODE(compiler," stvewx %s, 0, %s\n", - powerpc_get_regname (var->alloc), - powerpc_get_regname (POWERPC_R0)); + ORC_ASM_CODE (compiler, " stvewx %s, 0, %s\n", + powerpc_get_regname (var->alloc), powerpc_get_regname (POWERPC_R0)); powerpc_emit_X (compiler, 0x7c00018e, - powerpc_regnum(var->alloc), - 0, powerpc_regnum(POWERPC_R0)); + powerpc_regnum (var->alloc), 0, powerpc_regnum (POWERPC_R0)); } if (set_vscr) { int tmp = POWERPC_V0; - ORC_ASM_CODE(compiler," vspltisw %s, %d\n", - powerpc_get_regname(tmp), 0); - powerpc_emit_VX(compiler, 0x1000038c, - powerpc_regnum(tmp), 0, 0); + ORC_ASM_CODE (compiler, " vspltisw %s, %d\n", + powerpc_get_regname (tmp), 0); + powerpc_emit_VX (compiler, 0x1000038c, powerpc_regnum (tmp), 0, 0); - powerpc_emit_VX_b(compiler, "mtvscr", 0x10000644, tmp); + powerpc_emit_VX_b (compiler, "mtvscr", 0x10000644, tmp); } powerpc_emit_epilogue (compiler); powerpc_do_fixups (compiler); } - diff --git a/orc/orcprogram-arm.c b/orc/orcprogram-arm.c index f300d9c..4121a6f 100644 --- a/orc/orcprogram-arm.c +++ b/orc/orcprogram-arm.c @@ -14,44 +14,47 @@ #define SIZE 65536 -void orc_arm_emit_loop (OrcCompiler *compiler); +void orc_arm_emit_loop (OrcCompiler * compiler); -void orc_compiler_orc_arm_register_rules (OrcTarget *target); +void orc_compiler_orc_arm_register_rules (OrcTarget * target); -void orc_compiler_orc_arm_init (OrcCompiler *compiler); +void orc_compiler_orc_arm_init (OrcCompiler * compiler); unsigned int orc_compiler_orc_arm_get_default_flags (void); -void orc_compiler_orc_arm_assemble (OrcCompiler *compiler); +void orc_compiler_orc_arm_assemble (OrcCompiler * compiler); -void orc_compiler_rewrite_vars (OrcCompiler *compiler); -void orc_compiler_dump (OrcCompiler *compiler); -void arm_add_strides (OrcCompiler *compiler); +void orc_compiler_rewrite_vars (OrcCompiler * compiler); +void orc_compiler_dump (OrcCompiler * compiler); +void arm_add_strides (OrcCompiler * compiler); void -orc_arm_emit_prologue (OrcCompiler *compiler) +orc_arm_emit_prologue (OrcCompiler * compiler) { unsigned int regs = 0; int i; - orc_compiler_append_code(compiler,".global %s\n", compiler->program->name); - orc_compiler_append_code(compiler,"%s:\n", compiler->program->name); + orc_compiler_append_code (compiler, ".global %s\n", compiler->program->name); + orc_compiler_append_code (compiler, "%s:\n", compiler->program->name); - for(i=0;i<16;i++){ + for (i = 0; i < 16; i++) { if (compiler->used_regs[ORC_GP_REG_BASE + i] && compiler->save_regs[ORC_GP_REG_BASE + i]) { - regs |= (1<<i); + regs |= (1 << i); } } - if (regs) orc_arm_emit_push (compiler, regs); + if (regs) + orc_arm_emit_push (compiler, regs); } void -orc_arm_dump_insns (OrcCompiler *compiler) +orc_arm_dump_insns (OrcCompiler * compiler) { orc_arm_emit_label (compiler, 0); - orc_arm_emit_add_r (compiler, ORC_ARM_COND_AL, 0, ORC_ARM_A2, ORC_ARM_A3, ORC_ARM_A4); - orc_arm_emit_sub_r (compiler, ORC_ARM_COND_AL, 0, ORC_ARM_A2, ORC_ARM_A3, ORC_ARM_A4); + orc_arm_emit_add_r (compiler, ORC_ARM_COND_AL, 0, ORC_ARM_A2, ORC_ARM_A3, + ORC_ARM_A4); + orc_arm_emit_sub_r (compiler, ORC_ARM_COND_AL, 0, ORC_ARM_A2, ORC_ARM_A3, + ORC_ARM_A4); orc_arm_emit_push (compiler, 0x06); orc_arm_emit_mov_r (compiler, ORC_ARM_COND_AL, 0, ORC_ARM_A2, ORC_ARM_A3); @@ -64,18 +67,19 @@ orc_arm_dump_insns (OrcCompiler *compiler) } void -orc_arm_emit_epilogue (OrcCompiler *compiler) +orc_arm_emit_epilogue (OrcCompiler * compiler) { int i; unsigned int regs = 0; - for(i=0;i<16;i++){ + for (i = 0; i < 16; i++) { if (compiler->used_regs[ORC_GP_REG_BASE + i] && compiler->save_regs[ORC_GP_REG_BASE + i]) { - regs |= (1<<i); + regs |= (1 << i); } } - if (regs) orc_arm_emit_pop (compiler, regs); + if (regs) + orc_arm_emit_pop (compiler, regs); orc_arm_emit_bx_lr (compiler); //orc_arm_dump_insns (compiler); @@ -92,7 +96,7 @@ static OrcTarget orc_arm_target = { orc_compiler_orc_arm_get_default_flags, orc_compiler_orc_arm_init, orc_compiler_orc_arm_assemble, - { { 0 } }, + {{0}}, 0, NULL, NULL, @@ -123,11 +127,11 @@ orc_compiler_orc_arm_get_default_flags (void) } void -orc_compiler_orc_arm_init (OrcCompiler *compiler) +orc_compiler_orc_arm_init (OrcCompiler * compiler) { int i; - for(i=ORC_GP_REG_BASE;i<ORC_GP_REG_BASE+9;i++){ + for (i = ORC_GP_REG_BASE; i < ORC_GP_REG_BASE + 9; i++) { compiler->valid_regs[i] = 1; } //compiler->valid_regs[ORC_ARM_SB] = 0; @@ -135,11 +139,11 @@ orc_compiler_orc_arm_init (OrcCompiler *compiler) compiler->valid_regs[ORC_ARM_SP] = 0; compiler->valid_regs[ORC_ARM_LR] = 0; compiler->valid_regs[ORC_ARM_PC] = 0; - for(i=4;i<11;i++) { - compiler->save_regs[ORC_GP_REG_BASE+i] = 1; + for (i = 4; i < 11; i++) { + compiler->save_regs[ORC_GP_REG_BASE + i] = 1; } - - for(i=0;i<ORC_N_REGS;i++){ + + for (i = 0; i < ORC_N_REGS; i++) { compiler->alloc_regs[i] = 0; compiler->used_regs[i] = 0; } @@ -154,18 +158,19 @@ orc_compiler_orc_arm_init (OrcCompiler *compiler) } void -orc_arm_load_constants_outer (OrcCompiler *compiler) +orc_arm_load_constants_outer (OrcCompiler * compiler) { int i; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ - if (compiler->vars[i].name == NULL) continue; + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { + if (compiler->vars[i].name == NULL) + continue; switch (compiler->vars[i].vartype) { case ORC_VAR_TYPE_CONST: //orc_arm_emit_load_imm (compiler, compiler->vars[i].alloc, // (int)compiler->vars[i].value); break; case ORC_VAR_TYPE_PARAM: - ORC_PROGRAM_ERROR(compiler,"unimplemented"); + ORC_PROGRAM_ERROR (compiler, "unimplemented"); return; /* FIXME offset is too large */ //orc_arm_loadw (compiler, compiler->vars[i].alloc, @@ -180,39 +185,41 @@ orc_arm_load_constants_outer (OrcCompiler *compiler) } } - for(i=0;i<compiler->n_insns;i++){ + for (i = 0; i < compiler->n_insns; i++) { OrcInstruction *insn = compiler->insns + i; OrcStaticOpcode *opcode = insn->opcode; OrcRule *rule; - if (!(insn->flags & ORC_INSN_FLAG_INVARIANT)) continue; + if (!(insn->flags & ORC_INSN_FLAG_INVARIANT)) + continue; - ORC_ASM_CODE(compiler,"# %d: %s\n", i, insn->opcode->name); + ORC_ASM_CODE (compiler, "# %d: %s\n", i, insn->opcode->name); rule = insn->rule; if (rule && rule->emit) { rule->emit (compiler, rule->emit_user, insn); } else { - ORC_COMPILER_ERROR(compiler,"No rule for: %s", opcode->name); + ORC_COMPILER_ERROR (compiler, "No rule for: %s", opcode->name); } } } void -orc_arm_load_constants_inner (OrcCompiler *compiler) +orc_arm_load_constants_inner (OrcCompiler * compiler) { int i; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ - if (compiler->vars[i].name == NULL) continue; + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { + if (compiler->vars[i].name == NULL) + continue; switch (compiler->vars[i].vartype) { case ORC_VAR_TYPE_CONST: case ORC_VAR_TYPE_PARAM: break; case ORC_VAR_TYPE_SRC: case ORC_VAR_TYPE_DEST: - orc_arm_emit_load_reg (compiler, + orc_arm_emit_load_reg (compiler, compiler->vars[i].ptr_register, - compiler->exec_reg, ORC_STRUCT_OFFSET(OrcExecutor, arrays[i])); + compiler->exec_reg, ORC_STRUCT_OFFSET (OrcExecutor, arrays[i])); break; default: break; @@ -222,7 +229,7 @@ orc_arm_load_constants_inner (OrcCompiler *compiler) #if 0 void -orc_arm_emit_load_src (OrcCompiler *compiler, OrcVariable *var) +orc_arm_emit_load_src (OrcCompiler * compiler, OrcVariable * var) { int ptr_reg; if (var->ptr_register == 0) { @@ -250,19 +257,20 @@ orc_arm_emit_load_src (OrcCompiler *compiler, OrcVariable *var) orc_arm_loadl (compiler, var->alloc, ptr_reg, 0); //orc_arm_emit_mov_memoffset_arm (compiler, 4, 0, ptr_reg, var->alloc); break; - //case 8: + //case 8: //orc_arm_emit_mov_memoffset_arm (compiler, 8, 0, ptr_reg, var->alloc); break; - //case 16: + //case 16: //orc_arm_emit_mov_memoffset_arm (compiler, 16, 0, ptr_reg, var->alloc); break; default: - ORC_COMPILER_ERROR(compiler, "bad size %d", var->size << compiler->loop_shift); + ORC_COMPILER_ERROR (compiler, "bad size %d", + var->size << compiler->loop_shift); } } void -orc_arm_emit_store_dest (OrcCompiler *compiler, OrcVariable *var) +orc_arm_emit_store_dest (OrcCompiler * compiler, OrcVariable * var) { int ptr_reg; if (var->ptr_register == 0) { @@ -297,13 +305,14 @@ orc_arm_emit_store_dest (OrcCompiler *compiler, OrcVariable *var) // var->is_aligned, var->is_uncached); break; default: - ORC_COMPILER_ERROR(compiler, "bad size %d", var->size << compiler->loop_shift); + ORC_COMPILER_ERROR (compiler, "bad size %d", + var->size << compiler->loop_shift); } } #endif void -orc_compiler_orc_arm_assemble (OrcCompiler *compiler) +orc_compiler_orc_arm_assemble (OrcCompiler * compiler) { int dest_var = ORC_VAR_D1; @@ -315,22 +324,22 @@ orc_compiler_orc_arm_assemble (OrcCompiler *compiler) if (compiler->program->is_2d) { if (compiler->program->constant_m > 0) { - orc_arm_emit_load_imm (compiler, ORC_ARM_A3, compiler->program->constant_m -); + orc_arm_emit_load_imm (compiler, ORC_ARM_A3, + compiler->program->constant_m); orc_arm_emit_store_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A2])); + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A2])); } else { orc_arm_emit_load_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[ORC_VAR_A1])); + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A1])); orc_arm_emit_store_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A2])); + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A2])); } - + orc_arm_emit_label (compiler, 8); } orc_arm_emit_load_reg (compiler, ORC_ARM_IP, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,n)); + (int) ORC_STRUCT_OFFSET (OrcExecutor, n)); orc_arm_load_constants_inner (compiler); orc_arm_emit_label (compiler, 1); @@ -349,10 +358,10 @@ orc_compiler_orc_arm_assemble (OrcCompiler *compiler) arm_add_strides (compiler); orc_arm_emit_load_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[ORC_VAR_A2])); + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A2])); orc_arm_emit_sub_imm (compiler, ORC_ARM_A3, ORC_ARM_A3, 1, TRUE); orc_arm_emit_store_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A2])); + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A2])); orc_arm_emit_branch (compiler, ORC_ARM_COND_NE, 8); } @@ -362,7 +371,7 @@ orc_compiler_orc_arm_assemble (OrcCompiler *compiler) } void -orc_arm_emit_loop (OrcCompiler *compiler) +orc_arm_emit_loop (OrcCompiler * compiler) { int j; int k; @@ -370,28 +379,30 @@ orc_arm_emit_loop (OrcCompiler *compiler) OrcStaticOpcode *opcode; OrcRule *rule; - for(j=0;j<compiler->n_insns;j++){ + for (j = 0; j < compiler->n_insns; j++) { insn = compiler->insns + j; opcode = insn->opcode; - if (insn->flags & ORC_INSN_FLAG_INVARIANT) continue; + if (insn->flags & ORC_INSN_FLAG_INVARIANT) + continue; - orc_compiler_append_code(compiler,"# %d: %s", j, insn->opcode->name); + orc_compiler_append_code (compiler, "# %d: %s", j, insn->opcode->name); /* set up args */ #if 0 - for(k=0;k<opcode->n_src + opcode->n_dest;k++){ + for (k = 0; k < opcode->n_src + opcode->n_dest; k++) { args[k] = compiler->vars + insn->args[k]; - orc_compiler_append_code(compiler," %d", args[k]->alloc); + orc_compiler_append_code (compiler, " %d", args[k]->alloc); if (args[k]->is_chained) { - orc_compiler_append_code(compiler," (chained)"); + orc_compiler_append_code (compiler, " (chained)"); } } #endif - orc_compiler_append_code(compiler,"\n"); + orc_compiler_append_code (compiler, "\n"); - for(k=0;k<ORC_STATIC_OPCODE_N_SRC;k++){ - if (opcode->src_size[k] == 0) continue; + for (k = 0; k < ORC_STATIC_OPCODE_N_SRC; k++) { + if (opcode->src_size[k] == 0) + continue; switch (compiler->vars[insn->src_args[k]].vartype) { case ORC_VAR_TYPE_SRC: @@ -419,11 +430,12 @@ orc_arm_emit_loop (OrcCompiler *compiler) } rule->emit (compiler, rule->emit_user, insn); } else { - orc_compiler_append_code(compiler,"No rule for: %s\n", opcode->name); + orc_compiler_append_code (compiler, "No rule for: %s\n", opcode->name); } - for(k=0;k<ORC_STATIC_OPCODE_N_DEST;k++){ - if (opcode->dest_size[k] == 0) continue; + for (k = 0; k < ORC_STATIC_OPCODE_N_DEST; k++) { + if (opcode->dest_size[k] == 0) + continue; switch (compiler->vars[insn->dest_args[k]].vartype) { case ORC_VAR_TYPE_DEST: @@ -437,8 +449,9 @@ orc_arm_emit_loop (OrcCompiler *compiler) } } - for(k=0;k<ORC_N_COMPILER_VARIABLES;k++){ - if (compiler->vars[k].name == NULL) continue; + for (k = 0; k < ORC_N_COMPILER_VARIABLES; k++) { + if (compiler->vars[k].name == NULL) + continue; if (compiler->vars[k].vartype == ORC_VAR_TYPE_SRC || compiler->vars[k].vartype == ORC_VAR_TYPE_DEST) { if (compiler->vars[k].ptr_register) { @@ -457,12 +470,13 @@ orc_arm_emit_loop (OrcCompiler *compiler) } void -arm_add_strides (OrcCompiler *compiler) +arm_add_strides (OrcCompiler * compiler) { int i; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ - if (compiler->vars[i].name == NULL) continue; + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { + if (compiler->vars[i].name == NULL) + continue; switch (compiler->vars[i].vartype) { case ORC_VAR_TYPE_CONST: break; @@ -471,21 +485,20 @@ arm_add_strides (OrcCompiler *compiler) case ORC_VAR_TYPE_SRC: case ORC_VAR_TYPE_DEST: orc_arm_emit_load_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i])); + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i])); orc_arm_emit_load_reg (compiler, ORC_ARM_A2, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[i])); + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[i])); orc_arm_emit_add (compiler, ORC_ARM_A3, ORC_ARM_A3, ORC_ARM_A2); orc_arm_emit_store_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i])); + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i])); break; case ORC_VAR_TYPE_ACCUMULATOR: break; case ORC_VAR_TYPE_TEMP: break; default: - ORC_COMPILER_ERROR(compiler,"bad vartype"); + ORC_COMPILER_ERROR (compiler, "bad vartype"); break; } } } - diff --git a/orc/orcprogram-c.c b/orc/orcprogram-c.c index dac0fe6..295e7c6 100644 --- a/orc/orcprogram-c.c +++ b/orc/orcprogram-c.c @@ -10,16 +10,17 @@ #include <orc/orcdebug.h> static const char *c_get_type_name (int size); -static void c_get_name_int (char *name, OrcCompiler *p, OrcInstruction *insn, int var); +static void c_get_name_int (char *name, OrcCompiler * p, OrcInstruction * insn, + int var); void orc_c_init (void); void -orc_compiler_c_init (OrcCompiler *compiler) +orc_compiler_c_init (OrcCompiler * compiler) { int i; - for(i=ORC_GP_REG_BASE;i<ORC_GP_REG_BASE+32;i++){ + for (i = ORC_GP_REG_BASE; i < ORC_GP_REG_BASE + 32; i++) { compiler->valid_regs[i] = 1; } compiler->loop_shift = 0; @@ -29,108 +30,103 @@ const char * orc_target_c_get_typedefs (void) { return - "#ifndef _ORC_INTEGER_TYPEDEFS_\n" - "#define _ORC_INTEGER_TYPEDEFS_\n" - "#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n" - "#include <stdint.h>\n" - "typedef int8_t orc_int8;\n" - "typedef int16_t orc_int16;\n" - "typedef int32_t orc_int32;\n" - "typedef int64_t orc_int64;\n" - "typedef uint8_t orc_uint8;\n" - "typedef uint16_t orc_uint16;\n" - "typedef uint32_t orc_uint32;\n" - "typedef uint64_t orc_uint64;\n" - "#define ORC_UINT64_C(x) UINT64_C(x)\n" - "#elif defined(_MSC_VER)\n" - "typedef signed __int8 orc_int8;\n" - "typedef signed __int16 orc_int16;\n" - "typedef signed __int32 orc_int32;\n" - "typedef signed __int64 orc_int64;\n" - "typedef unsigned __int8 orc_uint8;\n" - "typedef unsigned __int16 orc_uint16;\n" - "typedef unsigned __int32 orc_uint32;\n" - "typedef unsigned __int64 orc_uint64;\n" - "#define ORC_UINT64_C(x) (x##Ui64)\n" - "#define inline __inline\n" - "#else\n" - "#include <limits.h>\n" - "typedef signed char orc_int8;\n" - "typedef short orc_int16;\n" - "typedef int orc_int32;\n" - "typedef unsigned char orc_uint8;\n" - "typedef unsigned short orc_uint16;\n" - "typedef unsigned int orc_uint32;\n" - "#if INT_MAX == LONG_MAX\n" - "typedef long long orc_int64;\n" - "typedef unsigned long long orc_uint64;\n" - "#define ORC_UINT64_C(x) (x##ULL)\n" - "#else\n" - "typedef long orc_int64;\n" - "typedef unsigned long orc_uint64;\n" - "#define ORC_UINT64_C(x) (x##UL)\n" - "#endif\n" - "#endif\n" - "typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16;\n" - "typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32;\n" - "typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64;\n" - "#endif\n" - "#ifndef ORC_RESTRICT\n" - "#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n" - "#define ORC_RESTRICT restrict\n" - "#elif defined(__GNUC__) && __GNUC__ >= 4\n" - "#define ORC_RESTRICT __restrict__\n" - "#else\n" - "#define ORC_RESTRICT\n" - "#endif\n" - "#endif\n"; + "#ifndef _ORC_INTEGER_TYPEDEFS_\n" + "#define _ORC_INTEGER_TYPEDEFS_\n" + "#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n" + "#include <stdint.h>\n" + "typedef int8_t orc_int8;\n" + "typedef int16_t orc_int16;\n" + "typedef int32_t orc_int32;\n" + "typedef int64_t orc_int64;\n" + "typedef uint8_t orc_uint8;\n" + "typedef uint16_t orc_uint16;\n" + "typedef uint32_t orc_uint32;\n" + "typedef uint64_t orc_uint64;\n" + "#define ORC_UINT64_C(x) UINT64_C(x)\n" + "#elif defined(_MSC_VER)\n" + "typedef signed __int8 orc_int8;\n" + "typedef signed __int16 orc_int16;\n" + "typedef signed __int32 orc_int32;\n" + "typedef signed __int64 orc_int64;\n" + "typedef unsigned __int8 orc_uint8;\n" + "typedef unsigned __int16 orc_uint16;\n" + "typedef unsigned __int32 orc_uint32;\n" + "typedef unsigned __int64 orc_uint64;\n" + "#define ORC_UINT64_C(x) (x##Ui64)\n" + "#define inline __inline\n" + "#else\n" + "#include <limits.h>\n" + "typedef signed char orc_int8;\n" + "typedef short orc_int16;\n" + "typedef int orc_int32;\n" + "typedef unsigned char orc_uint8;\n" + "typedef unsigned short orc_uint16;\n" + "typedef unsigned int orc_uint32;\n" + "#if INT_MAX == LONG_MAX\n" + "typedef long long orc_int64;\n" + "typedef unsigned long long orc_uint64;\n" + "#define ORC_UINT64_C(x) (x##ULL)\n" + "#else\n" + "typedef long orc_int64;\n" + "typedef unsigned long orc_uint64;\n" + "#define ORC_UINT64_C(x) (x##UL)\n" + "#endif\n" + "#endif\n" + "typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16;\n" + "typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32;\n" + "typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64;\n" + "#endif\n" + "#ifndef ORC_RESTRICT\n" + "#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n" + "#define ORC_RESTRICT restrict\n" + "#elif defined(__GNUC__) && __GNUC__ >= 4\n" + "#define ORC_RESTRICT __restrict__\n" + "#else\n" "#define ORC_RESTRICT\n" "#endif\n" "#endif\n"; } const char * orc_target_c_get_asm_preamble (void) { return "\n" - "/* begin Orc C target preamble */\n" - "#define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))\n" - "#define ORC_ABS(a) ((a)<0 ? -(a) : (a))\n" - "#define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))\n" - "#define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))\n" - "#define ORC_SB_MAX 127\n" - "#define ORC_SB_MIN (-1-ORC_SB_MAX)\n" - "#define ORC_UB_MAX 255\n" - "#define ORC_UB_MIN 0\n" - "#define ORC_SW_MAX 32767\n" - "#define ORC_SW_MIN (-1-ORC_SW_MAX)\n" - "#define ORC_UW_MAX 65535\n" - "#define ORC_UW_MIN 0\n" - "#define ORC_SL_MAX 2147483647\n" - "#define ORC_SL_MIN (-1-ORC_SL_MAX)\n" - "#define ORC_UL_MAX 4294967295U\n" - "#define ORC_UL_MIN 0\n" - "#define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)\n" - "#define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)\n" - "#define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)\n" - "#define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)\n" - "#define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)\n" - "#define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)\n" - "#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))\n" - "#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))\n" - "#define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56))\n" - "#define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))\n" - "#define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))\n" - "#define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))\n" - "#define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))\n" - "#define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))\n" - "#ifndef ORC_RESTRICT\n" - "#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n" - "#define ORC_RESTRICT restrict\n" - "#elif defined(__GNUC__) && __GNUC__ >= 4\n" - "#define ORC_RESTRICT __restrict__\n" - "#else\n" - "#define ORC_RESTRICT\n" - "#endif\n" - "#endif\n" - "/* end Orc C target preamble */\n\n"; + "/* begin Orc C target preamble */\n" + "#define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))\n" + "#define ORC_ABS(a) ((a)<0 ? -(a) : (a))\n" + "#define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))\n" + "#define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))\n" + "#define ORC_SB_MAX 127\n" + "#define ORC_SB_MIN (-1-ORC_SB_MAX)\n" + "#define ORC_UB_MAX 255\n" + "#define ORC_UB_MIN 0\n" + "#define ORC_SW_MAX 32767\n" + "#define ORC_SW_MIN (-1-ORC_SW_MAX)\n" + "#define ORC_UW_MAX 65535\n" + "#define ORC_UW_MIN 0\n" + "#define ORC_SL_MAX 2147483647\n" + "#define ORC_SL_MIN (-1-ORC_SL_MAX)\n" + "#define ORC_UL_MAX 4294967295U\n" + "#define ORC_UL_MIN 0\n" + "#define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)\n" + "#define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)\n" + "#define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)\n" + "#define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)\n" + "#define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)\n" + "#define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)\n" + "#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))\n" + "#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))\n" + "#define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56))\n" + "#define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))\n" + "#define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))\n" + "#define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))\n" + "#define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))\n" + "#define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))\n" + "#ifndef ORC_RESTRICT\n" + "#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n" + "#define ORC_RESTRICT restrict\n" + "#elif defined(__GNUC__) && __GNUC__ >= 4\n" + "#define ORC_RESTRICT __restrict__\n" + "#else\n" + "#define ORC_RESTRICT\n" + "#endif\n" "#endif\n" "/* end Orc C target preamble */\n\n"; } unsigned int @@ -155,37 +151,37 @@ static const char *varnames[] = { }; static void -get_varname (char *s, OrcCompiler *compiler, int var) +get_varname (char *s, OrcCompiler * compiler, int var) { if (compiler->target_flags & ORC_TARGET_C_NOEXEC) { if (var < 48) { strcpy (s, varnames[var]); } else { - sprintf(s, "t%d", var-32); + sprintf (s, "t%d", var - 32); } } else if (compiler->target_flags & ORC_TARGET_C_OPCODE) { if (var < ORC_VAR_S1) { - sprintf(s, "ex->dest_ptrs[%d]", var-ORC_VAR_D1); + sprintf (s, "ex->dest_ptrs[%d]", var - ORC_VAR_D1); } else { - sprintf(s, "ex->src_ptrs[%d]", var-ORC_VAR_S1); + sprintf (s, "ex->src_ptrs[%d]", var - ORC_VAR_S1); } } else { - sprintf(s, "ex->arrays[%d]", var); + sprintf (s, "ex->arrays[%d]", var); } } static void -get_varname_stride (char *s, OrcCompiler *compiler, int var) +get_varname_stride (char *s, OrcCompiler * compiler, int var) { if (compiler->target_flags & ORC_TARGET_C_NOEXEC) { - sprintf(s, "%s_stride", varnames[var]); + sprintf (s, "%s_stride", varnames[var]); } else { - sprintf(s, "ex->params[%d]", var); + sprintf (s, "ex->params[%d]", var); } } void -orc_compiler_c_assemble (OrcCompiler *compiler) +orc_compiler_c_assemble (OrcCompiler * compiler) { int i; int j; @@ -195,119 +191,117 @@ orc_compiler_c_assemble (OrcCompiler *compiler) int prefix = 0; if (!(compiler->target_flags & ORC_TARGET_C_BARE)) { - ORC_ASM_CODE(compiler,"void\n"); - ORC_ASM_CODE(compiler,"%s (OrcExecutor *ex)\n", compiler->program->name); - ORC_ASM_CODE(compiler,"{\n"); + ORC_ASM_CODE (compiler, "void\n"); + ORC_ASM_CODE (compiler, "%s (OrcExecutor *ex)\n", compiler->program->name); + ORC_ASM_CODE (compiler, "{\n"); } - ORC_ASM_CODE(compiler,"%*s int i;\n", prefix, ""); + ORC_ASM_CODE (compiler, "%*s int i;\n", prefix, ""); if (compiler->program->is_2d) { - ORC_ASM_CODE(compiler," int j;\n"); + ORC_ASM_CODE (compiler, " int j;\n"); } if (compiler->program->constant_n == 0) { if (!(compiler->target_flags & ORC_TARGET_C_NOEXEC) && !(compiler->target_flags & ORC_TARGET_C_OPCODE)) { - ORC_ASM_CODE(compiler," int n = ex->n;\n"); + ORC_ASM_CODE (compiler, " int n = ex->n;\n"); } } else { - ORC_ASM_CODE(compiler," int n = %d;\n", compiler->program->constant_n); + ORC_ASM_CODE (compiler, " int n = %d;\n", compiler->program->constant_n); } if (compiler->program->is_2d) { if (compiler->program->constant_m == 0) { if (!(compiler->target_flags & ORC_TARGET_C_NOEXEC)) { - ORC_ASM_CODE(compiler," int m = ex->params[ORC_VAR_A1];\n"); + ORC_ASM_CODE (compiler, " int m = ex->params[ORC_VAR_A1];\n"); } } else { - ORC_ASM_CODE(compiler," int m = %d;\n", compiler->program->constant_m); + ORC_ASM_CODE (compiler, " int m = %d;\n", compiler->program->constant_m); } } - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { OrcVariable *var = compiler->vars + i; - if (var->name == NULL) continue; + if (var->name == NULL) + continue; switch (var->vartype) { case ORC_VAR_TYPE_CONST: break; case ORC_VAR_TYPE_TEMP: if (!(var->last_use == -1 && var->first_use == 0)) { - ORC_ASM_CODE(compiler," %s var%d;\n", c_get_type_name(var->size), i); + ORC_ASM_CODE (compiler, " %s var%d;\n", c_get_type_name (var->size), + i); } break; case ORC_VAR_TYPE_SRC: - ORC_ASM_CODE(compiler," const %s * ORC_RESTRICT ptr%d;\n", - c_get_type_name (var->size), - i); + ORC_ASM_CODE (compiler, " const %s * ORC_RESTRICT ptr%d;\n", + c_get_type_name (var->size), i); break; case ORC_VAR_TYPE_DEST: - ORC_ASM_CODE(compiler," %s * ORC_RESTRICT ptr%d;\n", - c_get_type_name (var->size), - i); + ORC_ASM_CODE (compiler, " %s * ORC_RESTRICT ptr%d;\n", + c_get_type_name (var->size), i); break; case ORC_VAR_TYPE_ACCUMULATOR: if (var->size >= 2) { - ORC_ASM_CODE(compiler," %s var%d = { 0 };\n", - c_get_type_name (var->size), - i); + ORC_ASM_CODE (compiler, " %s var%d = { 0 };\n", + c_get_type_name (var->size), i); } else { - ORC_ASM_CODE(compiler," %s var%d = 0;\n", - c_get_type_name (var->size), - i); + ORC_ASM_CODE (compiler, " %s var%d = 0;\n", + c_get_type_name (var->size), i); } break; case ORC_VAR_TYPE_PARAM: break; default: - ORC_COMPILER_ERROR(compiler, "bad vartype"); + ORC_COMPILER_ERROR (compiler, "bad vartype"); break; } } - ORC_ASM_CODE(compiler,"\n"); + ORC_ASM_CODE (compiler, "\n"); if (compiler->program->is_2d) { - ORC_ASM_CODE(compiler," for (j = 0; j < m; j++) {\n"); + ORC_ASM_CODE (compiler, " for (j = 0; j < m; j++) {\n"); prefix = 2; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { OrcVariable *var = compiler->vars + i; - if (var->name == NULL) continue; + if (var->name == NULL) + continue; switch (var->vartype) { case ORC_VAR_TYPE_SRC: - { - char s1[40], s2[40]; - get_varname(s1, compiler, i); - get_varname_stride(s2, compiler, i); - ORC_ASM_CODE(compiler, - " ptr%d = ORC_PTR_OFFSET(%s, %s * j);\n", - i, s1, s2); - } + { + char s1[40], s2[40]; + get_varname (s1, compiler, i); + get_varname_stride (s2, compiler, i); + ORC_ASM_CODE (compiler, + " ptr%d = ORC_PTR_OFFSET(%s, %s * j);\n", i, s1, s2); + } break; case ORC_VAR_TYPE_DEST: - { - char s1[40], s2[40]; - get_varname(s1, compiler, i), - get_varname_stride(s2, compiler, i), - ORC_ASM_CODE(compiler, - " ptr%d = ORC_PTR_OFFSET(%s, %s * j);\n", - i, s1, s2); - } + { + char s1[40], s2[40]; + get_varname (s1, compiler, i), + get_varname_stride (s2, compiler, i), + ORC_ASM_CODE (compiler, + " ptr%d = ORC_PTR_OFFSET(%s, %s * j);\n", i, s1, s2); + } break; default: break; } } } else { - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { OrcVariable *var = compiler->vars + i; char s[40]; - if (var->name == NULL) continue; - get_varname(s, compiler, i); + if (var->name == NULL) + continue; + get_varname (s, compiler, i); switch (var->vartype) { case ORC_VAR_TYPE_SRC: - ORC_ASM_CODE(compiler," ptr%d = (%s *)%s;\n", i, + ORC_ASM_CODE (compiler, " ptr%d = (%s *)%s;\n", i, c_get_type_name (var->size), s); break; case ORC_VAR_TYPE_DEST: - ORC_ASM_CODE(compiler," ptr%d = (%s *)%s;\n", i, + ORC_ASM_CODE (compiler, " ptr%d = (%s *)%s;\n", i, c_get_type_name (var->size), s); break; default: @@ -316,111 +310,114 @@ orc_compiler_c_assemble (OrcCompiler *compiler) } } - ORC_ASM_CODE(compiler,"\n"); - for(j=0;j<compiler->n_insns;j++){ + ORC_ASM_CODE (compiler, "\n"); + for (j = 0; j < compiler->n_insns; j++) { insn = compiler->insns + j; opcode = insn->opcode; - if (!(insn->flags & ORC_INSN_FLAG_INVARIANT)) continue; + if (!(insn->flags & ORC_INSN_FLAG_INVARIANT)) + continue; - ORC_ASM_CODE(compiler,"%*s /* %d: %s */\n", prefix, "", + ORC_ASM_CODE (compiler, "%*s /* %d: %s */\n", prefix, "", j, insn->opcode->name); rule = insn->rule; if (!rule) { - ORC_COMPILER_ERROR(compiler, "No rule for: %s on target %s", opcode->name, - compiler->target->name); + ORC_COMPILER_ERROR (compiler, "No rule for: %s on target %s", + opcode->name, compiler->target->name); continue; } - ORC_ASM_CODE(compiler,"%*s", prefix, ""); - if (insn->flags & (ORC_INSTRUCTION_FLAG_X2|ORC_INSTRUCTION_FLAG_X4)) { + ORC_ASM_CODE (compiler, "%*s", prefix, ""); + if (insn->flags & (ORC_INSTRUCTION_FLAG_X2 | ORC_INSTRUCTION_FLAG_X4)) { int n; if (insn->flags & ORC_INSTRUCTION_FLAG_X2) { n = 2; } else { n = 4; } - for(i=0;i<n;i++){ + for (i = 0; i < n; i++) { compiler->unroll_index = i; - ORC_ASM_CODE(compiler,"%*s", prefix, ""); + ORC_ASM_CODE (compiler, "%*s", prefix, ""); rule->emit (compiler, rule->emit_user, insn); } } else { - ORC_ASM_CODE(compiler,"%*s", prefix, ""); + ORC_ASM_CODE (compiler, "%*s", prefix, ""); rule->emit (compiler, rule->emit_user, insn); } } - ORC_ASM_CODE(compiler,"\n"); - ORC_ASM_CODE(compiler,"%*s for (i = 0; i < n; i++) {\n", prefix, ""); + ORC_ASM_CODE (compiler, "\n"); + ORC_ASM_CODE (compiler, "%*s for (i = 0; i < n; i++) {\n", prefix, ""); /* Emit instructions */ - for(j=0;j<compiler->n_insns;j++){ + for (j = 0; j < compiler->n_insns; j++) { insn = compiler->insns + j; opcode = insn->opcode; - if (insn->flags & ORC_INSN_FLAG_INVARIANT) continue; + if (insn->flags & ORC_INSN_FLAG_INVARIANT) + continue; - ORC_ASM_CODE(compiler,"%*s /* %d: %s */\n", prefix, "", + ORC_ASM_CODE (compiler, "%*s /* %d: %s */\n", prefix, "", j, insn->opcode->name); rule = insn->rule; if (!rule) { - ORC_COMPILER_ERROR(compiler, "No rule for: %s on target %s", opcode->name, - compiler->target->name); + ORC_COMPILER_ERROR (compiler, "No rule for: %s on target %s", + opcode->name, compiler->target->name); continue; } - if (insn->flags & (ORC_INSTRUCTION_FLAG_X2|ORC_INSTRUCTION_FLAG_X4)) { + if (insn->flags & (ORC_INSTRUCTION_FLAG_X2 | ORC_INSTRUCTION_FLAG_X4)) { int n; if (insn->flags & ORC_INSTRUCTION_FLAG_X2) { n = 2; } else { n = 4; } - for(i=0;i<n;i++){ + for (i = 0; i < n; i++) { compiler->unroll_index = i; - ORC_ASM_CODE(compiler,"%*s", prefix, ""); + ORC_ASM_CODE (compiler, "%*s", prefix, ""); rule->emit (compiler, rule->emit_user, insn); } } else { - ORC_ASM_CODE(compiler,"%*s", prefix, ""); + ORC_ASM_CODE (compiler, "%*s", prefix, ""); rule->emit (compiler, rule->emit_user, insn); } } - ORC_ASM_CODE(compiler,"%*s }\n", prefix, ""); + ORC_ASM_CODE (compiler, "%*s }\n", prefix, ""); if (compiler->program->is_2d) { - ORC_ASM_CODE(compiler," }\n"); + ORC_ASM_CODE (compiler, " }\n"); } - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { char varname[40]; OrcVariable *var = compiler->vars + i; - if (var->name == NULL) continue; + if (var->name == NULL) + continue; switch (var->vartype) { case ORC_VAR_TYPE_ACCUMULATOR: c_get_name_int (varname, compiler, NULL, i); if (var->size == 2) { if (compiler->target_flags & ORC_TARGET_C_NOEXEC) { - ORC_ASM_CODE(compiler," *%s = (%s & 0xffff);\n", + ORC_ASM_CODE (compiler, " *%s = (%s & 0xffff);\n", varnames[i], varname); } else if (compiler->target_flags & ORC_TARGET_C_OPCODE) { - ORC_ASM_CODE(compiler," ((orc_union32 *)ex->dest_ptrs[%d])->i = " + ORC_ASM_CODE (compiler, " ((orc_union32 *)ex->dest_ptrs[%d])->i = " "(%s + ((orc_union32 *)ex->dest_ptrs[%d])->i) & 0xffff;\n", i - ORC_VAR_A1, varname, i - ORC_VAR_A1); } else { - ORC_ASM_CODE(compiler," ex->accumulators[%d] = (%s & 0xffff);\n", + ORC_ASM_CODE (compiler, " ex->accumulators[%d] = (%s & 0xffff);\n", i - ORC_VAR_A1, varname); } } else { if (compiler->target_flags & ORC_TARGET_C_NOEXEC) { - ORC_ASM_CODE(compiler," *%s = %s;\n", - varnames[i], varname); + ORC_ASM_CODE (compiler, " *%s = %s;\n", varnames[i], varname); } else if (compiler->target_flags & ORC_TARGET_C_OPCODE) { - ORC_ASM_CODE(compiler," ((orc_union32 *)ex->dest_ptrs[%d])->i += %s;\n", + ORC_ASM_CODE (compiler, + " ((orc_union32 *)ex->dest_ptrs[%d])->i += %s;\n", i - ORC_VAR_A1, varname); } else { - ORC_ASM_CODE(compiler," ex->accumulators[%d] = %s;\n", + ORC_ASM_CODE (compiler, " ex->accumulators[%d] = %s;\n", i - ORC_VAR_A1, varname); } } @@ -431,8 +428,8 @@ orc_compiler_c_assemble (OrcCompiler *compiler) } if (!(compiler->target_flags & ORC_TARGET_C_BARE)) { - ORC_ASM_CODE(compiler,"}\n"); - ORC_ASM_CODE(compiler,"\n"); + ORC_ASM_CODE (compiler, "}\n"); + ORC_ASM_CODE (compiler, "\n"); } } @@ -440,66 +437,66 @@ orc_compiler_c_assemble (OrcCompiler *compiler) /* rules */ static void -c_get_name_int (char *name, OrcCompiler *p, OrcInstruction *insn, int var) +c_get_name_int (char *name, OrcCompiler * p, OrcInstruction * insn, int var) { if (p->vars[var].vartype == ORC_VAR_TYPE_PARAM) { if (p->target_flags & ORC_TARGET_C_NOEXEC) { - sprintf(name,"%s", varnames[var]); + sprintf (name, "%s", varnames[var]); } else if (p->target_flags & ORC_TARGET_C_OPCODE) { - sprintf(name,"((orc_union64 *)(ex->src_ptrs[%d]))->i", + sprintf (name, "((orc_union64 *)(ex->src_ptrs[%d]))->i", var - ORC_VAR_P1 + p->program->n_src_vars); } else { switch (p->vars[var].param_type) { case ORC_PARAM_TYPE_INT: - sprintf(name,"ex->params[%d]", var); + sprintf (name, "ex->params[%d]", var); break; case ORC_PARAM_TYPE_FLOAT: - sprintf(name,"((orc_union32 *)(ex->params+%d))->i", var); + sprintf (name, "((orc_union32 *)(ex->params+%d))->i", var); break; case ORC_PARAM_TYPE_INT64: /* FIXME */ - sprintf(name,"((orc_union32 *)(ex->params+%d))->i", var); + sprintf (name, "((orc_union32 *)(ex->params+%d))->i", var); break; case ORC_PARAM_TYPE_DOUBLE: /* FIXME */ - sprintf(name,"((orc_union32 *)(ex->params+%d))->i", var); + sprintf (name, "((orc_union32 *)(ex->params+%d))->i", var); break; default: - ORC_ASSERT(0); + ORC_ASSERT (0); } } } else if (p->vars[var].vartype == ORC_VAR_TYPE_CONST) { if (p->vars[var].value.i == 0x80000000) { - sprintf(name,"0x80000000"); + sprintf (name, "0x80000000"); } else { - if (p->vars[var].value.i == (int)p->vars[var].value.i) { - sprintf(name, "%d", (int)p->vars[var].value.i); + if (p->vars[var].value.i == (int) p->vars[var].value.i) { + sprintf (name, "%d", (int) p->vars[var].value.i); } else { - ORC_ASSERT(0); + ORC_ASSERT (0); } } } else { if (insn && (insn->flags & ORC_INSTRUCTION_FLAG_X2)) { - sprintf(name, "var%d.x2[%d]", var, p->unroll_index); + sprintf (name, "var%d.x2[%d]", var, p->unroll_index); } else if (insn && (insn->flags & ORC_INSTRUCTION_FLAG_X4)) { - sprintf(name, "var%d.x4[%d]", var, p->unroll_index); + sprintf (name, "var%d.x4[%d]", var, p->unroll_index); } else { if (p->vars[var].size >= 2) { - sprintf(name, "var%d.i", var); + sprintf (name, "var%d.i", var); } else { - sprintf(name, "var%d", var); + sprintf (name, "var%d", var); } } } } static void -c_get_name_float (char *name, OrcCompiler *p, OrcInstruction *insn, int var) +c_get_name_float (char *name, OrcCompiler * p, OrcInstruction * insn, int var) { if (insn && (insn->flags & ORC_INSTRUCTION_FLAG_X2)) { - sprintf(name, "var%d.x2f[%d]", var, p->unroll_index); + sprintf (name, "var%d.x2f[%d]", var, p->unroll_index); } else if (insn && (insn->flags & ORC_INSTRUCTION_FLAG_X4)) { - sprintf(name, "var%d.x4f[%d]", var, p->unroll_index); + sprintf (name, "var%d.x4f[%d]", var, p->unroll_index); } else { switch (p->vars[var].vartype) { case ORC_VAR_TYPE_CONST: @@ -507,14 +504,14 @@ c_get_name_float (char *name, OrcCompiler *p, OrcInstruction *insn, int var) case ORC_VAR_TYPE_ACCUMULATOR: case ORC_VAR_TYPE_SRC: case ORC_VAR_TYPE_DEST: - sprintf(name, "var%d.f", var); + sprintf (name, "var%d.f", var); break; case ORC_VAR_TYPE_PARAM: - sprintf(name, "var%d", var); + sprintf (name, "var%d", var); break; default: - ORC_COMPILER_ERROR(p, "bad vartype"); - sprintf(name, "ERROR"); + ORC_COMPILER_ERROR (p, "bad vartype"); + sprintf (name, "ERROR"); break; } } @@ -767,53 +764,54 @@ c_rule_ ## name (OrcCompiler *p, void *user, OrcInstruction *insn) \ static void -c_rule_loadpX (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_loadpX (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40]; - int size = ORC_PTR_TO_INT(user); + int size = ORC_PTR_TO_INT (user); if ((p->target_flags & ORC_TARGET_C_NOEXEC) && (p->vars[insn->src_args[0]].param_type == ORC_PARAM_TYPE_FLOAT || - p->vars[insn->src_args[0]].param_type == ORC_PARAM_TYPE_DOUBLE)) + p->vars[insn->src_args[0]].param_type == ORC_PARAM_TYPE_DOUBLE)) c_get_name_float (dest, p, insn, insn->dest_args[0]); else c_get_name_int (dest, p, insn, insn->dest_args[0]); if (p->vars[insn->src_args[0]].vartype == ORC_VAR_TYPE_PARAM) { if (p->target_flags & ORC_TARGET_C_NOEXEC) { - ORC_ASM_CODE(p," %s = %s;\n", dest, varnames[insn->src_args[0]]); + ORC_ASM_CODE (p, " %s = %s;\n", dest, varnames[insn->src_args[0]]); } else if (p->target_flags & ORC_TARGET_C_OPCODE) { - ORC_ASM_CODE(p," %s = ((orc_union64 *)(ex->src_ptrs[%d]))->i;\n", + ORC_ASM_CODE (p, " %s = ((orc_union64 *)(ex->src_ptrs[%d]))->i;\n", dest, insn->src_args[0] - ORC_VAR_P1 + p->program->n_src_vars); } else { if (size == 8) { - ORC_ASM_CODE(p," %s = (ex->params[%d] & 0xffffffff) | ((orc_uint64)(ex->params[%d + (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);\n", + ORC_ASM_CODE (p, + " %s = (ex->params[%d] & 0xffffffff) | ((orc_uint64)(ex->params[%d + (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);\n", dest, insn->src_args[0], insn->src_args[0]); } else { - ORC_ASM_CODE(p," %s = ex->params[%d];\n", dest, - insn->src_args[0]); + ORC_ASM_CODE (p, " %s = ex->params[%d];\n", dest, insn->src_args[0]); } } } else if (p->vars[insn->src_args[0]].vartype == ORC_VAR_TYPE_CONST) { if (p->vars[insn->src_args[0]].size <= 4) { - ORC_ASM_CODE(p," %s = (int)0x%08x; /* %d or %gf */\n", dest, - (unsigned int)p->vars[insn->src_args[0]].value.i, - (int)p->vars[insn->src_args[0]].value.i, + ORC_ASM_CODE (p, " %s = (int)0x%08x; /* %d or %gf */\n", dest, + (unsigned int) p->vars[insn->src_args[0]].value.i, + (int) p->vars[insn->src_args[0]].value.i, p->vars[insn->src_args[0]].value.f); } else { - ORC_ASM_CODE(p," %s = ORC_UINT64_C(0x%08x%08x); /* %gf */\n", dest, - (orc_uint32)(((orc_uint64)p->vars[insn->src_args[0]].value.i)>>32), - ((orc_uint32)p->vars[insn->src_args[0]].value.i), + ORC_ASM_CODE (p, " %s = ORC_UINT64_C(0x%08x%08x); /* %gf */\n", dest, + (orc_uint32) (((orc_uint64) p->vars[insn->src_args[0]]. + value.i) >> 32), + ((orc_uint32) p->vars[insn->src_args[0]].value.i), p->vars[insn->src_args[0]].value.f); } } else { - ORC_COMPILER_ERROR(p, "expected param or constant"); + ORC_COMPILER_ERROR (p, "expected param or constant"); } } #if 0 static void -c_rule_loadpX (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_loadpX (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40]; char src[40]; @@ -824,25 +822,25 @@ c_rule_loadpX (OrcCompiler *p, void *user, OrcInstruction *insn) var = &p->vars[insn->src_args[0]]; - ORC_ASM_CODE(p," %s = %s;\n", dest, src); + ORC_ASM_CODE (p, " %s = %s;\n", dest, src); } #endif static void -c_rule_loadX (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_loadX (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->target_flags & ORC_TARGET_C_OPCODE && !(insn->flags & ORC_INSN_FLAG_ADDED)) { - ORC_ASM_CODE(p," var%d = ptr%d[offset + i];\n", insn->dest_args[0], + ORC_ASM_CODE (p, " var%d = ptr%d[offset + i];\n", insn->dest_args[0], insn->src_args[0]); } else { - ORC_ASM_CODE(p," var%d = ptr%d[i];\n", insn->dest_args[0], + ORC_ASM_CODE (p, " var%d = ptr%d[i];\n", insn->dest_args[0], insn->src_args[0]); } } static void -c_rule_loadoffX (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_loadoffX (OrcCompiler * p, void *user, OrcInstruction * insn) { char src[40]; @@ -850,44 +848,46 @@ c_rule_loadoffX (OrcCompiler *p, void *user, OrcInstruction *insn) if (p->target_flags & ORC_TARGET_C_OPCODE && !(insn->flags & ORC_INSN_FLAG_ADDED)) { - ORC_ASM_CODE(p," var%d = ptr%d[offset + i + %s];\n", insn->dest_args[0], - insn->src_args[0], src); + ORC_ASM_CODE (p, " var%d = ptr%d[offset + i + %s];\n", + insn->dest_args[0], insn->src_args[0], src); } else { - ORC_ASM_CODE(p," var%d = ptr%d[i + %s];\n", insn->dest_args[0], + ORC_ASM_CODE (p, " var%d = ptr%d[i + %s];\n", insn->dest_args[0], insn->src_args[0], src); } } static void -c_rule_loadupdb (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_loadupdb (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->target_flags & ORC_TARGET_C_OPCODE && !(insn->flags & ORC_INSN_FLAG_ADDED)) { - ORC_ASM_CODE(p," var%d = ptr%d[(offset + i)>>1];\n", insn->dest_args[0], - insn->src_args[0]); + ORC_ASM_CODE (p, " var%d = ptr%d[(offset + i)>>1];\n", + insn->dest_args[0], insn->src_args[0]); } else { - ORC_ASM_CODE(p," var%d = ptr%d[i>>1];\n", insn->dest_args[0], + ORC_ASM_CODE (p, " var%d = ptr%d[i>>1];\n", insn->dest_args[0], insn->src_args[0]); } } static void -c_rule_loadupib (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_loadupib (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->target_flags & ORC_TARGET_C_OPCODE && !(insn->flags & ORC_INSN_FLAG_ADDED)) { - ORC_ASM_CODE(p," var%d = ((offset + i)&1) ? ((orc_uint8)ptr%d[(offset + i)>>1] + (orc_uint8)ptr%d[((offset + i)>>1)+1] + 1)>>1 : ptr%d[(offset + i)>>1];\n", + ORC_ASM_CODE (p, + " var%d = ((offset + i)&1) ? ((orc_uint8)ptr%d[(offset + i)>>1] + (orc_uint8)ptr%d[((offset + i)>>1)+1] + 1)>>1 : ptr%d[(offset + i)>>1];\n", insn->dest_args[0], insn->src_args[0], insn->src_args[0], insn->src_args[0]); } else { - ORC_ASM_CODE(p," var%d = (i&1) ? ((orc_uint8)ptr%d[i>>1] + (orc_uint8)ptr%d[(i>>1)+1] + 1)>>1 : ptr%d[i>>1];\n", + ORC_ASM_CODE (p, + " var%d = (i&1) ? ((orc_uint8)ptr%d[i>>1] + (orc_uint8)ptr%d[(i>>1)+1] + 1)>>1 : ptr%d[i>>1];\n", insn->dest_args[0], insn->src_args[0], insn->src_args[0], insn->src_args[0]); } } static void -c_rule_ldresnearX (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_ldresnearX (OrcCompiler * p, void *user, OrcInstruction * insn) { char src1[40]; char src2[40]; @@ -897,16 +897,16 @@ c_rule_ldresnearX (OrcCompiler *p, void *user, OrcInstruction *insn) if (p->target_flags & ORC_TARGET_C_OPCODE && !(insn->flags & ORC_INSN_FLAG_ADDED)) { - ORC_ASM_CODE(p," var%d = ptr%d[(%s + (offset + i)*%s)>>16];\n", + ORC_ASM_CODE (p, " var%d = ptr%d[(%s + (offset + i)*%s)>>16];\n", insn->dest_args[0], insn->src_args[0], src1, src2); } else { - ORC_ASM_CODE(p," var%d = ptr%d[(%s + i*%s)>>16];\n", + ORC_ASM_CODE (p, " var%d = ptr%d[(%s + i*%s)>>16];\n", insn->dest_args[0], insn->src_args[0], src1, src2); } } static void -c_rule_ldreslinb (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_ldreslinb (OrcCompiler * p, void *user, OrcInstruction * insn) { char src1[40]; char src2[40]; @@ -914,20 +914,21 @@ c_rule_ldreslinb (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name_int (src1, p, insn, insn->src_args[1]); c_get_name_int (src2, p, insn, insn->src_args[2]); - ORC_ASM_CODE(p," {\n"); + ORC_ASM_CODE (p, " {\n"); if (p->target_flags & ORC_TARGET_C_OPCODE && !(insn->flags & ORC_INSN_FLAG_ADDED)) { - ORC_ASM_CODE(p," int tmp = %s + (offset + i) * %s;\n", src1, src2); + ORC_ASM_CODE (p, " int tmp = %s + (offset + i) * %s;\n", src1, src2); } else { - ORC_ASM_CODE(p," int tmp = %s + i * %s;\n", src1, src2); + ORC_ASM_CODE (p, " int tmp = %s + i * %s;\n", src1, src2); } - ORC_ASM_CODE(p," var%d = ((orc_uint8)ptr%d[tmp>>16] * (256-((tmp>>8)&0xff)) + (orc_uint8)ptr%d[(tmp>>16)+1] * ((tmp>>8)&0xff))>>8;\n", + ORC_ASM_CODE (p, + " var%d = ((orc_uint8)ptr%d[tmp>>16] * (256-((tmp>>8)&0xff)) + (orc_uint8)ptr%d[(tmp>>16)+1] * ((tmp>>8)&0xff))>>8;\n", insn->dest_args[0], insn->src_args[0], insn->src_args[0]); - ORC_ASM_CODE(p," }\n"); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_ldreslinl (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_ldreslinl (OrcCompiler * p, void *user, OrcInstruction * insn) { int i; char src1[40]; @@ -937,59 +938,61 @@ c_rule_ldreslinl (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name_int (src2, p, insn, insn->src_args[2]); - ORC_ASM_CODE(p," {\n"); + ORC_ASM_CODE (p, " {\n"); if (p->target_flags & ORC_TARGET_C_OPCODE && !(insn->flags & ORC_INSN_FLAG_ADDED)) { - ORC_ASM_CODE(p," int tmp = %s + (offset + i) * %s;\n", src1, src2); + ORC_ASM_CODE (p, " int tmp = %s + (offset + i) * %s;\n", src1, src2); } else { - ORC_ASM_CODE(p," int tmp = %s + i * %s;\n", src1, src2); + ORC_ASM_CODE (p, " int tmp = %s + i * %s;\n", src1, src2); } - ORC_ASM_CODE(p," orc_union32 a = ptr%d[tmp>>16];\n", insn->src_args[0]); - ORC_ASM_CODE(p," orc_union32 b = ptr%d[(tmp>>16)+1];\n", insn->src_args[0]); - for (i=0;i<4;i++){ - ORC_ASM_CODE(p," var%d.x4[%d] = ((orc_uint8)a.x4[%d] * (256-((tmp>>8)&0xff)) + (orc_uint8)b.x4[%d] * ((tmp>>8)&0xff))>>8;\n", + ORC_ASM_CODE (p, " orc_union32 a = ptr%d[tmp>>16];\n", insn->src_args[0]); + ORC_ASM_CODE (p, " orc_union32 b = ptr%d[(tmp>>16)+1];\n", + insn->src_args[0]); + for (i = 0; i < 4; i++) { + ORC_ASM_CODE (p, + " var%d.x4[%d] = ((orc_uint8)a.x4[%d] * (256-((tmp>>8)&0xff)) + (orc_uint8)b.x4[%d] * ((tmp>>8)&0xff))>>8;\n", insn->dest_args[0], i, i, i); } - ORC_ASM_CODE(p," }\n"); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_storeX (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_storeX (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->target_flags & ORC_TARGET_C_OPCODE && !(insn->flags & ORC_INSN_FLAG_ADDED)) { - ORC_ASM_CODE(p," ptr%d[offset + i] = var%d;\n", insn->dest_args[0], + ORC_ASM_CODE (p, " ptr%d[offset + i] = var%d;\n", insn->dest_args[0], insn->src_args[0]); } else { - ORC_ASM_CODE(p," ptr%d[i] = var%d;\n", insn->dest_args[0], + ORC_ASM_CODE (p, " ptr%d[i] = var%d;\n", insn->dest_args[0], insn->src_args[0]); } } static void -c_rule_accw (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_accw (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40]; c_get_name_int (dest, p, insn, insn->dest_args[0]); c_get_name_int (src1, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p," %s = %s + %s;\n", dest, dest, src1); + ORC_ASM_CODE (p, " %s = %s + %s;\n", dest, dest, src1); } static void -c_rule_accl (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_accl (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40]; c_get_name_int (dest, p, insn, insn->dest_args[0]); c_get_name_int (src1, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p," %s = %s + %s;\n", dest, dest, src1); + ORC_ASM_CODE (p, " %s = %s + %s;\n", dest, dest, src1); } static void -c_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_accsadubl (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40], src2[40]; @@ -997,13 +1000,13 @@ c_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name_int (src1, p, insn, insn->src_args[0]); c_get_name_int (src2, p, insn, insn->src_args[1]); - ORC_ASM_CODE(p, + ORC_ASM_CODE (p, " %s = %s + ORC_ABS((orc_int32)(orc_uint8)%s - (orc_int32)(orc_uint8)%s);\n", dest, dest, src1, src2); } static void -c_rule_splitql (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_splitql (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest1[40], dest2[40], src[40]; @@ -1011,16 +1014,16 @@ c_rule_splitql (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name_int (dest2, p, insn, insn->dest_args[1]); c_get_name_int (src, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p, " {\n"); - ORC_ASM_CODE(p," orc_union64 _src;\n"); - ORC_ASM_CODE(p," _src.i = %s;\n", src); - ORC_ASM_CODE(p," %s = _src.x2[1];\n", dest1); - ORC_ASM_CODE(p," %s = _src.x2[0];\n", dest2); - ORC_ASM_CODE(p, " }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " orc_union64 _src;\n"); + ORC_ASM_CODE (p, " _src.i = %s;\n", src); + ORC_ASM_CODE (p, " %s = _src.x2[1];\n", dest1); + ORC_ASM_CODE (p, " %s = _src.x2[0];\n", dest2); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_splitlw (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_splitlw (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest1[40], dest2[40], src[40]; @@ -1028,16 +1031,16 @@ c_rule_splitlw (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name_int (dest2, p, insn, insn->dest_args[1]); c_get_name_int (src, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p, " {\n"); - ORC_ASM_CODE(p," orc_union32 _src;\n"); - ORC_ASM_CODE(p," _src.i = %s;\n", src); - ORC_ASM_CODE(p," %s = _src.x2[1];\n", dest1); - ORC_ASM_CODE(p," %s = _src.x2[0];\n", dest2); - ORC_ASM_CODE(p, " }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " orc_union32 _src;\n"); + ORC_ASM_CODE (p, " _src.i = %s;\n", src); + ORC_ASM_CODE (p, " %s = _src.x2[1];\n", dest1); + ORC_ASM_CODE (p, " %s = _src.x2[0];\n", dest2); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_splitwb (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_splitwb (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest1[40], dest2[40], src[40]; @@ -1045,159 +1048,158 @@ c_rule_splitwb (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name_int (dest2, p, insn, insn->dest_args[1]); c_get_name_int (src, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p, " {\n"); - ORC_ASM_CODE(p," orc_union16 _src;\n"); - ORC_ASM_CODE(p," _src.i = %s;\n", src); - ORC_ASM_CODE(p," %s = _src.x2[1];\n", dest1); - ORC_ASM_CODE(p," %s = _src.x2[0];\n", dest2); - ORC_ASM_CODE(p, " }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " orc_union16 _src;\n"); + ORC_ASM_CODE (p, " _src.i = %s;\n", src); + ORC_ASM_CODE (p, " %s = _src.x2[1];\n", dest1); + ORC_ASM_CODE (p, " %s = _src.x2[0];\n", dest2); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_select0ql (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_select0ql (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src[40]; c_get_name_int (dest, p, insn, insn->dest_args[0]); c_get_name_int (src, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p, " {\n"); - ORC_ASM_CODE(p," orc_union64 _src;\n"); - ORC_ASM_CODE(p," _src.i = %s;\n", src); - ORC_ASM_CODE(p," %s = _src.x2[0];\n", dest); - ORC_ASM_CODE(p, " }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " orc_union64 _src;\n"); + ORC_ASM_CODE (p, " _src.i = %s;\n", src); + ORC_ASM_CODE (p, " %s = _src.x2[0];\n", dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_select1ql (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_select1ql (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src[40]; c_get_name_int (dest, p, insn, insn->dest_args[0]); c_get_name_int (src, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p, " {\n"); - ORC_ASM_CODE(p," orc_union64 _src;\n"); - ORC_ASM_CODE(p," _src.i = %s;\n", src); - ORC_ASM_CODE(p," %s = _src.x2[1];\n", dest); - ORC_ASM_CODE(p, " }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " orc_union64 _src;\n"); + ORC_ASM_CODE (p, " _src.i = %s;\n", src); + ORC_ASM_CODE (p, " %s = _src.x2[1];\n", dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_select0lw (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_select0lw (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src[40]; c_get_name_int (dest, p, insn, insn->dest_args[0]); c_get_name_int (src, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p, " {\n"); - ORC_ASM_CODE(p," orc_union32 _src;\n"); - ORC_ASM_CODE(p," _src.i = %s;\n", src); - ORC_ASM_CODE(p," %s = _src.x2[0];\n", dest); - ORC_ASM_CODE(p, " }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " orc_union32 _src;\n"); + ORC_ASM_CODE (p, " _src.i = %s;\n", src); + ORC_ASM_CODE (p, " %s = _src.x2[0];\n", dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_select1lw (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_select1lw (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src[40]; c_get_name_int (dest, p, insn, insn->dest_args[0]); c_get_name_int (src, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p, " {\n"); - ORC_ASM_CODE(p," orc_union32 _src;\n"); - ORC_ASM_CODE(p," _src.i = %s;\n", src); - ORC_ASM_CODE(p," %s = _src.x2[1];\n", dest); - ORC_ASM_CODE(p, " }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " orc_union32 _src;\n"); + ORC_ASM_CODE (p, " _src.i = %s;\n", src); + ORC_ASM_CODE (p, " %s = _src.x2[1];\n", dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_select0wb (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_select0wb (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src[40]; c_get_name_int (dest, p, insn, insn->dest_args[0]); c_get_name_int (src, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p, " {\n"); - ORC_ASM_CODE(p," orc_union16 _src;\n"); - ORC_ASM_CODE(p," _src.i = %s;\n", src); - ORC_ASM_CODE(p," %s = _src.x2[0];\n", dest); - ORC_ASM_CODE(p, " }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " orc_union16 _src;\n"); + ORC_ASM_CODE (p, " _src.i = %s;\n", src); + ORC_ASM_CODE (p, " %s = _src.x2[0];\n", dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_select1wb (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_select1wb (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src[40]; c_get_name_int (dest, p, insn, insn->dest_args[0]); c_get_name_int (src, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p, " {\n"); - ORC_ASM_CODE(p," orc_union16 _src;\n"); - ORC_ASM_CODE(p," _src.i = %s;\n", src); - ORC_ASM_CODE(p," %s = _src.x2[1];\n", dest); - ORC_ASM_CODE(p, " }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " orc_union16 _src;\n"); + ORC_ASM_CODE (p, " _src.i = %s;\n", src); + ORC_ASM_CODE (p, " %s = _src.x2[1];\n", dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_splatbw (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_splatbw (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src[40]; c_get_name_int (dest, p, insn, insn->dest_args[0]); c_get_name_int (src, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p," %s = ((%s&0xff) << 8) | (%s&0xff);\n", dest, src, src); + ORC_ASM_CODE (p, " %s = ((%s&0xff) << 8) | (%s&0xff);\n", dest, src, src); } static void -c_rule_splatbl (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_splatbl (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src[40]; c_get_name_int (dest, p, insn, insn->dest_args[0]); c_get_name_int (src, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p, + ORC_ASM_CODE (p, " %s = ((%s&0xff) << 24) | ((%s&0xff)<<16) | ((%s&0xff) << 8) | (%s&0xff);\n", dest, src, src, src, src); } static void -c_rule_splatw3q (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_splatw3q (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src[40]; c_get_name_int (dest, p, insn, insn->dest_args[0]); c_get_name_int (src, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p, + ORC_ASM_CODE (p, " %s = ((((orc_uint64)%s)>>48) << 48) | " "((((orc_uint64)%s)>>48)<<32) | " "((((orc_uint64)%s)>>48) << 16) | " - "((((orc_uint64)%s)>>48));\n", - dest, src, src, src, src); + "((((orc_uint64)%s)>>48));\n", dest, src, src, src, src); } static void -c_rule_div255w (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_div255w (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src[40]; c_get_name_int (dest, p, insn, insn->dest_args[0]); c_get_name_int (src, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p, + ORC_ASM_CODE (p, " %s = ((orc_uint16)(((orc_uint16)(%s+128)) + (((orc_uint16)(%s+128))>>8)))>>8;\n", dest, src, src); } static void -c_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_divluw (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40], src2[40]; @@ -1205,67 +1207,67 @@ c_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name_int (src1, p, insn, insn->src_args[0]); c_get_name_int (src2, p, insn, insn->src_args[1]); - ORC_ASM_CODE(p, + ORC_ASM_CODE (p, " %s = ((%s&0xff) == 0) ? 255 : ORC_CLAMP_UB(((orc_uint16)%s)/((orc_uint16)%s&0xff));\n", dest, src2, src1, src2); } static void -c_rule_convlf (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_convlf (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40]; c_get_name_float (dest, p, insn, insn->dest_args[0]); c_get_name_int (src1, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p," %s = %s;\n", dest, src1); + ORC_ASM_CODE (p, " %s = %s;\n", dest, src1); } static void -c_rule_convld (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_convld (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40]; c_get_name_float (dest, p, insn, insn->dest_args[0]); c_get_name_int (src1, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p," %s = %s;\n", dest, src1); + ORC_ASM_CODE (p, " %s = %s;\n", dest, src1); } static void -c_rule_convfd (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_convfd (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40]; c_get_name_float (dest, p, insn, insn->dest_args[0]); c_get_name_int (src1, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p, " {\n"); - ORC_ASM_CODE(p," orc_union32 _src1;\n"); - ORC_ASM_CODE(p," _src1.i = ORC_DENORMAL(%s);\n", src1); - ORC_ASM_CODE(p," %s = _src1.f;\n", dest); - ORC_ASM_CODE(p, " }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " orc_union32 _src1;\n"); + ORC_ASM_CODE (p, " _src1.i = ORC_DENORMAL(%s);\n", src1); + ORC_ASM_CODE (p, " %s = _src1.f;\n", dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_convdf (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_convdf (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40]; c_get_name_int (dest, p, insn, insn->dest_args[0]); c_get_name_int (src1, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p, " {\n"); - ORC_ASM_CODE(p," orc_union64 _src1;\n"); - ORC_ASM_CODE(p," orc_union32 _dest;\n"); - ORC_ASM_CODE(p," _src1.i = ORC_DENORMAL_DOUBLE(%s);\n", src1); - ORC_ASM_CODE(p," _dest.f = _src1.f;\n"); - ORC_ASM_CODE(p," %s = ORC_DENORMAL(_dest.i);\n", dest); - ORC_ASM_CODE(p, " }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " orc_union64 _src1;\n"); + ORC_ASM_CODE (p, " orc_union32 _dest;\n"); + ORC_ASM_CODE (p, " _src1.i = ORC_DENORMAL_DOUBLE(%s);\n", src1); + ORC_ASM_CODE (p, " _dest.f = _src1.f;\n"); + ORC_ASM_CODE (p, " %s = ORC_DENORMAL(_dest.i);\n", dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_convfl (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_convfl (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src[40], src_i[40]; @@ -1273,16 +1275,18 @@ c_rule_convfl (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name_float (src, p, insn, insn->src_args[0]); c_get_name_int (src_i, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p, " {\n"); - ORC_ASM_CODE(p," int tmp;\n"); - ORC_ASM_CODE(p," tmp = (int)%s;\n", src); - ORC_ASM_CODE(p," if (tmp == 0x80000000 && !(%s&0x80000000)) tmp = 0x7fffffff;\n", src_i); - ORC_ASM_CODE(p," %s = tmp;\n", dest); - ORC_ASM_CODE(p, " }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " int tmp;\n"); + ORC_ASM_CODE (p, " tmp = (int)%s;\n", src); + ORC_ASM_CODE (p, + " if (tmp == 0x80000000 && !(%s&0x80000000)) tmp = 0x7fffffff;\n", + src_i); + ORC_ASM_CODE (p, " %s = tmp;\n", dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_convdl (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_convdl (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src[40], src_i[40]; @@ -1290,16 +1294,18 @@ c_rule_convdl (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name_float (src, p, insn, insn->src_args[0]); c_get_name_int (src_i, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p, " {\n"); - ORC_ASM_CODE(p," int tmp;\n"); - ORC_ASM_CODE(p," tmp = %s;\n", src); - ORC_ASM_CODE(p," if (tmp == 0x80000000 && !(%s & ORC_UINT64_C(0x8000000000000000))) tmp = 0x7fffffff;\n", src_i); - ORC_ASM_CODE(p," %s = tmp;\n", dest); - ORC_ASM_CODE(p, " }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " int tmp;\n"); + ORC_ASM_CODE (p, " tmp = %s;\n", src); + ORC_ASM_CODE (p, + " if (tmp == 0x80000000 && !(%s & ORC_UINT64_C(0x8000000000000000))) tmp = 0x7fffffff;\n", + src_i); + ORC_ASM_CODE (p, " %s = tmp;\n", dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_minf (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_minf (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40], src2[40]; @@ -1307,19 +1313,20 @@ c_rule_minf (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name_int (src1, p, insn, insn->src_args[0]); c_get_name_int (src2, p, insn, insn->src_args[1]); - ORC_ASM_CODE(p," {\n"); - ORC_ASM_CODE(p," orc_union32 _src1;\n"); - ORC_ASM_CODE(p," orc_union32 _src2;\n"); - ORC_ASM_CODE(p," _src1.i = ORC_DENORMAL(%s);\n", src1); - ORC_ASM_CODE(p," _src2.i = ORC_DENORMAL(%s);\n", src2); - ORC_ASM_CODE(p," if (ORC_ISNAN(_src1.i)) %s = _src1.i;\n", dest); - ORC_ASM_CODE(p," else if (ORC_ISNAN(_src2.i)) %s = _src2.i;\n", dest); - ORC_ASM_CODE(p," else %s = (_src1.f < _src2.f) ? _src1.i : _src2.i;\n", dest); - ORC_ASM_CODE(p," }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " orc_union32 _src1;\n"); + ORC_ASM_CODE (p, " orc_union32 _src2;\n"); + ORC_ASM_CODE (p, " _src1.i = ORC_DENORMAL(%s);\n", src1); + ORC_ASM_CODE (p, " _src2.i = ORC_DENORMAL(%s);\n", src2); + ORC_ASM_CODE (p, " if (ORC_ISNAN(_src1.i)) %s = _src1.i;\n", dest); + ORC_ASM_CODE (p, " else if (ORC_ISNAN(_src2.i)) %s = _src2.i;\n", dest); + ORC_ASM_CODE (p, " else %s = (_src1.f < _src2.f) ? _src1.i : _src2.i;\n", + dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_maxf (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_maxf (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40], src2[40]; @@ -1327,19 +1334,20 @@ c_rule_maxf (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name_int (src1, p, insn, insn->src_args[0]); c_get_name_int (src2, p, insn, insn->src_args[1]); - ORC_ASM_CODE(p," {\n"); - ORC_ASM_CODE(p," orc_union32 _src1;\n"); - ORC_ASM_CODE(p," orc_union32 _src2;\n"); - ORC_ASM_CODE(p," _src1.i = ORC_DENORMAL(%s);\n", src1); - ORC_ASM_CODE(p," _src2.i = ORC_DENORMAL(%s);\n", src2); - ORC_ASM_CODE(p," if (ORC_ISNAN(_src1.i)) %s = _src1.i;\n", dest); - ORC_ASM_CODE(p," else if (ORC_ISNAN(_src2.i)) %s = _src2.i;\n", dest); - ORC_ASM_CODE(p," else %s = (_src1.f > _src2.f) ? _src1.i : _src2.i;\n", dest); - ORC_ASM_CODE(p," }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " orc_union32 _src1;\n"); + ORC_ASM_CODE (p, " orc_union32 _src2;\n"); + ORC_ASM_CODE (p, " _src1.i = ORC_DENORMAL(%s);\n", src1); + ORC_ASM_CODE (p, " _src2.i = ORC_DENORMAL(%s);\n", src2); + ORC_ASM_CODE (p, " if (ORC_ISNAN(_src1.i)) %s = _src1.i;\n", dest); + ORC_ASM_CODE (p, " else if (ORC_ISNAN(_src2.i)) %s = _src2.i;\n", dest); + ORC_ASM_CODE (p, " else %s = (_src1.f > _src2.f) ? _src1.i : _src2.i;\n", + dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_mind (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_mind (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40], src2[40]; @@ -1347,19 +1355,22 @@ c_rule_mind (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name_int (src1, p, insn, insn->src_args[0]); c_get_name_int (src2, p, insn, insn->src_args[1]); - ORC_ASM_CODE(p," {\n"); - ORC_ASM_CODE(p," orc_union64 _src1;\n"); - ORC_ASM_CODE(p," orc_union64 _src2;\n"); - ORC_ASM_CODE(p," _src1.i = ORC_DENORMAL_DOUBLE(%s);\n", src1); - ORC_ASM_CODE(p," _src2.i = ORC_DENORMAL_DOUBLE(%s);\n", src2); - ORC_ASM_CODE(p," if (ORC_ISNAN_DOUBLE(_src1.i)) %s = _src1.i;\n", dest); - ORC_ASM_CODE(p," else if (ORC_ISNAN_DOUBLE(_src2.i)) %s = _src2.i;\n", dest); - ORC_ASM_CODE(p," else %s = (_src1.f < _src2.f) ? _src1.i : _src2.i;\n", dest); - ORC_ASM_CODE(p," }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " orc_union64 _src1;\n"); + ORC_ASM_CODE (p, " orc_union64 _src2;\n"); + ORC_ASM_CODE (p, " _src1.i = ORC_DENORMAL_DOUBLE(%s);\n", src1); + ORC_ASM_CODE (p, " _src2.i = ORC_DENORMAL_DOUBLE(%s);\n", src2); + ORC_ASM_CODE (p, " if (ORC_ISNAN_DOUBLE(_src1.i)) %s = _src1.i;\n", + dest); + ORC_ASM_CODE (p, " else if (ORC_ISNAN_DOUBLE(_src2.i)) %s = _src2.i;\n", + dest); + ORC_ASM_CODE (p, " else %s = (_src1.f < _src2.f) ? _src1.i : _src2.i;\n", + dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_maxd (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_maxd (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40], src2[40]; @@ -1367,43 +1378,48 @@ c_rule_maxd (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name_int (src1, p, insn, insn->src_args[0]); c_get_name_int (src2, p, insn, insn->src_args[1]); - ORC_ASM_CODE(p," {\n"); - ORC_ASM_CODE(p," orc_union64 _src1;\n"); - ORC_ASM_CODE(p," orc_union64 _src2;\n"); - ORC_ASM_CODE(p," _src1.i = ORC_DENORMAL_DOUBLE(%s);\n", src1); - ORC_ASM_CODE(p," _src2.i = ORC_DENORMAL_DOUBLE(%s);\n", src2); - ORC_ASM_CODE(p," if (ORC_ISNAN_DOUBLE(_src1.i)) %s = _src1.i;\n", dest); - ORC_ASM_CODE(p," else if (ORC_ISNAN_DOUBLE(_src2.i)) %s = _src2.i;\n", dest); - ORC_ASM_CODE(p," else %s = (_src1.f > _src2.f) ? _src1.i : _src2.i;\n", dest); - ORC_ASM_CODE(p," }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " orc_union64 _src1;\n"); + ORC_ASM_CODE (p, " orc_union64 _src2;\n"); + ORC_ASM_CODE (p, " _src1.i = ORC_DENORMAL_DOUBLE(%s);\n", src1); + ORC_ASM_CODE (p, " _src2.i = ORC_DENORMAL_DOUBLE(%s);\n", src2); + ORC_ASM_CODE (p, " if (ORC_ISNAN_DOUBLE(_src1.i)) %s = _src1.i;\n", + dest); + ORC_ASM_CODE (p, " else if (ORC_ISNAN_DOUBLE(_src2.i)) %s = _src2.i;\n", + dest); + ORC_ASM_CODE (p, " else %s = (_src1.f > _src2.f) ? _src1.i : _src2.i;\n", + dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_swapwl (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_swapwl (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src[40]; c_get_name_int (dest, p, insn, insn->dest_args[0]); c_get_name_int (src, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p," %s = ((%s&0x0000ffff) << 16) | ((%s&0xffff0000) >> 16);\n", - dest, src, src); + ORC_ASM_CODE (p, + " %s = ((%s&0x0000ffff) << 16) | ((%s&0xffff0000) >> 16);\n", dest, + src, src); } static void -c_rule_swaplq (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_swaplq (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src[40]; c_get_name_int (dest, p, insn, insn->dest_args[0]); c_get_name_int (src, p, insn, insn->src_args[0]); - ORC_ASM_CODE(p," %s = (ORC_UINT64_C(%s&0x00000000ffffffff) << 32) | (ORC_UINT64_C(%s&0xffffffff00000000) >> 32);\n", + ORC_ASM_CODE (p, + " %s = (ORC_UINT64_C(%s&0x00000000ffffffff) << 32) | (ORC_UINT64_C(%s&0xffffffff00000000) >> 32);\n", dest, src, src); } static void -c_rule_mergelq (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_mergelq (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40], src2[40]; @@ -1411,16 +1427,16 @@ c_rule_mergelq (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name_int (src1, p, insn, insn->src_args[0]); c_get_name_int (src2, p, insn, insn->src_args[1]); - ORC_ASM_CODE(p, " {\n"); - ORC_ASM_CODE(p," orc_union64 _dest;\n"); - ORC_ASM_CODE(p," _dest.x2[0] = %s;\n", src1); - ORC_ASM_CODE(p," _dest.x2[1] = %s;\n", src2); - ORC_ASM_CODE(p," %s = _dest.i;\n", dest); - ORC_ASM_CODE(p, " }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " orc_union64 _dest;\n"); + ORC_ASM_CODE (p, " _dest.x2[0] = %s;\n", src1); + ORC_ASM_CODE (p, " _dest.x2[1] = %s;\n", src2); + ORC_ASM_CODE (p, " %s = _dest.i;\n", dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_mergewl (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_mergewl (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40], src2[40]; @@ -1428,16 +1444,16 @@ c_rule_mergewl (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name_int (src1, p, insn, insn->src_args[0]); c_get_name_int (src2, p, insn, insn->src_args[1]); - ORC_ASM_CODE(p, " {\n"); - ORC_ASM_CODE(p," orc_union32 _dest;\n"); - ORC_ASM_CODE(p," _dest.x2[0] = %s;\n", src1); - ORC_ASM_CODE(p," _dest.x2[1] = %s;\n", src2); - ORC_ASM_CODE(p," %s = _dest.i;\n", dest); - ORC_ASM_CODE(p, " }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " orc_union32 _dest;\n"); + ORC_ASM_CODE (p, " _dest.x2[0] = %s;\n", src1); + ORC_ASM_CODE (p, " _dest.x2[1] = %s;\n", src2); + ORC_ASM_CODE (p, " %s = _dest.i;\n", dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_mergebw (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_mergebw (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40], src2[40]; @@ -1445,12 +1461,12 @@ c_rule_mergebw (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name_int (src1, p, insn, insn->src_args[0]); c_get_name_int (src2, p, insn, insn->src_args[1]); - ORC_ASM_CODE(p, " {\n"); - ORC_ASM_CODE(p," orc_union16 _dest;\n"); - ORC_ASM_CODE(p," _dest.x2[0] = %s;\n", src1); - ORC_ASM_CODE(p," _dest.x2[1] = %s;\n", src2); - ORC_ASM_CODE(p," %s = _dest.i;\n", dest); - ORC_ASM_CODE(p, " }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " orc_union16 _dest;\n"); + ORC_ASM_CODE (p, " _dest.x2[0] = %s;\n", src1); + ORC_ASM_CODE (p, " _dest.x2[1] = %s;\n", src2); + ORC_ASM_CODE (p, " %s = _dest.i;\n", dest); + ORC_ASM_CODE (p, " }\n"); } @@ -1461,7 +1477,7 @@ static OrcTarget c_target = { orc_compiler_c_get_default_flags, orc_compiler_c_init, orc_compiler_c_assemble, - { { 0 } }, + {{0}}, 0, orc_target_c_get_asm_preamble, }; @@ -1474,7 +1490,7 @@ orc_c_init (void) orc_target_register (&c_target); - rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), &c_target, 0); + rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), &c_target, 0); #define BINARY_SB(a,b) orc_rule_register (rule_set, #a , c_rule_ ## a, NULL); #define BINARY_UB(a,b) orc_rule_register (rule_set, #a , c_rule_ ## a, NULL); @@ -1520,10 +1536,10 @@ orc_c_init (void) #include "opcodes.h" - orc_rule_register (rule_set, "loadpb", c_rule_loadpX, (void *)1); - orc_rule_register (rule_set, "loadpw", c_rule_loadpX, (void *)2); - orc_rule_register (rule_set, "loadpl", c_rule_loadpX, (void *)4); - orc_rule_register (rule_set, "loadpq", c_rule_loadpX, (void *)8); + orc_rule_register (rule_set, "loadpb", c_rule_loadpX, (void *) 1); + orc_rule_register (rule_set, "loadpw", c_rule_loadpX, (void *) 2); + orc_rule_register (rule_set, "loadpl", c_rule_loadpX, (void *) 4); + orc_rule_register (rule_set, "loadpq", c_rule_loadpX, (void *) 8); orc_rule_register (rule_set, "loadb", c_rule_loadX, NULL); orc_rule_register (rule_set, "loadw", c_rule_loadX, NULL); orc_rule_register (rule_set, "loadl", c_rule_loadX, NULL); @@ -1575,4 +1591,3 @@ orc_c_init (void) orc_rule_register (rule_set, "mergewl", c_rule_mergewl, NULL); orc_rule_register (rule_set, "mergelq", c_rule_mergelq, NULL); } - diff --git a/orc/orcprogram-c64x-c.c b/orc/orcprogram-c64x-c.c index 8361fee..1e28099 100644 --- a/orc/orcprogram-c64x-c.c +++ b/orc/orcprogram-c64x-c.c @@ -12,14 +12,14 @@ void orc_c_init (void); -static void emit_loop (OrcCompiler *compiler, int prefix); +static void emit_loop (OrcCompiler * compiler, int prefix); void -orc_compiler_c64x_c_init (OrcCompiler *compiler) +orc_compiler_c64x_c_init (OrcCompiler * compiler) { int i; - for(i=ORC_GP_REG_BASE;i<ORC_GP_REG_BASE+16;i++){ + for (i = ORC_GP_REG_BASE; i < ORC_GP_REG_BASE + 16; i++) { compiler->valid_regs[i] = 1; } compiler->loop_shift = 0; @@ -29,58 +29,58 @@ const char * orc_target_c64x_c_get_asm_preamble (void) { return "\n" - "/* begin Orc C target preamble */\n" - "typedef signed char int8_t;\n" - "typedef unsigned char uint8_t;\n" - "typedef signed short int16_t;\n" - "typedef unsigned short uint16_t;\n" - "typedef signed int int32_t;\n" - "typedef unsigned int uint32_t;\n" - "typedef signed long long int64_t;\n" - "typedef unsigned long long uint64_t;\n" - "#define ORC_RESTRICT restrict\n" - "typedef struct _OrcProgram OrcProgram;\n" - "typedef struct _OrcExecutor OrcExecutor;\n" - "#define ORC_N_VARIABLES 20\n" - "#define ORC_N_REGISTERS 20\n" - "#define ORC_OPCODE_N_ARGS 4\n" - "struct _OrcExecutor {\n" - " OrcProgram *program;\n" - " int n;\n" - " int counter1;\n" - " int counter2;\n" - " int counter3;\n" - " void *arrays[ORC_N_VARIABLES];\n" - " int params[ORC_N_VARIABLES];\n" - " //OrcVariable vars[ORC_N_VARIABLES];\n" - " //OrcVariable *args[ORC_OPCODE_N_ARGS];\n" - "};\n" - "#define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))\n" - "#define ORC_ABS(a) ((a)<0 ? -(a) : (a))\n" - "#define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))\n" - "#define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))\n" - "#define ORC_SB_MAX 127\n" - "#define ORC_SB_MIN (-1-ORC_SB_MAX)\n" - "#define ORC_UB_MAX 255\n" - "#define ORC_UB_MIN 0\n" - "#define ORC_SW_MAX 32767\n" - "#define ORC_SW_MIN (-1-ORC_SW_MAX)\n" - "#define ORC_UW_MAX 65535\n" - "#define ORC_UW_MIN 0\n" - "#define ORC_SL_MAX 2147483647\n" - "#define ORC_SL_MIN (-1-ORC_SL_MAX)\n" - "#define ORC_UL_MAX 4294967295U\n" - "#define ORC_UL_MIN 0\n" - "#define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)\n" - "#define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)\n" - "#define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)\n" - "#define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)\n" - "#define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)\n" - "#define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)\n" - "#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))\n" - "#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))\n" - "#define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))\n" - "/* end Orc C target preamble */\n\n"; + "/* begin Orc C target preamble */\n" + "typedef signed char int8_t;\n" + "typedef unsigned char uint8_t;\n" + "typedef signed short int16_t;\n" + "typedef unsigned short uint16_t;\n" + "typedef signed int int32_t;\n" + "typedef unsigned int uint32_t;\n" + "typedef signed long long int64_t;\n" + "typedef unsigned long long uint64_t;\n" + "#define ORC_RESTRICT restrict\n" + "typedef struct _OrcProgram OrcProgram;\n" + "typedef struct _OrcExecutor OrcExecutor;\n" + "#define ORC_N_VARIABLES 20\n" + "#define ORC_N_REGISTERS 20\n" + "#define ORC_OPCODE_N_ARGS 4\n" + "struct _OrcExecutor {\n" + " OrcProgram *program;\n" + " int n;\n" + " int counter1;\n" + " int counter2;\n" + " int counter3;\n" + " void *arrays[ORC_N_VARIABLES];\n" + " int params[ORC_N_VARIABLES];\n" + " //OrcVariable vars[ORC_N_VARIABLES];\n" + " //OrcVariable *args[ORC_OPCODE_N_ARGS];\n" + "};\n" + "#define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))\n" + "#define ORC_ABS(a) ((a)<0 ? -(a) : (a))\n" + "#define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))\n" + "#define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))\n" + "#define ORC_SB_MAX 127\n" + "#define ORC_SB_MIN (-1-ORC_SB_MAX)\n" + "#define ORC_UB_MAX 255\n" + "#define ORC_UB_MIN 0\n" + "#define ORC_SW_MAX 32767\n" + "#define ORC_SW_MIN (-1-ORC_SW_MAX)\n" + "#define ORC_UW_MAX 65535\n" + "#define ORC_UW_MIN 0\n" + "#define ORC_SL_MAX 2147483647\n" + "#define ORC_SL_MIN (-1-ORC_SL_MAX)\n" + "#define ORC_UL_MAX 4294967295U\n" + "#define ORC_UL_MIN 0\n" + "#define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)\n" + "#define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)\n" + "#define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)\n" + "#define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)\n" + "#define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)\n" + "#define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)\n" + "#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))\n" + "#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))\n" + "#define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))\n" + "/* end Orc C target preamble */\n\n"; } unsigned int @@ -105,90 +105,98 @@ static const char *varnames[] = { }; static void -output_prototype (OrcCompiler *compiler) +output_prototype (OrcCompiler * compiler) { OrcProgram *p = compiler->program; OrcVariable *var; int i; int need_comma; - ORC_ASM_CODE(compiler, "%s (", p->name); + ORC_ASM_CODE (compiler, "%s (", p->name); need_comma = FALSE; - for(i=0;i<4;i++){ + for (i = 0; i < 4; i++) { var = &p->vars[ORC_VAR_D1 + i]; if (var->size) { - if (need_comma) ORC_ASM_CODE(compiler, ", "); + if (need_comma) + ORC_ASM_CODE (compiler, ", "); if (var->type_name) { - ORC_ASM_CODE(compiler, "%s * %s", var->type_name, + ORC_ASM_CODE (compiler, "%s * %s", var->type_name, varnames[ORC_VAR_D1 + i]); } else { - ORC_ASM_CODE(compiler, "uint%d_t * %s", var->size*8, + ORC_ASM_CODE (compiler, "uint%d_t * %s", var->size * 8, varnames[ORC_VAR_D1 + i]); } if (p->is_2d) { - ORC_ASM_CODE(compiler, ", int %s_stride", varnames[ORC_VAR_D1 + i]); + ORC_ASM_CODE (compiler, ", int %s_stride", varnames[ORC_VAR_D1 + i]); } need_comma = TRUE; } } - for(i=0;i<4;i++){ + for (i = 0; i < 4; i++) { var = &p->vars[ORC_VAR_A1 + i]; if (var->size) { - if (need_comma) ORC_ASM_CODE(compiler, ", "); + if (need_comma) + ORC_ASM_CODE (compiler, ", "); if (var->type_name) { - ORC_ASM_CODE(compiler, "%s * %s", var->type_name, + ORC_ASM_CODE (compiler, "%s * %s", var->type_name, varnames[ORC_VAR_A1 + i]); } else { - ORC_ASM_CODE(compiler, "uint%d_t * %s", var->size*8, + ORC_ASM_CODE (compiler, "uint%d_t * %s", var->size * 8, varnames[ORC_VAR_A1 + i]); } need_comma = TRUE; } } - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { var = &p->vars[ORC_VAR_S1 + i]; if (var->size) { - if (need_comma) ORC_ASM_CODE(compiler, ", "); + if (need_comma) + ORC_ASM_CODE (compiler, ", "); if (var->type_name) { - ORC_ASM_CODE(compiler, "%s * %s", var->type_name, + ORC_ASM_CODE (compiler, "%s * %s", var->type_name, varnames[ORC_VAR_S1 + i]); } else { - ORC_ASM_CODE(compiler, "uint%d_t * %s", var->size*8, + ORC_ASM_CODE (compiler, "uint%d_t * %s", var->size * 8, varnames[ORC_VAR_S1 + i]); } if (p->is_2d) { - ORC_ASM_CODE(compiler, ", int %s_stride", varnames[ORC_VAR_S1 + i]); + ORC_ASM_CODE (compiler, ", int %s_stride", varnames[ORC_VAR_S1 + i]); } need_comma = TRUE; } } - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { var = &p->vars[ORC_VAR_P1 + i]; if (var->size) { - if (need_comma) ORC_ASM_CODE(compiler, ", "); - ORC_ASM_CODE(compiler, "int %s", varnames[ORC_VAR_P1 + i]); + if (need_comma) + ORC_ASM_CODE (compiler, ", "); + ORC_ASM_CODE (compiler, "int %s", varnames[ORC_VAR_P1 + i]); need_comma = TRUE; } } if (p->constant_n == 0) { - if (need_comma) ORC_ASM_CODE(compiler, ", "); - ORC_ASM_CODE(compiler, "int n"); + if (need_comma) + ORC_ASM_CODE (compiler, ", "); + ORC_ASM_CODE (compiler, "int n"); need_comma = TRUE; } if (p->is_2d && p->constant_m == 0) { - if (need_comma) ORC_ASM_CODE(compiler, ", "); - ORC_ASM_CODE(compiler, "int m"); + if (need_comma) + ORC_ASM_CODE (compiler, ", "); + ORC_ASM_CODE (compiler, "int m"); } - ORC_ASM_CODE(compiler, ")"); + ORC_ASM_CODE (compiler, ")"); } static int -get_align_var (OrcCompiler *compiler) +get_align_var (OrcCompiler * compiler) { - if (compiler->vars[ORC_VAR_D1].size) return ORC_VAR_D1; - if (compiler->vars[ORC_VAR_S1].size) return ORC_VAR_S1; + if (compiler->vars[ORC_VAR_D1].size) + return ORC_VAR_D1; + if (compiler->vars[ORC_VAR_S1].size) + return ORC_VAR_S1; - ORC_COMPILER_ERROR(compiler, "could not find alignment variable"); + ORC_COMPILER_ERROR (compiler, "could not find alignment variable"); return -1; } @@ -206,13 +214,13 @@ get_shift (int size) case 8: return 3; default: - ORC_ERROR("bad size %d", size); + ORC_ERROR ("bad size %d", size); } return -1; } void -orc_compiler_c64x_c_assemble (OrcCompiler *compiler) +orc_compiler_c64x_c_assemble (OrcCompiler * compiler) { int i; int prefix = 0; @@ -232,7 +240,7 @@ orc_compiler_c64x_c_assemble (OrcCompiler *compiler) loop_shift = 0; break; default: - ORC_ERROR("unhandled max var size %d", compiler->max_var_size); + ORC_ERROR ("unhandled max var size %d", compiler->max_var_size); break; } @@ -240,115 +248,123 @@ orc_compiler_c64x_c_assemble (OrcCompiler *compiler) if (!(compiler->target_flags & ORC_TARGET_C_BARE)) { if (!(compiler->target_flags & ORC_TARGET_C_NOEXEC)) { - ORC_ASM_CODE(compiler,"void\n"); - ORC_ASM_CODE(compiler,"%s (OrcExecutor *ex)\n", compiler->program->name); - } else{ - ORC_ASM_CODE(compiler,"void\n"); + ORC_ASM_CODE (compiler, "void\n"); + ORC_ASM_CODE (compiler, "%s (OrcExecutor *ex)\n", + compiler->program->name); + } else { + ORC_ASM_CODE (compiler, "void\n"); output_prototype (compiler); - ORC_ASM_CODE(compiler,"\n"); + ORC_ASM_CODE (compiler, "\n"); } - ORC_ASM_CODE(compiler,"{\n"); + ORC_ASM_CODE (compiler, "{\n"); } - ORC_ASM_CODE(compiler,"%*s int i;\n", prefix, ""); + ORC_ASM_CODE (compiler, "%*s int i;\n", prefix, ""); if (compiler->program->is_2d) { - ORC_ASM_CODE(compiler," int j;\n"); + ORC_ASM_CODE (compiler, " int j;\n"); } - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { OrcVariable *var = compiler->vars + i; - if (var->name == NULL) continue; + if (var->name == NULL) + continue; switch (var->vartype) { case ORC_VAR_TYPE_CONST: - { - int value = var->value.i; + { + int value = var->value.i; - if (var->size == 1) { - value = (value&0xff); - value |= (value<<8); - value |= (value<<16); - } - if (var->size == 2) { - value = (value&0xffff); - value |= (value<<16); - } + if (var->size == 1) { + value = (value & 0xff); + value |= (value << 8); + value |= (value << 16); + } + if (var->size == 2) { + value = (value & 0xffff); + value |= (value << 16); + } - if (value == 0x80000000) { - ORC_ASM_CODE(compiler," const int var%d = 0x80000000;\n", i); - } else { - ORC_ASM_CODE(compiler," const int var%d = %d;\n", - i, value); - } + if (value == 0x80000000) { + ORC_ASM_CODE (compiler, " const int var%d = 0x80000000;\n", i); + } else { + ORC_ASM_CODE (compiler, " const int var%d = %d;\n", i, value); } + } break; case ORC_VAR_TYPE_TEMP: - ORC_ASM_CODE(compiler," int var%d;\n", i); + ORC_ASM_CODE (compiler, " int var%d;\n", i); break; case ORC_VAR_TYPE_SRC: - ORC_ASM_CODE(compiler," const unsigned char * restrict ptr%d;\n", i); + ORC_ASM_CODE (compiler, " const unsigned char * restrict ptr%d;\n", i); break; case ORC_VAR_TYPE_DEST: - ORC_ASM_CODE(compiler," unsigned char * restrict ptr%d;\n", i); + ORC_ASM_CODE (compiler, " unsigned char * restrict ptr%d;\n", i); break; case ORC_VAR_TYPE_ACCUMULATOR: - ORC_ASM_CODE(compiler," int var%d = 0;\n", i); + ORC_ASM_CODE (compiler, " int var%d = 0;\n", i); break; case ORC_VAR_TYPE_PARAM: if (!(compiler->target_flags & ORC_TARGET_C_NOEXEC)) { - ORC_ASM_CODE(compiler," const int var%d = ex->params[%d];\n", i, i); + ORC_ASM_CODE (compiler, " const int var%d = ex->params[%d];\n", i, + i); } else { - ORC_ASM_CODE(compiler," const int var%d = %s;\n", i, varnames[i]); + ORC_ASM_CODE (compiler, " const int var%d = %s;\n", i, varnames[i]); } break; default: - ORC_COMPILER_ERROR(compiler, "bad vartype"); + ORC_COMPILER_ERROR (compiler, "bad vartype"); break; } } if (compiler->program->constant_n == 0) { if (!(compiler->target_flags & ORC_TARGET_C_NOEXEC)) { - ORC_ASM_CODE(compiler,"%*s int n;\n", prefix, ""); + ORC_ASM_CODE (compiler, "%*s int n;\n", prefix, ""); } } if (loop_shift > 0) { - ORC_ASM_CODE(compiler,"%*s int n1, n2, n3;\n", prefix, ""); + ORC_ASM_CODE (compiler, "%*s int n1, n2, n3;\n", prefix, ""); } - ORC_ASM_CODE(compiler,"\n"); + ORC_ASM_CODE (compiler, "\n"); if (compiler->program->is_2d) { if (compiler->program->constant_m == 0) { if (!(compiler->target_flags & ORC_TARGET_C_NOEXEC)) { - ORC_ASM_CODE(compiler," for (j = 0; j < ex->params[ORC_VAR_A1]; j++) {\n"); + ORC_ASM_CODE (compiler, + " for (j = 0; j < ex->params[ORC_VAR_A1]; j++) {\n"); } else { - ORC_ASM_CODE(compiler," for (j = 0; j < m; j++) {\n"); + ORC_ASM_CODE (compiler, " for (j = 0; j < m; j++) {\n"); } } else { - ORC_ASM_CODE(compiler," for (j = 0; j < %d; j++) {\n", + ORC_ASM_CODE (compiler, " for (j = 0; j < %d; j++) {\n", compiler->program->constant_m); } prefix = 2; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { OrcVariable *var = compiler->vars + i; - if (var->name == NULL) continue; + if (var->name == NULL) + continue; switch (var->vartype) { case ORC_VAR_TYPE_SRC: if (!(compiler->target_flags & ORC_TARGET_C_NOEXEC)) { - ORC_ASM_CODE(compiler," ptr%d = ORC_PTR_OFFSET(ex->arrays[%d], ex->params[%d] * j);\n", + ORC_ASM_CODE (compiler, + " ptr%d = ORC_PTR_OFFSET(ex->arrays[%d], ex->params[%d] * j);\n", i, i, i); } else { - ORC_ASM_CODE(compiler," ptr%d = ORC_PTR_OFFSET(%s, %s_stride * j);\n", - i, varnames[i], varnames[i]); + ORC_ASM_CODE (compiler, + " ptr%d = ORC_PTR_OFFSET(%s, %s_stride * j);\n", i, + varnames[i], varnames[i]); } break; case ORC_VAR_TYPE_DEST: if (!(compiler->target_flags & ORC_TARGET_C_NOEXEC)) { - ORC_ASM_CODE(compiler," ptr%d = ORC_PTR_OFFSET(ex->arrays[%d], ex->params[%d] * j);\n", + ORC_ASM_CODE (compiler, + " ptr%d = ORC_PTR_OFFSET(ex->arrays[%d], ex->params[%d] * j);\n", i, i, i); } else { - ORC_ASM_CODE(compiler," ptr%d = ORC_PTR_OFFSET(%s, %s_stride * j);\n", - i, varnames[i], varnames[i]); + ORC_ASM_CODE (compiler, + " ptr%d = ORC_PTR_OFFSET(%s, %s_stride * j);\n", i, + varnames[i], varnames[i]); } break; default: @@ -356,22 +372,23 @@ orc_compiler_c64x_c_assemble (OrcCompiler *compiler) } } } else { - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { OrcVariable *var = compiler->vars + i; - if (var->name == NULL) continue; + if (var->name == NULL) + continue; switch (var->vartype) { case ORC_VAR_TYPE_SRC: if (!(compiler->target_flags & ORC_TARGET_C_NOEXEC)) { - ORC_ASM_CODE(compiler," ptr%d = ex->arrays[%d];\n", i, i); + ORC_ASM_CODE (compiler, " ptr%d = ex->arrays[%d];\n", i, i); } else { - ORC_ASM_CODE(compiler," ptr%d = (void *)%s;\n", i, varnames[i]); + ORC_ASM_CODE (compiler, " ptr%d = (void *)%s;\n", i, varnames[i]); } break; case ORC_VAR_TYPE_DEST: if (!(compiler->target_flags & ORC_TARGET_C_NOEXEC)) { - ORC_ASM_CODE(compiler," ptr%d = ex->arrays[%d];\n", i, i); + ORC_ASM_CODE (compiler, " ptr%d = ex->arrays[%d];\n", i, i); } else { - ORC_ASM_CODE(compiler," ptr%d = (void *)%s;\n", i, varnames[i]); + ORC_ASM_CODE (compiler, " ptr%d = (void *)%s;\n", i, varnames[i]); } break; default: @@ -382,68 +399,71 @@ orc_compiler_c64x_c_assemble (OrcCompiler *compiler) if (compiler->program->constant_n == 0) { if (!(compiler->target_flags & ORC_TARGET_C_NOEXEC)) { - ORC_ASM_CODE(compiler,"%*s n = ex->n;\n", prefix, ""); + ORC_ASM_CODE (compiler, "%*s n = ex->n;\n", prefix, ""); } } if (loop_shift > 0) { - ORC_ASM_CODE(compiler,"%*s n1 = ((4 - (int)ptr%d)&0x3) >> %d;\n", - prefix, "", align_var, get_shift(compiler->vars[align_var].size)); - ORC_ASM_CODE(compiler,"%*s n2 = (n - n1) >> %d;\n", + ORC_ASM_CODE (compiler, "%*s n1 = ((4 - (int)ptr%d)&0x3) >> %d;\n", + prefix, "", align_var, get_shift (compiler->vars[align_var].size)); + ORC_ASM_CODE (compiler, "%*s n2 = (n - n1) >> %d;\n", prefix, "", loop_shift); - ORC_ASM_CODE(compiler,"%*s n3 = n & ((1 << %d) - 1);\n", + ORC_ASM_CODE (compiler, "%*s n3 = n & ((1 << %d) - 1);\n", prefix, "", loop_shift); - ORC_ASM_CODE(compiler,"\n"); + ORC_ASM_CODE (compiler, "\n"); - ORC_ASM_CODE(compiler,"#pragma MUST_ITERATE(0,%d)\n", (1<<loop_shift)-1); - ORC_ASM_CODE(compiler,"%*s for (i = 0; i < n1; i++) {\n", prefix, ""); + ORC_ASM_CODE (compiler, "#pragma MUST_ITERATE(0,%d)\n", + (1 << loop_shift) - 1); + ORC_ASM_CODE (compiler, "%*s for (i = 0; i < n1; i++) {\n", prefix, ""); compiler->loop_shift = 0; emit_loop (compiler, prefix); - ORC_ASM_CODE(compiler,"%*s }\n", prefix, ""); + ORC_ASM_CODE (compiler, "%*s }\n", prefix, ""); - ORC_ASM_CODE(compiler,"%*s for (i = 0; i < n2; i++) {\n", prefix, ""); + ORC_ASM_CODE (compiler, "%*s for (i = 0; i < n2; i++) {\n", prefix, ""); compiler->vars[align_var].is_aligned = TRUE; compiler->loop_shift = loop_shift; emit_loop (compiler, prefix); compiler->vars[align_var].is_aligned = FALSE; - ORC_ASM_CODE(compiler,"%*s }\n", prefix, ""); + ORC_ASM_CODE (compiler, "%*s }\n", prefix, ""); - ORC_ASM_CODE(compiler,"#pragma MUST_ITERATE(0,%d)\n", (1<<loop_shift)-1); - ORC_ASM_CODE(compiler,"%*s for (i = 0; i < n3; i++) {\n", prefix, ""); + ORC_ASM_CODE (compiler, "#pragma MUST_ITERATE(0,%d)\n", + (1 << loop_shift) - 1); + ORC_ASM_CODE (compiler, "%*s for (i = 0; i < n3; i++) {\n", prefix, ""); compiler->loop_shift = 0; emit_loop (compiler, prefix); - ORC_ASM_CODE(compiler,"%*s }\n", prefix, ""); + ORC_ASM_CODE (compiler, "%*s }\n", prefix, ""); } else { - ORC_ASM_CODE(compiler,"%*s for (i = 0; i < n; i++) {\n", prefix, ""); + ORC_ASM_CODE (compiler, "%*s for (i = 0; i < n; i++) {\n", prefix, ""); compiler->loop_shift = loop_shift; emit_loop (compiler, prefix); - ORC_ASM_CODE(compiler,"%*s }\n", prefix, ""); + ORC_ASM_CODE (compiler, "%*s }\n", prefix, ""); } if (compiler->program->is_2d) { - ORC_ASM_CODE(compiler," }\n"); + ORC_ASM_CODE (compiler, " }\n"); } - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { OrcVariable *var = compiler->vars + i; - if (var->name == NULL) continue; + if (var->name == NULL) + continue; switch (var->vartype) { case ORC_VAR_TYPE_ACCUMULATOR: if (var->size == 2) { if (!(compiler->target_flags & ORC_TARGET_C_NOEXEC)) { - ORC_ASM_CODE(compiler," ex->accumulators[%d] = (var%d & 0xffff);\n", - i - ORC_VAR_A1, i); + ORC_ASM_CODE (compiler, + " ex->accumulators[%d] = (var%d & 0xffff);\n", i - ORC_VAR_A1, + i); } else { - ORC_ASM_CODE(compiler," *%s = (var%d & 0xffff);\n", + ORC_ASM_CODE (compiler, " *%s = (var%d & 0xffff);\n", varnames[i], i); } } else { if (!(compiler->target_flags & ORC_TARGET_C_NOEXEC)) { - ORC_ASM_CODE(compiler," ex->accumulators[%d] = var%d;\n", + ORC_ASM_CODE (compiler, " ex->accumulators[%d] = var%d;\n", i - ORC_VAR_A1, i); } else { - ORC_ASM_CODE(compiler," *%s = var%d;\n", - varnames[i], i); + ORC_ASM_CODE (compiler, " *%s = var%d;\n", varnames[i], i); } } break; @@ -453,13 +473,13 @@ orc_compiler_c64x_c_assemble (OrcCompiler *compiler) } if (!(compiler->target_flags & ORC_TARGET_C_BARE)) { - ORC_ASM_CODE(compiler,"}\n"); - ORC_ASM_CODE(compiler,"\n"); + ORC_ASM_CODE (compiler, "}\n"); + ORC_ASM_CODE (compiler, "\n"); } } static void -emit_loop (OrcCompiler *compiler, int prefix) +emit_loop (OrcCompiler * compiler, int prefix) { int j; int i; @@ -467,31 +487,32 @@ emit_loop (OrcCompiler *compiler, int prefix) OrcStaticOpcode *opcode; OrcRule *rule; - for(j=0;j<compiler->n_insns;j++){ + for (j = 0; j < compiler->n_insns; j++) { insn = compiler->insns + j; opcode = insn->opcode; - ORC_ASM_CODE(compiler,"%*s /* %d: %s */\n", prefix, "", + ORC_ASM_CODE (compiler, "%*s /* %d: %s */\n", prefix, "", j, insn->opcode->name); rule = insn->rule; if (rule) { - ORC_ASM_CODE(compiler,"%*s", prefix, ""); + ORC_ASM_CODE (compiler, "%*s", prefix, ""); rule->emit (compiler, rule->emit_user, insn); } else { - ORC_COMPILER_ERROR(compiler, "No rule for: %s on target %s", + ORC_COMPILER_ERROR (compiler, "No rule for: %s on target %s", opcode->name, compiler->target->name); compiler->error = TRUE; } } - ORC_ASM_CODE(compiler,"\n"); - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ + ORC_ASM_CODE (compiler, "\n"); + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { OrcVariable *var = compiler->vars + i; - if (var->name == NULL) continue; + if (var->name == NULL) + continue; switch (var->vartype) { case ORC_VAR_TYPE_SRC: case ORC_VAR_TYPE_DEST: - ORC_ASM_CODE(compiler,"%*s ptr%d += %d;\n", prefix, "", + ORC_ASM_CODE (compiler, "%*s ptr%d += %d;\n", prefix, "", i, var->size << compiler->loop_shift); break; default: @@ -503,7 +524,7 @@ emit_loop (OrcCompiler *compiler, int prefix) /* rules */ static void -c_get_name (char *name, OrcCompiler *p, int var) +c_get_name (char *name, OrcCompiler * p, int var) { int size; @@ -514,43 +535,43 @@ c_get_name (char *name, OrcCompiler *p, int var) case ORC_VAR_TYPE_PARAM: case ORC_VAR_TYPE_TEMP: case ORC_VAR_TYPE_ACCUMULATOR: - sprintf(name, "var%d", var); + sprintf (name, "var%d", var); break; case ORC_VAR_TYPE_SRC: case ORC_VAR_TYPE_DEST: if (size == 1) { - sprintf(name, "(*(%sint8_t *)var%d)", + sprintf (name, "(*(%sint8_t *)var%d)", (p->vars[var].vartype == ORC_VAR_TYPE_SRC) ? "const " : "", var); } else { - sprintf(name, "_%smem%d%s(var%d)", + sprintf (name, "_%smem%d%s(var%d)", (p->vars[var].is_aligned) ? "a" : "", size, (p->vars[var].vartype == ORC_VAR_TYPE_SRC) ? "_const" : "", var); } break; default: - ORC_COMPILER_ERROR(p, "bad vartype"); - sprintf(name, "ERROR"); + ORC_COMPILER_ERROR (p, "bad vartype"); + sprintf (name, "ERROR"); break; } } static void -c_get_name_float (char *name, OrcCompiler *p, int var) +c_get_name_float (char *name, OrcCompiler * p, int var) { switch (p->vars[var].vartype) { case ORC_VAR_TYPE_CONST: case ORC_VAR_TYPE_PARAM: case ORC_VAR_TYPE_TEMP: case ORC_VAR_TYPE_ACCUMULATOR: - sprintf(name, "(*(float *)(&var%d))", var); + sprintf (name, "(*(float *)(&var%d))", var); break; case ORC_VAR_TYPE_SRC: case ORC_VAR_TYPE_DEST: - sprintf(name, "((float *)var%d)[i]", var); + sprintf (name, "((float *)var%d)[i]", var); break; default: - ORC_COMPILER_ERROR(p, "bad vartype"); - sprintf(name, "ERROR"); + ORC_COMPILER_ERROR (p, "bad vartype"); + sprintf (name, "ERROR"); break; } } @@ -689,141 +710,142 @@ c_rule_ ## name (OrcCompiler *p, void *user, OrcInstruction *insn) \ #define UNARY_FL(a,b) UNARYFL(a,b) #define UNARY_LF(a,b) UNARYLF(a,b) -BINARY_SB(addb, "_add4(%s,%s)") -BINARY_SB(addssb, "0x80808080^_saddu4(0x80808080^%s,0x80808080^%s)") -BINARY_SB(addusb, "_saddu4(%s,%s)") -BINARY_SB(andb, "%s & %s") -BINARY_SB(andnb, "(~%s) & %s") -BINARY_SB(avgsb, "0x7f7f7f7f^_avgu4(0x7f7f7f7f^%s,0x7f7f7f7f^%s)") -BINARY_UB(avgub, "_avgu4(%s,%s)") -BINARY_SB(cmpeqb, "_cmpeq4(%s,%s)") -BINARY_SB(cmpgtsb, "_cmpgtu4(0x80808080^%s,0x80808080^%s)") -UNARY_SB(copyb, "%s") -BINARY_SB(maxsb, "0x80808080^_maxu4(0x80808080^%s,0x80808080^%s)") -BINARY_UB(maxub, "_maxu4(%s,%s)") -BINARY_SB(minsb, "0x80808080^_minu4(0x80808080^%s,0x80808080^%s)") -BINARY_UB(minub, "_minu4(%s,%s)") -BINARY_SB(orb, "%s | %s") -UNARY_SB(signb, "0x80808080^_maxu4(0x7f7f7f7f,_minu4(0x81818181,0x80808080^%s))") -BINARY_SB(subb, "_sub4(%s,%s)") -BINARY_SB(xorb, "%s ^ %s") - -UNARY_SW(absw, "_abs2(%s)") -BINARY_SW(addw, "_add2(%s,%s)") -BINARY_SW(addssw, "_sadd2(%s,%s)") -BINARY_SW(addusw, "0x80008000^_sadd2(0x80008000^%s,0x80008000^%s)") -BINARY_SW(andw, "%s & %s") -BINARY_SW(andnw, "(~%s) & %s") -BINARY_SW(avgsw, "_avg2(%s,%s)") -BINARY_UW(avguw, "0x7fff7fff^_avg2(0x7fff7fff^%s,0x7fff7fff^%s)") -BINARY_SW(cmpeqw, "_cmpeq2(%s,%s)") -BINARY_SW(cmpgtsw, "_cmpgt2(%s,%s)") -UNARY_SW(copyw, "%s") -BINARY_SW(maxsw, "_max2(%s,%s)") -BINARY_SW(maxuw, "_max2(0x80008000^%s,0x80008000^%s)") -BINARY_SW(minsw, "_min2(%s,%s)") -BINARY_SW(minuw, "_min2(0x80008000^%s,0x80008000^%s)") -BINARY_SW(orw, "%s | %s") -BINARY_SW(shrsw, "_shr2(%s,%s)") -BINARY_UW(shruw, "_shru2(%s,%s)") -UNARY_SW(signw, "_max2(-1,_min2(1,%s))") -BINARY_SW(subw, "_sub2(%s,%s)") -BINARY_SW(subssw, "_ssub2(%s,%s)") -BINARY_SW(subusw, "0x80008000^_ssub2(0x80008000^%s,0x80008000^%s)") -BINARY_SW(xorw, "%s ^ %s") - -UNARY_SL(absl, "_abs(%s)") -BINARY_SL(addl, "%s + %s") -BINARY_SL(addssl, "_sadd(%s,%s)") -BINARY_UL(addusl, "ORC_CLAMP_UL((int64_t)(uint32_t)%s + (int64_t)(uint32_t)%s)") -BINARY_SL(andl, "%s & %s") -BINARY_SL(andnl, "(~%s) & %s") -BINARY_SL(avgsl, "((int64_t)%s + (int64_t)%s + 1)>>1") -BINARY_UL(avgul, "((uint64_t)(uint32_t)%s + (uint64_t)(uint32_t)%s + 1)>>1") -BINARY_SL(cmpeql, "(%s == %s) ? (~0) : 0") -BINARY_SL(cmpgtsl, "(%s > %s) ? (~0) : 0") -UNARY_SL(copyl, "%s") -BINARY_SL(maxsl, "ORC_MAX(%s, %s)") -BINARY_UL(maxul, "ORC_MAX((uint32_t)%s, (uint32_t)%s)") -BINARY_SL(minsl, "ORC_MIN(%s, %s)") -BINARY_UL(minul, "ORC_MIN((uint32_t)%s, (uint32_t)%s)") -BINARY_SL(mulll, "_loll(_mpy32ll(%s,%s))") -BINARY_SL(mulhsl, "_hill(_mpy32ll(%s,%s))") -BINARY_UL(mulhul, "_hill(_mpy32u(%s,%s))") -BINARY_SL(orl, "%s | %s") -BINARY_SL(shll, "%s << %s") -BINARY_SL(shrsl, "%s >> %s") -BINARY_UL(shrul, "((uint32_t)%s) >> %s") -UNARY_SL(signl, "ORC_CLAMP((int)%s,-1,1)") -BINARY_SL(subl, "%s - %s") -BINARY_SL(subssl, "_ssub(%s,%s)") -BINARY_UL(subusl, "ORC_CLAMP_UL((int64_t)(uint32_t)%s - (int64_t)(uint32_t)%s)") -BINARY_SL(xorl, "%s ^ %s") - -UNARY_BW(convsbw, "%s") -UNARY_BW(convubw, "_unpklu4(%s)") -UNARY_WL(convswl, "(int16_t)%s") -UNARY_WL(convuwl, "(uint16_t)%s") -UNARY_WB(convwb, "_packl4(0,%s)") -UNARY_WB(convsuswb, "_spacku4(0,%s)") -UNARY_LW(convlw, "_pack2(0,%s)") -UNARY_LW(convssslw, "_spack2(0,%s)") - -BINARY_BW(mulsbw, "%s * %s") -BINARY_BW(mulubw, "(uint8_t)%s * (uint8_t)%s") -BINARY_WL(mulswl, "%s * %s") -BINARY_WL(muluwl, "(uint16_t)%s * (uint16_t)%s") - -BINARY_WL(mergewl, "_pack2(%s, %s)") -BINARY_BW(mergebw, "_packl4(%s, %s)") -UNARY_WB(select0wb, "_packl4(0,%s)") -UNARY_WB(select1wb, "_packh4(0,%s)") -UNARY_LW(select0lw, "_pack2(0,%s)") -UNARY_LW(select1lw, "_packh2(0,%s)") -UNARY_UW(swapw, "_swap4(%s)") - +BINARY_SB (addb, "_add4(%s,%s)") + BINARY_SB (addssb, "0x80808080^_saddu4(0x80808080^%s,0x80808080^%s)") + BINARY_SB (addusb, "_saddu4(%s,%s)") + BINARY_SB (andb, "%s & %s") + BINARY_SB (andnb, "(~%s) & %s") + BINARY_SB (avgsb, "0x7f7f7f7f^_avgu4(0x7f7f7f7f^%s,0x7f7f7f7f^%s)") + BINARY_UB (avgub, "_avgu4(%s,%s)") + BINARY_SB (cmpeqb, "_cmpeq4(%s,%s)") + BINARY_SB (cmpgtsb, "_cmpgtu4(0x80808080^%s,0x80808080^%s)") + UNARY_SB (copyb, "%s") + BINARY_SB (maxsb, "0x80808080^_maxu4(0x80808080^%s,0x80808080^%s)") + BINARY_UB (maxub, "_maxu4(%s,%s)") + BINARY_SB (minsb, "0x80808080^_minu4(0x80808080^%s,0x80808080^%s)") + BINARY_UB (minub, "_minu4(%s,%s)") + BINARY_SB (orb, "%s | %s") + UNARY_SB (signb, + "0x80808080^_maxu4(0x7f7f7f7f,_minu4(0x81818181,0x80808080^%s))") + BINARY_SB (subb, "_sub4(%s,%s)") + BINARY_SB (xorb, "%s ^ %s") + + UNARY_SW (absw, "_abs2(%s)") + BINARY_SW (addw, "_add2(%s,%s)") + BINARY_SW (addssw, "_sadd2(%s,%s)") + BINARY_SW (addusw, "0x80008000^_sadd2(0x80008000^%s,0x80008000^%s)") + BINARY_SW (andw, "%s & %s") + BINARY_SW (andnw, "(~%s) & %s") + BINARY_SW (avgsw, "_avg2(%s,%s)") + BINARY_UW (avguw, "0x7fff7fff^_avg2(0x7fff7fff^%s,0x7fff7fff^%s)") + BINARY_SW (cmpeqw, "_cmpeq2(%s,%s)") + BINARY_SW (cmpgtsw, "_cmpgt2(%s,%s)") + UNARY_SW (copyw, "%s") + BINARY_SW (maxsw, "_max2(%s,%s)") + BINARY_SW (maxuw, "_max2(0x80008000^%s,0x80008000^%s)") + BINARY_SW (minsw, "_min2(%s,%s)") + BINARY_SW (minuw, "_min2(0x80008000^%s,0x80008000^%s)") + BINARY_SW (orw, "%s | %s") + BINARY_SW (shrsw, "_shr2(%s,%s)") + BINARY_UW (shruw, "_shru2(%s,%s)") + UNARY_SW (signw, "_max2(-1,_min2(1,%s))") + BINARY_SW (subw, "_sub2(%s,%s)") + BINARY_SW (subssw, "_ssub2(%s,%s)") + BINARY_SW (subusw, "0x80008000^_ssub2(0x80008000^%s,0x80008000^%s)") + BINARY_SW (xorw, "%s ^ %s") + + UNARY_SL (absl, "_abs(%s)") + BINARY_SL (addl, "%s + %s") + BINARY_SL (addssl, "_sadd(%s,%s)") + BINARY_UL (addusl, + "ORC_CLAMP_UL((int64_t)(uint32_t)%s + (int64_t)(uint32_t)%s)") + BINARY_SL (andl, "%s & %s") + BINARY_SL (andnl, "(~%s) & %s") + BINARY_SL (avgsl, "((int64_t)%s + (int64_t)%s + 1)>>1") + BINARY_UL (avgul, "((uint64_t)(uint32_t)%s + (uint64_t)(uint32_t)%s + 1)>>1") + BINARY_SL (cmpeql, "(%s == %s) ? (~0) : 0") + BINARY_SL (cmpgtsl, "(%s > %s) ? (~0) : 0") + UNARY_SL (copyl, "%s") + BINARY_SL (maxsl, "ORC_MAX(%s, %s)") + BINARY_UL (maxul, "ORC_MAX((uint32_t)%s, (uint32_t)%s)") + BINARY_SL (minsl, "ORC_MIN(%s, %s)") + BINARY_UL (minul, "ORC_MIN((uint32_t)%s, (uint32_t)%s)") + BINARY_SL (mulll, "_loll(_mpy32ll(%s,%s))") + BINARY_SL (mulhsl, "_hill(_mpy32ll(%s,%s))") + BINARY_UL (mulhul, "_hill(_mpy32u(%s,%s))") + BINARY_SL (orl, "%s | %s") + BINARY_SL (shll, "%s << %s") + BINARY_SL (shrsl, "%s >> %s") + BINARY_UL (shrul, "((uint32_t)%s) >> %s") + UNARY_SL (signl, "ORC_CLAMP((int)%s,-1,1)") + BINARY_SL (subl, "%s - %s") + BINARY_SL (subssl, "_ssub(%s,%s)") + BINARY_UL (subusl, + "ORC_CLAMP_UL((int64_t)(uint32_t)%s - (int64_t)(uint32_t)%s)") + BINARY_SL (xorl, "%s ^ %s") + + UNARY_BW (convsbw, "%s") + UNARY_BW (convubw, "_unpklu4(%s)") + UNARY_WL (convswl, "(int16_t)%s") + UNARY_WL (convuwl, "(uint16_t)%s") + UNARY_WB (convwb, "_packl4(0,%s)") + UNARY_WB (convsuswb, "_spacku4(0,%s)") + UNARY_LW (convlw, "_pack2(0,%s)") + UNARY_LW (convssslw, "_spack2(0,%s)") + + BINARY_BW (mulsbw, "%s * %s") + BINARY_BW (mulubw, "(uint8_t)%s * (uint8_t)%s") + BINARY_WL (mulswl, "%s * %s") + BINARY_WL (muluwl, "(uint16_t)%s * (uint16_t)%s") + + BINARY_WL (mergewl, "_pack2(%s, %s)") + BINARY_BW (mergebw, "_packl4(%s, %s)") + UNARY_WB (select0wb, "_packl4(0,%s)") + UNARY_WB (select1wb, "_packh4(0,%s)") + UNARY_LW (select0lw, "_pack2(0,%s)") + UNARY_LW (select1lw, "_packh2(0,%s)") + UNARY_UW (swapw, "_swap4(%s)") #if 0 -BINARY_F(addf, "%s + %s") -BINARY_F(subf, "%s - %s") -BINARY_F(mulf, "%s * %s") -BINARY_F(divf, "%s / %s") -UNARY_F(sqrtf, "sqrt(%s)") -BINARY_F(maxf, "ORC_MAX(%s,%s)") -BINARY_F(minf, "ORC_MIN(%s,%s)") -BINARY_FL(cmpeqf, "(%s == %s) ? (~0) : 0") -BINARY_FL(cmpltf, "(%s < %s) ? (~0) : 0") -BINARY_FL(cmplef, "(%s <= %s) ? (~0) : 0") -UNARY_FL(convfl, "rintf(%s)") -UNARY_LF(convlf, "%s") + BINARY_F (addf, "%s + %s") + BINARY_F (subf, "%s - %s") + BINARY_F (mulf, "%s * %s") + BINARY_F (divf, "%s / %s") + UNARY_F (sqrtf, "sqrt(%s)") + BINARY_F (maxf, "ORC_MAX(%s,%s)") + BINARY_F (minf, "ORC_MIN(%s,%s)") + BINARY_FL (cmpeqf, "(%s == %s) ? (~0) : 0") + BINARY_FL (cmpltf, "(%s < %s) ? (~0) : 0") + BINARY_FL (cmplef, "(%s <= %s) ? (~0) : 0") + UNARY_FL (convfl, "rintf(%s)") + UNARY_LF (convlf, "%s") #else -BINARY_F(addf, "0 /* float disabled %s %s */") -BINARY_F(subf, "0 /* float disabled %s %s */") -BINARY_F(mulf, "0 /* float disabled %s %s */") -BINARY_F(divf, "0 /* float disabled %s %s */") -UNARY_F(sqrtf, "0 /* float disabled %s */") -BINARY_F(maxf, "0 /* float disabled %s %s */") -BINARY_F(minf, "0 /* float disabled %s %s */") -BINARY_FL(cmpeqf, "0 /* float disabled %s %s */") -BINARY_FL(cmpltf, "0 /* float disabled %s %s */") -BINARY_FL(cmplef, "0 /* float disabled %s %s */") -UNARY_FL(convfl, "0 /* float disabled %s */") -UNARY_LF(convlf, "0 /* float disabled %s */") + BINARY_F (addf, "0 /* float disabled %s %s */") + BINARY_F (subf, "0 /* float disabled %s %s */") + BINARY_F (mulf, "0 /* float disabled %s %s */") + BINARY_F (divf, "0 /* float disabled %s %s */") + UNARY_F (sqrtf, "0 /* float disabled %s */") + BINARY_F (maxf, "0 /* float disabled %s %s */") + BINARY_F (minf, "0 /* float disabled %s %s */") + BINARY_FL (cmpeqf, "0 /* float disabled %s %s */") + BINARY_FL (cmpltf, "0 /* float disabled %s %s */") + BINARY_FL (cmplef, "0 /* float disabled %s %s */") + UNARY_FL (convfl, "0 /* float disabled %s */") + UNARY_LF (convlf, "0 /* float disabled %s */") #endif - - -static void -c_rule_absb (OrcCompiler *p, void *user, OrcInstruction *insn) + static void + c_rule_absb (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40]; c_get_name (dest, p, insn->dest_args[0]); c_get_name (src1, p, insn->src_args[0]); - ORC_ASM_CODE(p," %s = _subabs4(0x80808080,0x80808080^%s);\n", dest, src1); + ORC_ASM_CODE (p, " %s = _subabs4(0x80808080,0x80808080^%s);\n", dest, + src1); } static void -c_rule_mullw (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_mullw (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40], src2[40]; @@ -831,14 +853,14 @@ c_rule_mullw (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name (src1, p, insn->src_args[0]); c_get_name (src2, p, insn->src_args[1]); - ORC_ASM_CODE(p," {\n"); - ORC_ASM_CODE(p," long long x = _mpy2ll(%s,%s);\n", src1, src2); - ORC_ASM_CODE(p," %s = _pack2(_hill(x),_loll(x));\n", dest); - ORC_ASM_CODE(p," }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " long long x = _mpy2ll(%s,%s);\n", src1, src2); + ORC_ASM_CODE (p, " %s = _pack2(_hill(x),_loll(x));\n", dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_mulhsw (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_mulhsw (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40], src2[40]; @@ -846,14 +868,14 @@ c_rule_mulhsw (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name (src1, p, insn->src_args[0]); c_get_name (src2, p, insn->src_args[1]); - ORC_ASM_CODE(p," {\n"); - ORC_ASM_CODE(p," long long x = _mpy2ll(%s,%s);\n", src1, src2); - ORC_ASM_CODE(p," %s = _packh2(_hill(x),_loll(x));\n", dest); - ORC_ASM_CODE(p," }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " long long x = _mpy2ll(%s,%s);\n", src1, src2); + ORC_ASM_CODE (p, " %s = _packh2(_hill(x),_loll(x));\n", dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_mulhuw (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_mulhuw (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40], src2[40]; @@ -861,14 +883,14 @@ c_rule_mulhuw (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name (src1, p, insn->src_args[0]); c_get_name (src2, p, insn->src_args[1]); - ORC_ASM_CODE(p," {\n"); - ORC_ASM_CODE(p," long long x = _mpy2ll(%s,%s);\n", src1, src2); - ORC_ASM_CODE(p," %s = _packh2(_hill(x),_loll(x));\n", dest); - ORC_ASM_CODE(p," }\n"); + ORC_ASM_CODE (p, " {\n"); + ORC_ASM_CODE (p, " long long x = _mpy2ll(%s,%s);\n", src1, src2); + ORC_ASM_CODE (p, " %s = _packh2(_hill(x),_loll(x));\n", dest); + ORC_ASM_CODE (p, " }\n"); } static void -c_rule_shlw (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_shlw (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40], src2[40]; @@ -876,24 +898,25 @@ c_rule_shlw (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name (src1, p, insn->src_args[0]); c_get_name (src2, p, insn->src_args[1]); - ORC_ASM_CODE(p," %s = (%s<<%s) & (~(((1<<%s)-1)<<16 | ((1<<%s)-1)));\n", + ORC_ASM_CODE (p, " %s = (%s<<%s) & (~(((1<<%s)-1)<<16 | ((1<<%s)-1)));\n", dest, src1, src2, src2, src2); } static void -c_rule_convssswb (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_convssswb (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40]; c_get_name (dest, p, insn->dest_args[0]); c_get_name (src1, p, insn->src_args[0]); - ORC_ASM_CODE(p," %s = _packl4(0,_max2(0xff80ff80,_min2(0x007f007f,%s)));\n", - dest, src1); + ORC_ASM_CODE (p, + " %s = _packl4(0,_max2(0xff80ff80,_min2(0x007f007f,%s)));\n", dest, + src1); } static void -c_rule_swapl (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_swapl (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40], src2[40]; @@ -901,34 +924,34 @@ c_rule_swapl (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name (src1, p, insn->src_args[0]); c_get_name (src2, p, insn->src_args[1]); - ORC_ASM_CODE(p," %s = _packlh2(_swap4(%s),_swap4(%s));\n", + ORC_ASM_CODE (p, " %s = _packlh2(_swap4(%s),_swap4(%s));\n", dest, src1, src2); } static void -c_rule_accw (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_accw (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40]; c_get_name (dest, p, insn->dest_args[0]); c_get_name (src1, p, insn->src_args[0]); - ORC_ASM_CODE(p," %s = %s + %s;\n", dest, dest, src1); + ORC_ASM_CODE (p, " %s = %s + %s;\n", dest, dest, src1); } static void -c_rule_accl (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_accl (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40]; c_get_name (dest, p, insn->dest_args[0]); c_get_name (src1, p, insn->src_args[0]); - ORC_ASM_CODE(p," %s = %s + %s;\n", dest, dest, src1); + ORC_ASM_CODE (p, " %s = %s + %s;\n", dest, dest, src1); } static void -c_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_accsadubl (OrcCompiler * p, void *user, OrcInstruction * insn) { char dest[40], src1[40], src2[40]; @@ -936,22 +959,22 @@ c_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn) c_get_name (src1, p, insn->src_args[0]); c_get_name (src2, p, insn->src_args[1]); - ORC_ASM_CODE(p, + ORC_ASM_CODE (p, " %s = %s + ORC_ABS((int32_t)(uint8_t)%s - (int32_t)(uint8_t)%s);\n", dest, dest, src1, src2); } static void -c_rule_loadX (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_loadX (OrcCompiler * p, void *user, OrcInstruction * insn) { - ORC_ASM_CODE(p," var%d = ptr%d[i];\n", insn->dest_args[0], + ORC_ASM_CODE (p, " var%d = ptr%d[i];\n", insn->dest_args[0], insn->src_args[0]); } static void -c_rule_storeX (OrcCompiler *p, void *user, OrcInstruction *insn) +c_rule_storeX (OrcCompiler * p, void *user, OrcInstruction * insn) { - ORC_ASM_CODE(p," ptr%d[i] = var%d;\n", insn->dest_args[0], + ORC_ASM_CODE (p, " ptr%d[i] = var%d;\n", insn->dest_args[0], insn->src_args[0]); } @@ -963,7 +986,7 @@ static OrcTarget c64x_c_target = { orc_compiler_c64x_c_get_default_flags, orc_compiler_c64x_c_init, orc_compiler_c64x_c_assemble, - { { 0 } }, + {{0}}, 0, orc_target_c64x_c_get_asm_preamble, }; @@ -976,7 +999,7 @@ orc_c64x_c_init (void) orc_target_register (&c64x_c_target); - rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), &c64x_c_target, 0); + rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), &c64x_c_target, 0); #define REG(a) orc_rule_register (rule_set, #a , c_rule_ ## a, NULL); @@ -990,122 +1013,121 @@ orc_c64x_c_init (void) orc_rule_register (rule_set, "storel", c_rule_storeX, NULL); orc_rule_register (rule_set, "storeq", c_rule_storeX, NULL); - REG(absb); - REG(addb); - REG(addssb); - REG(addusb); - REG(andb); - REG(andnb); - REG(avgsb); - REG(avgub); - REG(cmpeqb); - REG(cmpgtsb); - REG(copyb); - REG(maxsb); - REG(maxub); - REG(minsb); - REG(minub); - REG(orb); - REG(signb); - REG(subb); - REG(xorb); - - REG(absw); - REG(addw); - REG(addssw); - REG(addusw); - REG(andw); - REG(andnw); - REG(avgsw); - REG(avguw); - REG(cmpeqw); - REG(cmpgtsw); - REG(copyw); - REG(maxsw); - REG(maxuw); - REG(minsw); - REG(minuw); - REG(mullw); - REG(mulhsw); - REG(mulhuw); - REG(orw); - REG(shlw); - REG(shrsw); - REG(shruw); - REG(signw); - REG(subssw); - REG(subusw); - REG(subw); - REG(xorw); - - REG(absl); - REG(addl); - REG(addssl); - REG(addusl); - REG(andl); - REG(andnl); - REG(avgsl); - REG(avgul); - REG(cmpeql); - REG(cmpgtsl); - REG(copyl); - REG(maxsl); - REG(maxul); - REG(minsl); - REG(minul); - REG(mulll); - REG(mulhsl); - REG(mulhul); - REG(orl); - REG(shll); - REG(shrsl); - REG(shrul); - REG(signl); - REG(subl); - REG(subssl); - REG(subusl); - REG(xorl); - - REG(convsbw); - REG(convubw); - REG(convswl); - REG(convuwl); - REG(convwb); - REG(convssswb); - REG(convsuswb); - REG(convlw); - REG(convssslw); - - REG(mulsbw); - REG(mulubw); - REG(mulswl); - REG(muluwl); - - REG(mergewl); - REG(mergebw); - REG(select0wb); - REG(select1wb); - REG(select0lw); - REG(select1lw); - REG(swapw); - REG(swapl); - - REG(addf); - REG(subf); - REG(mulf); - REG(divf); - REG(sqrtf); - REG(maxf); - REG(minf); - REG(cmpeqf); - REG(cmpltf); - REG(cmplef); - REG(convfl); - REG(convlf); - - REG(accw); - REG(accl); - REG(accsadubl); + REG (absb); + REG (addb); + REG (addssb); + REG (addusb); + REG (andb); + REG (andnb); + REG (avgsb); + REG (avgub); + REG (cmpeqb); + REG (cmpgtsb); + REG (copyb); + REG (maxsb); + REG (maxub); + REG (minsb); + REG (minub); + REG (orb); + REG (signb); + REG (subb); + REG (xorb); + + REG (absw); + REG (addw); + REG (addssw); + REG (addusw); + REG (andw); + REG (andnw); + REG (avgsw); + REG (avguw); + REG (cmpeqw); + REG (cmpgtsw); + REG (copyw); + REG (maxsw); + REG (maxuw); + REG (minsw); + REG (minuw); + REG (mullw); + REG (mulhsw); + REG (mulhuw); + REG (orw); + REG (shlw); + REG (shrsw); + REG (shruw); + REG (signw); + REG (subssw); + REG (subusw); + REG (subw); + REG (xorw); + + REG (absl); + REG (addl); + REG (addssl); + REG (addusl); + REG (andl); + REG (andnl); + REG (avgsl); + REG (avgul); + REG (cmpeql); + REG (cmpgtsl); + REG (copyl); + REG (maxsl); + REG (maxul); + REG (minsl); + REG (minul); + REG (mulll); + REG (mulhsl); + REG (mulhul); + REG (orl); + REG (shll); + REG (shrsl); + REG (shrul); + REG (signl); + REG (subl); + REG (subssl); + REG (subusl); + REG (xorl); + + REG (convsbw); + REG (convubw); + REG (convswl); + REG (convuwl); + REG (convwb); + REG (convssswb); + REG (convsuswb); + REG (convlw); + REG (convssslw); + + REG (mulsbw); + REG (mulubw); + REG (mulswl); + REG (muluwl); + + REG (mergewl); + REG (mergebw); + REG (select0wb); + REG (select1wb); + REG (select0lw); + REG (select1lw); + REG (swapw); + REG (swapl); + + REG (addf); + REG (subf); + REG (mulf); + REG (divf); + REG (sqrtf); + REG (maxf); + REG (minf); + REG (cmpeqf); + REG (cmpltf); + REG (cmplef); + REG (convfl); + REG (convlf); + + REG (accw); + REG (accl); + REG (accsadubl); } - diff --git a/orc/orcprogram-mmx.c b/orc/orcprogram-mmx.c index c921b60..0ecad29 100644 --- a/orc/orcprogram-mmx.c +++ b/orc/orcprogram-mmx.c @@ -18,21 +18,21 @@ #define ORC_MMX_ALIGNED_DEST_CUTOFF 64 -void orc_mmx_emit_loop (OrcCompiler *compiler, int offset, int update); +void orc_mmx_emit_loop (OrcCompiler * compiler, int offset, int update); -void orc_compiler_mmx_init (OrcCompiler *compiler); +void orc_compiler_mmx_init (OrcCompiler * compiler); unsigned int orc_compiler_mmx_get_default_flags (void); -void orc_compiler_mmx_assemble (OrcCompiler *compiler); -void orc_compiler_mmx_register_rules (OrcTarget *target); -void orc_mmx_emit_invariants (OrcCompiler *compiler); +void orc_compiler_mmx_assemble (OrcCompiler * compiler); +void orc_compiler_mmx_register_rules (OrcTarget * target); +void orc_mmx_emit_invariants (OrcCompiler * compiler); -void orc_compiler_rewrite_vars (OrcCompiler *compiler); -void orc_compiler_dump (OrcCompiler *compiler); -void mmx_load_constant (OrcCompiler *compiler, int reg, int size, int value); -void mmx_load_constant_long (OrcCompiler *compiler, int reg, - OrcConstant *constant); -static const char * mmx_get_flag_name (int shift); +void orc_compiler_rewrite_vars (OrcCompiler * compiler); +void orc_compiler_dump (OrcCompiler * compiler); +void mmx_load_constant (OrcCompiler * compiler, int reg, int size, int value); +void mmx_load_constant_long (OrcCompiler * compiler, int reg, + OrcConstant * constant); +static const char *mmx_get_flag_name (int shift); static OrcTarget mmx_target = { "mmx", @@ -45,7 +45,7 @@ static OrcTarget mmx_target = { orc_compiler_mmx_get_default_flags, orc_compiler_mmx_init, orc_compiler_mmx_assemble, - { { 0 } }, + {{0}}, 0, NULL, mmx_load_constant, @@ -94,7 +94,6 @@ orc_compiler_mmx_get_default_flags (void) if (_orc_compiler_flag_debug) { flags |= ORC_TARGET_MMX_FRAME_POINTER; } - #if defined(HAVE_AMD64) || defined(HAVE_I386) #ifndef MMX flags |= orc_x86_mmx_flags; @@ -128,7 +127,7 @@ mmx_get_flag_name (int shift) #endif }; - if (shift >= 0 && shift < sizeof(flags)/sizeof(flags[0])) { + if (shift >= 0 && shift < sizeof (flags) / sizeof (flags[0])) { return flags[shift]; } @@ -136,7 +135,7 @@ mmx_get_flag_name (int shift) } void -orc_compiler_mmx_init (OrcCompiler *compiler) +orc_compiler_mmx_init (OrcCompiler * compiler) { int i; @@ -149,19 +148,19 @@ orc_compiler_mmx_init (OrcCompiler *compiler) if (!(compiler->target_flags & ORC_TARGET_MMX_SHORT_JUMPS)) { compiler->long_jumps = TRUE; } - + if (compiler->is_64bit) { - for(i=ORC_GP_REG_BASE;i<ORC_GP_REG_BASE+16;i++){ + for (i = ORC_GP_REG_BASE; i < ORC_GP_REG_BASE + 16; i++) { compiler->valid_regs[i] = 1; } compiler->valid_regs[X86_ESP] = 0; #ifndef MMX - for(i=X86_MM0;i<X86_MM0+16;i++){ + for (i = X86_MM0; i < X86_MM0 + 16; i++) { compiler->valid_regs[i] = 1; } #else - for(i=X86_MM0;i<X86_MM0+8;i++){ + for (i = X86_MM0; i < X86_MM0 + 8; i++) { compiler->valid_regs[i] = 1; } #endif @@ -174,26 +173,26 @@ orc_compiler_mmx_init (OrcCompiler *compiler) #ifdef HAVE_OS_WIN32 compiler->save_regs[X86_EDI] = 1; compiler->save_regs[X86_ESI] = 1; - for(i=X86_MM0+6;i<X86_MM0+16;i++){ + for (i = X86_MM0 + 6; i < X86_MM0 + 16; i++) { compiler->save_regs[i] = 1; } #endif } else { - for(i=ORC_GP_REG_BASE;i<ORC_GP_REG_BASE+8;i++){ + for (i = ORC_GP_REG_BASE; i < ORC_GP_REG_BASE + 8; i++) { compiler->valid_regs[i] = 1; } compiler->valid_regs[X86_ESP] = 0; if (compiler->use_frame_pointer) { compiler->valid_regs[X86_EBP] = 0; } - for(i=X86_MM0;i<X86_MM0+8;i++){ + for (i = X86_MM0; i < X86_MM0 + 8; i++) { compiler->valid_regs[i] = 1; } compiler->save_regs[X86_EBX] = 1; compiler->save_regs[X86_EDI] = 1; compiler->save_regs[X86_EBP] = 1; } - for(i=0;i<128;i++){ + for (i = 0; i < 128; i++) { compiler->alloc_regs[i] = 0; compiler->used_regs[i] = 0; } @@ -231,7 +230,7 @@ orc_compiler_mmx_init (OrcCompiler *compiler) compiler->loop_shift = 1; break; default: - ORC_ERROR("unhandled max var size %d", compiler->max_var_size); + ORC_ERROR ("unhandled max var size %d", compiler->max_var_size); break; } #ifdef MMX @@ -255,7 +254,7 @@ orc_compiler_mmx_init (OrcCompiler *compiler) compiler->allow_gp_on_stack = TRUE; { - for(i=0;i<compiler->n_insns;i++){ + for (i = 0; i < compiler->n_insns; i++) { OrcInstruction *insn = compiler->insns + i; OrcStaticOpcode *opcode = insn->opcode; @@ -270,25 +269,26 @@ orc_compiler_mmx_init (OrcCompiler *compiler) } void -mmx_save_accumulators (OrcCompiler *compiler) +mmx_save_accumulators (OrcCompiler * compiler) { int i; int src; int tmp; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { OrcVariable *var = compiler->vars + i; - if (compiler->vars[i].name == NULL) continue; + if (compiler->vars[i].name == NULL) + continue; switch (compiler->vars[i].vartype) { case ORC_VAR_TYPE_ACCUMULATOR: src = compiler->vars[i].alloc; tmp = orc_compiler_get_temp_reg (compiler); #ifndef MMX - orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF(3,2,3,2), src, tmp); + orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF (3, 2, 3, 2), src, tmp); #else - orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF(3,2,3,2), src, tmp); + orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF (3, 2, 3, 2), src, tmp); #endif if (compiler->vars[i].size == 2) { @@ -298,7 +298,7 @@ mmx_save_accumulators (OrcCompiler *compiler) } #ifndef MMX - orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF(1,1,1,1), src, tmp); + orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF (1, 1, 1, 1), src, tmp); if (compiler->vars[i].size == 2) { orc_mmx_emit_paddw (compiler, tmp, src); @@ -309,9 +309,9 @@ mmx_save_accumulators (OrcCompiler *compiler) if (compiler->vars[i].size == 2) { #ifndef MMX - orc_mmx_emit_pshuflw (compiler, ORC_MMX_SHUF(1,1,1,1), src, tmp); + orc_mmx_emit_pshuflw (compiler, ORC_MMX_SHUF (1, 1, 1, 1), src, tmp); #else - orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF(1,1,1,1), src, tmp); + orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF (1, 1, 1, 1), src, tmp); #endif orc_mmx_emit_paddw (compiler, tmp, src); @@ -321,12 +321,12 @@ mmx_save_accumulators (OrcCompiler *compiler) orc_mmx_emit_movd_store_register (compiler, src, compiler->gp_tmpreg); orc_x86_emit_and_imm_reg (compiler, 4, 0xffff, compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 4, compiler->gp_tmpreg, - (int)ORC_STRUCT_OFFSET(OrcExecutor, accumulators[i-ORC_VAR_A1]), - compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, + accumulators[i - ORC_VAR_A1]), compiler->exec_reg); } else { orc_x86_emit_mov_mmx_memoffset (compiler, 4, src, - (int)ORC_STRUCT_OFFSET(OrcExecutor, accumulators[i-ORC_VAR_A1]), - compiler->exec_reg, + (int) ORC_STRUCT_OFFSET (OrcExecutor, + accumulators[i - ORC_VAR_A1]), compiler->exec_reg, var->is_aligned, var->is_uncached); } @@ -338,34 +338,33 @@ mmx_save_accumulators (OrcCompiler *compiler) } void -mmx_load_constant (OrcCompiler *compiler, int reg, int size, int value) +mmx_load_constant (OrcCompiler * compiler, int reg, int size, int value) { orc_mmx_load_constant (compiler, reg, size, value); } void -orc_mmx_load_constant (OrcCompiler *compiler, int reg, int size, orc_uint64 value) +orc_mmx_load_constant (OrcCompiler * compiler, int reg, int size, + orc_uint64 value) { int i; if (size == 8) { - int offset = ORC_STRUCT_OFFSET(OrcExecutor,arrays[ORC_VAR_T1]); + int offset = ORC_STRUCT_OFFSET (OrcExecutor, arrays[ORC_VAR_T1]); /* FIXME how ugly and slow! */ - orc_x86_emit_mov_imm_reg (compiler, 4, value>>0, - compiler->gp_tmpreg); + orc_x86_emit_mov_imm_reg (compiler, 4, value >> 0, compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 4, compiler->gp_tmpreg, offset + 0, compiler->exec_reg); - orc_x86_emit_mov_imm_reg (compiler, 4, value>>32, - compiler->gp_tmpreg); + orc_x86_emit_mov_imm_reg (compiler, 4, value >> 32, compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 4, compiler->gp_tmpreg, offset + 4, compiler->exec_reg); orc_x86_emit_mov_memoffset_mmx (compiler, 8, offset, compiler->exec_reg, reg, FALSE); #ifndef MMX - orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF(1,0,1,0), reg, reg); + orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF (1, 0, 1, 0), reg, reg); #endif return; } @@ -380,9 +379,10 @@ orc_mmx_load_constant (OrcCompiler *compiler, int reg, int size, orc_uint64 valu value |= (value << 16); } - ORC_ASM_CODE(compiler, "# loading constant %d 0x%08x\n", (int)value, (int)value); + ORC_ASM_CODE (compiler, "# loading constant %d 0x%08x\n", (int) value, + (int) value); if (value == 0) { - orc_mmx_emit_pxor(compiler, reg, reg); + orc_mmx_emit_pxor (compiler, reg, reg); return; } if (value == 0xffffffff) { @@ -397,30 +397,30 @@ orc_mmx_load_constant (OrcCompiler *compiler, int reg, int size, orc_uint64 valu } } - for(i=1;i<32;i++){ + for (i = 1; i < 32; i++) { orc_uint32 v; - v = (0xffffffff<<i); + v = (0xffffffff << i); if (value == v) { orc_mmx_emit_pcmpeqb (compiler, reg, reg); orc_mmx_emit_pslld_imm (compiler, i, reg); return; } - v = (0xffffffff>>i); + v = (0xffffffff >> i); if (value == v) { orc_mmx_emit_pcmpeqb (compiler, reg, reg); orc_mmx_emit_psrld_imm (compiler, i, reg); return; } } - for(i=1;i<16;i++){ + for (i = 1; i < 16; i++) { orc_uint32 v; - v = (0xffff & (0xffff<<i)) | (0xffff0000 & (0xffff0000<<i)); + v = (0xffff & (0xffff << i)) | (0xffff0000 & (0xffff0000 << i)); if (value == v) { orc_mmx_emit_pcmpeqb (compiler, reg, reg); orc_mmx_emit_psllw_imm (compiler, i, reg); return; } - v = (0xffff & (0xffff>>i)) | (0xffff0000 & (0xffff0000>>i)); + v = (0xffff & (0xffff >> i)) | (0xffff0000 & (0xffff0000 >> i)); if (value == v) { orc_mmx_emit_pcmpeqb (compiler, reg, reg); orc_mmx_emit_psrlw_imm (compiler, i, reg); @@ -431,30 +431,29 @@ orc_mmx_load_constant (OrcCompiler *compiler, int reg, int size, orc_uint64 valu orc_x86_emit_mov_imm_reg (compiler, 4, value, compiler->gp_tmpreg); orc_mmx_emit_movd_load_register (compiler, compiler->gp_tmpreg, reg); #ifndef MMX - orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF(0,0,0,0), reg, reg); + orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF (0, 0, 0, 0), reg, reg); #else - orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF(1,0,1,0), reg, reg); + orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF (1, 0, 1, 0), reg, reg); #endif } void -mmx_load_constant_long (OrcCompiler *compiler, int reg, - OrcConstant *constant) +mmx_load_constant_long (OrcCompiler * compiler, int reg, OrcConstant * constant) { int i; - int offset = ORC_STRUCT_OFFSET(OrcExecutor,arrays[ORC_VAR_T1]); + int offset = ORC_STRUCT_OFFSET (OrcExecutor, arrays[ORC_VAR_T1]); /* FIXME this is slower than it could be */ - ORC_ASM_CODE(compiler, "# loading constant %08x %08x %08x %08x\n", + ORC_ASM_CODE (compiler, "# loading constant %08x %08x %08x %08x\n", constant->full_value[0], constant->full_value[1], constant->full_value[2], constant->full_value[3]); - for(i=0;i<4;i++){ + for (i = 0; i < 4; i++) { orc_x86_emit_mov_imm_reg (compiler, 4, constant->full_value[i], compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 4, compiler->gp_tmpreg, - offset + 4*i, compiler->exec_reg); + offset + 4 * i, compiler->exec_reg); } orc_x86_emit_mov_memoffset_mmx (compiler, 16, offset, compiler->exec_reg, reg, FALSE); @@ -462,11 +461,12 @@ mmx_load_constant_long (OrcCompiler *compiler, int reg, } void -mmx_load_constants_outer (OrcCompiler *compiler) +mmx_load_constants_outer (OrcCompiler * compiler) { int i; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ - if (compiler->vars[i].name == NULL) continue; + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { + if (compiler->vars[i].name == NULL) + continue; switch (compiler->vars[i].vartype) { case ORC_VAR_TYPE_CONST: break; @@ -482,7 +482,7 @@ mmx_load_constants_outer (OrcCompiler *compiler) case ORC_VAR_TYPE_TEMP: break; default: - orc_compiler_error(compiler,"bad vartype"); + orc_compiler_error (compiler, "bad vartype"); break; } } @@ -490,12 +490,11 @@ mmx_load_constants_outer (OrcCompiler *compiler) orc_mmx_emit_invariants (compiler); /* FIXME move to a better place */ - for(i=0;i<compiler->n_constants;i++){ - compiler->constants[i].alloc_reg = - orc_compiler_get_constant_reg (compiler); + for (i = 0; i < compiler->n_constants; i++) { + compiler->constants[i].alloc_reg = orc_compiler_get_constant_reg (compiler); } - for(i=0;i<compiler->n_constants;i++){ + for (i = 0; i < compiler->n_constants; i++) { if (compiler->constants[i].alloc_reg) { if (compiler->constants[i].is_long) { mmx_load_constant_long (compiler, compiler->constants[i].alloc_reg, @@ -508,7 +507,7 @@ mmx_load_constants_outer (OrcCompiler *compiler) } { - for(i=0;i<compiler->n_insns;i++){ + for (i = 0; i < compiler->n_insns; i++) { OrcInstruction *insn = compiler->insns + i; OrcStaticOpcode *opcode = insn->opcode; @@ -518,9 +517,8 @@ mmx_load_constants_outer (OrcCompiler *compiler) strcmp (opcode->name, "ldresnearl") == 0) { if (compiler->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_PARAM) { orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[insn->src_args[1]]), - compiler->exec_reg, - compiler->vars[insn->src_args[0]].ptr_offset); + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[insn->src_args[1]]), + compiler->exec_reg, compiler->vars[insn->src_args[0]].ptr_offset); } else { orc_x86_emit_mov_imm_reg (compiler, 4, compiler->vars[insn->src_args[1]].value.i, @@ -532,11 +530,12 @@ mmx_load_constants_outer (OrcCompiler *compiler) } void -mmx_load_constants_inner (OrcCompiler *compiler) +mmx_load_constants_inner (OrcCompiler * compiler) { int i; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ - if (compiler->vars[i].name == NULL) continue; + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { + if (compiler->vars[i].name == NULL) + continue; switch (compiler->vars[i].vartype) { case ORC_VAR_TYPE_CONST: break; @@ -546,8 +545,8 @@ mmx_load_constants_inner (OrcCompiler *compiler) case ORC_VAR_TYPE_DEST: if (compiler->vars[i].ptr_register) { orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]), compiler->exec_reg, - compiler->vars[i].ptr_register); + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i]), + compiler->exec_reg, compiler->vars[i].ptr_register); } break; case ORC_VAR_TYPE_ACCUMULATOR: @@ -555,19 +554,20 @@ mmx_load_constants_inner (OrcCompiler *compiler) case ORC_VAR_TYPE_TEMP: break; default: - orc_compiler_error(compiler,"bad vartype"); + orc_compiler_error (compiler, "bad vartype"); break; } } } void -mmx_add_strides (OrcCompiler *compiler) +mmx_add_strides (OrcCompiler * compiler) { int i; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ - if (compiler->vars[i].name == NULL) continue; + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { + if (compiler->vars[i].name == NULL) + continue; switch (compiler->vars[i].vartype) { case ORC_VAR_TYPE_CONST: break; @@ -576,14 +576,15 @@ mmx_add_strides (OrcCompiler *compiler) case ORC_VAR_TYPE_SRC: case ORC_VAR_TYPE_DEST: orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[i]), compiler->exec_reg, - compiler->gp_tmpreg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[i]), + compiler->exec_reg, compiler->gp_tmpreg); orc_x86_emit_add_reg_memoffset (compiler, compiler->is_64bit ? 8 : 4, - compiler->gp_tmpreg, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]), compiler->exec_reg); + compiler->gp_tmpreg, (int) ORC_STRUCT_OFFSET (OrcExecutor, + arrays[i]), compiler->exec_reg); if (compiler->vars[i].ptr_register == 0) { - orc_compiler_error (compiler, "unimplemented: stride on pointer stored in memory"); + orc_compiler_error (compiler, + "unimplemented: stride on pointer stored in memory"); } break; case ORC_VAR_TYPE_ACCUMULATOR: @@ -591,34 +592,37 @@ mmx_add_strides (OrcCompiler *compiler) case ORC_VAR_TYPE_TEMP: break; default: - orc_compiler_error(compiler,"bad vartype"); + orc_compiler_error (compiler, "bad vartype"); break; } } } static int -get_align_var (OrcCompiler *compiler) +get_align_var (OrcCompiler * compiler) { int i; - for(i=ORC_VAR_D1;i<=ORC_VAR_S8;i++){ - if (compiler->vars[i].size == 0) continue; + for (i = ORC_VAR_D1; i <= ORC_VAR_S8; i++) { + if (compiler->vars[i].size == 0) + continue; if ((compiler->vars[i].size << compiler->loop_shift) >= 16) { return i; } } - for(i=ORC_VAR_D1;i<=ORC_VAR_S8;i++){ - if (compiler->vars[i].size == 0) continue; + for (i = ORC_VAR_D1; i <= ORC_VAR_S8; i++) { + if (compiler->vars[i].size == 0) + continue; if ((compiler->vars[i].size << compiler->loop_shift) >= 8) { return i; } } - for(i=ORC_VAR_D1;i<=ORC_VAR_S8;i++){ - if (compiler->vars[i].size == 0) continue; + for (i = ORC_VAR_D1; i <= ORC_VAR_S8; i++) { + if (compiler->vars[i].size == 0) + continue; return i; } - orc_compiler_error(compiler, "could not find alignment variable"); + orc_compiler_error (compiler, "could not find alignment variable"); return -1; } @@ -636,14 +640,14 @@ get_shift (int size) case 8: return 3; default: - ORC_ERROR("bad size %d", size); + ORC_ERROR ("bad size %d", size); } return -1; } static void -orc_emit_split_3_regions (OrcCompiler *compiler) +orc_emit_split_3_regions (OrcCompiler * compiler) { int align_var; int align_shift; @@ -656,40 +660,39 @@ orc_emit_split_3_regions (OrcCompiler *compiler) /* determine how many iterations until align array is aligned (n1) */ orc_x86_emit_mov_imm_reg (compiler, 4, 16, X86_EAX); orc_x86_emit_sub_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[align_var]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[align_var]), compiler->exec_reg, X86_EAX); - orc_x86_emit_and_imm_reg (compiler, 4, (1<<align_shift) - 1, X86_EAX); + orc_x86_emit_and_imm_reg (compiler, 4, (1 << align_shift) - 1, X86_EAX); orc_x86_emit_sar_imm_reg (compiler, 4, var_size_shift, X86_EAX); /* check if n1 is greater than n. */ orc_x86_emit_cmp_reg_memoffset (compiler, 4, X86_EAX, - (int)ORC_STRUCT_OFFSET(OrcExecutor,n), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, n), compiler->exec_reg); orc_x86_emit_jle (compiler, 6); /* If so, we have a standard 3-region split. */ orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1), compiler->exec_reg); - + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter1), compiler->exec_reg); + /* Calculate n2 */ orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor,n), compiler->exec_reg, + (int) ORC_STRUCT_OFFSET (OrcExecutor, n), compiler->exec_reg, compiler->gp_tmpreg); orc_x86_emit_sub_reg_reg (compiler, 4, X86_EAX, compiler->gp_tmpreg); orc_x86_emit_mov_reg_reg (compiler, 4, compiler->gp_tmpreg, X86_EAX); orc_x86_emit_sar_imm_reg (compiler, 4, - compiler->loop_shift + compiler->unroll_shift, - compiler->gp_tmpreg); + compiler->loop_shift + compiler->unroll_shift, compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 4, compiler->gp_tmpreg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2), compiler->exec_reg); /* Calculate n3 */ orc_x86_emit_and_imm_reg (compiler, 4, - (1<<(compiler->loop_shift + compiler->unroll_shift))-1, X86_EAX); + (1 << (compiler->loop_shift + compiler->unroll_shift)) - 1, X86_EAX); orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter3), compiler->exec_reg); orc_x86_emit_jmp (compiler, 7); @@ -697,20 +700,20 @@ orc_emit_split_3_regions (OrcCompiler *compiler) orc_x86_emit_label (compiler, 6); orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor,n), compiler->exec_reg, X86_EAX); + (int) ORC_STRUCT_OFFSET (OrcExecutor, n), compiler->exec_reg, X86_EAX); orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter1), compiler->exec_reg); orc_x86_emit_mov_imm_reg (compiler, 4, 0, X86_EAX); orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2), compiler->exec_reg); orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter3), compiler->exec_reg); orc_x86_emit_label (compiler, 7); } static void -orc_emit_split_2_regions (OrcCompiler *compiler) +orc_emit_split_2_regions (OrcCompiler * compiler) { int align_var; int align_shift ORC_GNUC_UNUSED; @@ -722,31 +725,31 @@ orc_emit_split_2_regions (OrcCompiler *compiler) /* Calculate n2 */ orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor,n), compiler->exec_reg, + (int) ORC_STRUCT_OFFSET (OrcExecutor, n), compiler->exec_reg, compiler->gp_tmpreg); orc_x86_emit_mov_reg_reg (compiler, 4, compiler->gp_tmpreg, X86_EAX); orc_x86_emit_sar_imm_reg (compiler, 4, - compiler->loop_shift + compiler->unroll_shift, - compiler->gp_tmpreg); + compiler->loop_shift + compiler->unroll_shift, compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 4, compiler->gp_tmpreg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2), compiler->exec_reg); /* Calculate n3 */ orc_x86_emit_and_imm_reg (compiler, 4, - (1<<(compiler->loop_shift + compiler->unroll_shift))-1, X86_EAX); + (1 << (compiler->loop_shift + compiler->unroll_shift)) - 1, X86_EAX); orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter3), compiler->exec_reg); } #ifndef MMX static int -orc_program_has_float (OrcCompiler *compiler) +orc_program_has_float (OrcCompiler * compiler) { int j; - for(j=0;j<compiler->n_insns;j++){ + for (j = 0; j < compiler->n_insns; j++) { OrcInstruction *insn = compiler->insns + j; OrcStaticOpcode *opcode = insn->opcode; - if (opcode->flags & ORC_STATIC_OPCODE_FLOAT) return TRUE; + if (opcode->flags & ORC_STATIC_OPCODE_FLOAT) + return TRUE; } return FALSE; } @@ -762,7 +765,7 @@ orc_program_has_float (OrcCompiler *compiler) void -orc_compiler_mmx_assemble (OrcCompiler *compiler) +orc_compiler_mmx_assemble (OrcCompiler * compiler) { #ifndef MMX int set_mxcsr = FALSE; @@ -792,7 +795,8 @@ orc_compiler_mmx_assemble (OrcCompiler *compiler) compiler->n_output_insns = 0; } - if (compiler->error) return; + if (compiler->error) + return; orc_x86_emit_prologue (compiler); @@ -810,16 +814,16 @@ orc_compiler_mmx_assemble (OrcCompiler *compiler) orc_x86_emit_mov_imm_reg (compiler, 4, compiler->program->constant_m, X86_EAX); orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[ORC_VAR_A2]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A2]), compiler->exec_reg); } else { orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[ORC_VAR_A1]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A1]), compiler->exec_reg, X86_EAX); orc_x86_emit_test_reg_reg (compiler, 4, X86_EAX, X86_EAX); orc_x86_emit_jle (compiler, LABEL_OUTER_LOOP_SKIP); orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[ORC_VAR_A2]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A2]), compiler->exec_reg); } @@ -839,10 +843,10 @@ orc_compiler_mmx_assemble (OrcCompiler *compiler) } else { /* loop shift is 0, no need to split */ orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor,n), compiler->exec_reg, + (int) ORC_STRUCT_OFFSET (OrcExecutor, n), compiler->exec_reg, compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 4, compiler->gp_tmpreg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2), compiler->exec_reg); } mmx_load_constants_inner (compiler); @@ -856,20 +860,20 @@ orc_compiler_mmx_assemble (OrcCompiler *compiler) compiler->offset = 0; save_loop_shift = compiler->loop_shift; - while (n_left >= (1<<compiler->loop_shift)) { - ORC_ASM_CODE(compiler, "# LOOP SHIFT %d\n", compiler->loop_shift); + while (n_left >= (1 << compiler->loop_shift)) { + ORC_ASM_CODE (compiler, "# LOOP SHIFT %d\n", compiler->loop_shift); orc_mmx_emit_loop (compiler, compiler->offset, 0); - n_left -= 1<<compiler->loop_shift; - compiler->offset += 1<<compiler->loop_shift; + n_left -= 1 << compiler->loop_shift; + compiler->offset += 1 << compiler->loop_shift; } - for(loop_shift = compiler->loop_shift-1; loop_shift>=0; loop_shift--) { - if (n_left >= (1<<loop_shift)) { + for (loop_shift = compiler->loop_shift - 1; loop_shift >= 0; loop_shift--) { + if (n_left >= (1 << loop_shift)) { compiler->loop_shift = loop_shift; - ORC_ASM_CODE(compiler, "# LOOP SHIFT %d\n", loop_shift); + ORC_ASM_CODE (compiler, "# LOOP SHIFT %d\n", loop_shift); orc_mmx_emit_loop (compiler, compiler->offset, 0); - n_left -= 1<<loop_shift; - compiler->offset += 1<<loop_shift; + n_left -= 1 << loop_shift; + compiler->offset += 1 << loop_shift; } } compiler->loop_shift = save_loop_shift; @@ -894,15 +898,16 @@ orc_compiler_mmx_assemble (OrcCompiler *compiler) save_loop_shift = compiler->loop_shift; compiler->vars[align_var].is_aligned = FALSE; - for (l=0;l<save_loop_shift;l++){ + for (l = 0; l < save_loop_shift; l++) { compiler->loop_shift = l; - ORC_ASM_CODE(compiler, "# LOOP SHIFT %d\n", compiler->loop_shift); - - orc_x86_emit_test_imm_memoffset (compiler, 4, 1<<compiler->loop_shift, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1), compiler->exec_reg); - orc_x86_emit_je (compiler, LABEL_STEP_UP(compiler->loop_shift)); - orc_mmx_emit_loop (compiler, 0, 1<<compiler->loop_shift); - orc_x86_emit_label (compiler, LABEL_STEP_UP(compiler->loop_shift)); + ORC_ASM_CODE (compiler, "# LOOP SHIFT %d\n", compiler->loop_shift); + + orc_x86_emit_test_imm_memoffset (compiler, 4, 1 << compiler->loop_shift, + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter1), + compiler->exec_reg); + orc_x86_emit_je (compiler, LABEL_STEP_UP (compiler->loop_shift)); + orc_mmx_emit_loop (compiler, 0, 1 << compiler->loop_shift); + orc_x86_emit_label (compiler, LABEL_STEP_UP (compiler->loop_shift)); } compiler->loop_shift = save_loop_shift; @@ -912,31 +917,31 @@ orc_compiler_mmx_assemble (OrcCompiler *compiler) orc_x86_emit_label (compiler, LABEL_REGION1_SKIP); orc_x86_emit_cmp_imm_memoffset (compiler, 4, 0, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2), compiler->exec_reg); orc_x86_emit_je (compiler, LABEL_REGION2_SKIP); if (compiler->loop_counter != ORC_REG_INVALID) { orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, counter2), compiler->exec_reg, + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2), compiler->exec_reg, compiler->loop_counter); } - ORC_ASM_CODE(compiler, "# LOOP SHIFT %d\n", compiler->loop_shift); + ORC_ASM_CODE (compiler, "# LOOP SHIFT %d\n", compiler->loop_shift); orc_x86_emit_align (compiler, 4); orc_x86_emit_label (compiler, LABEL_INNER_LOOP_START); - ui_max = 1<<compiler->unroll_shift; - for(ui=0;ui<ui_max;ui++) { - compiler->offset = ui<<compiler->loop_shift; + ui_max = 1 << compiler->unroll_shift; + for (ui = 0; ui < ui_max; ui++) { + compiler->offset = ui << compiler->loop_shift; orc_mmx_emit_loop (compiler, compiler->offset, - (ui==ui_max-1) << (compiler->loop_shift + compiler->unroll_shift)); + (ui == + ui_max - 1) << (compiler->loop_shift + compiler->unroll_shift)); } compiler->offset = 0; if (compiler->loop_counter != ORC_REG_INVALID) { orc_x86_emit_add_imm_reg (compiler, 4, -1, compiler->loop_counter, TRUE); } else { orc_x86_emit_dec_memoffset (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), - compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2), compiler->exec_reg); } orc_x86_emit_jne (compiler, LABEL_INNER_LOOP_START); orc_x86_emit_label (compiler, LABEL_REGION2_SKIP); @@ -948,15 +953,16 @@ orc_compiler_mmx_assemble (OrcCompiler *compiler) save_loop_shift = compiler->loop_shift + compiler->unroll_shift; compiler->vars[align_var].is_aligned = FALSE; - for(l=save_loop_shift - 1; l >= 0; l--) { + for (l = save_loop_shift - 1; l >= 0; l--) { compiler->loop_shift = l; - ORC_ASM_CODE(compiler, "# LOOP SHIFT %d\n", compiler->loop_shift); - - orc_x86_emit_test_imm_memoffset (compiler, 4, 1<<compiler->loop_shift, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3), compiler->exec_reg); - orc_x86_emit_je (compiler, LABEL_STEP_DOWN(compiler->loop_shift)); - orc_mmx_emit_loop (compiler, 0, 1<<compiler->loop_shift); - orc_x86_emit_label (compiler, LABEL_STEP_DOWN(compiler->loop_shift)); + ORC_ASM_CODE (compiler, "# LOOP SHIFT %d\n", compiler->loop_shift); + + orc_x86_emit_test_imm_memoffset (compiler, 4, 1 << compiler->loop_shift, + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter3), + compiler->exec_reg); + orc_x86_emit_je (compiler, LABEL_STEP_DOWN (compiler->loop_shift)); + orc_mmx_emit_loop (compiler, 0, 1 << compiler->loop_shift); + orc_x86_emit_label (compiler, LABEL_STEP_DOWN (compiler->loop_shift)); } compiler->loop_shift = save_loop_shift; @@ -967,7 +973,7 @@ orc_compiler_mmx_assemble (OrcCompiler *compiler) mmx_add_strides (compiler); orc_x86_emit_add_imm_memoffset (compiler, 4, -1, - (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A2]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A2]), compiler->exec_reg); orc_x86_emit_jne (compiler, LABEL_OUTER_LOOP); orc_x86_emit_label (compiler, LABEL_OUTER_LOOP_SKIP); @@ -991,7 +997,7 @@ orc_compiler_mmx_assemble (OrcCompiler *compiler) } void -orc_mmx_emit_loop (OrcCompiler *compiler, int offset, int update) +orc_mmx_emit_loop (OrcCompiler * compiler, int offset, int update) { int j; int k; @@ -999,15 +1005,16 @@ orc_mmx_emit_loop (OrcCompiler *compiler, int offset, int update) OrcStaticOpcode *opcode; OrcRule *rule; - for(j=0;j<compiler->n_insns;j++){ + for (j = 0; j < compiler->n_insns; j++) { insn = compiler->insns + j; opcode = insn->opcode; compiler->insn_index = j; - if (insn->flags & ORC_INSN_FLAG_INVARIANT) continue; + if (insn->flags & ORC_INSN_FLAG_INVARIANT) + continue; - ORC_ASM_CODE(compiler,"# %d: %s\n", j, insn->opcode->name); + ORC_ASM_CODE (compiler, "# %d: %s\n", j, insn->opcode->name); compiler->min_temp_reg = ORC_VEC_REG_BASE; @@ -1021,8 +1028,9 @@ orc_mmx_emit_loop (OrcCompiler *compiler, int offset, int update) rule = insn->rule; if (rule && rule->emit) { - if (!(insn->opcode->flags & (ORC_STATIC_OPCODE_ACCUMULATOR|ORC_STATIC_OPCODE_LOAD|ORC_STATIC_OPCODE_STORE)) && - compiler->vars[insn->dest_args[0]].alloc != + if (!(insn->opcode->flags & (ORC_STATIC_OPCODE_ACCUMULATOR | + ORC_STATIC_OPCODE_LOAD | ORC_STATIC_OPCODE_STORE)) + && compiler->vars[insn->dest_args[0]].alloc != compiler->vars[insn->src_args[0]].alloc) { #ifdef MMX orc_mmx_emit_movq (compiler, @@ -1042,12 +1050,12 @@ orc_mmx_emit_loop (OrcCompiler *compiler, int offset, int update) } if (update) { - for(k=0;k<ORC_N_COMPILER_VARIABLES;k++){ + for (k = 0; k < ORC_N_COMPILER_VARIABLES; k++) { OrcVariable *var = compiler->vars + k; - if (var->name == NULL) continue; - if (var->vartype == ORC_VAR_TYPE_SRC || - var->vartype == ORC_VAR_TYPE_DEST) { + if (var->name == NULL) + continue; + if (var->vartype == ORC_VAR_TYPE_SRC || var->vartype == ORC_VAR_TYPE_DEST) { int offset; if (var->update_type == 0) { offset = 0; @@ -1060,12 +1068,11 @@ orc_mmx_emit_loop (OrcCompiler *compiler, int offset, int update) if (offset != 0) { if (compiler->vars[k].ptr_register) { orc_x86_emit_add_imm_reg (compiler, compiler->is_64bit ? 8 : 4, - offset, - compiler->vars[k].ptr_register, FALSE); + offset, compiler->vars[k].ptr_register, FALSE); } else { - orc_x86_emit_add_imm_memoffset (compiler, compiler->is_64bit ? 8 : 4, - offset, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[k]), + orc_x86_emit_add_imm_memoffset (compiler, + compiler->is_64bit ? 8 : 4, offset, + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[k]), compiler->exec_reg); } } @@ -1075,20 +1082,21 @@ orc_mmx_emit_loop (OrcCompiler *compiler, int offset, int update) } void -orc_mmx_emit_invariants (OrcCompiler *compiler) +orc_mmx_emit_invariants (OrcCompiler * compiler) { int j; OrcInstruction *insn; OrcStaticOpcode *opcode; OrcRule *rule; - for(j=0;j<compiler->n_insns;j++){ + for (j = 0; j < compiler->n_insns; j++) { insn = compiler->insns + j; opcode = insn->opcode; - if (!(insn->flags & ORC_INSN_FLAG_INVARIANT)) continue; + if (!(insn->flags & ORC_INSN_FLAG_INVARIANT)) + continue; - ORC_ASM_CODE(compiler,"# %d: %s\n", j, insn->opcode->name); + ORC_ASM_CODE (compiler, "# %d: %s\n", j, insn->opcode->name); compiler->insn_shift = compiler->loop_shift; if (insn->flags & ORC_INSTRUCTION_FLAG_X2) { @@ -1107,4 +1115,3 @@ orc_mmx_emit_invariants (OrcCompiler *compiler) } } } - diff --git a/orc/orcprogram-neon.c b/orc/orcprogram-neon.c index 5bea613..29e971a 100644 --- a/orc/orcprogram-neon.c +++ b/orc/orcprogram-neon.c @@ -16,41 +16,42 @@ #define SIZE 65536 -void orc_neon_emit_loop (OrcCompiler *compiler, int unroll_index); +void orc_neon_emit_loop (OrcCompiler * compiler, int unroll_index); -void orc_compiler_neon_register_rules (OrcTarget *target); +void orc_compiler_neon_register_rules (OrcTarget * target); unsigned int orc_compiler_neon_get_default_flags (void); -void orc_compiler_neon_init (OrcCompiler *compiler); -void orc_compiler_neon_assemble (OrcCompiler *compiler); +void orc_compiler_neon_init (OrcCompiler * compiler); +void orc_compiler_neon_assemble (OrcCompiler * compiler); -void orc_compiler_rewrite_vars (OrcCompiler *compiler); -void orc_compiler_dump (OrcCompiler *compiler); -void orc_neon_save_accumulators (OrcCompiler *compiler); -void neon_add_strides (OrcCompiler *compiler); +void orc_compiler_rewrite_vars (OrcCompiler * compiler); +void orc_compiler_dump (OrcCompiler * compiler); +void orc_neon_save_accumulators (OrcCompiler * compiler); +void neon_add_strides (OrcCompiler * compiler); void -orc_neon_emit_prologue (OrcCompiler *compiler) +orc_neon_emit_prologue (OrcCompiler * compiler) { unsigned int regs = 0; int i; - orc_compiler_append_code(compiler,".global %s\n", compiler->program->name); - orc_compiler_append_code(compiler,"%s:\n", compiler->program->name); + orc_compiler_append_code (compiler, ".global %s\n", compiler->program->name); + orc_compiler_append_code (compiler, "%s:\n", compiler->program->name); - for(i=0;i<16;i++){ + for (i = 0; i < 16; i++) { if (compiler->used_regs[ORC_GP_REG_BASE + i] && compiler->save_regs[ORC_GP_REG_BASE + i]) { - regs |= (1<<i); + regs |= (1 << i); } } - if (regs) orc_arm_emit_push (compiler, regs); + if (regs) + orc_arm_emit_push (compiler, regs); } void -orc_neon_dump_insns (OrcCompiler *compiler) +orc_neon_dump_insns (OrcCompiler * compiler) { orc_arm_emit_label (compiler, 0); @@ -69,18 +70,19 @@ orc_neon_dump_insns (OrcCompiler *compiler) } void -orc_neon_emit_epilogue (OrcCompiler *compiler) +orc_neon_emit_epilogue (OrcCompiler * compiler) { int i; unsigned int regs = 0; - for(i=0;i<16;i++){ + for (i = 0; i < 16; i++) { if (compiler->used_regs[ORC_GP_REG_BASE + i] && compiler->save_regs[ORC_GP_REG_BASE + i]) { - regs |= (1<<i); + regs |= (1 << i); } } - if (regs) orc_arm_emit_pop (compiler, regs); + if (regs) + orc_arm_emit_pop (compiler, regs); orc_arm_emit_bx_lr (compiler); //arm_dump_insns (compiler); @@ -97,7 +99,7 @@ static OrcTarget neon_target = { orc_compiler_neon_get_default_flags, orc_compiler_neon_init, orc_compiler_neon_assemble, - { { 0 } }, 0, + {{0}}, 0, NULL, NULL, NULL, @@ -109,7 +111,7 @@ orc_neon_init (void) { #if defined(HAVE_ARM) if (!(orc_arm_get_cpu_flags () & ORC_TARGET_NEON_NEON)) { - ORC_INFO("marking neon backend non-executable"); + ORC_INFO ("marking neon backend non-executable"); neon_target.executable = FALSE; } #endif @@ -126,15 +128,15 @@ orc_compiler_neon_get_default_flags (void) } void -orc_compiler_neon_init (OrcCompiler *compiler) +orc_compiler_neon_init (OrcCompiler * compiler) { int i; int loop_shift; - for(i=ORC_GP_REG_BASE;i<ORC_GP_REG_BASE+16;i++){ + for (i = ORC_GP_REG_BASE; i < ORC_GP_REG_BASE + 16; i++) { compiler->valid_regs[i] = 1; } - for(i=ORC_VEC_REG_BASE+0;i<ORC_VEC_REG_BASE+32;i+=2){ + for (i = ORC_VEC_REG_BASE + 0; i < ORC_VEC_REG_BASE + 32; i += 2) { compiler->valid_regs[i] = 1; } //compiler->valid_regs[ORC_ARM_SB] = 0; @@ -142,11 +144,11 @@ orc_compiler_neon_init (OrcCompiler *compiler) compiler->valid_regs[ORC_ARM_SP] = 0; compiler->valid_regs[ORC_ARM_LR] = 0; compiler->valid_regs[ORC_ARM_PC] = 0; - for(i=4;i<12;i++) { - compiler->save_regs[ORC_GP_REG_BASE+i] = 1; + for (i = 4; i < 12; i++) { + compiler->save_regs[ORC_GP_REG_BASE + i] = 1; } - - for(i=0;i<ORC_N_REGS;i++){ + + for (i = 0; i < ORC_N_REGS; i++) { compiler->alloc_regs[i] = 0; compiler->used_regs[i] = 0; } @@ -175,7 +177,7 @@ orc_compiler_neon_init (OrcCompiler *compiler) compiler->loop_shift = 1; break; default: - ORC_ERROR("unhandled max var size %d", compiler->max_var_size); + ORC_ERROR ("unhandled max var size %d", compiler->max_var_size); break; } @@ -194,7 +196,7 @@ orc_compiler_neon_init (OrcCompiler *compiler) loop_shift = 1; break; default: - ORC_ERROR("unhandled max array size %d", + ORC_ERROR ("unhandled max array size %d", orc_program_get_max_array_size (compiler->program)); break; } @@ -219,7 +221,7 @@ orc_compiler_neon_init (OrcCompiler *compiler) loop_shift = 0; break; default: - ORC_ERROR("unhandled max accumulator size %d", + ORC_ERROR ("unhandled max accumulator size %d", orc_program_get_max_accumulator_size (compiler->program)); break; } @@ -240,11 +242,12 @@ orc_compiler_neon_init (OrcCompiler *compiler) } void -orc_neon_load_constants_outer (OrcCompiler *compiler) +orc_neon_load_constants_outer (OrcCompiler * compiler) { int i; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ - if (compiler->vars[i].name == NULL) continue; + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { + if (compiler->vars[i].name == NULL) + continue; switch (compiler->vars[i].vartype) { case ORC_VAR_TYPE_CONST: @@ -260,19 +263,20 @@ orc_neon_load_constants_outer (OrcCompiler *compiler) case ORC_VAR_TYPE_TEMP: break; default: - ORC_PROGRAM_ERROR(compiler,"bad vartype"); + ORC_PROGRAM_ERROR (compiler, "bad vartype"); break; } } - for(i=0;i<compiler->n_insns;i++){ + for (i = 0; i < compiler->n_insns; i++) { OrcInstruction *insn = compiler->insns + i; OrcStaticOpcode *opcode = insn->opcode; OrcRule *rule; - if (!(insn->flags & ORC_INSN_FLAG_INVARIANT)) continue; + if (!(insn->flags & ORC_INSN_FLAG_INVARIANT)) + continue; - ORC_ASM_CODE(compiler,"# %d: %s\n", i, insn->opcode->name); + ORC_ASM_CODE (compiler, "# %d: %s\n", i, insn->opcode->name); compiler->insn_shift = compiler->loop_shift; if (insn->flags & ORC_INSTRUCTION_FLAG_X2) { @@ -286,17 +290,18 @@ orc_neon_load_constants_outer (OrcCompiler *compiler) if (rule && rule->emit) { rule->emit (compiler, rule->emit_user, insn); } else { - ORC_COMPILER_ERROR(compiler,"No rule for: %s", opcode->name); + ORC_COMPILER_ERROR (compiler, "No rule for: %s", opcode->name); } } } void -orc_neon_load_constants_inner (OrcCompiler *compiler) +orc_neon_load_constants_inner (OrcCompiler * compiler) { int i; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ - if (compiler->vars[i].name == NULL) continue; + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { + if (compiler->vars[i].name == NULL) + continue; switch (compiler->vars[i].vartype) { case ORC_VAR_TYPE_CONST: @@ -305,16 +310,16 @@ orc_neon_load_constants_inner (OrcCompiler *compiler) break; case ORC_VAR_TYPE_SRC: case ORC_VAR_TYPE_DEST: - orc_arm_emit_load_reg (compiler, + orc_arm_emit_load_reg (compiler, compiler->vars[i].ptr_register, - compiler->exec_reg, ORC_STRUCT_OFFSET(OrcExecutor, arrays[i])); + compiler->exec_reg, ORC_STRUCT_OFFSET (OrcExecutor, arrays[i])); break; case ORC_VAR_TYPE_ACCUMULATOR: break; case ORC_VAR_TYPE_TEMP: break; default: - ORC_PROGRAM_ERROR(compiler,"bad vartype"); + ORC_PROGRAM_ERROR (compiler, "bad vartype"); break; } } @@ -322,7 +327,8 @@ orc_neon_load_constants_inner (OrcCompiler *compiler) #if 0 void -orc_neon_emit_load_src (OrcCompiler *compiler, OrcVariable *var, int unroll_index) +orc_neon_emit_load_src (OrcCompiler * compiler, OrcVariable * var, + int unroll_index) { int ptr_reg; int update; @@ -356,25 +362,25 @@ orc_neon_emit_load_src (OrcCompiler *compiler, OrcVariable *var, int unroll_inde orc_neon_loadq (compiler, var->alloc, ptr_reg, update, var->is_aligned); break; default: - ORC_ERROR("bad size"); + ORC_ERROR ("bad size"); } - + if (unroll_index == 0) { - switch (compiler->size_region) { - case 0: - case 1: - orc_neon_preload (compiler, var, FALSE, 208); - break; - case 2: - case 3: - orc_neon_preload (compiler, var, FALSE, 208); - break; - } + switch (compiler->size_region) { + case 0: + case 1: + orc_neon_preload (compiler, var, FALSE, 208); + break; + case 2: + case 3: + orc_neon_preload (compiler, var, FALSE, 208); + break; + } } } void -orc_neon_emit_store_dest (OrcCompiler *compiler, OrcVariable *var) +orc_neon_emit_store_dest (OrcCompiler * compiler, OrcVariable * var) { int ptr_reg; if (var->ptr_register == 0) { @@ -398,7 +404,7 @@ orc_neon_emit_store_dest (OrcCompiler *compiler, OrcVariable *var) orc_neon_storeq (compiler, ptr_reg, TRUE, var->alloc, var->is_aligned); break; default: - ORC_ERROR("bad size"); + ORC_ERROR ("bad size"); } switch (compiler->size_region) { @@ -434,23 +440,26 @@ get_shift (int size) case 8: return 3; default: - ORC_ERROR("bad size %d", size); + ORC_ERROR ("bad size %d", size); } return -1; } static int -get_align_var (OrcCompiler *compiler) +get_align_var (OrcCompiler * compiler) { - if (compiler->vars[ORC_VAR_D1].size) return ORC_VAR_D1; - if (compiler->vars[ORC_VAR_S1].size) return ORC_VAR_S1; + if (compiler->vars[ORC_VAR_D1].size) + return ORC_VAR_D1; + if (compiler->vars[ORC_VAR_S1].size) + return ORC_VAR_S1; - ORC_PROGRAM_ERROR(compiler, "could not find alignment variable"); + ORC_PROGRAM_ERROR (compiler, "could not find alignment variable"); return -1; } -enum { +enum +{ LABEL_ONE_REGION = 1, LABEL_ONE_REGION_AFTER, LABEL_REGION0_LOOP, @@ -471,15 +480,16 @@ enum { }; void -orc_compiler_neon_assemble (OrcCompiler *compiler) +orc_compiler_neon_assemble (OrcCompiler * compiler) { int align_var; int align_shift; int var_size_shift; int i; - + align_var = get_align_var (compiler); - if (compiler->error) return; + if (compiler->error) + return; var_size_shift = get_shift (compiler->vars[align_var].size); align_shift = 4; @@ -492,40 +502,40 @@ orc_compiler_neon_assemble (OrcCompiler *compiler) if (compiler->program->is_2d) { if (compiler->program->constant_m > 0) { - orc_arm_emit_load_imm (compiler, ORC_ARM_A3, compiler->program->constant_m); + orc_arm_emit_load_imm (compiler, ORC_ARM_A3, + compiler->program->constant_m); orc_arm_emit_store_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A2])); + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A2])); } else { orc_arm_emit_load_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[ORC_VAR_A1])); + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A1])); orc_arm_emit_store_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A2])); + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A2])); } orc_arm_emit_label (compiler, LABEL_OUTER_LOOP); } - #define ORC_NEON_ALIGNED_DEST_CUTOFF 64 if (compiler->loop_shift > 0 && compiler->n_insns < 5) { orc_arm_emit_load_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,n)); + (int) ORC_STRUCT_OFFSET (OrcExecutor, n)); orc_arm_emit_cmp_imm (compiler, ORC_ARM_A3, ORC_NEON_ALIGNED_DEST_CUTOFF); orc_arm_emit_branch (compiler, ORC_ARM_COND_GT, LABEL_REGION0_SKIP); orc_arm_emit_asr_imm (compiler, ORC_ARM_A2, ORC_ARM_A3, compiler->loop_shift); orc_arm_emit_store_reg (compiler, ORC_ARM_A2, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2)); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2)); orc_arm_emit_and_imm (compiler, ORC_ARM_A3, ORC_ARM_A3, - (1<<compiler->loop_shift)-1); + (1 << compiler->loop_shift) - 1); orc_arm_emit_store_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3)); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter3)); orc_neon_load_constants_inner (compiler); orc_arm_emit_load_reg (compiler, ORC_ARM_IP, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2)); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2)); orc_arm_emit_cmp_imm (compiler, ORC_ARM_IP, 0); orc_arm_emit_branch (compiler, ORC_ARM_COND_EQ, LABEL_REGION2_SKIP); @@ -534,7 +544,7 @@ orc_compiler_neon_assemble (OrcCompiler *compiler) orc_arm_emit_sub_imm (compiler, ORC_ARM_IP, ORC_ARM_IP, 1, TRUE); orc_neon_emit_loop (compiler, -1); orc_arm_emit_branch (compiler, ORC_ARM_COND_NE, LABEL_REGION0_LOOP); - + orc_arm_emit_branch (compiler, ORC_ARM_COND_AL, LABEL_REGION2_SKIP); @@ -542,47 +552,47 @@ orc_compiler_neon_assemble (OrcCompiler *compiler) } if (compiler->loop_shift > 0) { - orc_arm_emit_load_imm (compiler, ORC_ARM_IP, 1<<align_shift); + orc_arm_emit_load_imm (compiler, ORC_ARM_IP, 1 << align_shift); orc_arm_emit_load_reg (compiler, ORC_ARM_A2, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,arrays[align_var])); + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[align_var])); orc_arm_emit_sub (compiler, ORC_ARM_IP, ORC_ARM_IP, ORC_ARM_A2); orc_arm_emit_and_imm (compiler, ORC_ARM_IP, ORC_ARM_IP, - (1<<align_shift)-1); + (1 << align_shift) - 1); if (var_size_shift > 0) { orc_arm_emit_asr_imm (compiler, ORC_ARM_IP, ORC_ARM_IP, var_size_shift); } orc_arm_emit_load_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,n)); + (int) ORC_STRUCT_OFFSET (OrcExecutor, n)); orc_arm_emit_cmp (compiler, ORC_ARM_A3, ORC_ARM_IP); orc_arm_emit_branch (compiler, ORC_ARM_COND_LE, LABEL_ONE_REGION); orc_arm_emit_store_reg (compiler, ORC_ARM_IP, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1)); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter1)); orc_arm_emit_sub (compiler, ORC_ARM_A2, ORC_ARM_A3, ORC_ARM_IP); orc_arm_emit_asr_imm (compiler, ORC_ARM_A3, ORC_ARM_A2, compiler->loop_shift + compiler->unroll_shift); orc_arm_emit_store_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2)); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2)); orc_arm_emit_and_imm (compiler, ORC_ARM_A3, ORC_ARM_A2, - (1<<(compiler->loop_shift + compiler->unroll_shift))-1); + (1 << (compiler->loop_shift + compiler->unroll_shift)) - 1); orc_arm_emit_store_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3)); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter3)); orc_arm_emit_branch (compiler, ORC_ARM_COND_AL, LABEL_ONE_REGION_AFTER); orc_arm_emit_label (compiler, LABEL_ONE_REGION); orc_arm_emit_store_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1)); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter1)); orc_arm_emit_load_imm (compiler, ORC_ARM_A3, 0); orc_arm_emit_store_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2)); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2)); orc_arm_emit_store_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3)); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter3)); orc_arm_emit_label (compiler, LABEL_ONE_REGION_AFTER); } @@ -594,7 +604,7 @@ orc_compiler_neon_assemble (OrcCompiler *compiler) compiler->loop_shift = 0; orc_arm_emit_load_reg (compiler, ORC_ARM_IP, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1)); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter1)); orc_arm_emit_cmp_imm (compiler, ORC_ARM_IP, 0); orc_arm_emit_branch (compiler, ORC_ARM_COND_EQ, LABEL_REGION1_SKIP); @@ -611,10 +621,10 @@ orc_compiler_neon_assemble (OrcCompiler *compiler) if (compiler->loop_shift > 0) { orc_arm_emit_load_reg (compiler, ORC_ARM_IP, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2)); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2)); } else { orc_arm_emit_load_reg (compiler, ORC_ARM_IP, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,n)); + (int) ORC_STRUCT_OFFSET (OrcExecutor, n)); } orc_arm_emit_cmp_imm (compiler, ORC_ARM_IP, 0); @@ -629,7 +639,7 @@ orc_compiler_neon_assemble (OrcCompiler *compiler) compiler->size_region = 3; orc_arm_emit_label (compiler, LABEL_REGION2_LOOP_LARGE); orc_arm_emit_sub_imm (compiler, ORC_ARM_IP, ORC_ARM_IP, 1, TRUE); - for(i=0;i<(1<<compiler->unroll_shift);i++){ + for (i = 0; i < (1 << compiler->unroll_shift); i++) { orc_neon_emit_loop (compiler, i); } orc_arm_emit_branch (compiler, ORC_ARM_COND_NE, LABEL_REGION2_LOOP_LARGE); @@ -645,7 +655,7 @@ orc_compiler_neon_assemble (OrcCompiler *compiler) compiler->size_region = 2; orc_arm_emit_label (compiler, LABEL_REGION2_LOOP_MEDIUM); orc_arm_emit_sub_imm (compiler, ORC_ARM_IP, ORC_ARM_IP, 1, TRUE); - for(i=0;i<(1<<compiler->unroll_shift);i++){ + for (i = 0; i < (1 << compiler->unroll_shift); i++) { orc_neon_emit_loop (compiler, i); } orc_arm_emit_branch (compiler, ORC_ARM_COND_NE, LABEL_REGION2_LOOP_MEDIUM); @@ -656,7 +666,7 @@ orc_compiler_neon_assemble (OrcCompiler *compiler) compiler->size_region = 1; orc_arm_emit_label (compiler, LABEL_REGION2_LOOP_SMALL); orc_arm_emit_sub_imm (compiler, ORC_ARM_IP, ORC_ARM_IP, 1, TRUE); - for(i=0;i<(1<<compiler->unroll_shift);i++){ + for (i = 0; i < (1 << compiler->unroll_shift); i++) { orc_neon_emit_loop (compiler, i); } orc_arm_emit_branch (compiler, ORC_ARM_COND_NE, LABEL_REGION2_LOOP_SMALL); @@ -671,7 +681,7 @@ orc_compiler_neon_assemble (OrcCompiler *compiler) compiler->vars[align_var].is_aligned = FALSE; orc_arm_emit_load_reg (compiler, ORC_ARM_IP, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3)); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter3)); orc_arm_emit_cmp_imm (compiler, ORC_ARM_IP, 0); orc_arm_emit_branch (compiler, ORC_ARM_COND_EQ, LABEL_REGION3_SKIP); @@ -689,10 +699,10 @@ orc_compiler_neon_assemble (OrcCompiler *compiler) neon_add_strides (compiler); orc_arm_emit_load_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[ORC_VAR_A2])); + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A2])); orc_arm_emit_sub_imm (compiler, ORC_ARM_A3, ORC_ARM_A3, 1, TRUE); orc_arm_emit_store_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A2])); + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A2])); orc_arm_emit_branch (compiler, ORC_ARM_COND_NE, LABEL_OUTER_LOOP); } @@ -712,7 +722,7 @@ orc_compiler_neon_assemble (OrcCompiler *compiler) } void -orc_neon_emit_loop (OrcCompiler *compiler, int unroll_index) +orc_neon_emit_loop (OrcCompiler * compiler, int unroll_index) { int j; int k; @@ -720,30 +730,33 @@ orc_neon_emit_loop (OrcCompiler *compiler, int unroll_index) OrcStaticOpcode *opcode; OrcRule *rule; - orc_compiler_append_code(compiler,"# LOOP shift %d\n", compiler->loop_shift); - for(j=0;j<compiler->n_insns;j++){ + orc_compiler_append_code (compiler, "# LOOP shift %d\n", + compiler->loop_shift); + for (j = 0; j < compiler->n_insns; j++) { compiler->insn_index = j; insn = compiler->insns + j; opcode = insn->opcode; - if (insn->flags & ORC_INSN_FLAG_INVARIANT) continue; + if (insn->flags & ORC_INSN_FLAG_INVARIANT) + continue; - orc_compiler_append_code(compiler,"# %d: %s", j, insn->opcode->name); + orc_compiler_append_code (compiler, "# %d: %s", j, insn->opcode->name); /* set up args */ #if 0 - for(k=0;k<opcode->n_src + opcode->n_dest;k++){ + for (k = 0; k < opcode->n_src + opcode->n_dest; k++) { args[k] = compiler->vars + insn->args[k]; - orc_compiler_append_code(compiler," %d", args[k]->alloc); + orc_compiler_append_code (compiler, " %d", args[k]->alloc); if (args[k]->is_chained) { - orc_compiler_append_code(compiler," (chained)"); + orc_compiler_append_code (compiler, " (chained)"); } } #endif - orc_compiler_append_code(compiler,"\n"); + orc_compiler_append_code (compiler, "\n"); - for(k=0;k<ORC_STATIC_OPCODE_N_SRC;k++){ - if (opcode->src_size[k] == 0) continue; + for (k = 0; k < ORC_STATIC_OPCODE_N_SRC; k++) { + if (opcode->src_size[k] == 0) + continue; switch (compiler->vars[insn->src_args[k]].vartype) { case ORC_VAR_TYPE_SRC: @@ -780,11 +793,12 @@ orc_neon_emit_loop (OrcCompiler *compiler, int unroll_index) #endif rule->emit (compiler, rule->emit_user, insn); } else { - orc_compiler_append_code(compiler,"No rule for: %s\n", opcode->name); + orc_compiler_append_code (compiler, "No rule for: %s\n", opcode->name); } - for(k=0;k<ORC_STATIC_OPCODE_N_DEST;k++){ - if (opcode->dest_size[k] == 0) continue; + for (k = 0; k < ORC_STATIC_OPCODE_N_DEST; k++) { + if (opcode->dest_size[k] == 0) + continue; switch (compiler->vars[insn->dest_args[k]].vartype) { case ORC_VAR_TYPE_DEST: @@ -798,8 +812,9 @@ orc_neon_emit_loop (OrcCompiler *compiler, int unroll_index) } } - for(k=0;k<ORC_N_COMPILER_VARIABLES;k++){ - if (compiler->vars[k].name == NULL) continue; + for (k = 0; k < ORC_N_COMPILER_VARIABLES; k++) { + if (compiler->vars[k].name == NULL) + continue; if (compiler->vars[k].vartype == ORC_VAR_TYPE_SRC || compiler->vars[k].vartype == ORC_VAR_TYPE_DEST) { if (compiler->vars[k].ptr_register) { @@ -827,76 +842,74 @@ orc_neon_emit_loop (OrcCompiler *compiler, int unroll_index) ((((c)>>4)&0x1)<<5)) void -orc_neon_save_accumulators (OrcCompiler *compiler) +orc_neon_save_accumulators (OrcCompiler * compiler) { int i; int src; unsigned int code; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { OrcVariable *var = compiler->vars + i; - if (compiler->vars[i].name == NULL) continue; + if (compiler->vars[i].name == NULL) + continue; switch (compiler->vars[i].vartype) { case ORC_VAR_TYPE_ACCUMULATOR: src = compiler->vars[i].alloc; orc_arm_emit_load_imm (compiler, compiler->gp_tmpreg, - ORC_STRUCT_OFFSET(OrcExecutor, accumulators[i-ORC_VAR_A1])); + ORC_STRUCT_OFFSET (OrcExecutor, accumulators[i - ORC_VAR_A1])); orc_arm_emit_add (compiler, compiler->gp_tmpreg, compiler->gp_tmpreg, compiler->exec_reg); switch (var->size) { case 2: if (compiler->loop_shift > 0) { - ORC_ASM_CODE(compiler," vpaddl.u16 %s, %s\n", - orc_neon_reg_name (src), - orc_neon_reg_name (src)); + ORC_ASM_CODE (compiler, " vpaddl.u16 %s, %s\n", + orc_neon_reg_name (src), orc_neon_reg_name (src)); code = 0xf3b40280; - code |= (src&0xf) << 12; - code |= ((src>>4)&0x1) << 22; - code |= (src&0xf) << 0; + code |= (src & 0xf) << 12; + code |= ((src >> 4) & 0x1) << 22; + code |= (src & 0xf) << 0; orc_arm_emit (compiler, code); - ORC_ASM_CODE(compiler," vpaddl.u32 %s, %s\n", - orc_neon_reg_name (src), - orc_neon_reg_name (src)); + ORC_ASM_CODE (compiler, " vpaddl.u32 %s, %s\n", + orc_neon_reg_name (src), orc_neon_reg_name (src)); code = 0xf3b80280; - code |= (src&0xf) << 12; - code |= ((src>>4)&0x1) << 22; - code |= (src&0xf) << 0; + code |= (src & 0xf) << 12; + code |= ((src >> 4) & 0x1) << 22; + code |= (src & 0xf) << 0; orc_arm_emit (compiler, code); } - ORC_ASM_CODE(compiler," vst1.16 %s[%d], [%s]\n", + ORC_ASM_CODE (compiler, " vst1.16 %s[%d], [%s]\n", orc_neon_reg_name (src), 0, orc_arm_reg_name (compiler->gp_tmpreg)); code = 0xf480040f; - code |= (compiler->gp_tmpreg&0xf) << 16; - code |= (src&0xf) << 12; - code |= ((src>>4)&0x1) << 22; + code |= (compiler->gp_tmpreg & 0xf) << 16; + code |= (src & 0xf) << 12; + code |= ((src >> 4) & 0x1) << 22; orc_arm_emit (compiler, code); break; case 4: if (compiler->loop_shift > 0) { - ORC_ASM_CODE(compiler," vpadd.u32 %s, %s, %s\n", + ORC_ASM_CODE (compiler, " vpadd.u32 %s, %s, %s\n", orc_neon_reg_name (src), - orc_neon_reg_name (src), - orc_neon_reg_name (src)); - code = NEON_BINARY(0xf2200b10, src, src, src); + orc_neon_reg_name (src), orc_neon_reg_name (src)); + code = NEON_BINARY (0xf2200b10, src, src, src); orc_arm_emit (compiler, code); } - ORC_ASM_CODE(compiler," vst1.32 %s[%d], [%s]\n", + ORC_ASM_CODE (compiler, " vst1.32 %s[%d], [%s]\n", orc_neon_reg_name (src), 0, orc_arm_reg_name (compiler->gp_tmpreg)); code = 0xf480080f; - code |= (compiler->gp_tmpreg&0xf) << 16; - code |= (src&0xf) << 12; - code |= ((src>>4)&0x1) << 22; + code |= (compiler->gp_tmpreg & 0xf) << 16; + code |= (src & 0xf) << 12; + code |= ((src >> 4) & 0x1) << 22; orc_arm_emit (compiler, code); break; default: - ORC_ERROR("bad size"); + ORC_ERROR ("bad size"); } break; @@ -907,12 +920,13 @@ orc_neon_save_accumulators (OrcCompiler *compiler) } void -neon_add_strides (OrcCompiler *compiler) +neon_add_strides (OrcCompiler * compiler) { int i; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ - if (compiler->vars[i].name == NULL) continue; + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { + if (compiler->vars[i].name == NULL) + continue; switch (compiler->vars[i].vartype) { case ORC_VAR_TYPE_CONST: break; @@ -921,21 +935,20 @@ neon_add_strides (OrcCompiler *compiler) case ORC_VAR_TYPE_SRC: case ORC_VAR_TYPE_DEST: orc_arm_emit_load_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i])); + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i])); orc_arm_emit_load_reg (compiler, ORC_ARM_A2, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[i])); + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[i])); orc_arm_emit_add (compiler, ORC_ARM_A3, ORC_ARM_A3, ORC_ARM_A2); orc_arm_emit_store_reg (compiler, ORC_ARM_A3, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i])); + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i])); break; case ORC_VAR_TYPE_ACCUMULATOR: break; case ORC_VAR_TYPE_TEMP: break; default: - ORC_COMPILER_ERROR(compiler,"bad vartype"); + ORC_COMPILER_ERROR (compiler, "bad vartype"); break; } } } - diff --git a/orc/orcprogram-sse.c b/orc/orcprogram-sse.c index 2ed9062..4616524 100644 --- a/orc/orcprogram-sse.c +++ b/orc/orcprogram-sse.c @@ -18,21 +18,21 @@ #define ORC_SSE_ALIGNED_DEST_CUTOFF 64 -void orc_sse_emit_loop (OrcCompiler *compiler, int offset, int update); +void orc_sse_emit_loop (OrcCompiler * compiler, int offset, int update); -void orc_compiler_sse_init (OrcCompiler *compiler); +void orc_compiler_sse_init (OrcCompiler * compiler); unsigned int orc_compiler_sse_get_default_flags (void); -void orc_compiler_sse_assemble (OrcCompiler *compiler); -void orc_compiler_sse_register_rules (OrcTarget *target); -void orc_sse_emit_invariants (OrcCompiler *compiler); +void orc_compiler_sse_assemble (OrcCompiler * compiler); +void orc_compiler_sse_register_rules (OrcTarget * target); +void orc_sse_emit_invariants (OrcCompiler * compiler); -void orc_compiler_rewrite_vars (OrcCompiler *compiler); -void orc_compiler_dump (OrcCompiler *compiler); -void sse_load_constant (OrcCompiler *compiler, int reg, int size, int value); -void sse_load_constant_long (OrcCompiler *compiler, int reg, - OrcConstant *constant); -static const char * sse_get_flag_name (int shift); +void orc_compiler_rewrite_vars (OrcCompiler * compiler); +void orc_compiler_dump (OrcCompiler * compiler); +void sse_load_constant (OrcCompiler * compiler, int reg, int size, int value); +void sse_load_constant_long (OrcCompiler * compiler, int reg, + OrcConstant * constant); +static const char *sse_get_flag_name (int shift); static OrcTarget sse_target = { "sse", @@ -45,7 +45,7 @@ static OrcTarget sse_target = { orc_compiler_sse_get_default_flags, orc_compiler_sse_init, orc_compiler_sse_assemble, - { { 0 } }, + {{0}}, 0, NULL, sse_load_constant, @@ -94,7 +94,6 @@ orc_compiler_sse_get_default_flags (void) if (_orc_compiler_flag_debug) { flags |= ORC_TARGET_SSE_FRAME_POINTER; } - #if defined(HAVE_AMD64) || defined(HAVE_I386) #ifndef MMX flags |= orc_x86_sse_flags; @@ -128,7 +127,7 @@ sse_get_flag_name (int shift) #endif }; - if (shift >= 0 && shift < sizeof(flags)/sizeof(flags[0])) { + if (shift >= 0 && shift < sizeof (flags) / sizeof (flags[0])) { return flags[shift]; } @@ -136,7 +135,7 @@ sse_get_flag_name (int shift) } void -orc_compiler_sse_init (OrcCompiler *compiler) +orc_compiler_sse_init (OrcCompiler * compiler) { int i; @@ -149,19 +148,19 @@ orc_compiler_sse_init (OrcCompiler *compiler) if (!(compiler->target_flags & ORC_TARGET_SSE_SHORT_JUMPS)) { compiler->long_jumps = TRUE; } - + if (compiler->is_64bit) { - for(i=ORC_GP_REG_BASE;i<ORC_GP_REG_BASE+16;i++){ + for (i = ORC_GP_REG_BASE; i < ORC_GP_REG_BASE + 16; i++) { compiler->valid_regs[i] = 1; } compiler->valid_regs[X86_ESP] = 0; #ifndef MMX - for(i=X86_XMM0;i<X86_XMM0+16;i++){ + for (i = X86_XMM0; i < X86_XMM0 + 16; i++) { compiler->valid_regs[i] = 1; } #else - for(i=X86_XMM0;i<X86_XMM0+8;i++){ + for (i = X86_XMM0; i < X86_XMM0 + 8; i++) { compiler->valid_regs[i] = 1; } #endif @@ -174,26 +173,26 @@ orc_compiler_sse_init (OrcCompiler *compiler) #ifdef HAVE_OS_WIN32 compiler->save_regs[X86_EDI] = 1; compiler->save_regs[X86_ESI] = 1; - for(i=X86_XMM0+6;i<X86_XMM0+16;i++){ + for (i = X86_XMM0 + 6; i < X86_XMM0 + 16; i++) { compiler->save_regs[i] = 1; } #endif } else { - for(i=ORC_GP_REG_BASE;i<ORC_GP_REG_BASE+8;i++){ + for (i = ORC_GP_REG_BASE; i < ORC_GP_REG_BASE + 8; i++) { compiler->valid_regs[i] = 1; } compiler->valid_regs[X86_ESP] = 0; if (compiler->use_frame_pointer) { compiler->valid_regs[X86_EBP] = 0; } - for(i=X86_XMM0;i<X86_XMM0+8;i++){ + for (i = X86_XMM0; i < X86_XMM0 + 8; i++) { compiler->valid_regs[i] = 1; } compiler->save_regs[X86_EBX] = 1; compiler->save_regs[X86_EDI] = 1; compiler->save_regs[X86_EBP] = 1; } - for(i=0;i<128;i++){ + for (i = 0; i < 128; i++) { compiler->alloc_regs[i] = 0; compiler->used_regs[i] = 0; } @@ -231,7 +230,7 @@ orc_compiler_sse_init (OrcCompiler *compiler) compiler->loop_shift = 1; break; default: - ORC_ERROR("unhandled max var size %d", compiler->max_var_size); + ORC_ERROR ("unhandled max var size %d", compiler->max_var_size); break; } #ifdef MMX @@ -255,7 +254,7 @@ orc_compiler_sse_init (OrcCompiler *compiler) compiler->allow_gp_on_stack = TRUE; { - for(i=0;i<compiler->n_insns;i++){ + for (i = 0; i < compiler->n_insns; i++) { OrcInstruction *insn = compiler->insns + i; OrcStaticOpcode *opcode = insn->opcode; @@ -270,25 +269,26 @@ orc_compiler_sse_init (OrcCompiler *compiler) } void -sse_save_accumulators (OrcCompiler *compiler) +sse_save_accumulators (OrcCompiler * compiler) { int i; int src; int tmp; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { OrcVariable *var = compiler->vars + i; - if (compiler->vars[i].name == NULL) continue; + if (compiler->vars[i].name == NULL) + continue; switch (compiler->vars[i].vartype) { case ORC_VAR_TYPE_ACCUMULATOR: src = compiler->vars[i].alloc; tmp = orc_compiler_get_temp_reg (compiler); #ifndef MMX - orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF(3,2,3,2), src, tmp); + orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF (3, 2, 3, 2), src, tmp); #else - orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF(3,2,3,2), src, tmp); + orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF (3, 2, 3, 2), src, tmp); #endif if (compiler->vars[i].size == 2) { @@ -298,7 +298,7 @@ sse_save_accumulators (OrcCompiler *compiler) } #ifndef MMX - orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF(1,1,1,1), src, tmp); + orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF (1, 1, 1, 1), src, tmp); if (compiler->vars[i].size == 2) { orc_sse_emit_paddw (compiler, tmp, src); @@ -309,9 +309,9 @@ sse_save_accumulators (OrcCompiler *compiler) if (compiler->vars[i].size == 2) { #ifndef MMX - orc_sse_emit_pshuflw (compiler, ORC_SSE_SHUF(1,1,1,1), src, tmp); + orc_sse_emit_pshuflw (compiler, ORC_SSE_SHUF (1, 1, 1, 1), src, tmp); #else - orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF(1,1,1,1), src, tmp); + orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF (1, 1, 1, 1), src, tmp); #endif orc_sse_emit_paddw (compiler, tmp, src); @@ -321,12 +321,12 @@ sse_save_accumulators (OrcCompiler *compiler) orc_sse_emit_movd_store_register (compiler, src, compiler->gp_tmpreg); orc_x86_emit_and_imm_reg (compiler, 4, 0xffff, compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 4, compiler->gp_tmpreg, - (int)ORC_STRUCT_OFFSET(OrcExecutor, accumulators[i-ORC_VAR_A1]), - compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, + accumulators[i - ORC_VAR_A1]), compiler->exec_reg); } else { orc_x86_emit_mov_sse_memoffset (compiler, 4, src, - (int)ORC_STRUCT_OFFSET(OrcExecutor, accumulators[i-ORC_VAR_A1]), - compiler->exec_reg, + (int) ORC_STRUCT_OFFSET (OrcExecutor, + accumulators[i - ORC_VAR_A1]), compiler->exec_reg, var->is_aligned, var->is_uncached); } @@ -338,34 +338,33 @@ sse_save_accumulators (OrcCompiler *compiler) } void -sse_load_constant (OrcCompiler *compiler, int reg, int size, int value) +sse_load_constant (OrcCompiler * compiler, int reg, int size, int value) { orc_sse_load_constant (compiler, reg, size, value); } void -orc_sse_load_constant (OrcCompiler *compiler, int reg, int size, orc_uint64 value) +orc_sse_load_constant (OrcCompiler * compiler, int reg, int size, + orc_uint64 value) { int i; if (size == 8) { - int offset = ORC_STRUCT_OFFSET(OrcExecutor,arrays[ORC_VAR_T1]); + int offset = ORC_STRUCT_OFFSET (OrcExecutor, arrays[ORC_VAR_T1]); /* FIXME how ugly and slow! */ - orc_x86_emit_mov_imm_reg (compiler, 4, value>>0, - compiler->gp_tmpreg); + orc_x86_emit_mov_imm_reg (compiler, 4, value >> 0, compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 4, compiler->gp_tmpreg, offset + 0, compiler->exec_reg); - orc_x86_emit_mov_imm_reg (compiler, 4, value>>32, - compiler->gp_tmpreg); + orc_x86_emit_mov_imm_reg (compiler, 4, value >> 32, compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 4, compiler->gp_tmpreg, offset + 4, compiler->exec_reg); orc_x86_emit_mov_memoffset_sse (compiler, 8, offset, compiler->exec_reg, reg, FALSE); #ifndef MMX - orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF(1,0,1,0), reg, reg); + orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF (1, 0, 1, 0), reg, reg); #endif return; } @@ -380,9 +379,10 @@ orc_sse_load_constant (OrcCompiler *compiler, int reg, int size, orc_uint64 valu value |= (value << 16); } - ORC_ASM_CODE(compiler, "# loading constant %d 0x%08x\n", (int)value, (int)value); + ORC_ASM_CODE (compiler, "# loading constant %d 0x%08x\n", (int) value, + (int) value); if (value == 0) { - orc_sse_emit_pxor(compiler, reg, reg); + orc_sse_emit_pxor (compiler, reg, reg); return; } if (value == 0xffffffff) { @@ -397,30 +397,30 @@ orc_sse_load_constant (OrcCompiler *compiler, int reg, int size, orc_uint64 valu } } - for(i=1;i<32;i++){ + for (i = 1; i < 32; i++) { orc_uint32 v; - v = (0xffffffff<<i); + v = (0xffffffff << i); if (value == v) { orc_sse_emit_pcmpeqb (compiler, reg, reg); orc_sse_emit_pslld_imm (compiler, i, reg); return; } - v = (0xffffffff>>i); + v = (0xffffffff >> i); if (value == v) { orc_sse_emit_pcmpeqb (compiler, reg, reg); orc_sse_emit_psrld_imm (compiler, i, reg); return; } } - for(i=1;i<16;i++){ + for (i = 1; i < 16; i++) { orc_uint32 v; - v = (0xffff & (0xffff<<i)) | (0xffff0000 & (0xffff0000<<i)); + v = (0xffff & (0xffff << i)) | (0xffff0000 & (0xffff0000 << i)); if (value == v) { orc_sse_emit_pcmpeqb (compiler, reg, reg); orc_sse_emit_psllw_imm (compiler, i, reg); return; } - v = (0xffff & (0xffff>>i)) | (0xffff0000 & (0xffff0000>>i)); + v = (0xffff & (0xffff >> i)) | (0xffff0000 & (0xffff0000 >> i)); if (value == v) { orc_sse_emit_pcmpeqb (compiler, reg, reg); orc_sse_emit_psrlw_imm (compiler, i, reg); @@ -431,30 +431,29 @@ orc_sse_load_constant (OrcCompiler *compiler, int reg, int size, orc_uint64 valu orc_x86_emit_mov_imm_reg (compiler, 4, value, compiler->gp_tmpreg); orc_sse_emit_movd_load_register (compiler, compiler->gp_tmpreg, reg); #ifndef MMX - orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF(0,0,0,0), reg, reg); + orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF (0, 0, 0, 0), reg, reg); #else - orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF(1,0,1,0), reg, reg); + orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF (1, 0, 1, 0), reg, reg); #endif } void -sse_load_constant_long (OrcCompiler *compiler, int reg, - OrcConstant *constant) +sse_load_constant_long (OrcCompiler * compiler, int reg, OrcConstant * constant) { int i; - int offset = ORC_STRUCT_OFFSET(OrcExecutor,arrays[ORC_VAR_T1]); + int offset = ORC_STRUCT_OFFSET (OrcExecutor, arrays[ORC_VAR_T1]); /* FIXME this is slower than it could be */ - ORC_ASM_CODE(compiler, "# loading constant %08x %08x %08x %08x\n", + ORC_ASM_CODE (compiler, "# loading constant %08x %08x %08x %08x\n", constant->full_value[0], constant->full_value[1], constant->full_value[2], constant->full_value[3]); - for(i=0;i<4;i++){ + for (i = 0; i < 4; i++) { orc_x86_emit_mov_imm_reg (compiler, 4, constant->full_value[i], compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 4, compiler->gp_tmpreg, - offset + 4*i, compiler->exec_reg); + offset + 4 * i, compiler->exec_reg); } orc_x86_emit_mov_memoffset_sse (compiler, 16, offset, compiler->exec_reg, reg, FALSE); @@ -462,11 +461,12 @@ sse_load_constant_long (OrcCompiler *compiler, int reg, } void -sse_load_constants_outer (OrcCompiler *compiler) +sse_load_constants_outer (OrcCompiler * compiler) { int i; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ - if (compiler->vars[i].name == NULL) continue; + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { + if (compiler->vars[i].name == NULL) + continue; switch (compiler->vars[i].vartype) { case ORC_VAR_TYPE_CONST: break; @@ -482,7 +482,7 @@ sse_load_constants_outer (OrcCompiler *compiler) case ORC_VAR_TYPE_TEMP: break; default: - orc_compiler_error(compiler,"bad vartype"); + orc_compiler_error (compiler, "bad vartype"); break; } } @@ -490,12 +490,11 @@ sse_load_constants_outer (OrcCompiler *compiler) orc_sse_emit_invariants (compiler); /* FIXME move to a better place */ - for(i=0;i<compiler->n_constants;i++){ - compiler->constants[i].alloc_reg = - orc_compiler_get_constant_reg (compiler); + for (i = 0; i < compiler->n_constants; i++) { + compiler->constants[i].alloc_reg = orc_compiler_get_constant_reg (compiler); } - for(i=0;i<compiler->n_constants;i++){ + for (i = 0; i < compiler->n_constants; i++) { if (compiler->constants[i].alloc_reg) { if (compiler->constants[i].is_long) { sse_load_constant_long (compiler, compiler->constants[i].alloc_reg, @@ -508,7 +507,7 @@ sse_load_constants_outer (OrcCompiler *compiler) } { - for(i=0;i<compiler->n_insns;i++){ + for (i = 0; i < compiler->n_insns; i++) { OrcInstruction *insn = compiler->insns + i; OrcStaticOpcode *opcode = insn->opcode; @@ -518,9 +517,8 @@ sse_load_constants_outer (OrcCompiler *compiler) strcmp (opcode->name, "ldresnearl") == 0) { if (compiler->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_PARAM) { orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[insn->src_args[1]]), - compiler->exec_reg, - compiler->vars[insn->src_args[0]].ptr_offset); + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[insn->src_args[1]]), + compiler->exec_reg, compiler->vars[insn->src_args[0]].ptr_offset); } else { orc_x86_emit_mov_imm_reg (compiler, 4, compiler->vars[insn->src_args[1]].value.i, @@ -532,11 +530,12 @@ sse_load_constants_outer (OrcCompiler *compiler) } void -sse_load_constants_inner (OrcCompiler *compiler) +sse_load_constants_inner (OrcCompiler * compiler) { int i; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ - if (compiler->vars[i].name == NULL) continue; + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { + if (compiler->vars[i].name == NULL) + continue; switch (compiler->vars[i].vartype) { case ORC_VAR_TYPE_CONST: break; @@ -546,8 +545,8 @@ sse_load_constants_inner (OrcCompiler *compiler) case ORC_VAR_TYPE_DEST: if (compiler->vars[i].ptr_register) { orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]), compiler->exec_reg, - compiler->vars[i].ptr_register); + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i]), + compiler->exec_reg, compiler->vars[i].ptr_register); } break; case ORC_VAR_TYPE_ACCUMULATOR: @@ -555,19 +554,20 @@ sse_load_constants_inner (OrcCompiler *compiler) case ORC_VAR_TYPE_TEMP: break; default: - orc_compiler_error(compiler,"bad vartype"); + orc_compiler_error (compiler, "bad vartype"); break; } } } void -sse_add_strides (OrcCompiler *compiler) +sse_add_strides (OrcCompiler * compiler) { int i; - for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){ - if (compiler->vars[i].name == NULL) continue; + for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) { + if (compiler->vars[i].name == NULL) + continue; switch (compiler->vars[i].vartype) { case ORC_VAR_TYPE_CONST: break; @@ -576,14 +576,15 @@ sse_add_strides (OrcCompiler *compiler) case ORC_VAR_TYPE_SRC: case ORC_VAR_TYPE_DEST: orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[i]), compiler->exec_reg, - compiler->gp_tmpreg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[i]), + compiler->exec_reg, compiler->gp_tmpreg); orc_x86_emit_add_reg_memoffset (compiler, compiler->is_64bit ? 8 : 4, - compiler->gp_tmpreg, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]), compiler->exec_reg); + compiler->gp_tmpreg, (int) ORC_STRUCT_OFFSET (OrcExecutor, + arrays[i]), compiler->exec_reg); if (compiler->vars[i].ptr_register == 0) { - orc_compiler_error (compiler, "unimplemented: stride on pointer stored in memory"); + orc_compiler_error (compiler, + "unimplemented: stride on pointer stored in memory"); } break; case ORC_VAR_TYPE_ACCUMULATOR: @@ -591,34 +592,37 @@ sse_add_strides (OrcCompiler *compiler) case ORC_VAR_TYPE_TEMP: break; default: - orc_compiler_error(compiler,"bad vartype"); + orc_compiler_error (compiler, "bad vartype"); break; } } } static int -get_align_var (OrcCompiler *compiler) +get_align_var (OrcCompiler * compiler) { int i; - for(i=ORC_VAR_D1;i<=ORC_VAR_S8;i++){ - if (compiler->vars[i].size == 0) continue; + for (i = ORC_VAR_D1; i <= ORC_VAR_S8; i++) { + if (compiler->vars[i].size == 0) + continue; if ((compiler->vars[i].size << compiler->loop_shift) >= 16) { return i; } } - for(i=ORC_VAR_D1;i<=ORC_VAR_S8;i++){ - if (compiler->vars[i].size == 0) continue; + for (i = ORC_VAR_D1; i <= ORC_VAR_S8; i++) { + if (compiler->vars[i].size == 0) + continue; if ((compiler->vars[i].size << compiler->loop_shift) >= 8) { return i; } } - for(i=ORC_VAR_D1;i<=ORC_VAR_S8;i++){ - if (compiler->vars[i].size == 0) continue; + for (i = ORC_VAR_D1; i <= ORC_VAR_S8; i++) { + if (compiler->vars[i].size == 0) + continue; return i; } - orc_compiler_error(compiler, "could not find alignment variable"); + orc_compiler_error (compiler, "could not find alignment variable"); return -1; } @@ -636,14 +640,14 @@ get_shift (int size) case 8: return 3; default: - ORC_ERROR("bad size %d", size); + ORC_ERROR ("bad size %d", size); } return -1; } static void -orc_emit_split_3_regions (OrcCompiler *compiler) +orc_emit_split_3_regions (OrcCompiler * compiler) { int align_var; int align_shift; @@ -656,40 +660,39 @@ orc_emit_split_3_regions (OrcCompiler *compiler) /* determine how many iterations until align array is aligned (n1) */ orc_x86_emit_mov_imm_reg (compiler, 4, 16, X86_EAX); orc_x86_emit_sub_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[align_var]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[align_var]), compiler->exec_reg, X86_EAX); - orc_x86_emit_and_imm_reg (compiler, 4, (1<<align_shift) - 1, X86_EAX); + orc_x86_emit_and_imm_reg (compiler, 4, (1 << align_shift) - 1, X86_EAX); orc_x86_emit_sar_imm_reg (compiler, 4, var_size_shift, X86_EAX); /* check if n1 is greater than n. */ orc_x86_emit_cmp_reg_memoffset (compiler, 4, X86_EAX, - (int)ORC_STRUCT_OFFSET(OrcExecutor,n), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, n), compiler->exec_reg); orc_x86_emit_jle (compiler, 6); /* If so, we have a standard 3-region split. */ orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1), compiler->exec_reg); - + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter1), compiler->exec_reg); + /* Calculate n2 */ orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor,n), compiler->exec_reg, + (int) ORC_STRUCT_OFFSET (OrcExecutor, n), compiler->exec_reg, compiler->gp_tmpreg); orc_x86_emit_sub_reg_reg (compiler, 4, X86_EAX, compiler->gp_tmpreg); orc_x86_emit_mov_reg_reg (compiler, 4, compiler->gp_tmpreg, X86_EAX); orc_x86_emit_sar_imm_reg (compiler, 4, - compiler->loop_shift + compiler->unroll_shift, - compiler->gp_tmpreg); + compiler->loop_shift + compiler->unroll_shift, compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 4, compiler->gp_tmpreg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2), compiler->exec_reg); /* Calculate n3 */ orc_x86_emit_and_imm_reg (compiler, 4, - (1<<(compiler->loop_shift + compiler->unroll_shift))-1, X86_EAX); + (1 << (compiler->loop_shift + compiler->unroll_shift)) - 1, X86_EAX); orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter3), compiler->exec_reg); orc_x86_emit_jmp (compiler, 7); @@ -697,20 +700,20 @@ orc_emit_split_3_regions (OrcCompiler *compiler) orc_x86_emit_label (compiler, 6); orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor,n), compiler->exec_reg, X86_EAX); + (int) ORC_STRUCT_OFFSET (OrcExecutor, n), compiler->exec_reg, X86_EAX); orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter1), compiler->exec_reg); orc_x86_emit_mov_imm_reg (compiler, 4, 0, X86_EAX); orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2), compiler->exec_reg); orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter3), compiler->exec_reg); orc_x86_emit_label (compiler, 7); } static void -orc_emit_split_2_regions (OrcCompiler *compiler) +orc_emit_split_2_regions (OrcCompiler * compiler) { int align_var; int align_shift ORC_GNUC_UNUSED; @@ -722,31 +725,31 @@ orc_emit_split_2_regions (OrcCompiler *compiler) /* Calculate n2 */ orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor,n), compiler->exec_reg, + (int) ORC_STRUCT_OFFSET (OrcExecutor, n), compiler->exec_reg, compiler->gp_tmpreg); orc_x86_emit_mov_reg_reg (compiler, 4, compiler->gp_tmpreg, X86_EAX); orc_x86_emit_sar_imm_reg (compiler, 4, - compiler->loop_shift + compiler->unroll_shift, - compiler->gp_tmpreg); + compiler->loop_shift + compiler->unroll_shift, compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 4, compiler->gp_tmpreg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2), compiler->exec_reg); /* Calculate n3 */ orc_x86_emit_and_imm_reg (compiler, 4, - (1<<(compiler->loop_shift + compiler->unroll_shift))-1, X86_EAX); + (1 << (compiler->loop_shift + compiler->unroll_shift)) - 1, X86_EAX); orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter3), compiler->exec_reg); } #ifndef MMX static int -orc_program_has_float (OrcCompiler *compiler) +orc_program_has_float (OrcCompiler * compiler) { int j; - for(j=0;j<compiler->n_insns;j++){ + for (j = 0; j < compiler->n_insns; j++) { OrcInstruction *insn = compiler->insns + j; OrcStaticOpcode *opcode = insn->opcode; - if (opcode->flags & ORC_STATIC_OPCODE_FLOAT) return TRUE; + if (opcode->flags & ORC_STATIC_OPCODE_FLOAT) + return TRUE; } return FALSE; } @@ -762,7 +765,7 @@ orc_program_has_float (OrcCompiler *compiler) void -orc_compiler_sse_assemble (OrcCompiler *compiler) +orc_compiler_sse_assemble (OrcCompiler * compiler) { #ifndef MMX int set_mxcsr = FALSE; @@ -792,7 +795,8 @@ orc_compiler_sse_assemble (OrcCompiler *compiler) compiler->n_output_insns = 0; } - if (compiler->error) return; + if (compiler->error) + return; orc_x86_emit_prologue (compiler); @@ -810,16 +814,16 @@ orc_compiler_sse_assemble (OrcCompiler *compiler) orc_x86_emit_mov_imm_reg (compiler, 4, compiler->program->constant_m, X86_EAX); orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[ORC_VAR_A2]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A2]), compiler->exec_reg); } else { orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[ORC_VAR_A1]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A1]), compiler->exec_reg, X86_EAX); orc_x86_emit_test_reg_reg (compiler, 4, X86_EAX, X86_EAX); orc_x86_emit_jle (compiler, LABEL_OUTER_LOOP_SKIP); orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[ORC_VAR_A2]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A2]), compiler->exec_reg); } @@ -839,10 +843,10 @@ orc_compiler_sse_assemble (OrcCompiler *compiler) } else { /* loop shift is 0, no need to split */ orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor,n), compiler->exec_reg, + (int) ORC_STRUCT_OFFSET (OrcExecutor, n), compiler->exec_reg, compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 4, compiler->gp_tmpreg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2), compiler->exec_reg); } sse_load_constants_inner (compiler); @@ -856,20 +860,20 @@ orc_compiler_sse_assemble (OrcCompiler *compiler) compiler->offset = 0; save_loop_shift = compiler->loop_shift; - while (n_left >= (1<<compiler->loop_shift)) { - ORC_ASM_CODE(compiler, "# LOOP SHIFT %d\n", compiler->loop_shift); + while (n_left >= (1 << compiler->loop_shift)) { + ORC_ASM_CODE (compiler, "# LOOP SHIFT %d\n", compiler->loop_shift); orc_sse_emit_loop (compiler, compiler->offset, 0); - n_left -= 1<<compiler->loop_shift; - compiler->offset += 1<<compiler->loop_shift; + n_left -= 1 << compiler->loop_shift; + compiler->offset += 1 << compiler->loop_shift; } - for(loop_shift = compiler->loop_shift-1; loop_shift>=0; loop_shift--) { - if (n_left >= (1<<loop_shift)) { + for (loop_shift = compiler->loop_shift - 1; loop_shift >= 0; loop_shift--) { + if (n_left >= (1 << loop_shift)) { compiler->loop_shift = loop_shift; - ORC_ASM_CODE(compiler, "# LOOP SHIFT %d\n", loop_shift); + ORC_ASM_CODE (compiler, "# LOOP SHIFT %d\n", loop_shift); orc_sse_emit_loop (compiler, compiler->offset, 0); - n_left -= 1<<loop_shift; - compiler->offset += 1<<loop_shift; + n_left -= 1 << loop_shift; + compiler->offset += 1 << loop_shift; } } compiler->loop_shift = save_loop_shift; @@ -894,15 +898,16 @@ orc_compiler_sse_assemble (OrcCompiler *compiler) save_loop_shift = compiler->loop_shift; compiler->vars[align_var].is_aligned = FALSE; - for (l=0;l<save_loop_shift;l++){ + for (l = 0; l < save_loop_shift; l++) { compiler->loop_shift = l; - ORC_ASM_CODE(compiler, "# LOOP SHIFT %d\n", compiler->loop_shift); - - orc_x86_emit_test_imm_memoffset (compiler, 4, 1<<compiler->loop_shift, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter1), compiler->exec_reg); - orc_x86_emit_je (compiler, LABEL_STEP_UP(compiler->loop_shift)); - orc_sse_emit_loop (compiler, 0, 1<<compiler->loop_shift); - orc_x86_emit_label (compiler, LABEL_STEP_UP(compiler->loop_shift)); + ORC_ASM_CODE (compiler, "# LOOP SHIFT %d\n", compiler->loop_shift); + + orc_x86_emit_test_imm_memoffset (compiler, 4, 1 << compiler->loop_shift, + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter1), + compiler->exec_reg); + orc_x86_emit_je (compiler, LABEL_STEP_UP (compiler->loop_shift)); + orc_sse_emit_loop (compiler, 0, 1 << compiler->loop_shift); + orc_x86_emit_label (compiler, LABEL_STEP_UP (compiler->loop_shift)); } compiler->loop_shift = save_loop_shift; @@ -912,31 +917,31 @@ orc_compiler_sse_assemble (OrcCompiler *compiler) orc_x86_emit_label (compiler, LABEL_REGION1_SKIP); orc_x86_emit_cmp_imm_memoffset (compiler, 4, 0, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2), compiler->exec_reg); orc_x86_emit_je (compiler, LABEL_REGION2_SKIP); if (compiler->loop_counter != ORC_REG_INVALID) { orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, counter2), compiler->exec_reg, + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2), compiler->exec_reg, compiler->loop_counter); } - ORC_ASM_CODE(compiler, "# LOOP SHIFT %d\n", compiler->loop_shift); + ORC_ASM_CODE (compiler, "# LOOP SHIFT %d\n", compiler->loop_shift); orc_x86_emit_align (compiler, 4); orc_x86_emit_label (compiler, LABEL_INNER_LOOP_START); - ui_max = 1<<compiler->unroll_shift; - for(ui=0;ui<ui_max;ui++) { - compiler->offset = ui<<compiler->loop_shift; + ui_max = 1 << compiler->unroll_shift; + for (ui = 0; ui < ui_max; ui++) { + compiler->offset = ui << compiler->loop_shift; orc_sse_emit_loop (compiler, compiler->offset, - (ui==ui_max-1) << (compiler->loop_shift + compiler->unroll_shift)); + (ui == + ui_max - 1) << (compiler->loop_shift + compiler->unroll_shift)); } compiler->offset = 0; if (compiler->loop_counter != ORC_REG_INVALID) { orc_x86_emit_add_imm_reg (compiler, 4, -1, compiler->loop_counter, TRUE); } else { orc_x86_emit_dec_memoffset (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter2), - compiler->exec_reg); + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter2), compiler->exec_reg); } orc_x86_emit_jne (compiler, LABEL_INNER_LOOP_START); orc_x86_emit_label (compiler, LABEL_REGION2_SKIP); @@ -948,15 +953,16 @@ orc_compiler_sse_assemble (OrcCompiler *compiler) save_loop_shift = compiler->loop_shift + compiler->unroll_shift; compiler->vars[align_var].is_aligned = FALSE; - for(l=save_loop_shift - 1; l >= 0; l--) { + for (l = save_loop_shift - 1; l >= 0; l--) { compiler->loop_shift = l; - ORC_ASM_CODE(compiler, "# LOOP SHIFT %d\n", compiler->loop_shift); - - orc_x86_emit_test_imm_memoffset (compiler, 4, 1<<compiler->loop_shift, - (int)ORC_STRUCT_OFFSET(OrcExecutor,counter3), compiler->exec_reg); - orc_x86_emit_je (compiler, LABEL_STEP_DOWN(compiler->loop_shift)); - orc_sse_emit_loop (compiler, 0, 1<<compiler->loop_shift); - orc_x86_emit_label (compiler, LABEL_STEP_DOWN(compiler->loop_shift)); + ORC_ASM_CODE (compiler, "# LOOP SHIFT %d\n", compiler->loop_shift); + + orc_x86_emit_test_imm_memoffset (compiler, 4, 1 << compiler->loop_shift, + (int) ORC_STRUCT_OFFSET (OrcExecutor, counter3), + compiler->exec_reg); + orc_x86_emit_je (compiler, LABEL_STEP_DOWN (compiler->loop_shift)); + orc_sse_emit_loop (compiler, 0, 1 << compiler->loop_shift); + orc_x86_emit_label (compiler, LABEL_STEP_DOWN (compiler->loop_shift)); } compiler->loop_shift = save_loop_shift; @@ -967,7 +973,7 @@ orc_compiler_sse_assemble (OrcCompiler *compiler) sse_add_strides (compiler); orc_x86_emit_add_imm_memoffset (compiler, 4, -1, - (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A2]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A2]), compiler->exec_reg); orc_x86_emit_jne (compiler, LABEL_OUTER_LOOP); orc_x86_emit_label (compiler, LABEL_OUTER_LOOP_SKIP); @@ -991,7 +997,7 @@ orc_compiler_sse_assemble (OrcCompiler *compiler) } void -orc_sse_emit_loop (OrcCompiler *compiler, int offset, int update) +orc_sse_emit_loop (OrcCompiler * compiler, int offset, int update) { int j; int k; @@ -999,15 +1005,16 @@ orc_sse_emit_loop (OrcCompiler *compiler, int offset, int update) OrcStaticOpcode *opcode; OrcRule *rule; - for(j=0;j<compiler->n_insns;j++){ + for (j = 0; j < compiler->n_insns; j++) { insn = compiler->insns + j; opcode = insn->opcode; compiler->insn_index = j; - if (insn->flags & ORC_INSN_FLAG_INVARIANT) continue; + if (insn->flags & ORC_INSN_FLAG_INVARIANT) + continue; - ORC_ASM_CODE(compiler,"# %d: %s\n", j, insn->opcode->name); + ORC_ASM_CODE (compiler, "# %d: %s\n", j, insn->opcode->name); compiler->min_temp_reg = ORC_VEC_REG_BASE; @@ -1021,8 +1028,9 @@ orc_sse_emit_loop (OrcCompiler *compiler, int offset, int update) rule = insn->rule; if (rule && rule->emit) { - if (!(insn->opcode->flags & (ORC_STATIC_OPCODE_ACCUMULATOR|ORC_STATIC_OPCODE_LOAD|ORC_STATIC_OPCODE_STORE)) && - compiler->vars[insn->dest_args[0]].alloc != + if (!(insn->opcode->flags & (ORC_STATIC_OPCODE_ACCUMULATOR | + ORC_STATIC_OPCODE_LOAD | ORC_STATIC_OPCODE_STORE)) + && compiler->vars[insn->dest_args[0]].alloc != compiler->vars[insn->src_args[0]].alloc) { #ifdef MMX orc_sse_emit_movq (compiler, @@ -1042,12 +1050,12 @@ orc_sse_emit_loop (OrcCompiler *compiler, int offset, int update) } if (update) { - for(k=0;k<ORC_N_COMPILER_VARIABLES;k++){ + for (k = 0; k < ORC_N_COMPILER_VARIABLES; k++) { OrcVariable *var = compiler->vars + k; - if (var->name == NULL) continue; - if (var->vartype == ORC_VAR_TYPE_SRC || - var->vartype == ORC_VAR_TYPE_DEST) { + if (var->name == NULL) + continue; + if (var->vartype == ORC_VAR_TYPE_SRC || var->vartype == ORC_VAR_TYPE_DEST) { int offset; if (var->update_type == 0) { offset = 0; @@ -1060,12 +1068,11 @@ orc_sse_emit_loop (OrcCompiler *compiler, int offset, int update) if (offset != 0) { if (compiler->vars[k].ptr_register) { orc_x86_emit_add_imm_reg (compiler, compiler->is_64bit ? 8 : 4, - offset, - compiler->vars[k].ptr_register, FALSE); + offset, compiler->vars[k].ptr_register, FALSE); } else { - orc_x86_emit_add_imm_memoffset (compiler, compiler->is_64bit ? 8 : 4, - offset, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[k]), + orc_x86_emit_add_imm_memoffset (compiler, + compiler->is_64bit ? 8 : 4, offset, + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[k]), compiler->exec_reg); } } @@ -1075,20 +1082,21 @@ orc_sse_emit_loop (OrcCompiler *compiler, int offset, int update) } void -orc_sse_emit_invariants (OrcCompiler *compiler) +orc_sse_emit_invariants (OrcCompiler * compiler) { int j; OrcInstruction *insn; OrcStaticOpcode *opcode; OrcRule *rule; - for(j=0;j<compiler->n_insns;j++){ + for (j = 0; j < compiler->n_insns; j++) { insn = compiler->insns + j; opcode = insn->opcode; - if (!(insn->flags & ORC_INSN_FLAG_INVARIANT)) continue; + if (!(insn->flags & ORC_INSN_FLAG_INVARIANT)) + continue; - ORC_ASM_CODE(compiler,"# %d: %s\n", j, insn->opcode->name); + ORC_ASM_CODE (compiler, "# %d: %s\n", j, insn->opcode->name); compiler->insn_shift = compiler->loop_shift; if (insn->flags & ORC_INSTRUCTION_FLAG_X2) { @@ -1107,4 +1115,3 @@ orc_sse_emit_invariants (OrcCompiler *compiler) } } } - diff --git a/orc/orcprogram.c b/orc/orcprogram.c index 653220f..ccd1946 100644 --- a/orc/orcprogram.c +++ b/orc/orcprogram.c @@ -31,11 +31,11 @@ orc_program_new (void) orc_init (); - p = malloc(sizeof(OrcProgram)); - memset (p, 0, sizeof(OrcProgram)); + p = malloc (sizeof (OrcProgram)); + memset (p, 0, sizeof (OrcProgram)); p->name = malloc (40); - sprintf(p->name, "func_%p", p); + sprintf (p->name, "func_%p", p); return p; } @@ -137,7 +137,7 @@ orc_program_new_as (int size1, int size2) } OrcProgram * -orc_program_new_from_static_bytecode (const orc_uint8 *bytecode) +orc_program_new_from_static_bytecode (const orc_uint8 * bytecode) { OrcProgram *p; @@ -154,10 +154,10 @@ orc_program_new_from_static_bytecode (const orc_uint8 *bytecode) * Frees an OrcProgram. */ void -orc_program_free (OrcProgram *program) +orc_program_free (OrcProgram * program) { int i; - for(i=0;i<ORC_N_VARIABLES;i++){ + for (i = 0; i < ORC_N_VARIABLES; i++) { if (program->vars[i].name) { free (program->vars[i].name); program->vars[i].name = NULL; @@ -186,7 +186,7 @@ orc_program_free (OrcProgram *program) * Sets the name of the program. The string is copied. */ void -orc_program_set_name (OrcProgram *program, const char *name) +orc_program_set_name (OrcProgram * program, const char *name) { if (program->name) { free (program->name); @@ -202,7 +202,7 @@ orc_program_set_name (OrcProgram *program, const char *name) * Sets the current line of the program. */ void -orc_program_set_line (OrcProgram *program, unsigned int line) +orc_program_set_line (OrcProgram * program, unsigned int line) { program->current_line = line; } @@ -216,32 +216,37 @@ orc_program_set_line (OrcProgram *program, unsigned int line) * an OrcExec2D executor. */ void -orc_program_set_2d (OrcProgram *program) +orc_program_set_2d (OrcProgram * program) { program->is_2d = TRUE; } -void orc_program_set_constant_n (OrcProgram *program, int n) +void +orc_program_set_constant_n (OrcProgram * program, int n) { program->constant_n = n; } -void orc_program_set_n_multiple (OrcProgram *program, int n) +void +orc_program_set_n_multiple (OrcProgram * program, int n) { program->n_multiple = n; } -void orc_program_set_n_minimum (OrcProgram *program, int n) +void +orc_program_set_n_minimum (OrcProgram * program, int n) { program->n_minimum = n; } -void orc_program_set_n_maximum (OrcProgram *program, int n) +void +orc_program_set_n_maximum (OrcProgram * program, int n) { program->n_maximum = n; } -void orc_program_set_constant_m (OrcProgram *program, int m) +void +orc_program_set_constant_m (OrcProgram * program, int m) { program->constant_m = m; } @@ -257,7 +262,7 @@ void orc_program_set_constant_m (OrcProgram *program, int m) * instead of resorting to emulation. */ void -orc_program_set_backup_function (OrcProgram *program, OrcExecutorFunc func) +orc_program_set_backup_function (OrcProgram * program, OrcExecutorFunc func) { program->backup_func = func; } @@ -272,7 +277,7 @@ orc_program_set_backup_function (OrcProgram *program, OrcExecutorFunc func) * Returns: a character string */ const char * -orc_program_get_name (OrcProgram *program) +orc_program_get_name (OrcProgram * program) { return program->name; } @@ -288,13 +293,13 @@ orc_program_get_name (OrcProgram *program) * Returns: the index of the new variable */ int -orc_program_add_temporary (OrcProgram *program, int size, const char *name) +orc_program_add_temporary (OrcProgram * program, int size, const char *name) { int i = ORC_VAR_T1 + program->n_temp_vars; program->vars[i].vartype = ORC_VAR_TYPE_TEMP; program->vars[i].size = size; - program->vars[i].name = strdup(name); + program->vars[i].name = strdup (name); program->n_temp_vars++; return i; @@ -311,14 +316,14 @@ orc_program_add_temporary (OrcProgram *program, int size, const char *name) * Returns: the index of the new variable */ int -orc_program_dup_temporary (OrcProgram *program, int var, int j) +orc_program_dup_temporary (OrcProgram * program, int var, int j) { int i = ORC_VAR_T1 + program->n_temp_vars; program->vars[i].vartype = ORC_VAR_TYPE_TEMP; program->vars[i].size = program->vars[var].size; - program->vars[i].name = malloc (strlen(program->vars[var].name) + 10); - sprintf(program->vars[i].name, "%s.dup%d", program->vars[var].name, j); + program->vars[i].name = malloc (strlen (program->vars[var].name) + 10); + sprintf (program->vars[i].name, "%s.dup%d", program->vars[var].name, j); program->n_temp_vars++; return i; @@ -337,18 +342,19 @@ orc_program_dup_temporary (OrcProgram *program, int var, int j) * Returns: the index of the new variable */ int -orc_program_add_source_full (OrcProgram *program, int size, const char *name, +orc_program_add_source_full (OrcProgram * program, int size, const char *name, const char *type_name, int alignment) { int i = ORC_VAR_S1 + program->n_src_vars; program->vars[i].vartype = ORC_VAR_TYPE_SRC; program->vars[i].size = size; - if (alignment == 0) alignment = size; + if (alignment == 0) + alignment = size; program->vars[i].alignment = alignment; - program->vars[i].name = strdup(name); + program->vars[i].name = strdup (name); if (type_name) { - program->vars[i].type_name = strdup(type_name); + program->vars[i].type_name = strdup (type_name); } program->n_src_vars++; @@ -366,7 +372,7 @@ orc_program_add_source_full (OrcProgram *program, int size, const char *name, * Returns: the index of the new variable */ int -orc_program_add_source (OrcProgram *program, int size, const char *name) +orc_program_add_source (OrcProgram * program, int size, const char *name) { return orc_program_add_source_full (program, size, name, NULL, 0); } @@ -382,18 +388,19 @@ orc_program_add_source (OrcProgram *program, int size, const char *name) * Returns: the index of the new variable */ int -orc_program_add_destination_full (OrcProgram *program, int size, const char *name, - const char *type_name, int alignment) +orc_program_add_destination_full (OrcProgram * program, int size, + const char *name, const char *type_name, int alignment) { int i = ORC_VAR_D1 + program->n_dest_vars; program->vars[i].vartype = ORC_VAR_TYPE_DEST; program->vars[i].size = size; - if (alignment == 0) alignment = size; + if (alignment == 0) + alignment = size; program->vars[i].alignment = alignment; - program->vars[i].name = strdup(name); + program->vars[i].name = strdup (name); if (type_name) { - program->vars[i].type_name = strdup(type_name); + program->vars[i].type_name = strdup (type_name); } program->n_dest_vars++; @@ -411,7 +418,7 @@ orc_program_add_destination_full (OrcProgram *program, int size, const char *nam * Returns: the index of the new variable */ int -orc_program_add_destination (OrcProgram *program, int size, const char *name) +orc_program_add_destination (OrcProgram * program, int size, const char *name) { return orc_program_add_destination_full (program, size, name, NULL, 0); } @@ -428,40 +435,41 @@ orc_program_add_destination (OrcProgram *program, int size, const char *name) * Returns: the index of the new variable */ int -orc_program_add_constant (OrcProgram *program, int size, int value, const char *name) +orc_program_add_constant (OrcProgram * program, int size, int value, + const char *name) { int i; - + i = ORC_VAR_C1 + program->n_const_vars; program->vars[i].vartype = ORC_VAR_TYPE_CONST; program->vars[i].size = size; program->vars[i].value.i = value; - program->vars[i].name = strdup(name); + program->vars[i].name = strdup (name); program->n_const_vars++; return i; } int -orc_program_add_constant_int64 (OrcProgram *program, int size, +orc_program_add_constant_int64 (OrcProgram * program, int size, orc_int64 value, const char *name) { int i; - + i = ORC_VAR_C1 + program->n_const_vars; program->vars[i].vartype = ORC_VAR_TYPE_CONST; program->vars[i].size = size; program->vars[i].value.i = value; - program->vars[i].name = strdup(name); + program->vars[i].name = strdup (name); program->n_const_vars++; return i; } int -orc_program_add_constant_float (OrcProgram *program, int size, +orc_program_add_constant_float (OrcProgram * program, int size, float value, const char *name) { orc_union32 u; @@ -470,7 +478,7 @@ orc_program_add_constant_float (OrcProgram *program, int size, } int -orc_program_add_constant_double (OrcProgram *program, int size, +orc_program_add_constant_double (OrcProgram * program, int size, double value, const char *name) { orc_union64 u; @@ -479,7 +487,7 @@ orc_program_add_constant_double (OrcProgram *program, int size, } int -orc_program_add_constant_str (OrcProgram *program, int size, +orc_program_add_constant_str (OrcProgram * program, int size, const char *value, const char *name) { int i; @@ -517,7 +525,7 @@ orc_program_add_constant_str (OrcProgram *program, int size, } } - for(j=0;j<program->n_const_vars;j++){ + for (j = 0; j < program->n_const_vars; j++) { if (program->vars[ORC_VAR_C1 + j].value.i == program->vars[i].value.i) { return ORC_VAR_C1 + j; } @@ -525,7 +533,7 @@ orc_program_add_constant_str (OrcProgram *program, int size, program->vars[i].vartype = ORC_VAR_TYPE_CONST; program->vars[i].size = size; - program->vars[i].name = strdup(name); + program->vars[i].name = strdup (name); program->n_const_vars++; return i; @@ -542,14 +550,14 @@ orc_program_add_constant_str (OrcProgram *program, int size, * Returns: the index of the new variable */ int -orc_program_add_parameter (OrcProgram *program, int size, const char *name) +orc_program_add_parameter (OrcProgram * program, int size, const char *name) { int i = ORC_VAR_P1 + program->n_param_vars; program->vars[i].vartype = ORC_VAR_TYPE_PARAM; program->vars[i].param_type = ORC_PARAM_TYPE_INT; program->vars[i].size = size; - program->vars[i].name = strdup(name); + program->vars[i].name = strdup (name); program->n_param_vars++; return i; @@ -566,21 +574,22 @@ orc_program_add_parameter (OrcProgram *program, int size, const char *name) * Returns: the index of the new variable */ int -orc_program_add_parameter_float (OrcProgram *program, int size, const char *name) +orc_program_add_parameter_float (OrcProgram * program, int size, + const char *name) { int i = ORC_VAR_P1 + program->n_param_vars; program->vars[i].vartype = ORC_VAR_TYPE_PARAM; program->vars[i].param_type = ORC_PARAM_TYPE_FLOAT; program->vars[i].size = size; - program->vars[i].name = strdup(name); + program->vars[i].name = strdup (name); program->n_param_vars++; return i; } int -orc_program_add_parameter_double (OrcProgram *program, int size, +orc_program_add_parameter_double (OrcProgram * program, int size, const char *name) { int i = ORC_VAR_P1 + program->n_param_vars; @@ -588,14 +597,14 @@ orc_program_add_parameter_double (OrcProgram *program, int size, program->vars[i].vartype = ORC_VAR_TYPE_PARAM; program->vars[i].param_type = ORC_PARAM_TYPE_DOUBLE; program->vars[i].size = size; - program->vars[i].name = strdup(name); + program->vars[i].name = strdup (name); program->n_param_vars++; return i; } int -orc_program_add_parameter_int64 (OrcProgram *program, int size, +orc_program_add_parameter_int64 (OrcProgram * program, int size, const char *name) { int i = ORC_VAR_P1 + program->n_param_vars; @@ -603,7 +612,7 @@ orc_program_add_parameter_int64 (OrcProgram *program, int size, program->vars[i].vartype = ORC_VAR_TYPE_PARAM; program->vars[i].param_type = ORC_PARAM_TYPE_INT64; program->vars[i].size = size; - program->vars[i].name = strdup(name); + program->vars[i].name = strdup (name); program->n_param_vars++; return i; @@ -620,26 +629,26 @@ orc_program_add_parameter_int64 (OrcProgram *program, int size, * Returns: the index of the new variable */ int -orc_program_add_accumulator (OrcProgram *program, int size, const char *name) +orc_program_add_accumulator (OrcProgram * program, int size, const char *name) { int i = ORC_VAR_A1 + program->n_accum_vars; program->vars[i].vartype = ORC_VAR_TYPE_ACCUMULATOR; program->vars[i].size = size; - program->vars[i].name = strdup(name); + program->vars[i].name = strdup (name); program->n_param_vars++; return i; } void -orc_program_set_type_name (OrcProgram *program, int var, const char *type_name) +orc_program_set_type_name (OrcProgram * program, int var, const char *type_name) { - program->vars[var].type_name = strdup(type_name); + program->vars[var].type_name = strdup (type_name); } void -orc_program_set_var_alignment (OrcProgram *program, int var, int alignment) +orc_program_set_var_alignment (OrcProgram * program, int var, int alignment) { program->vars[var].alignment = alignment; if (alignment >= 16) { @@ -648,8 +657,7 @@ orc_program_set_var_alignment (OrcProgram *program, int var, int alignment) } void -orc_program_set_sampling_type (OrcProgram *program, int var, - int sampling_type) +orc_program_set_sampling_type (OrcProgram * program, int var, int sampling_type) { /* This doesn't do anything yet */ } @@ -665,7 +673,7 @@ orc_program_set_sampling_type (OrcProgram *program, int var, * @arg1. The instruction must take 2 operands. */ void -orc_program_append_ds (OrcProgram *program, const char *name, int arg0, +orc_program_append_ds (OrcProgram * program, const char *name, int arg0, int arg1) { OrcInstruction *insn; @@ -678,7 +686,7 @@ orc_program_append_ds (OrcProgram *program, const char *name, int arg0, } insn->dest_args[0] = arg0; insn->src_args[0] = arg1; - + program->n_insns++; } @@ -694,7 +702,7 @@ orc_program_append_ds (OrcProgram *program, const char *name, int arg0, * @arg1, and @arg2. The instruction must take 3 operands. */ void -orc_program_append (OrcProgram *program, const char *name, int arg0, +orc_program_append (OrcProgram * program, const char *name, int arg0, int arg1, int arg2) { OrcInstruction *insn; @@ -708,7 +716,7 @@ orc_program_append (OrcProgram *program, const char *name, int arg0, insn->dest_args[0] = arg0; insn->src_args[0] = arg1; insn->src_args[1] = arg2; - + program->n_insns++; } @@ -725,8 +733,8 @@ orc_program_append (OrcProgram *program, const char *name, int arg0, * @arg1, @arg2, and @arg3. */ void -orc_program_append_2 (OrcProgram *program, const char *name, unsigned int flags, - int arg0, int arg1, int arg2, int arg3) +orc_program_append_2 (OrcProgram * program, const char *name, + unsigned int flags, int arg0, int arg1, int arg2, int arg3) { OrcInstruction *insn; int args[4]; @@ -774,13 +782,14 @@ orc_program_append_2 (OrcProgram *program, const char *name, unsigned int flags, * Returns: the index of the variable */ int -orc_program_find_var_by_name (OrcProgram *program, const char *name) +orc_program_find_var_by_name (OrcProgram * program, const char *name) { int i; - if (name == NULL) return -1; + if (name == NULL) + return -1; - for(i=0;i<ORC_N_VARIABLES;i++){ + for (i = 0; i < ORC_N_VARIABLES; i++) { if (program->vars[i].name && strcmp (program->vars[i].name, name) == 0) { return i; } @@ -801,7 +810,7 @@ orc_program_find_var_by_name (OrcProgram *program, const char *name) * @arg1, and @arg2. The instruction must take 3 operands. */ void -orc_program_append_str (OrcProgram *program, const char *name, +orc_program_append_str (OrcProgram * program, const char *name, const char *arg1, const char *arg2, const char *arg3) { OrcInstruction *insn; @@ -820,7 +829,7 @@ orc_program_append_str (OrcProgram *program, const char *name, insn->src_args[0] = orc_program_find_var_by_name (program, arg2); insn->src_args[1] = orc_program_find_var_by_name (program, arg3); } - + program->n_insns++; } @@ -838,7 +847,7 @@ orc_program_append_str (OrcProgram *program, const char *name, * @arg1, @arg2, and @arg3. */ void -orc_program_append_str_2 (OrcProgram *program, const char *name, +orc_program_append_str_2 (OrcProgram * program, const char *name, unsigned int flags, const char *arg1, const char *arg2, const char *arg3, const char *arg4) { @@ -888,7 +897,7 @@ orc_program_append_str_2 (OrcProgram *program, const char *name, * @arg2. The instruction must take 2 operands. */ void -orc_program_append_ds_str (OrcProgram *program, const char *name, +orc_program_append_ds_str (OrcProgram * program, const char *name, const char *arg1, const char *arg2) { OrcInstruction *insn; @@ -901,12 +910,12 @@ orc_program_append_ds_str (OrcProgram *program, const char *name, } insn->dest_args[0] = orc_program_find_var_by_name (program, arg1); insn->src_args[0] = orc_program_find_var_by_name (program, arg2); - + program->n_insns++; } void -orc_program_append_dds_str (OrcProgram *program, const char *name, +orc_program_append_dds_str (OrcProgram * program, const char *name, const char *arg1, const char *arg2, const char *arg3) { OrcInstruction *insn; @@ -920,7 +929,7 @@ orc_program_append_dds_str (OrcProgram *program, const char *name, insn->dest_args[0] = orc_program_find_var_by_name (program, arg1); insn->dest_args[1] = orc_program_find_var_by_name (program, arg2); insn->src_args[0] = orc_program_find_var_by_name (program, arg3); - + program->n_insns++; } @@ -935,7 +944,7 @@ orc_program_append_dds_str (OrcProgram *program, const char *name, * Returns: a character string */ const char * -orc_program_get_asm_code (OrcProgram *program) +orc_program_get_asm_code (OrcProgram * program) { return program->asm_code; } @@ -951,9 +960,10 @@ orc_program_get_asm_code (OrcProgram *program) * Returns: a character string */ const char * -orc_program_get_error (OrcProgram *program) +orc_program_get_error (OrcProgram * program) { - if (program->error_msg) return program->error_msg; + if (program->error_msg) + return program->error_msg; return ""; } @@ -966,17 +976,17 @@ orc_program_get_error (OrcProgram *program) * Returns: the number of bytes */ int -orc_program_get_max_array_size (OrcProgram *program) +orc_program_get_max_array_size (OrcProgram * program) { int i; int max; max = 0; - for(i=0;i<ORC_N_VARIABLES;i++){ + for (i = 0; i < ORC_N_VARIABLES; i++) { if (program->vars[i].size) { if (program->vars[i].vartype == ORC_VAR_TYPE_SRC || program->vars[i].vartype == ORC_VAR_TYPE_DEST) { - max = MAX(max, program->vars[i].size); + max = MAX (max, program->vars[i].size); } } } @@ -993,16 +1003,16 @@ orc_program_get_max_array_size (OrcProgram *program) * Returns: the number of bytes */ int -orc_program_get_max_accumulator_size (OrcProgram *program) +orc_program_get_max_accumulator_size (OrcProgram * program) { int i; int max; max = 0; - for(i=0;i<ORC_N_VARIABLES;i++){ + for (i = 0; i < ORC_N_VARIABLES; i++) { if (program->vars[i].size) { if (program->vars[i].vartype == ORC_VAR_TYPE_ACCUMULATOR) { - max = MAX(max, program->vars[i].size); + max = MAX (max, program->vars[i].size); } } } @@ -1054,23 +1064,22 @@ orc_get_cpu_name (void) } void -orc_program_reset (OrcProgram *program) +orc_program_reset (OrcProgram * program) { if (program->orccode) { orc_code_free (program->orccode); program->orccode = NULL; } if (program->asm_code) { - free(program->asm_code); + free (program->asm_code); program->asm_code = NULL; } } OrcCode * -orc_program_take_code (OrcProgram *program) +orc_program_take_code (OrcProgram * program) { OrcCode *code = program->orccode; program->orccode = NULL; return code; } - diff --git a/orc/orcrule.c b/orc/orcrule.c index 4cd9910..58dd719 100644 --- a/orc/orcrule.c +++ b/orc/orcrule.c @@ -16,9 +16,8 @@ void -orc_rule_register (OrcRuleSet *rule_set, - const char *opcode_name, - OrcRuleEmitFunc emit, void *emit_user) +orc_rule_register (OrcRuleSet * rule_set, + const char *opcode_name, OrcRuleEmitFunc emit, void *emit_user) { int i; OrcOpcodeSet *opcode_set; @@ -27,11 +26,10 @@ orc_rule_register (OrcRuleSet *rule_set, i = orc_opcode_set_find_by_name (opcode_set, opcode_name); if (i == -1) { - ORC_ERROR("failed to find opcode \"%s\"", opcode_name); + ORC_ERROR ("failed to find opcode \"%s\"", opcode_name); return; } rule_set->rules[i].emit = emit; rule_set->rules[i].emit_user = emit_user; } - diff --git a/orc/orcrules-altivec.c b/orc/orcrules-altivec.c index 69876e3..51c3bd1 100644 --- a/orc/orcrules-altivec.c +++ b/orc/orcrules-altivec.c @@ -16,53 +16,51 @@ /* rules */ static void -powerpc_rule_loadpX (OrcCompiler *compiler, void *user, OrcInstruction *insn) +powerpc_rule_loadpX (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; - int size = ORC_PTR_TO_INT(user); + int size = ORC_PTR_TO_INT (user); if (src->vartype == ORC_VAR_TYPE_PARAM) { int greg = compiler->gp_tmpreg; powerpc_emit_addi (compiler, greg, POWERPC_R3, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[insn->src_args[0]])); - ORC_ASM_CODE(compiler," lvewx %s, 0, %s\n", - powerpc_get_regname (dest->alloc), - powerpc_get_regname (greg)); - powerpc_emit_X (compiler, 0x7c00008e, powerpc_regnum(dest->alloc), - 0, powerpc_regnum(greg)); - - ORC_ASM_CODE(compiler," lvsl %s, 0, %s\n", - powerpc_get_regname (POWERPC_V0), - powerpc_get_regname (greg)); - powerpc_emit_X (compiler, 0x7c00000c, powerpc_regnum(POWERPC_V0), - 0, powerpc_regnum(greg)); + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[insn->src_args[0]])); + ORC_ASM_CODE (compiler, " lvewx %s, 0, %s\n", + powerpc_get_regname (dest->alloc), powerpc_get_regname (greg)); + powerpc_emit_X (compiler, 0x7c00008e, powerpc_regnum (dest->alloc), + 0, powerpc_regnum (greg)); + + ORC_ASM_CODE (compiler, " lvsl %s, 0, %s\n", + powerpc_get_regname (POWERPC_V0), powerpc_get_regname (greg)); + powerpc_emit_X (compiler, 0x7c00000c, powerpc_regnum (POWERPC_V0), + 0, powerpc_regnum (greg)); powerpc_emit_vperm (compiler, dest->alloc, dest->alloc, dest->alloc, POWERPC_V0); switch (size) { case 1: - ORC_ASM_CODE(compiler," vspltb %s, %s, 3\n", + ORC_ASM_CODE (compiler, " vspltb %s, %s, 3\n", powerpc_get_regname (dest->alloc), powerpc_get_regname (dest->alloc)); powerpc_emit_VX (compiler, 0x1000020c, - powerpc_regnum(dest->alloc), 3, powerpc_regnum(dest->alloc)); + powerpc_regnum (dest->alloc), 3, powerpc_regnum (dest->alloc)); break; case 2: - ORC_ASM_CODE(compiler," vsplth %s, %s, 1\n", + ORC_ASM_CODE (compiler, " vsplth %s, %s, 1\n", powerpc_get_regname (dest->alloc), powerpc_get_regname (dest->alloc)); powerpc_emit_VX (compiler, 0x1000024c, - powerpc_regnum(dest->alloc), 1, powerpc_regnum(dest->alloc)); + powerpc_regnum (dest->alloc), 1, powerpc_regnum (dest->alloc)); break; case 4: - ORC_ASM_CODE(compiler," vspltw %s, %s, 0\n", + ORC_ASM_CODE (compiler, " vspltw %s, %s, 0\n", powerpc_get_regname (dest->alloc), powerpc_get_regname (dest->alloc)); powerpc_emit_VX (compiler, 0x1000028c, - powerpc_regnum(dest->alloc), 0, powerpc_regnum(dest->alloc)); + powerpc_regnum (dest->alloc), 0, powerpc_regnum (dest->alloc)); break; } } else { @@ -71,10 +69,10 @@ powerpc_rule_loadpX (OrcCompiler *compiler, void *user, OrcInstruction *insn) switch (size) { case 1: if (value < 16 && value >= -16) { - ORC_ASM_CODE(compiler," vspltisb %s, %d\n", - powerpc_get_regname(dest->alloc), value&0x1f); - powerpc_emit_VX(compiler, 0x1000030c, - powerpc_regnum(dest->alloc), value & 0x1f, 0); + ORC_ASM_CODE (compiler, " vspltisb %s, %d\n", + powerpc_get_regname (dest->alloc), value & 0x1f); + powerpc_emit_VX (compiler, 0x1000030c, + powerpc_regnum (dest->alloc), value & 0x1f, 0); } else { value &= 0xff; value |= value << 8; @@ -85,10 +83,10 @@ powerpc_rule_loadpX (OrcCompiler *compiler, void *user, OrcInstruction *insn) break; case 2: if (value < 16 && value >= -16) { - ORC_ASM_CODE(compiler," vspltish %s, %d\n", - powerpc_get_regname(dest->alloc), value&0x1f); - powerpc_emit_VX(compiler, 0x1000034c, - powerpc_regnum(dest->alloc), value & 0x1f, 0); + ORC_ASM_CODE (compiler, " vspltish %s, %d\n", + powerpc_get_regname (dest->alloc), value & 0x1f); + powerpc_emit_VX (compiler, 0x1000034c, + powerpc_regnum (dest->alloc), value & 0x1f, 0); } else { value &= 0xffff; value |= value << 16; @@ -98,10 +96,10 @@ powerpc_rule_loadpX (OrcCompiler *compiler, void *user, OrcInstruction *insn) break; case 4: if (value < 16 && value >= -16) { - ORC_ASM_CODE(compiler," vspltisw %s, %d\n", - powerpc_get_regname(dest->alloc), value&0x1f); - powerpc_emit_VX(compiler, 0x1000038c, - powerpc_regnum(dest->alloc), value & 0x1f, 0); + ORC_ASM_CODE (compiler, " vspltisw %s, %d\n", + powerpc_get_regname (dest->alloc), value & 0x1f); + powerpc_emit_VX (compiler, 0x1000038c, + powerpc_regnum (dest->alloc), value & 0x1f, 0); } else { powerpc_load_long_constant (compiler, dest->alloc, value, value, value, value); @@ -113,7 +111,7 @@ powerpc_rule_loadpX (OrcCompiler *compiler, void *user, OrcInstruction *insn) } static void -powerpc_rule_loadX (OrcCompiler *compiler, void *user, OrcInstruction *insn) +powerpc_rule_loadX (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; @@ -122,49 +120,49 @@ powerpc_rule_loadX (OrcCompiler *compiler, void *user, OrcInstruction *insn) switch (size) { case 1: - ORC_ASM_CODE(compiler," lvebx %s, 0, %s\n", + ORC_ASM_CODE (compiler, " lvebx %s, 0, %s\n", powerpc_get_regname (dest->alloc), powerpc_get_regname (src->ptr_register)); - powerpc_emit_X (compiler, 0x7c00000e, powerpc_regnum(dest->alloc), - 0, powerpc_regnum(src->ptr_register)); + powerpc_emit_X (compiler, 0x7c00000e, powerpc_regnum (dest->alloc), + 0, powerpc_regnum (src->ptr_register)); break; case 2: - ORC_ASM_CODE(compiler," lvehx %s, 0, %s\n", + ORC_ASM_CODE (compiler, " lvehx %s, 0, %s\n", powerpc_get_regname (dest->alloc), powerpc_get_regname (src->ptr_register)); - powerpc_emit_X (compiler, 0x7c00004e, powerpc_regnum(dest->alloc), - 0, powerpc_regnum(src->ptr_register)); + powerpc_emit_X (compiler, 0x7c00004e, powerpc_regnum (dest->alloc), + 0, powerpc_regnum (src->ptr_register)); break; case 4: - ORC_ASM_CODE(compiler," lvewx %s, 0, %s\n", + ORC_ASM_CODE (compiler, " lvewx %s, 0, %s\n", powerpc_get_regname (dest->alloc), powerpc_get_regname (src->ptr_register)); - powerpc_emit_X (compiler, 0x7c00008e, powerpc_regnum(dest->alloc), - 0, powerpc_regnum(src->ptr_register)); + powerpc_emit_X (compiler, 0x7c00008e, powerpc_regnum (dest->alloc), + 0, powerpc_regnum (src->ptr_register)); break; case 8: case 16: - ORC_ASM_CODE(compiler," lvx %s, 0, %s\n", + ORC_ASM_CODE (compiler, " lvx %s, 0, %s\n", powerpc_get_regname (dest->alloc), powerpc_get_regname (src->ptr_register)); - powerpc_emit_X (compiler, 0x7c0000ce, powerpc_regnum(dest->alloc), - 0, powerpc_regnum(src->ptr_register)); + powerpc_emit_X (compiler, 0x7c0000ce, powerpc_regnum (dest->alloc), + 0, powerpc_regnum (src->ptr_register)); break; default: - ORC_COMPILER_ERROR(compiler,"bad load size %d", + ORC_COMPILER_ERROR (compiler, "bad load size %d", src->size << compiler->loop_shift); break; } - ORC_ASM_CODE(compiler," lvsl %s, 0, %s\n", - powerpc_get_regname (perm), - powerpc_get_regname (src->ptr_register)); - powerpc_emit_X (compiler, 0x7c00000c, powerpc_regnum(perm), - 0, powerpc_regnum(src->ptr_register)); + ORC_ASM_CODE (compiler, " lvsl %s, 0, %s\n", + powerpc_get_regname (perm), powerpc_get_regname (src->ptr_register)); + powerpc_emit_X (compiler, 0x7c00000c, powerpc_regnum (perm), + 0, powerpc_regnum (src->ptr_register)); powerpc_emit_vperm (compiler, dest->alloc, dest->alloc, dest->alloc, perm); } static void -powerpc_rule_loadoffX (OrcCompiler *compiler, void *user, OrcInstruction *insn) +powerpc_rule_loadoffX (OrcCompiler * compiler, void *user, + OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; @@ -173,7 +171,7 @@ powerpc_rule_loadoffX (OrcCompiler *compiler, void *user, OrcInstruction *insn) int offset; if (compiler->vars[insn->src_args[1]].vartype != ORC_VAR_TYPE_CONST) { - ORC_COMPILER_ERROR(compiler, "Rule only works with consts"); + ORC_COMPILER_ERROR (compiler, "Rule only works with consts"); return; } @@ -181,59 +179,58 @@ powerpc_rule_loadoffX (OrcCompiler *compiler, void *user, OrcInstruction *insn) powerpc_emit_addi (compiler, compiler->gp_tmpreg, POWERPC_R0, offset); switch (size) { case 1: - ORC_ASM_CODE(compiler," lvebx %s, %s, %s\n", + ORC_ASM_CODE (compiler, " lvebx %s, %s, %s\n", powerpc_get_regname (dest->alloc), powerpc_get_regname (compiler->gp_tmpreg), powerpc_get_regname (src->ptr_register)); - powerpc_emit_X (compiler, 0x7c00000e, powerpc_regnum(dest->alloc), - powerpc_regnum(compiler->gp_tmpreg), - powerpc_regnum(src->ptr_register)); + powerpc_emit_X (compiler, 0x7c00000e, powerpc_regnum (dest->alloc), + powerpc_regnum (compiler->gp_tmpreg), + powerpc_regnum (src->ptr_register)); break; case 2: - ORC_ASM_CODE(compiler," lvehx %s, %s, %s\n", + ORC_ASM_CODE (compiler, " lvehx %s, %s, %s\n", powerpc_get_regname (dest->alloc), powerpc_get_regname (compiler->gp_tmpreg), powerpc_get_regname (src->ptr_register)); - powerpc_emit_X (compiler, 0x7c00004e, powerpc_regnum(dest->alloc), - powerpc_regnum(compiler->gp_tmpreg), - powerpc_regnum(src->ptr_register)); + powerpc_emit_X (compiler, 0x7c00004e, powerpc_regnum (dest->alloc), + powerpc_regnum (compiler->gp_tmpreg), + powerpc_regnum (src->ptr_register)); break; case 4: - ORC_ASM_CODE(compiler," lvewx %s, %s, %s\n", + ORC_ASM_CODE (compiler, " lvewx %s, %s, %s\n", powerpc_get_regname (dest->alloc), powerpc_get_regname (compiler->gp_tmpreg), powerpc_get_regname (src->ptr_register)); - powerpc_emit_X (compiler, 0x7c00008e, powerpc_regnum(dest->alloc), - powerpc_regnum(compiler->gp_tmpreg), - powerpc_regnum(src->ptr_register)); + powerpc_emit_X (compiler, 0x7c00008e, powerpc_regnum (dest->alloc), + powerpc_regnum (compiler->gp_tmpreg), + powerpc_regnum (src->ptr_register)); break; case 8: case 16: - ORC_ASM_CODE(compiler," lvx %s, %s, %s\n", + ORC_ASM_CODE (compiler, " lvx %s, %s, %s\n", powerpc_get_regname (dest->alloc), powerpc_get_regname (compiler->gp_tmpreg), powerpc_get_regname (src->ptr_register)); - powerpc_emit_X (compiler, 0x7c0000ce, powerpc_regnum(dest->alloc), - powerpc_regnum(compiler->gp_tmpreg), - powerpc_regnum(src->ptr_register)); + powerpc_emit_X (compiler, 0x7c0000ce, powerpc_regnum (dest->alloc), + powerpc_regnum (compiler->gp_tmpreg), + powerpc_regnum (src->ptr_register)); break; default: - ORC_COMPILER_ERROR(compiler,"bad load size %d", + ORC_COMPILER_ERROR (compiler, "bad load size %d", src->size << compiler->loop_shift); break; } - ORC_ASM_CODE(compiler," lvsl %s, %s, %s\n", + ORC_ASM_CODE (compiler, " lvsl %s, %s, %s\n", powerpc_get_regname (perm), powerpc_get_regname (compiler->gp_tmpreg), powerpc_get_regname (src->ptr_register)); - powerpc_emit_X (compiler, 0x7c00000c, powerpc_regnum(perm), - powerpc_regnum(compiler->gp_tmpreg), - powerpc_regnum(src->ptr_register)); + powerpc_emit_X (compiler, 0x7c00000c, powerpc_regnum (perm), + powerpc_regnum (compiler->gp_tmpreg), powerpc_regnum (src->ptr_register)); powerpc_emit_vperm (compiler, dest->alloc, dest->alloc, dest->alloc, perm); } static void -powerpc_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn) +powerpc_rule_storeX (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; @@ -241,69 +238,58 @@ powerpc_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn) int perm = orc_compiler_get_temp_reg (compiler); int tmp = orc_compiler_get_temp_reg (compiler); - ORC_ASM_CODE(compiler," lvsr %s, 0, %s\n", - powerpc_get_regname (perm), - powerpc_get_regname (dest->ptr_register)); - powerpc_emit_X (compiler, 0x7c00004c, powerpc_regnum(perm), - 0, powerpc_regnum(dest->ptr_register)); + ORC_ASM_CODE (compiler, " lvsr %s, 0, %s\n", + powerpc_get_regname (perm), powerpc_get_regname (dest->ptr_register)); + powerpc_emit_X (compiler, 0x7c00004c, powerpc_regnum (perm), + 0, powerpc_regnum (dest->ptr_register)); powerpc_emit_vperm (compiler, tmp, src->alloc, src->alloc, perm); switch (size) { case 1: - ORC_ASM_CODE(compiler," stvebx %s, 0, %s\n", - powerpc_get_regname (tmp), - powerpc_get_regname (dest->ptr_register)); + ORC_ASM_CODE (compiler, " stvebx %s, 0, %s\n", + powerpc_get_regname (tmp), powerpc_get_regname (dest->ptr_register)); powerpc_emit_X (compiler, 0x7c00010e, - powerpc_regnum(tmp), - 0, powerpc_regnum(dest->ptr_register)); + powerpc_regnum (tmp), 0, powerpc_regnum (dest->ptr_register)); break; case 2: - ORC_ASM_CODE(compiler," stvehx %s, 0, %s\n", - powerpc_get_regname (tmp), - powerpc_get_regname (dest->ptr_register)); + ORC_ASM_CODE (compiler, " stvehx %s, 0, %s\n", + powerpc_get_regname (tmp), powerpc_get_regname (dest->ptr_register)); powerpc_emit_X (compiler, 0x7c00014e, - powerpc_regnum(tmp), - 0, powerpc_regnum(dest->ptr_register)); + powerpc_regnum (tmp), 0, powerpc_regnum (dest->ptr_register)); break; case 4: - ORC_ASM_CODE(compiler," stvewx %s, 0, %s\n", - powerpc_get_regname (tmp), - powerpc_get_regname (dest->ptr_register)); + ORC_ASM_CODE (compiler, " stvewx %s, 0, %s\n", + powerpc_get_regname (tmp), powerpc_get_regname (dest->ptr_register)); powerpc_emit_X (compiler, 0x7c00018e, - powerpc_regnum(tmp), - 0, powerpc_regnum(dest->ptr_register)); + powerpc_regnum (tmp), 0, powerpc_regnum (dest->ptr_register)); break; case 8: - ORC_ASM_CODE(compiler," stvewx %s, 0, %s\n", - powerpc_get_regname (tmp), - powerpc_get_regname (dest->ptr_register)); + ORC_ASM_CODE (compiler, " stvewx %s, 0, %s\n", + powerpc_get_regname (tmp), powerpc_get_regname (dest->ptr_register)); powerpc_emit_X (compiler, 0x7c00018e, - powerpc_regnum(tmp), - 0, powerpc_regnum(dest->ptr_register)); + powerpc_regnum (tmp), 0, powerpc_regnum (dest->ptr_register)); powerpc_emit_D (compiler, "addi", 0x38000000, compiler->gp_tmpreg, POWERPC_R0, 4); - ORC_ASM_CODE(compiler," stvewx %s, %s, %s\n", + ORC_ASM_CODE (compiler, " stvewx %s, %s, %s\n", powerpc_get_regname (tmp), powerpc_get_regname (compiler->gp_tmpreg), powerpc_get_regname (dest->ptr_register)); powerpc_emit_X (compiler, 0x7c00018e, - powerpc_regnum(tmp), - powerpc_regnum(compiler->gp_tmpreg), - powerpc_regnum(dest->ptr_register)); + powerpc_regnum (tmp), + powerpc_regnum (compiler->gp_tmpreg), + powerpc_regnum (dest->ptr_register)); break; case 16: - ORC_ASM_CODE(compiler," stvx %s, 0, %s\n", - powerpc_get_regname (tmp), - powerpc_get_regname (dest->ptr_register)); + ORC_ASM_CODE (compiler, " stvx %s, 0, %s\n", + powerpc_get_regname (tmp), powerpc_get_regname (dest->ptr_register)); powerpc_emit_X (compiler, 0x7c0001ce, - powerpc_regnum(tmp), - 0, powerpc_regnum(dest->ptr_register)); + powerpc_regnum (tmp), 0, powerpc_regnum (dest->ptr_register)); break; default: - ORC_COMPILER_ERROR(compiler,"bad store size %d", + ORC_COMPILER_ERROR (compiler, "bad store size %d", dest->size << compiler->loop_shift); break; } @@ -339,84 +325,84 @@ powerpc_rule_ ## name (OrcCompiler *p, void *user, OrcInstruction *insn) \ } \ } -RULE(addb, "vaddubm", 0x10000000) -RULE(addssb, "vaddsbs", 0x10000300) -RULE(addusb, "vaddubs", 0x10000200) -RULE(andb, "vand", 0x10000404) +RULE (addb, "vaddubm", 0x10000000) + RULE (addssb, "vaddsbs", 0x10000300) + RULE (addusb, "vaddubs", 0x10000200) + RULE (andb, "vand", 0x10000404) //RULE(andnb, "vandc", 0x10000444) -RULE(avgsb, "vavgsb", 0x10000502) -RULE(avgub, "vavgub", 0x10000402) -RULE(cmpeqb, "vcmpequb", 0x10000006) -RULE(cmpgtsb, "vcmpgtsb", 0x10000306) -RULE(maxsb, "vmaxsb", 0x10000102) -RULE(maxub, "vmaxub", 0x10000002) -RULE(minsb, "vminsb", 0x10000302) -RULE(minub, "vminub", 0x10000202) -RULE(orb, "vor", 0x10000484) -RULE_SHIFT(shlb, "vslb", 0x10000104) -RULE_SHIFT(shrsb, "vsrab", 0x10000304) -RULE_SHIFT(shrub, "vsrb", 0x10000204) -RULE(subb, "vsububm", 0x10000400) -RULE(subssb, "vsubsbs", 0x10000700) -RULE(subusb, "vsububs", 0x10000600) -RULE(xorb, "vxor", 0x100004c4) - -RULE(addw, "vadduhm", 0x10000040) -RULE(addssw, "vaddshs", 0x10000340) -RULE(addusw, "vadduhs", 0x10000240) -RULE(andw, "vand", 0x10000404) + RULE (avgsb, "vavgsb", 0x10000502) + RULE (avgub, "vavgub", 0x10000402) + RULE (cmpeqb, "vcmpequb", 0x10000006) + RULE (cmpgtsb, "vcmpgtsb", 0x10000306) + RULE (maxsb, "vmaxsb", 0x10000102) + RULE (maxub, "vmaxub", 0x10000002) + RULE (minsb, "vminsb", 0x10000302) + RULE (minub, "vminub", 0x10000202) + RULE (orb, "vor", 0x10000484) + RULE_SHIFT (shlb, "vslb", 0x10000104) + RULE_SHIFT (shrsb, "vsrab", 0x10000304) + RULE_SHIFT (shrub, "vsrb", 0x10000204) + RULE (subb, "vsububm", 0x10000400) + RULE (subssb, "vsubsbs", 0x10000700) + RULE (subusb, "vsububs", 0x10000600) + RULE (xorb, "vxor", 0x100004c4) + + RULE (addw, "vadduhm", 0x10000040) + RULE (addssw, "vaddshs", 0x10000340) + RULE (addusw, "vadduhs", 0x10000240) + RULE (andw, "vand", 0x10000404) //RULE(andnw, "vandc", 0x10000444) -RULE(avgsw, "vavgsh", 0x10000542) -RULE(avguw, "vavguh", 0x10000442) -RULE(cmpeqw, "vcmpequh", 0x10000046) -RULE(cmpgtsw, "vcmpgtsh", 0x10000346) -RULE(maxsw, "vmaxsh", 0x10000142) -RULE(maxuw, "vmaxuh", 0x10000042) -RULE(minsw, "vminsh", 0x10000342) -RULE(minuw, "vminuh", 0x10000242) -RULE(orw, "vor", 0x10000484) -RULE_SHIFT(shlw, "vslh", 0x10000144) -RULE_SHIFT(shrsw, "vsrah", 0x10000344) -RULE_SHIFT(shruw, "vsrh", 0x10000244) -RULE(subw, "vsubuhm", 0x10000440) -RULE(subssw, "vsubshs", 0x10000740) -RULE(subusw, "vsubuhs", 0x10000640) -RULE(xorw, "vxor", 0x100004c4) - -RULE(addl, "vadduwm", 0x10000080) -RULE(addssl, "vaddsws", 0x10000380) -RULE(addusl, "vadduws", 0x10000280) -RULE(andl, "vand", 0x10000404) + RULE (avgsw, "vavgsh", 0x10000542) + RULE (avguw, "vavguh", 0x10000442) + RULE (cmpeqw, "vcmpequh", 0x10000046) + RULE (cmpgtsw, "vcmpgtsh", 0x10000346) + RULE (maxsw, "vmaxsh", 0x10000142) + RULE (maxuw, "vmaxuh", 0x10000042) + RULE (minsw, "vminsh", 0x10000342) + RULE (minuw, "vminuh", 0x10000242) + RULE (orw, "vor", 0x10000484) + RULE_SHIFT (shlw, "vslh", 0x10000144) + RULE_SHIFT (shrsw, "vsrah", 0x10000344) + RULE_SHIFT (shruw, "vsrh", 0x10000244) + RULE (subw, "vsubuhm", 0x10000440) + RULE (subssw, "vsubshs", 0x10000740) + RULE (subusw, "vsubuhs", 0x10000640) + RULE (xorw, "vxor", 0x100004c4) + + RULE (addl, "vadduwm", 0x10000080) + RULE (addssl, "vaddsws", 0x10000380) + RULE (addusl, "vadduws", 0x10000280) + RULE (andl, "vand", 0x10000404) //RULE(andnl, "vandc", 0x10000444) -RULE(avgsl, "vavgsw", 0x10000582) -RULE(avgul, "vavguw", 0x10000482) -RULE(cmpeql, "vcmpequw", 0x10000086) -RULE(cmpgtsl, "vcmpgtsw", 0x10000386) -RULE(maxsl, "vmaxsw", 0x10000182) -RULE(maxul, "vmaxuw", 0x10000082) -RULE(minsl, "vminsw", 0x10000382) -RULE(minul, "vminuw", 0x10000282) -RULE(orl, "vor", 0x10000484) -RULE_SHIFT(shll, "vslw", 0x10000184) -RULE_SHIFT(shrsl, "vsraw", 0x10000384) -RULE_SHIFT(shrul, "vsrw", 0x10000284) -RULE(subl, "vsubuwm", 0x10000480) -RULE(subssl, "vsubsws", 0x10000780) -RULE(subusl, "vsubuws", 0x10000680) -RULE(xorl, "vxor", 0x100004c4) - -RULE(andq, "vand", 0x10000404) -RULE(orq, "vor", 0x10000484) -RULE(xorq, "vxor", 0x100004c4) - -RULE(addf, "vaddfp", 0x1000000a) -RULE(subf, "vsubfp", 0x1000004a) -RULE(maxf, "vmaxfp", 0x1000040a) -RULE(minf, "vminfp", 0x1000044a) -RULE(cmpeqf, "vcmpeqfp", 0x100000c6) - -static void -powerpc_rule_andnX (OrcCompiler *p, void *user, OrcInstruction *insn) + RULE (avgsl, "vavgsw", 0x10000582) + RULE (avgul, "vavguw", 0x10000482) + RULE (cmpeql, "vcmpequw", 0x10000086) + RULE (cmpgtsl, "vcmpgtsw", 0x10000386) + RULE (maxsl, "vmaxsw", 0x10000182) + RULE (maxul, "vmaxuw", 0x10000082) + RULE (minsl, "vminsw", 0x10000382) + RULE (minul, "vminuw", 0x10000282) + RULE (orl, "vor", 0x10000484) + RULE_SHIFT (shll, "vslw", 0x10000184) + RULE_SHIFT (shrsl, "vsraw", 0x10000384) + RULE_SHIFT (shrul, "vsrw", 0x10000284) + RULE (subl, "vsubuwm", 0x10000480) + RULE (subssl, "vsubsws", 0x10000780) + RULE (subusl, "vsubuws", 0x10000680) + RULE (xorl, "vxor", 0x100004c4) + + RULE (andq, "vand", 0x10000404) + RULE (orq, "vor", 0x10000484) + RULE (xorq, "vxor", 0x100004c4) + + RULE (addf, "vaddfp", 0x1000000a) + RULE (subf, "vsubfp", 0x1000004a) + RULE (maxf, "vmaxfp", 0x1000040a) + RULE (minf, "vminfp", 0x1000044a) + RULE (cmpeqf, "vcmpeqfp", 0x100000c6) + + static void + powerpc_rule_andnX (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -426,7 +412,7 @@ powerpc_rule_andnX (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_copyX (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_copyX (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -435,7 +421,7 @@ powerpc_rule_copyX (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_mullb (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_mullb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -446,7 +432,7 @@ powerpc_rule_mullb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_mulhsb (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_mulhsb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -456,7 +442,7 @@ powerpc_rule_mulhsb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_mulhub (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_mulhub (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -466,7 +452,7 @@ powerpc_rule_mulhub (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_mulhsw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_mulhsw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -476,7 +462,7 @@ powerpc_rule_mulhsw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_mulhuw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_mulhuw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -486,7 +472,7 @@ powerpc_rule_mulhuw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_mullw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_mullw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -498,7 +484,7 @@ powerpc_rule_mullw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convsbw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convsbw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -507,7 +493,7 @@ powerpc_rule_convsbw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convswl (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convswl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -516,7 +502,7 @@ powerpc_rule_convswl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convubw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convubw (OrcCompiler * p, void *user, OrcInstruction * insn) { int reg = powerpc_get_constant (p, ORC_CONST_ZERO, 0); int src1 = ORC_SRC_ARG (p, insn, 0); @@ -526,7 +512,7 @@ powerpc_rule_convubw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convuwl (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convuwl (OrcCompiler * p, void *user, OrcInstruction * insn) { int reg = powerpc_get_constant (p, ORC_CONST_ZERO, 0); int src1 = ORC_SRC_ARG (p, insn, 0); @@ -536,7 +522,7 @@ powerpc_rule_convuwl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convssswb (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convssswb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -545,7 +531,7 @@ powerpc_rule_convssswb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convssslw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convssslw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -554,7 +540,7 @@ powerpc_rule_convssslw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convsuswb (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convsuswb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -563,7 +549,7 @@ powerpc_rule_convsuswb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convsuslw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convsuslw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -572,7 +558,7 @@ powerpc_rule_convsuslw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convuuswb (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convuuswb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -581,7 +567,7 @@ powerpc_rule_convuuswb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convuuslw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convuuslw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -590,7 +576,7 @@ powerpc_rule_convuuslw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convwb (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convwb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -599,7 +585,7 @@ powerpc_rule_convwb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convlw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convlw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -608,7 +594,7 @@ powerpc_rule_convlw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_mulsbw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_mulsbw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -618,7 +604,7 @@ powerpc_rule_mulsbw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_mulubw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_mulubw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -628,7 +614,7 @@ powerpc_rule_mulubw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_mulswl (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_mulswl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -638,7 +624,7 @@ powerpc_rule_mulswl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_muluwl (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_muluwl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -648,7 +634,7 @@ powerpc_rule_muluwl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_accw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_accw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -657,7 +643,7 @@ powerpc_rule_accw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_accl (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_accl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -666,7 +652,7 @@ powerpc_rule_accl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_accsadubl (OrcCompiler * p, void *user, OrcInstruction * insn) { int tmp1 = p->tmpreg; int tmp2 = POWERPC_V31; @@ -693,7 +679,7 @@ powerpc_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_signb (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_signb (OrcCompiler * p, void *user, OrcInstruction * insn) { int reg; int src1 = ORC_SRC_ARG (p, insn, 0); @@ -706,20 +692,20 @@ powerpc_rule_signb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_signw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_signw (OrcCompiler * p, void *user, OrcInstruction * insn) { int reg; int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); reg = powerpc_get_constant (p, ORC_CONST_SPLAT_W, 1); - powerpc_emit_vminsh(p, dest, src1, reg); + powerpc_emit_vminsh (p, dest, src1, reg); reg = powerpc_get_constant (p, ORC_CONST_SPLAT_W, -1); - powerpc_emit_vmaxsh(p, dest, dest, reg); + powerpc_emit_vmaxsh (p, dest, dest, reg); } static void -powerpc_rule_signl (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_signl (OrcCompiler * p, void *user, OrcInstruction * insn) { int reg; int src1 = ORC_SRC_ARG (p, insn, 0); @@ -732,7 +718,7 @@ powerpc_rule_signl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_select1wb (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_select1wb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -741,7 +727,7 @@ powerpc_rule_select1wb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_select0wb (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_select0wb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -753,7 +739,7 @@ powerpc_rule_select0wb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_select1lw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_select1lw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -762,7 +748,7 @@ powerpc_rule_select1lw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_select0lw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_select0lw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -774,31 +760,31 @@ powerpc_rule_select0lw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_select1ql (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_select1ql (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); int perm; perm = powerpc_get_constant_full (p, 0x04050607, 0x0c0d0e0f, - 0x14151617, 0x1c1d1e1f); + 0x14151617, 0x1c1d1e1f); powerpc_emit_vperm (p, dest, src1, src1, perm); } static void -powerpc_rule_select0ql (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_select0ql (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); int perm; perm = powerpc_get_constant_full (p, 0x00010203, 0x08090a0b, - 0x10111213, 0x18191a1b); + 0x10111213, 0x18191a1b); powerpc_emit_vperm (p, dest, src1, src1, perm); } static void -powerpc_rule_mergebw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_mergebw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -811,7 +797,7 @@ powerpc_rule_mergebw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_mergewl (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_mergewl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -824,7 +810,7 @@ powerpc_rule_mergewl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_mergelq (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_mergelq (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -837,7 +823,7 @@ powerpc_rule_mergelq (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_absb (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_absb (OrcCompiler * p, void *user, OrcInstruction * insn) { int tmpc; int src1 = ORC_SRC_ARG (p, insn, 0); @@ -855,7 +841,7 @@ powerpc_rule_absb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_absw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_absw (OrcCompiler * p, void *user, OrcInstruction * insn) { int tmp; int tmpc; @@ -873,7 +859,7 @@ powerpc_rule_absw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_absl (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_absl (OrcCompiler * p, void *user, OrcInstruction * insn) { int tmp; int tmpc; @@ -891,7 +877,7 @@ powerpc_rule_absl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_splatw3q (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_splatw3q (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -903,7 +889,7 @@ powerpc_rule_splatw3q (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_splatbw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_splatbw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -912,7 +898,7 @@ powerpc_rule_splatbw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_splatbl (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_splatbl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -929,7 +915,7 @@ powerpc_rule_splatbl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convulq (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convulq (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -943,15 +929,15 @@ powerpc_rule_convulq (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convslq (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convslq (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); int perm; int tmp = orc_compiler_get_temp_reg (p); - ORC_ASM_CODE(p," vspltisb %s, -1\n", powerpc_get_regname(tmp)); - powerpc_emit_VX(p, 0x1000030c, powerpc_regnum(tmp), 0x1f, 0); + ORC_ASM_CODE (p, " vspltisb %s, -1\n", powerpc_get_regname (tmp)); + powerpc_emit_VX (p, 0x1000030c, powerpc_regnum (tmp), 0x1f, 0); powerpc_emit_VX_2 (p, "vsraw", 0x10000384, tmp, src1, tmp); @@ -961,7 +947,7 @@ powerpc_rule_convslq (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convhwb (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convhwb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -973,7 +959,7 @@ powerpc_rule_convhwb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convhlw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convhlw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -985,7 +971,7 @@ powerpc_rule_convhlw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convql (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convql (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -997,7 +983,7 @@ powerpc_rule_convql (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_swapw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_swapw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1009,7 +995,7 @@ powerpc_rule_swapw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_swapl (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_swapl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1021,7 +1007,7 @@ powerpc_rule_swapl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_swapwl (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_swapwl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1033,7 +1019,7 @@ powerpc_rule_swapwl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_swaplq (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_swaplq (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1045,7 +1031,7 @@ powerpc_rule_swaplq (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_swapq (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_swapq (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1057,7 +1043,7 @@ powerpc_rule_swapq (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_splitql (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_splitql (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest1 = ORC_DEST_ARG (p, insn, 0); @@ -1065,15 +1051,15 @@ powerpc_rule_splitql (OrcCompiler *p, void *user, OrcInstruction *insn) int perm; perm = powerpc_get_constant_full (p, 0x04050607, 0x0c0d0e0f, - 0x14151617, 0x1c1d1e1f); + 0x14151617, 0x1c1d1e1f); powerpc_emit_vperm (p, dest1, src1, src1, perm); perm = powerpc_get_constant_full (p, 0x00010203, 0x08090a0b, - 0x10111213, 0x18191a1b); + 0x10111213, 0x18191a1b); powerpc_emit_vperm (p, dest2, src1, src1, perm); } static void -powerpc_rule_splitlw (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_splitlw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest1 = ORC_DEST_ARG (p, insn, 0); @@ -1082,12 +1068,12 @@ powerpc_rule_splitlw (OrcCompiler *p, void *user, OrcInstruction *insn) powerpc_emit_vpkuwum (p, dest1, src1, src1); perm = powerpc_get_constant_full (p, 0x00010405, 0x08090c0d, - 0x10111415, 0x18191c1d); + 0x10111415, 0x18191c1d); powerpc_emit_vperm (p, dest2, src1, src1, perm); } static void -powerpc_rule_splitwb (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_splitwb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest1 = ORC_DEST_ARG (p, insn, 0); @@ -1096,12 +1082,12 @@ powerpc_rule_splitwb (OrcCompiler *p, void *user, OrcInstruction *insn) powerpc_emit_vpkuhum (p, dest1, src1, src1); perm = powerpc_get_constant_full (p, 0x00020406, 0x080a0c0e, - 0x10121416, 0x181a1c1e); + 0x10121416, 0x181a1c1e); powerpc_emit_vperm (p, dest2, src1, src1, perm); } static void -powerpc_rule_mulf (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_mulf (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -1113,7 +1099,7 @@ powerpc_rule_mulf (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_divf (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_divf (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -1135,7 +1121,7 @@ powerpc_rule_divf (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_cmpltf (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_cmpltf (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -1145,7 +1131,7 @@ powerpc_rule_cmpltf (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_cmplef (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_cmplef (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -1155,7 +1141,7 @@ powerpc_rule_cmplef (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convfl (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convfl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1178,7 +1164,7 @@ powerpc_rule_convfl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_convlf (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_convlf (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1187,7 +1173,7 @@ powerpc_rule_convlf (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -powerpc_rule_div255w (OrcCompiler *p, void *user, OrcInstruction *insn) +powerpc_rule_div255w (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1198,8 +1184,8 @@ powerpc_rule_div255w (OrcCompiler *p, void *user, OrcInstruction *insn) tmpc = powerpc_get_constant (p, ORC_CONST_SPLAT_W, 0x0080); powerpc_emit_VX_2 (p, "vadduhm", 0x10000040, dest, src1, tmpc); - ORC_ASM_CODE(p," vspltish %s, 8\n", powerpc_get_regname(tmp2)); - powerpc_emit_VX(p, 0x1000034c, powerpc_regnum(tmp2), 8, 0); + ORC_ASM_CODE (p, " vspltish %s, 8\n", powerpc_get_regname (tmp2)); + powerpc_emit_VX (p, 0x1000034c, powerpc_regnum (tmp2), 8, 0); powerpc_emit_VX_2 (p, "vsrh", 0x10000244, tmp, dest, tmp2); powerpc_emit_VX_2 (p, "vadduhm", 0x10000040, dest, dest, tmp); @@ -1207,161 +1193,163 @@ powerpc_rule_div255w (OrcCompiler *p, void *user, OrcInstruction *insn) } void -orc_compiler_powerpc_register_rules (OrcTarget *target) +orc_compiler_powerpc_register_rules (OrcTarget * target) { OrcRuleSet *rule_set; - rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target, 0); + rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target, 0); #define REG(name) \ orc_rule_register (rule_set, #name , powerpc_rule_ ## name , NULL); - REG(addb); - REG(addssb); - REG(addusb); - REG(andb); - REG(avgsb); - REG(avgub); - REG(cmpeqb); - REG(cmpgtsb); - REG(maxsb); - REG(maxub); - REG(minsb); - REG(minub); - REG(orb); - REG(shlb); - REG(shrsb); - REG(shrub); - REG(subb); - REG(subssb); - REG(subusb); - REG(xorb); - - REG(addw); - REG(addssw); - REG(addusw); - REG(andw); - REG(avgsw); - REG(avguw); - REG(cmpeqw); - REG(cmpgtsw); - REG(maxsw); - REG(maxuw); - REG(minsw); - REG(minuw); - REG(orw); - REG(shlw); - REG(shrsw); - REG(shruw); - REG(subw); - REG(subssw); - REG(subusw); - REG(xorw); - - REG(addl); - REG(addssl); - REG(addusl); - REG(andl); - REG(avgsl); - REG(avgul); - REG(cmpeql); - REG(cmpgtsl); - REG(maxsl); - REG(maxul); - REG(minsl); - REG(minul); - REG(orl); - REG(shll); - REG(shrsl); - REG(shrul); - REG(subl); - REG(subssl); - REG(subusl); - REG(xorl); - - REG(andq); - REG(orq); - REG(xorq); - - REG(mullb); - REG(mulhsb); - REG(mulhub); - REG(mullw); - REG(mulhsw); - REG(mulhuw); - - REG(convsbw); - REG(convswl); - REG(convubw); - REG(convuwl); - REG(convssswb); - REG(convssslw); - REG(convsuswb); - REG(convsuslw); - REG(convuuswb); - REG(convuuslw); - REG(convwb); - REG(convlw); - - REG(mulsbw); - REG(mulubw); - REG(mulswl); - REG(muluwl); - - REG(accw); - REG(accl); - REG(accsadubl); - - REG(signb); - REG(signw); - REG(signl); - - REG(select0wb); - REG(select1wb); - REG(select0lw); - REG(select1lw); - REG(select0ql); - REG(select1ql); - REG(mergebw); - REG(mergewl); - REG(mergelq); - - REG(absb); - REG(absw); - REG(absl); - REG(splatw3q); - REG(splatbw); - REG(splatbl); - REG(convslq); - REG(convulq); - REG(convhwb); - REG(convhlw); - REG(convql); - REG(swapw); - REG(swapl); - REG(swapwl); - REG(swapq); - REG(swaplq); - if (0) REG(splitql); - REG(splitlw); - REG(splitwb); - REG(div255w); - - REG(addf); - REG(subf); - REG(minf); - REG(maxf); - REG(cmpeqf); - REG(cmplef); - REG(cmpltf); - REG(mulf); - if (0) REG(divf); /* not accurate enough */ - REG(convfl); - REG(convlf); - - orc_rule_register (rule_set, "loadpb", powerpc_rule_loadpX, (void *)1); - orc_rule_register (rule_set, "loadpw", powerpc_rule_loadpX, (void *)2); - orc_rule_register (rule_set, "loadpl", powerpc_rule_loadpX, (void *)4); + REG (addb); + REG (addssb); + REG (addusb); + REG (andb); + REG (avgsb); + REG (avgub); + REG (cmpeqb); + REG (cmpgtsb); + REG (maxsb); + REG (maxub); + REG (minsb); + REG (minub); + REG (orb); + REG (shlb); + REG (shrsb); + REG (shrub); + REG (subb); + REG (subssb); + REG (subusb); + REG (xorb); + + REG (addw); + REG (addssw); + REG (addusw); + REG (andw); + REG (avgsw); + REG (avguw); + REG (cmpeqw); + REG (cmpgtsw); + REG (maxsw); + REG (maxuw); + REG (minsw); + REG (minuw); + REG (orw); + REG (shlw); + REG (shrsw); + REG (shruw); + REG (subw); + REG (subssw); + REG (subusw); + REG (xorw); + + REG (addl); + REG (addssl); + REG (addusl); + REG (andl); + REG (avgsl); + REG (avgul); + REG (cmpeql); + REG (cmpgtsl); + REG (maxsl); + REG (maxul); + REG (minsl); + REG (minul); + REG (orl); + REG (shll); + REG (shrsl); + REG (shrul); + REG (subl); + REG (subssl); + REG (subusl); + REG (xorl); + + REG (andq); + REG (orq); + REG (xorq); + + REG (mullb); + REG (mulhsb); + REG (mulhub); + REG (mullw); + REG (mulhsw); + REG (mulhuw); + + REG (convsbw); + REG (convswl); + REG (convubw); + REG (convuwl); + REG (convssswb); + REG (convssslw); + REG (convsuswb); + REG (convsuslw); + REG (convuuswb); + REG (convuuslw); + REG (convwb); + REG (convlw); + + REG (mulsbw); + REG (mulubw); + REG (mulswl); + REG (muluwl); + + REG (accw); + REG (accl); + REG (accsadubl); + + REG (signb); + REG (signw); + REG (signl); + + REG (select0wb); + REG (select1wb); + REG (select0lw); + REG (select1lw); + REG (select0ql); + REG (select1ql); + REG (mergebw); + REG (mergewl); + REG (mergelq); + + REG (absb); + REG (absw); + REG (absl); + REG (splatw3q); + REG (splatbw); + REG (splatbl); + REG (convslq); + REG (convulq); + REG (convhwb); + REG (convhlw); + REG (convql); + REG (swapw); + REG (swapl); + REG (swapwl); + REG (swapq); + REG (swaplq); + if (0) + REG (splitql); + REG (splitlw); + REG (splitwb); + REG (div255w); + + REG (addf); + REG (subf); + REG (minf); + REG (maxf); + REG (cmpeqf); + REG (cmplef); + REG (cmpltf); + REG (mulf); + if (0) + REG (divf); /* not accurate enough */ + REG (convfl); + REG (convlf); + + orc_rule_register (rule_set, "loadpb", powerpc_rule_loadpX, (void *) 1); + orc_rule_register (rule_set, "loadpw", powerpc_rule_loadpX, (void *) 2); + orc_rule_register (rule_set, "loadpl", powerpc_rule_loadpX, (void *) 4); orc_rule_register (rule_set, "loadb", powerpc_rule_loadX, NULL); orc_rule_register (rule_set, "loadw", powerpc_rule_loadX, NULL); orc_rule_register (rule_set, "loadl", powerpc_rule_loadX, NULL); @@ -1385,4 +1373,3 @@ orc_compiler_powerpc_register_rules (OrcTarget *target) orc_rule_register (rule_set, "copyq", powerpc_rule_copyX, NULL); } - diff --git a/orc/orcrules-arm.c b/orc/orcrules-arm.c index b5b0e76..36453d7 100644 --- a/orc/orcrules-arm.c +++ b/orc/orcrules-arm.c @@ -79,20 +79,20 @@ arm_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \ } while (0) static void -arm_rule_loadpX (OrcCompiler *compiler, void *user, OrcInstruction *insn) +arm_rule_loadpX (OrcCompiler * compiler, void *user, OrcInstruction * insn) { if (compiler->vars[insn->src_args[0]].vartype == ORC_VAR_TYPE_CONST) { orc_arm_emit_load_imm (compiler, compiler->vars[insn->dest_args[0]].alloc, - (int)compiler->vars[insn->src_args[0]].value.i); + (int) compiler->vars[insn->src_args[0]].value.i); } else { orc_arm_loadw (compiler, compiler->vars[insn->dest_args[0]].alloc, compiler->exec_reg, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[insn->src_args[0]])); + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[insn->src_args[0]])); } } static void -arm_rule_loadX (OrcCompiler *compiler, void *user, OrcInstruction *insn) +arm_rule_loadX (OrcCompiler * compiler, void *user, OrcInstruction * insn) { int src = compiler->vars[insn->src_args[0]].ptr_register; int dest = compiler->vars[insn->dest_args[0]].alloc; @@ -104,29 +104,26 @@ arm_rule_loadX (OrcCompiler *compiler, void *user, OrcInstruction *insn) if (size == 4) { code = 0xe5900000; - ORC_ASM_CODE(compiler," ldr %s, [%s, #%d]\n", - orc_arm_reg_name (dest), - orc_arm_reg_name (src), offset); + ORC_ASM_CODE (compiler, " ldr %s, [%s, #%d]\n", + orc_arm_reg_name (dest), orc_arm_reg_name (src), offset); } else if (size == 2) { code = 0xe1d000b0; - ORC_ASM_CODE(compiler," ldrh %s, [%s, #%d]\n", - orc_arm_reg_name (dest), - orc_arm_reg_name (src), offset); + ORC_ASM_CODE (compiler, " ldrh %s, [%s, #%d]\n", + orc_arm_reg_name (dest), orc_arm_reg_name (src), offset); } else { code = 0xe5d00000; - ORC_ASM_CODE(compiler," ldrb %s, [%s, #%d]\n", - orc_arm_reg_name (dest), - orc_arm_reg_name (src), offset); + ORC_ASM_CODE (compiler, " ldrb %s, [%s, #%d]\n", + orc_arm_reg_name (dest), orc_arm_reg_name (src), offset); } - code |= (src&0xf) << 16; - code |= (dest&0xf) << 12; - code |= (offset&0xf0) << 4; - code |= offset&0x0f; + code |= (src & 0xf) << 16; + code |= (dest & 0xf) << 12; + code |= (offset & 0xf0) << 4; + code |= offset & 0x0f; orc_arm_emit (compiler, code); } static void -arm_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn) +arm_rule_storeX (OrcCompiler * compiler, void *user, OrcInstruction * insn) { int src = compiler->vars[insn->src_args[0]].alloc; int dest = compiler->vars[insn->dest_args[0]].ptr_register; @@ -138,131 +135,122 @@ arm_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn) if (size == 4) { code = 0xe5800000; - ORC_ASM_CODE(compiler," str %s, [%s, #%d]\n", - orc_arm_reg_name (src), - orc_arm_reg_name (dest), offset); + ORC_ASM_CODE (compiler, " str %s, [%s, #%d]\n", + orc_arm_reg_name (src), orc_arm_reg_name (dest), offset); } else if (size == 2) { code = 0xe1c000b0; - ORC_ASM_CODE(compiler," strh %s, [%s, #%d]\n", - orc_arm_reg_name (src), - orc_arm_reg_name (dest), offset); + ORC_ASM_CODE (compiler, " strh %s, [%s, #%d]\n", + orc_arm_reg_name (src), orc_arm_reg_name (dest), offset); } else { code = 0xe5c00000; - ORC_ASM_CODE(compiler," strb %s, [%s, #%d]\n", - orc_arm_reg_name (src), - orc_arm_reg_name (dest), offset); + ORC_ASM_CODE (compiler, " strb %s, [%s, #%d]\n", + orc_arm_reg_name (src), orc_arm_reg_name (dest), offset); } - code |= (dest&0xf) << 16; - code |= (src&0xf) << 12; - code |= (offset&0xf0) << 4; - code |= offset&0x0f; + code |= (dest & 0xf) << 16; + code |= (src & 0xf) << 12; + code |= (offset & 0xf0) << 4; + code |= offset & 0x0f; orc_arm_emit (compiler, code); } void -orc_arm_loadb (OrcCompiler *compiler, int dest, int src1, int offset) +orc_arm_loadb (OrcCompiler * compiler, int dest, int src1, int offset) { orc_uint32 code; code = 0xe5d00000; - code |= (src1&0xf) << 16; - code |= (dest&0xf) << 12; - code |= (offset&0xf0) << 4; - code |= offset&0x0f; - - ORC_ASM_CODE(compiler," ldrb %s, [%s, #%d]\n", - orc_arm_reg_name (dest), - orc_arm_reg_name (src1), offset); + code |= (src1 & 0xf) << 16; + code |= (dest & 0xf) << 12; + code |= (offset & 0xf0) << 4; + code |= offset & 0x0f; + + ORC_ASM_CODE (compiler, " ldrb %s, [%s, #%d]\n", + orc_arm_reg_name (dest), orc_arm_reg_name (src1), offset); orc_arm_emit (compiler, code); } void -orc_arm_storeb (OrcCompiler *compiler, int dest, int offset, int src1) +orc_arm_storeb (OrcCompiler * compiler, int dest, int offset, int src1) { orc_uint32 code; code = 0xe5c00000; - code |= (dest&0xf) << 16; - code |= (src1&0xf) << 12; - code |= (offset&0xf0) << 4; - code |= offset&0x0f; - - ORC_ASM_CODE(compiler," strb %s, [%s, #%d]\n", - orc_arm_reg_name (src1), - orc_arm_reg_name (dest), offset); + code |= (dest & 0xf) << 16; + code |= (src1 & 0xf) << 12; + code |= (offset & 0xf0) << 4; + code |= offset & 0x0f; + + ORC_ASM_CODE (compiler, " strb %s, [%s, #%d]\n", + orc_arm_reg_name (src1), orc_arm_reg_name (dest), offset); orc_arm_emit (compiler, code); } void -orc_arm_loadl (OrcCompiler *compiler, int dest, int src1, int offset) +orc_arm_loadl (OrcCompiler * compiler, int dest, int src1, int offset) { orc_uint32 code; code = 0xe5900000; - code |= (src1&0xf) << 16; - code |= (dest&0xf) << 12; - code |= (offset&0xf0) << 4; - code |= offset&0x0f; - - ORC_ASM_CODE(compiler," ldr %s, [%s, #%d]\n", - orc_arm_reg_name (dest), - orc_arm_reg_name (src1), offset); + code |= (src1 & 0xf) << 16; + code |= (dest & 0xf) << 12; + code |= (offset & 0xf0) << 4; + code |= offset & 0x0f; + + ORC_ASM_CODE (compiler, " ldr %s, [%s, #%d]\n", + orc_arm_reg_name (dest), orc_arm_reg_name (src1), offset); orc_arm_emit (compiler, code); } void -orc_arm_storel (OrcCompiler *compiler, int dest, int offset, int src1) +orc_arm_storel (OrcCompiler * compiler, int dest, int offset, int src1) { orc_uint32 code; code = 0xe5800000; - code |= (dest&0xf) << 16; - code |= (src1&0xf) << 12; - code |= (offset&0xf0) << 4; - code |= offset&0x0f; - - ORC_ASM_CODE(compiler," str %s, [%s, #%d]\n", - orc_arm_reg_name (src1), - orc_arm_reg_name (dest), offset); + code |= (dest & 0xf) << 16; + code |= (src1 & 0xf) << 12; + code |= (offset & 0xf0) << 4; + code |= offset & 0x0f; + + ORC_ASM_CODE (compiler, " str %s, [%s, #%d]\n", + orc_arm_reg_name (src1), orc_arm_reg_name (dest), offset); orc_arm_emit (compiler, code); } void -orc_arm_loadw (OrcCompiler *compiler, int dest, int src1, int offset) +orc_arm_loadw (OrcCompiler * compiler, int dest, int src1, int offset) { orc_uint32 code; code = 0xe1d000b0; - code |= (src1&0xf) << 16; - code |= (dest&0xf) << 12; - code |= (offset&0xf0) << 4; - code |= offset&0x0f; - - ORC_ASM_CODE(compiler," ldrh %s, [%s, #%d]\n", - orc_arm_reg_name (dest), - orc_arm_reg_name (src1), offset); + code |= (src1 & 0xf) << 16; + code |= (dest & 0xf) << 12; + code |= (offset & 0xf0) << 4; + code |= offset & 0x0f; + + ORC_ASM_CODE (compiler, " ldrh %s, [%s, #%d]\n", + orc_arm_reg_name (dest), orc_arm_reg_name (src1), offset); orc_arm_emit (compiler, code); } void -orc_arm_storew (OrcCompiler *compiler, int dest, int offset, int src1) +orc_arm_storew (OrcCompiler * compiler, int dest, int offset, int src1) { orc_uint32 code; code = 0xe1c000b0; - code |= (dest&0xf) << 16; - code |= (src1&0xf) << 12; - code |= (offset&0xf0) << 4; - code |= offset&0x0f; - - ORC_ASM_CODE(compiler," strh %s, [%s, #%d]\n", - orc_arm_reg_name (src1), - orc_arm_reg_name (dest), offset); + code |= (dest & 0xf) << 16; + code |= (src1 & 0xf) << 12; + code |= (offset & 0xf0) << 4; + code |= offset & 0x0f; + + ORC_ASM_CODE (compiler, " strh %s, [%s, #%d]\n", + orc_arm_reg_name (src1), orc_arm_reg_name (dest), offset); orc_arm_emit (compiler, code); } void -orc_arm_emit_mov_iw (OrcCompiler *p, int cond, int dest, int val, int loop) +orc_arm_emit_mov_iw (OrcCompiler * p, int cond, int dest, int val, int loop) { /* dest = val */ orc_arm_emit_mov_i (p, cond, 0, dest, val); @@ -272,7 +260,7 @@ orc_arm_emit_mov_iw (OrcCompiler *p, int cond, int dest, int val, int loop) } void -orc_arm_emit_mov_ib (OrcCompiler *p, int cond, int dest, int val, int loop) +orc_arm_emit_mov_ib (OrcCompiler * p, int cond, int dest, int val, int loop) { /* 1 byte */ orc_arm_emit_mov_i (p, cond, 0, dest, val); @@ -286,12 +274,12 @@ orc_arm_emit_mov_ib (OrcCompiler *p, int cond, int dest, int val, int loop) /* byte instructions */ static void -arm_rule_absX (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_absX (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); int tmp = p->tmpreg; - int type = ORC_PTR_TO_INT(user); + int type = ORC_PTR_TO_INT (user); orc_arm_emit_mov_i (p, ORC_ARM_COND_AL, 0, dest, 0); @@ -309,40 +297,43 @@ arm_rule_absX (OrcCompiler *p, void *user, OrcInstruction *insn) /* take positive or negative values */ orc_arm_emit_sel (p, ORC_ARM_COND_AL, dest, src1, tmp); } + BINARY_MM (addb, sadd8); BINARY_MM (addssb, qadd8); BINARY_MM (addusb, uqadd8); BINARY_DP (andX, and); static void -arm_rule_andnX (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_andnX (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); int dest = ORC_DEST_ARG (p, insn, 0); - orc_arm_emit_bic_r (p, ORC_ARM_COND_AL, 0, dest, src2, src1); + orc_arm_emit_bic_r (p, ORC_ARM_COND_AL, 0, dest, src2, src1); } static void -arm_rule_avgX (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_avgX (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); int mask = p->tmpreg; int tmp = p->gp_tmpreg; int dest = ORC_DEST_ARG (p, insn, 0); - int type = ORC_PTR_TO_INT(user); + int type = ORC_PTR_TO_INT (user); /* signed variant, make a mask, FIXME, instruction constants */ if (type >= 2) { /* mask for word 0x80008000 */ orc_arm_emit_mov_i (p, ORC_ARM_COND_AL, 0, mask, 0x80000000); - orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, mask, mask, mask, ORC_ARM_LSR, 16); + orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, mask, mask, mask, ORC_ARM_LSR, + 16); if (type >= 3) { /* mask for byte 0x80808080 */ - orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, mask, mask, mask, ORC_ARM_LSR, 8); + orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, mask, mask, mask, + ORC_ARM_LSR, 8); } /* signed variant, bias the inputs */ @@ -369,7 +360,8 @@ arm_rule_avgX (OrcCompiler *p, void *user, OrcInstruction *insn) } } else if (type >= 2) { /* already have a mask, use it here */ - orc_arm_emit_bic_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, mask, ORC_ARM_LSR, 7); + orc_arm_emit_bic_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, mask, ORC_ARM_LSR, + 7); } /* do final right shift and subtraction */ @@ -381,14 +373,15 @@ arm_rule_avgX (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_eor_r (p, ORC_ARM_COND_AL, 0, src2, src2, mask); } } + static void -arm_rule_cmpeqX (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_cmpeqX (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); int dest = ORC_DEST_ARG (p, insn, 0); int tmp = p->tmpreg; - int size = ORC_PTR_TO_INT(user); + int size = ORC_PTR_TO_INT (user); /* bytes that are equal will have all bits 0 */ orc_arm_emit_eor_r (p, ORC_ARM_COND_AL, 0, tmp, src1, src2); @@ -409,14 +402,15 @@ arm_rule_cmpeqX (OrcCompiler *p, void *user, OrcInstruction *insn) /* set 0xff for 0 bytes, 0x00 otherwise */ orc_arm_emit_sel (p, ORC_ARM_COND_AL, dest, tmp, dest); } + static void -arm_rule_cmpgtsX (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_cmpgtsX (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); int dest = ORC_DEST_ARG (p, insn, 0); int tmp = p->tmpreg; - int size = ORC_PTR_TO_INT(user); + int size = ORC_PTR_TO_INT (user); /* dest = src2 - src1, set GE flags for src2 >= src1 */ if (size == 1) { @@ -433,8 +427,9 @@ arm_rule_cmpgtsX (OrcCompiler *p, void *user, OrcInstruction *insn) /* set 0x00 for src2 >= src1 bytes, 0xff if src2 < src1 */ orc_arm_emit_sel (p, ORC_ARM_COND_AL, dest, dest, tmp); } + static void -arm_rule_copyX (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_copyX (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -443,7 +438,7 @@ arm_rule_copyX (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -arm_rule_maxsb (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_maxsb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -452,8 +447,9 @@ arm_rule_maxsb (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_ssub8 (p, ORC_ARM_COND_AL, dest, src1, src2); orc_arm_emit_sel (p, ORC_ARM_COND_AL, dest, src1, src2); } + static void -arm_rule_maxub (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_maxub (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -462,8 +458,9 @@ arm_rule_maxub (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_usub8 (p, ORC_ARM_COND_AL, dest, src1, src2); orc_arm_emit_sel (p, ORC_ARM_COND_AL, dest, src1, src2); } + static void -arm_rule_minsb (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_minsb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -472,8 +469,9 @@ arm_rule_minsb (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_ssub8 (p, ORC_ARM_COND_AL, dest, src1, src2); orc_arm_emit_sel (p, ORC_ARM_COND_AL, dest, src2, src1); } + static void -arm_rule_minub (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_minub (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -484,7 +482,7 @@ arm_rule_minub (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -arm_rule_mullb (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_mullb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -524,12 +522,13 @@ arm_rule_mullb (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_uxtb16 (p, ORC_ARM_COND_AL, tmp3, tmp3); /* merge results */ - orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, tmp3, ORC_ARM_LSL, 8); + orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, tmp3, ORC_ARM_LSL, + 8); } } static void -arm_rule_mulhsb (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_mulhsb (OrcCompiler * p, void *user, OrcInstruction * insn) { /* BINARY_SB(mulhsb, "(%s * %s) >> 8") */ int src1 = ORC_SRC_ARG (p, insn, 0); @@ -570,7 +569,8 @@ arm_rule_mulhsb (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_uxtb16_r8 (p, ORC_ARM_COND_AL, tmp3, tmp3, 8); /* merge tmp3 */ - orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, tmp3, ORC_ARM_LSL, 8); + orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, tmp3, ORC_ARM_LSL, + 8); } else { /* bring upper bits in position */ orc_arm_emit_mov_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, ORC_ARM_LSR, 8); @@ -578,7 +578,7 @@ arm_rule_mulhsb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -arm_rule_mulhub (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_mulhub (OrcCompiler * p, void *user, OrcInstruction * insn) { /* BINARY_UB(mulhub, "((orc_uint32)(uint8_t)%s * (orc_uint32)(uint8_t)%s) >> 8") */ int src1 = ORC_SRC_ARG (p, insn, 0); @@ -619,7 +619,8 @@ arm_rule_mulhub (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_uxtb16_r8 (p, ORC_ARM_COND_AL, tmp3, tmp3, 8); /* merge tmp3 */ - orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, tmp3, ORC_ARM_LSL, 8); + orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, tmp3, ORC_ARM_LSL, + 8); } else { /* bring upper bits in position */ orc_arm_emit_mov_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, ORC_ARM_LSR, 8); @@ -628,21 +629,21 @@ arm_rule_mulhub (OrcCompiler *p, void *user, OrcInstruction *insn) BINARY_DP (orX, orr); static void -arm_rule_shlX (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_shlX (OrcCompiler * p, void *user, OrcInstruction * insn) { /* degrades nicely to trivial shift when not doing parallel shifts */ int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); int mask = p->tmpreg; int src2type = ORC_SRC_TYPE (p, insn, 1); - int size = ORC_PTR_TO_INT(user); - int loop = 4 / size; /* number of items in one register */ + int size = ORC_PTR_TO_INT (user); + int loop = 4 / size; /* number of items in one register */ if (src2type == ORC_VAR_TYPE_CONST) { int val = ORC_SRC_VAL (p, insn, 1); if (loop > 1 && size != 4 && val < 5) { - for (;val; val--) { + for (; val; val--) { /* small values, do a series of additions, we need at least 5 * instructions for the generic case below. */ if (size == 1) @@ -650,8 +651,7 @@ arm_rule_shlX (OrcCompiler *p, void *user, OrcInstruction *insn) else orc_arm_emit_uadd16 (p, ORC_ARM_COND_AL, dest, src1, src1); } - } - else { + } else { /* bigger values, shift and mask out excess bits */ if (val >= size) { /* too big, clear all */ @@ -659,7 +659,8 @@ arm_rule_shlX (OrcCompiler *p, void *user, OrcInstruction *insn) } else if (val > 0) { if (loop > 1 && size < 4) { /* shift, note that we skip the next instructions when 0 */ - orc_arm_emit_mov_rsi (p, ORC_ARM_COND_AL, 1, dest, src1, ORC_ARM_LSL, val); + orc_arm_emit_mov_rsi (p, ORC_ARM_COND_AL, 1, dest, src1, ORC_ARM_LSL, + val); if (size == 1) /* make loop * 0x80 */ orc_arm_emit_mov_ib (p, ORC_ARM_COND_NE, mask, 0x80, loop); @@ -667,11 +668,14 @@ arm_rule_shlX (OrcCompiler *p, void *user, OrcInstruction *insn) /* make loop * 0x8000 */ orc_arm_emit_mov_iw (p, ORC_ARM_COND_NE, mask, 0x8000, loop); /* make mask, this mask has enough bits but is shifted one position to the right */ - orc_arm_emit_sub_rsi (p, ORC_ARM_COND_NE, 0, mask, mask, mask, ORC_ARM_LSR, val); + orc_arm_emit_sub_rsi (p, ORC_ARM_COND_NE, 0, mask, mask, mask, + ORC_ARM_LSR, val); /* clear upper bits */ - orc_arm_emit_bic_rsi (p, ORC_ARM_COND_NE, 0, dest, dest, mask, ORC_ARM_LSL, 1); + orc_arm_emit_bic_rsi (p, ORC_ARM_COND_NE, 0, dest, dest, mask, + ORC_ARM_LSL, 1); } else { - orc_arm_emit_mov_rsi (p, ORC_ARM_COND_AL, 0, dest, src1, ORC_ARM_LSL, val); + orc_arm_emit_mov_rsi (p, ORC_ARM_COND_AL, 0, dest, src1, ORC_ARM_LSL, + val); } } } @@ -680,7 +684,8 @@ arm_rule_shlX (OrcCompiler *p, void *user, OrcInstruction *insn) if (loop > 1 && size < 4) { /* shift with register value, note that we skip the next instructions when 0 */ - orc_arm_emit_mov_rsr (p, ORC_ARM_COND_AL, 1, dest, src1, ORC_ARM_LSL, src2); + orc_arm_emit_mov_rsr (p, ORC_ARM_COND_AL, 1, dest, src1, ORC_ARM_LSL, + src2); if (size == 1) /* make loop * 0x80 */ orc_arm_emit_mov_ib (p, ORC_ARM_COND_NE, mask, 0x80, loop); @@ -688,19 +693,22 @@ arm_rule_shlX (OrcCompiler *p, void *user, OrcInstruction *insn) /* make loop * 0x8000 */ orc_arm_emit_mov_iw (p, ORC_ARM_COND_NE, mask, 0x8000, loop); /* make mask */ - orc_arm_emit_sub_rsr (p, ORC_ARM_COND_NE, 0, mask, mask, mask, ORC_ARM_LSR, src2); + orc_arm_emit_sub_rsr (p, ORC_ARM_COND_NE, 0, mask, mask, mask, + ORC_ARM_LSR, src2); /* clear bits */ - orc_arm_emit_bic_rsi (p, ORC_ARM_COND_NE, 0, dest, dest, mask, ORC_ARM_LSL, 1); + orc_arm_emit_bic_rsi (p, ORC_ARM_COND_NE, 0, dest, dest, mask, + ORC_ARM_LSL, 1); } else { - orc_arm_emit_mov_rsr (p, ORC_ARM_COND_AL, 0, dest, src1, ORC_ARM_LSL, src2); + orc_arm_emit_mov_rsr (p, ORC_ARM_COND_AL, 0, dest, src1, ORC_ARM_LSL, + src2); } } else { - ORC_COMPILER_ERROR(p,"rule only works with constants or parameters"); + ORC_COMPILER_ERROR (p, "rule only works with constants or parameters"); } } static void -arm_rule_shrsX (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_shrsX (OrcCompiler * p, void *user, OrcInstruction * insn) { /* degrades nicely to trivial shift when not doing parallel shifts */ int src1 = ORC_SRC_ARG (p, insn, 0); @@ -708,8 +716,8 @@ arm_rule_shrsX (OrcCompiler *p, void *user, OrcInstruction *insn) int mask = p->tmpreg; int tmp = p->gp_tmpreg; int src2type = ORC_SRC_TYPE (p, insn, 1); - int size = ORC_PTR_TO_INT(user); - int loop = 4 / size; /* number of items in one register */ + int size = ORC_PTR_TO_INT (user); + int loop = 4 / size; /* number of items in one register */ if (src2type == ORC_VAR_TYPE_CONST) { int val = ORC_SRC_VAL (p, insn, 1); @@ -732,12 +740,15 @@ arm_rule_shrsX (OrcCompiler *p, void *user, OrcInstruction *insn) /* make loop * 8000 */ orc_arm_emit_mov_iw (p, ORC_ARM_COND_AL, mask, 0x8000, loop); /* make mask, save in tmp, we need the original mask */ - orc_arm_emit_sub_rsi (p, ORC_ARM_COND_AL, 0, tmp, mask, mask, ORC_ARM_LSR, val); + orc_arm_emit_sub_rsi (p, ORC_ARM_COND_AL, 0, tmp, mask, mask, + ORC_ARM_LSR, val); /* do the shift */ - orc_arm_emit_mov_rsi (p, ORC_ARM_COND_AL, 1, dest, src1, ORC_ARM_LSR, val); + orc_arm_emit_mov_rsi (p, ORC_ARM_COND_AL, 1, dest, src1, ORC_ARM_LSR, + val); /* clear upper bits */ - orc_arm_emit_bic_rsi (p, ORC_ARM_COND_NE, 0, dest, dest, tmp, ORC_ARM_LSL, 1); + orc_arm_emit_bic_rsi (p, ORC_ARM_COND_NE, 0, dest, dest, tmp, + ORC_ARM_LSL, 1); /* flip sign bit */ orc_arm_emit_eor_r (p, ORC_ARM_COND_NE, 0, dest, dest, mask); @@ -749,7 +760,8 @@ arm_rule_shrsX (OrcCompiler *p, void *user, OrcInstruction *insn) } } else { /* full word shift */ - orc_arm_emit_mov_rsi (p, ORC_ARM_COND_AL, 0, dest, src1, ORC_ARM_ASR, val); + orc_arm_emit_mov_rsi (p, ORC_ARM_COND_AL, 0, dest, src1, ORC_ARM_ASR, + val); } } } else if (src2type == ORC_VAR_TYPE_PARAM) { @@ -763,12 +775,15 @@ arm_rule_shrsX (OrcCompiler *p, void *user, OrcInstruction *insn) /* make loop * 0x8000 */ orc_arm_emit_mov_iw (p, ORC_ARM_COND_AL, mask, 0x8000, loop); /* make mask */ - orc_arm_emit_sub_rsr (p, ORC_ARM_COND_AL, 0, tmp, mask, mask, ORC_ARM_LSR, src2); + orc_arm_emit_sub_rsr (p, ORC_ARM_COND_AL, 0, tmp, mask, mask, ORC_ARM_LSR, + src2); /* do the shift */ - orc_arm_emit_mov_rsr (p, ORC_ARM_COND_AL, 1, dest, src1, ORC_ARM_LSR, src2); + orc_arm_emit_mov_rsr (p, ORC_ARM_COND_AL, 1, dest, src1, ORC_ARM_LSR, + src2); /* clear upper bits */ - orc_arm_emit_bic_rsi (p, ORC_ARM_COND_NE, 0, dest, dest, tmp, ORC_ARM_LSL, 1); + orc_arm_emit_bic_rsi (p, ORC_ARM_COND_NE, 0, dest, dest, tmp, ORC_ARM_LSL, + 1); /* flip sign bit */ orc_arm_emit_eor_r (p, ORC_ARM_COND_NE, 0, dest, dest, mask); @@ -779,23 +794,24 @@ arm_rule_shrsX (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_usub16 (p, ORC_ARM_COND_NE, dest, dest, mask); } else { /* full word shift with register value */ - orc_arm_emit_mov_rsr (p, ORC_ARM_COND_AL, 0, dest, dest, ORC_ARM_ASR, src2); + orc_arm_emit_mov_rsr (p, ORC_ARM_COND_AL, 0, dest, dest, ORC_ARM_ASR, + src2); } } else { - ORC_COMPILER_ERROR(p,"rule only works with constants or parameters"); + ORC_COMPILER_ERROR (p, "rule only works with constants or parameters"); } } static void -arm_rule_shruX (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_shruX (OrcCompiler * p, void *user, OrcInstruction * insn) { /* degrades nicely to trivial shift when not doing parallel shifts */ int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); int mask = p->tmpreg; int src2type = ORC_SRC_TYPE (p, insn, 1); - int size = ORC_PTR_TO_INT(user); - int loop = 4 / size; /* number of items in one register */ + int size = ORC_PTR_TO_INT (user); + int loop = 4 / size; /* number of items in one register */ if (src2type == ORC_VAR_TYPE_CONST) { int val = ORC_SRC_VAL (p, insn, 1); @@ -811,7 +827,8 @@ arm_rule_shruX (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_uxtb16_r8 (p, ORC_ARM_COND_AL, dest, src1, 8); } else { /* do the shift, set S flags */ - orc_arm_emit_mov_rsi (p, ORC_ARM_COND_AL, 1, dest, src1, ORC_ARM_LSR, val); + orc_arm_emit_mov_rsi (p, ORC_ARM_COND_AL, 1, dest, src1, ORC_ARM_LSR, + val); if (size == 1) /* make loop * 0x80 */ @@ -820,14 +837,17 @@ arm_rule_shruX (OrcCompiler *p, void *user, OrcInstruction *insn) /* make loop * 0x8000 */ orc_arm_emit_mov_iw (p, ORC_ARM_COND_NE, mask, 0x8000, loop); /* make mask */ - orc_arm_emit_sub_rsi (p, ORC_ARM_COND_NE, 0, mask, mask, mask, ORC_ARM_LSR, val); + orc_arm_emit_sub_rsi (p, ORC_ARM_COND_NE, 0, mask, mask, mask, + ORC_ARM_LSR, val); /* clear upper bits */ - orc_arm_emit_bic_rsi (p, ORC_ARM_COND_NE, 0, dest, dest, mask, ORC_ARM_LSL, 1); + orc_arm_emit_bic_rsi (p, ORC_ARM_COND_NE, 0, dest, dest, mask, + ORC_ARM_LSL, 1); } } else { /* one 4 byte shift, no need for the S flag */ - orc_arm_emit_mov_rsi (p, ORC_ARM_COND_AL, 0, dest, src1, ORC_ARM_LSR, val); + orc_arm_emit_mov_rsi (p, ORC_ARM_COND_AL, 0, dest, src1, ORC_ARM_LSR, + val); } } } else if (src2type == ORC_VAR_TYPE_PARAM) { @@ -835,7 +855,8 @@ arm_rule_shruX (OrcCompiler *p, void *user, OrcInstruction *insn) if (size < 4) { /* shift with register value */ - orc_arm_emit_mov_rsr (p, ORC_ARM_COND_AL, 1, dest, src1, ORC_ARM_LSR, src2); + orc_arm_emit_mov_rsr (p, ORC_ARM_COND_AL, 1, dest, src1, ORC_ARM_LSR, + src2); if (size == 1) /* make loop * 0x80 */ @@ -844,28 +865,31 @@ arm_rule_shruX (OrcCompiler *p, void *user, OrcInstruction *insn) /* make loop * 0x8000 */ orc_arm_emit_mov_iw (p, ORC_ARM_COND_NE, mask, 0x8000, loop); /* make mask */ - orc_arm_emit_sub_rsr (p, ORC_ARM_COND_NE, 0, mask, mask, mask, ORC_ARM_LSR, src2); + orc_arm_emit_sub_rsr (p, ORC_ARM_COND_NE, 0, mask, mask, mask, + ORC_ARM_LSR, src2); /* clear bits */ - orc_arm_emit_bic_rsi (p, ORC_ARM_COND_NE, 0, dest, dest, mask, ORC_ARM_LSL, 1); + orc_arm_emit_bic_rsi (p, ORC_ARM_COND_NE, 0, dest, dest, mask, + ORC_ARM_LSL, 1); } else { /* shift with register value */ - orc_arm_emit_mov_rsr (p, ORC_ARM_COND_AL, 0, dest, src1, ORC_ARM_LSR, src2); + orc_arm_emit_mov_rsr (p, ORC_ARM_COND_AL, 0, dest, src1, ORC_ARM_LSR, + src2); } } else { - ORC_COMPILER_ERROR(p,"rule only works with constants or parameters"); + ORC_COMPILER_ERROR (p, "rule only works with constants or parameters"); } } static void -arm_rule_signX (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_signX (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); int zero = p->tmpreg; int ones = p->gp_tmpreg; int tmp = ORC_ARM_V8; - int type = ORC_PTR_TO_INT(user); + int type = ORC_PTR_TO_INT (user); /* make 0 */ orc_arm_emit_mov_i (p, ORC_ARM_COND_AL, 0, zero, 0); @@ -905,7 +929,7 @@ BINARY_MM (addssw, qadd16); BINARY_MM (addusw, uqadd16); static void -arm_rule_maxsw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_maxsw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -914,8 +938,9 @@ arm_rule_maxsw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_ssub16 (p, ORC_ARM_COND_AL, dest, src1, src2); orc_arm_emit_sel (p, ORC_ARM_COND_AL, dest, src1, src2); } + static void -arm_rule_maxuw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_maxuw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -924,8 +949,9 @@ arm_rule_maxuw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_usub16 (p, ORC_ARM_COND_AL, dest, src1, src2); orc_arm_emit_sel (p, ORC_ARM_COND_AL, dest, src1, src2); } + static void -arm_rule_minsw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_minsw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -934,8 +960,9 @@ arm_rule_minsw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_ssub16 (p, ORC_ARM_COND_AL, dest, src1, src2); orc_arm_emit_sel (p, ORC_ARM_COND_AL, dest, src2, src1); } + static void -arm_rule_minuw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_minuw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -946,7 +973,7 @@ arm_rule_minuw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -arm_rule_mullw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_mullw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -961,8 +988,9 @@ arm_rule_mullw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_pkhbt_s (p, ORC_ARM_COND_AL, dest, dest, tmp, 16); } } + static void -arm_rule_mulhsw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_mulhsw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -978,8 +1006,9 @@ arm_rule_mulhsw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_pkhtb_s (p, ORC_ARM_COND_AL, dest, tmp, dest, 16); } } + static void -arm_rule_mulhuw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_mulhuw (OrcCompiler * p, void *user, OrcInstruction * insn) { /* BINARY_UW(mulhuw, "((orc_uint32)((uint16_t)%s) * (orc_uint32)((uint16_t)%s)) >> 16") */ int src1 = ORC_SRC_ARG (p, insn, 0); @@ -1006,12 +1035,13 @@ arm_rule_mulhuw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_pkhtb_s (p, ORC_ARM_COND_AL, dest, tmp1, dest, 16); } } + BINARY_MM (subw, ssub16); BINARY_MM (subssw, qsub16); BINARY_MM (subusw, uqsub16); static void -arm_rule_absl (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_absl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1026,7 +1056,7 @@ arm_rule_absl (OrcCompiler *p, void *user, OrcInstruction *insn) BINARY_DP (addl, add); BINARY_MM (addssl, qadd); static void -arm_rule_addusl (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_addusl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -1038,8 +1068,9 @@ arm_rule_addusl (OrcCompiler *p, void *user, OrcInstruction *insn) /* on overflow, move ffffffff */ orc_arm_emit_mvn_i (p, ORC_ARM_COND_CS, 0, dest, 0); } + static void -arm_rule_avgXl (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_avgXl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -1054,8 +1085,9 @@ arm_rule_avgXl (OrcCompiler *p, void *user, OrcInstruction *insn) /* rotate right, top bit is the carry */ orc_arm_emit_mov_rrx (p, ORC_ARM_COND_AL, 0, dest, dest); } + static void -arm_rule_cmpeql (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_cmpeql (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -1070,8 +1102,9 @@ arm_rule_cmpeql (OrcCompiler *p, void *user, OrcInstruction *insn) /* set to all ff when equal */ orc_arm_emit_mvn_i (p, ORC_ARM_COND_EQ, 0, dest, 0); } + static void -arm_rule_cmpgtsl (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_cmpgtsl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -1088,7 +1121,7 @@ arm_rule_cmpgtsl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -arm_rule_maxsl (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_maxsl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -1101,8 +1134,9 @@ arm_rule_maxsl (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_mov_r (p, ORC_ARM_COND_GE, 0, dest, src1); orc_arm_emit_mov_r (p, ORC_ARM_COND_LT, 0, dest, src2); } + static void -arm_rule_maxul (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_maxul (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -1115,8 +1149,9 @@ arm_rule_maxul (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_mov_r (p, ORC_ARM_COND_CS, 0, dest, src1); orc_arm_emit_mov_r (p, ORC_ARM_COND_CC, 0, dest, src2); } + static void -arm_rule_minsl (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_minsl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -1129,8 +1164,9 @@ arm_rule_minsl (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_mov_r (p, ORC_ARM_COND_GE, 0, dest, src2); orc_arm_emit_mov_r (p, ORC_ARM_COND_LT, 0, dest, src1); } + static void -arm_rule_minul (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_minul (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -1145,7 +1181,7 @@ arm_rule_minul (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -arm_rule_mulll (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_mulll (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -1153,8 +1189,9 @@ arm_rule_mulll (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_mul (p, ORC_ARM_COND_AL, 0, dest, src1, src2); } + static void -arm_rule_mulhsl (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_mulhsl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -1163,8 +1200,9 @@ arm_rule_mulhsl (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_smull (p, ORC_ARM_COND_AL, 0, tmp, dest, src1, src2); } + static void -arm_rule_mulhul (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_mulhul (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -1173,8 +1211,9 @@ arm_rule_mulhul (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_umull (p, ORC_ARM_COND_AL, 0, tmp, dest, src1, src2); } + static void -arm_rule_signl (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_signl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1187,12 +1226,14 @@ arm_rule_signl (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_mov_rsi (p, ORC_ARM_COND_AL, 0, tmp, src1, ORC_ARM_ASR, 31); /* dest = tmp - (dest >> 31) */ - orc_arm_emit_sub_rsi (p, ORC_ARM_COND_AL, 0, dest, tmp, dest, ORC_ARM_ASR, 31); + orc_arm_emit_sub_rsi (p, ORC_ARM_COND_AL, 0, dest, tmp, dest, ORC_ARM_ASR, + 31); } + BINARY_DP (subl, sub); BINARY_MM (subssl, qsub); static void -arm_rule_subusl (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_subusl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -1206,7 +1247,7 @@ arm_rule_subusl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -arm_rule_convsbw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_convsbw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1223,7 +1264,7 @@ arm_rule_convsbw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -arm_rule_convubw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_convubw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1240,15 +1281,16 @@ arm_rule_convubw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -arm_rule_convswl (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_convswl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); orc_arm_emit_sxth (p, ORC_ARM_COND_AL, dest, src1); } + static void -arm_rule_convuwl (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_convuwl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1257,7 +1299,7 @@ arm_rule_convuwl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -arm_rule_convwb (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_convwb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1266,12 +1308,13 @@ arm_rule_convwb (OrcCompiler *p, void *user, OrcInstruction *insn) if (loop == 2) { /* two words */ orc_arm_emit_uxtb16 (p, ORC_ARM_COND_AL, dest, src1); - orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, dest, ORC_ARM_LSR, 8); + orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, dest, ORC_ARM_LSR, + 8); } } static void -arm_rule_convssswb (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_convssswb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1282,11 +1325,13 @@ arm_rule_convssswb (OrcCompiler *p, void *user, OrcInstruction *insn) if (loop == 2) { /* two words */ orc_arm_emit_uxtb16 (p, ORC_ARM_COND_AL, dest, dest); - orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, dest, ORC_ARM_LSR, 8); + orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, dest, ORC_ARM_LSR, + 8); } } + static void -arm_rule_convsuswb (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_convsuswb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1297,11 +1342,13 @@ arm_rule_convsuswb (OrcCompiler *p, void *user, OrcInstruction *insn) if (loop == 2) { /* two words */ orc_arm_emit_uxtb16 (p, ORC_ARM_COND_AL, dest, dest); - orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, dest, ORC_ARM_LSR, 8); + orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, dest, ORC_ARM_LSR, + 8); } } + static void -arm_rule_convusswb (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_convusswb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1318,11 +1365,13 @@ arm_rule_convusswb (OrcCompiler *p, void *user, OrcInstruction *insn) if (loop == 2) { /* pack two words */ orc_arm_emit_uxtb16 (p, ORC_ARM_COND_AL, dest, dest); - orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, dest, ORC_ARM_LSR, 8); + orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, dest, ORC_ARM_LSR, + 8); } } + static void -arm_rule_convuuswb (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_convuuswb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1339,33 +1388,37 @@ arm_rule_convuuswb (OrcCompiler *p, void *user, OrcInstruction *insn) if (loop == 2) { /* pack two words */ orc_arm_emit_uxtb16 (p, ORC_ARM_COND_AL, dest, dest); - orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, dest, ORC_ARM_LSR, 8); + orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, dest, ORC_ARM_LSR, + 8); } } + static void -arm_rule_convlw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_convlw (OrcCompiler * p, void *user, OrcInstruction * insn) { /* NOP */ } static void -arm_rule_convssslw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_convssslw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); orc_arm_emit_ssat (p, ORC_ARM_COND_AL, dest, 16, src1); } + static void -arm_rule_convsuslw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_convsuslw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); orc_arm_emit_usat (p, ORC_ARM_COND_AL, dest, 16, src1); } + static void -arm_rule_convusslw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_convusslw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1375,8 +1428,9 @@ arm_rule_convusslw (OrcCompiler *p, void *user, OrcInstruction *insn) /* saturate to signed region */ orc_arm_emit_usat (p, ORC_ARM_COND_AL, dest, 15, dest); } + static void -arm_rule_convuuslw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_convuuslw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1388,7 +1442,7 @@ arm_rule_convuuslw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -arm_rule_mulsbw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_mulsbw (OrcCompiler * p, void *user, OrcInstruction * insn) { /* BINARY_BW(mulsbw, "%s * %s") */ int src1 = ORC_SRC_ARG (p, insn, 0); @@ -1410,12 +1464,13 @@ arm_rule_mulsbw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_smulbb (p, ORC_ARM_COND_AL, tmp1, tmp1, tmp2); /* merge results */ - orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, tmp1, ORC_ARM_LSL, 16); + orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, tmp1, ORC_ARM_LSL, + 16); } } static void -arm_rule_mulubw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_mulubw (OrcCompiler * p, void *user, OrcInstruction * insn) { /* BINARY_BW(mulubw, "(uint8_t)%s * (uint8_t)%s") */ int src1 = ORC_SRC_ARG (p, insn, 0); @@ -1437,12 +1492,13 @@ arm_rule_mulubw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_smulbb (p, ORC_ARM_COND_AL, tmp1, tmp1, tmp2); /* merge results */ - orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, tmp1, ORC_ARM_LSL, 16); + orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, tmp1, ORC_ARM_LSL, + 16); } } static void -arm_rule_mulswl (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_mulswl (OrcCompiler * p, void *user, OrcInstruction * insn) { /* BINARY_WL(mulswl, "%s * %s") */ int src1 = ORC_SRC_ARG (p, insn, 0); @@ -1456,7 +1512,7 @@ arm_rule_mulswl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -arm_rule_muluwl (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_muluwl (OrcCompiler * p, void *user, OrcInstruction * insn) { /* BINARY_WL(muluwl, "(uint16_t)%s * (uint16_t)%s") */ int src1 = ORC_SRC_ARG (p, insn, 0); @@ -1470,7 +1526,7 @@ arm_rule_muluwl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -arm_rule_mergewl (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_mergewl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int src2 = ORC_SRC_ARG (p, insn, 1); @@ -1478,8 +1534,9 @@ arm_rule_mergewl (OrcCompiler *p, void *user, OrcInstruction *insn) orc_arm_emit_pkhbt_s (p, ORC_ARM_COND_AL, dest, src1, src2, 16); } + static void -arm_rule_mergebw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_mergebw (OrcCompiler * p, void *user, OrcInstruction * insn) { /* BINARY_BW(mergebw, "((uint8_t)%s) | ((uint8_t)%s << 8)") */ int src1 = ORC_SRC_ARG (p, insn, 0); @@ -1491,19 +1548,21 @@ arm_rule_mergebw (OrcCompiler *p, void *user, OrcInstruction *insn) if (loop == 1) { /* 1 word */ orc_arm_emit_uxtb (p, ORC_ARM_COND_AL, dest, src1); - orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, src2, ORC_ARM_LSL, 8); + orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, src2, ORC_ARM_LSL, + 8); } else { /* 2 words */ orc_arm_emit_pkhbt_s (p, ORC_ARM_COND_AL, dest, src1, src1, 8); orc_arm_emit_uxtb16 (p, ORC_ARM_COND_AL, dest, dest); orc_arm_emit_pkhbt_s (p, ORC_ARM_COND_AL, tmp, src2, src2, 8); orc_arm_emit_uxtb16 (p, ORC_ARM_COND_AL, tmp, tmp); - orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, tmp, ORC_ARM_LSL, 8); + orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, tmp, ORC_ARM_LSL, + 8); } } static void -arm_rule_select0wb (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_select0wb (OrcCompiler * p, void *user, OrcInstruction * insn) { /* UNARY_WB(select0wb, "(uint16_t)%s & 0xff") */ int src1 = ORC_SRC_ARG (p, insn, 0); @@ -1516,12 +1575,13 @@ arm_rule_select0wb (OrcCompiler *p, void *user, OrcInstruction *insn) } else { /* 2 words */ orc_arm_emit_uxtb16 (p, ORC_ARM_COND_AL, dest, src1); - orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, dest, ORC_ARM_LSR, 8); + orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, dest, ORC_ARM_LSR, + 8); } } static void -arm_rule_select1wb (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_select1wb (OrcCompiler * p, void *user, OrcInstruction * insn) { /* UNARY_WB(select1wb, "((uint16_t)%s >> 8)&0xff") */ int src1 = ORC_SRC_ARG (p, insn, 0); @@ -1534,17 +1594,20 @@ arm_rule_select1wb (OrcCompiler *p, void *user, OrcInstruction *insn) } else { /* 2 words */ orc_arm_emit_uxtb16_r8 (p, ORC_ARM_COND_AL, dest, src1, 8); - orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, dest, ORC_ARM_LSR, 8); + orc_arm_emit_orr_rsi (p, ORC_ARM_COND_AL, 0, dest, dest, dest, ORC_ARM_LSR, + 8); } } + static void -arm_rule_select0lw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_select0lw (OrcCompiler * p, void *user, OrcInstruction * insn) { /* UNARY_LW(select0lw, "(orc_uint32)%s & 0xffff") */ /* NOP */ } + static void -arm_rule_select1lw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_select1lw (OrcCompiler * p, void *user, OrcInstruction * insn) { /* UNARY_LW(select1lw, "((orc_uint32)%s >> 16)&0xffff") */ int src1 = ORC_SRC_ARG (p, insn, 0); @@ -1554,7 +1617,7 @@ arm_rule_select1lw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -arm_rule_swapw (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_swapw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1563,7 +1626,7 @@ arm_rule_swapw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -arm_rule_swapl (OrcCompiler *p, void *user, OrcInstruction *insn) +arm_rule_swapl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = ORC_SRC_ARG (p, insn, 0); int dest = ORC_DEST_ARG (p, insn, 0); @@ -1574,11 +1637,11 @@ arm_rule_swapl (OrcCompiler *p, void *user, OrcInstruction *insn) #define FAIL if (0) void -orc_compiler_orc_arm_register_rules (OrcTarget *target) +orc_compiler_orc_arm_register_rules (OrcTarget * target) { OrcRuleSet *rule_set; - rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target, 0); + rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target, 0); orc_rule_register (rule_set, "loadpb", arm_rule_loadpX, NULL); orc_rule_register (rule_set, "loadpw", arm_rule_loadpX, NULL); @@ -1592,16 +1655,16 @@ orc_compiler_orc_arm_register_rules (OrcTarget *target) orc_rule_register (rule_set, "andb", arm_rule_andX, NULL); orc_rule_register (rule_set, "andnb", arm_rule_andnX, NULL); - orc_rule_register (rule_set, "avgsb", arm_rule_avgX, (void *)3); - orc_rule_register (rule_set, "avgub", arm_rule_avgX, (void *)0); + orc_rule_register (rule_set, "avgsb", arm_rule_avgX, (void *) 3); + orc_rule_register (rule_set, "avgub", arm_rule_avgX, (void *) 0); orc_rule_register (rule_set, "copyb", arm_rule_copyX, NULL); orc_rule_register (rule_set, "orb", arm_rule_orX, NULL); orc_rule_register (rule_set, "xorb", arm_rule_xorX, NULL); orc_rule_register (rule_set, "andw", arm_rule_andX, NULL); orc_rule_register (rule_set, "andnw", arm_rule_andnX, NULL); - FAIL orc_rule_register (rule_set, "avgsw", arm_rule_avgX, (void *)2); - orc_rule_register (rule_set, "avguw", arm_rule_avgX, (void *)1); + FAIL orc_rule_register (rule_set, "avgsw", arm_rule_avgX, (void *) 2); + orc_rule_register (rule_set, "avguw", arm_rule_avgX, (void *) 1); orc_rule_register (rule_set, "copyw", arm_rule_copyX, NULL); orc_rule_register (rule_set, "orw", arm_rule_orX, NULL); orc_rule_register (rule_set, "xorw", arm_rule_xorX, NULL); @@ -1640,41 +1703,41 @@ orc_compiler_orc_arm_register_rules (OrcTarget *target) FAIL orc_rule_register (rule_set, "mulswl", arm_rule_mulswl, NULL); FAIL orc_rule_register (rule_set, "muluwl", arm_rule_muluwl, NULL); - rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target, + rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target, ORC_TARGET_ARM_EDSP); - FAIL orc_rule_register (rule_set, "absb", arm_rule_absX, (void *)0); - orc_rule_register (rule_set, "cmpeqb", arm_rule_cmpeqX, (void *)1); - orc_rule_register (rule_set, "cmpgtsb", arm_rule_cmpgtsX, (void *)1); + FAIL orc_rule_register (rule_set, "absb", arm_rule_absX, (void *) 0); + orc_rule_register (rule_set, "cmpeqb", arm_rule_cmpeqX, (void *) 1); + orc_rule_register (rule_set, "cmpgtsb", arm_rule_cmpgtsX, (void *) 1); FAIL orc_rule_register (rule_set, "maxsb", arm_rule_maxsb, NULL); FAIL orc_rule_register (rule_set, "maxub", arm_rule_maxub, NULL); FAIL orc_rule_register (rule_set, "minsb", arm_rule_minsb, NULL); FAIL orc_rule_register (rule_set, "minub", arm_rule_minub, NULL); - orc_rule_register (rule_set, "shlb", arm_rule_shlX, (void *)1); - FAIL orc_rule_register (rule_set, "shrsb", arm_rule_shrsX, (void *)1); - FAIL orc_rule_register (rule_set, "shrub", arm_rule_shruX, (void *)1); - FAIL orc_rule_register (rule_set, "signb", arm_rule_signX, (void *)0); - - FAIL orc_rule_register (rule_set, "absw", arm_rule_absX, (void *)1); - orc_rule_register (rule_set, "cmpeqw", arm_rule_cmpeqX, (void *)2); - orc_rule_register (rule_set, "cmpgtsw", arm_rule_cmpgtsX, (void *)2); + orc_rule_register (rule_set, "shlb", arm_rule_shlX, (void *) 1); + FAIL orc_rule_register (rule_set, "shrsb", arm_rule_shrsX, (void *) 1); + FAIL orc_rule_register (rule_set, "shrub", arm_rule_shruX, (void *) 1); + FAIL orc_rule_register (rule_set, "signb", arm_rule_signX, (void *) 0); + + FAIL orc_rule_register (rule_set, "absw", arm_rule_absX, (void *) 1); + orc_rule_register (rule_set, "cmpeqw", arm_rule_cmpeqX, (void *) 2); + orc_rule_register (rule_set, "cmpgtsw", arm_rule_cmpgtsX, (void *) 2); FAIL orc_rule_register (rule_set, "maxsw", arm_rule_maxsw, NULL); FAIL orc_rule_register (rule_set, "maxuw", arm_rule_maxuw, NULL); FAIL orc_rule_register (rule_set, "minsw", arm_rule_minsw, NULL); FAIL orc_rule_register (rule_set, "minuw", arm_rule_minuw, NULL); orc_rule_register (rule_set, "mulsbw", arm_rule_mulsbw, NULL); - orc_rule_register (rule_set, "shlw", arm_rule_shlX, (void *)2); - FAIL orc_rule_register (rule_set, "shrsw", arm_rule_shrsX, (void *)2); - orc_rule_register (rule_set, "shruw", arm_rule_shruX, (void *)2); - FAIL orc_rule_register (rule_set, "signw", arm_rule_signX, (void *)1); + orc_rule_register (rule_set, "shlw", arm_rule_shlX, (void *) 2); + FAIL orc_rule_register (rule_set, "shrsw", arm_rule_shrsX, (void *) 2); + orc_rule_register (rule_set, "shruw", arm_rule_shruX, (void *) 2); + FAIL orc_rule_register (rule_set, "signw", arm_rule_signX, (void *) 1); orc_rule_register (rule_set, "mulhsw", arm_rule_mulhsw, NULL); FAIL orc_rule_register (rule_set, "mulhuw", arm_rule_mulhuw, NULL); orc_rule_register (rule_set, "cmpeql", arm_rule_cmpeql, NULL); orc_rule_register (rule_set, "cmpgtsl", arm_rule_cmpgtsl, NULL); - orc_rule_register (rule_set, "shll", arm_rule_shlX, (void *)4); - orc_rule_register (rule_set, "shrsl", arm_rule_shrsX, (void *)4); - orc_rule_register (rule_set, "shrul", arm_rule_shruX, (void *)4); + orc_rule_register (rule_set, "shll", arm_rule_shlX, (void *) 4); + orc_rule_register (rule_set, "shrsl", arm_rule_shrsX, (void *) 4); + orc_rule_register (rule_set, "shrul", arm_rule_shruX, (void *) 4); orc_rule_register (rule_set, "convsbw", arm_rule_convsbw, NULL); @@ -1685,7 +1748,7 @@ orc_compiler_orc_arm_register_rules (OrcTarget *target) orc_rule_register (rule_set, "select0lw", arm_rule_select0lw, NULL); orc_rule_register (rule_set, "select1lw", arm_rule_select1lw, NULL); - rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target, + rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target, ORC_TARGET_ARM_ARM6); orc_rule_register (rule_set, "addb", arm_rule_addb, NULL); @@ -1715,4 +1778,3 @@ orc_compiler_orc_arm_register_rules (OrcTarget *target) orc_rule_register (rule_set, "swapl", arm_rule_swapl, NULL); } - diff --git a/orc/orcrules-mmx.c b/orc/orcrules-mmx.c index 4875410..6255043 100644 --- a/orc/orcrules-mmx.c +++ b/orc/orcrules-mmx.c @@ -17,43 +17,43 @@ /* sse rules */ static void -mmx_rule_loadpX (OrcCompiler *compiler, void *user, OrcInstruction *insn) +mmx_rule_loadpX (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; int reg; - int size = ORC_PTR_TO_INT(user); + int size = ORC_PTR_TO_INT (user); if (src->vartype == ORC_VAR_TYPE_PARAM) { reg = dest->alloc; if (size == 8 && src->size == 8) { orc_x86_emit_mov_memoffset_mmx (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[insn->src_args[0]]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[insn->src_args[0]]), compiler->exec_reg, reg, FALSE); #ifndef MMX orc_mmx_emit_movhps_load_memoffset (compiler, - (int)ORC_STRUCT_OFFSET(OrcExecutor, - params[insn->src_args[0] + (ORC_VAR_T1 - ORC_VAR_P1)]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, + params[insn->src_args[0] + (ORC_VAR_T1 - ORC_VAR_P1)]), compiler->exec_reg, reg); - orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF(2,0,2,0), reg, reg); + orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF (2, 0, 2, 0), reg, reg); #else /* FIXME yes, I understand this is terrible */ orc_mmx_emit_pinsrw_memoffset (compiler, 2, - (int)ORC_STRUCT_OFFSET(OrcExecutor, - params[insn->src_args[0] + (ORC_VAR_T1 - ORC_VAR_P1)]) + 0, + (int) ORC_STRUCT_OFFSET (OrcExecutor, + params[insn->src_args[0] + (ORC_VAR_T1 - ORC_VAR_P1)]) + 0, compiler->exec_reg, reg); orc_mmx_emit_pinsrw_memoffset (compiler, 3, - (int)ORC_STRUCT_OFFSET(OrcExecutor, - params[insn->src_args[0] + (ORC_VAR_T1 - ORC_VAR_P1)]) + 2, + (int) ORC_STRUCT_OFFSET (OrcExecutor, + params[insn->src_args[0] + (ORC_VAR_T1 - ORC_VAR_P1)]) + 2, compiler->exec_reg, reg); #ifndef MMX - orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF(1,0,1,0), reg, reg); + orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF (1, 0, 1, 0), reg, reg); #endif #endif } else { orc_x86_emit_mov_memoffset_mmx (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[insn->src_args[0]]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[insn->src_args[0]]), compiler->exec_reg, reg, FALSE); if (size < 8) { if (size == 1) { @@ -66,26 +66,26 @@ mmx_rule_loadpX (OrcCompiler *compiler, void *user, OrcInstruction *insn) orc_mmx_emit_pshufd (compiler, 0, reg, reg); #else if (size <= 2) { - orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF(0,0,0,0), reg, reg); + orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF (0, 0, 0, 0), reg, reg); } else { - orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF(1,0,1,0), reg, reg); + orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF (1, 0, 1, 0), reg, reg); } #endif } else { #ifndef MMX - orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF(1,0,1,0), reg, reg); + orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF (1, 0, 1, 0), reg, reg); #endif } } } else if (src->vartype == ORC_VAR_TYPE_CONST) { orc_mmx_load_constant (compiler, dest->alloc, size, src->value.i); } else { - ORC_ASSERT(0); + ORC_ASSERT (0); } } static void -mmx_rule_loadX (OrcCompiler *compiler, void *user, OrcInstruction *insn) +mmx_rule_loadX (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; @@ -96,17 +96,18 @@ mmx_rule_loadX (OrcCompiler *compiler, void *user, OrcInstruction *insn) if (src->ptr_register == 0) { int i = insn->src_args[0]; orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i]), compiler->exec_reg, compiler->gp_tmpreg); ptr_reg = compiler->gp_tmpreg; } else { ptr_reg = src->ptr_register; - } + } switch (src->size << compiler->loop_shift) { case 1: orc_x86_emit_mov_memoffset_reg (compiler, 1, offset, ptr_reg, compiler->gp_tmpreg); - orc_mmx_emit_movd_load_register (compiler, compiler->gp_tmpreg, dest->alloc); + orc_mmx_emit_movd_load_register (compiler, compiler->gp_tmpreg, + dest->alloc); break; case 2: orc_mmx_emit_pxor (compiler, dest->alloc, dest->alloc); @@ -134,7 +135,7 @@ mmx_rule_loadX (OrcCompiler *compiler, void *user, OrcInstruction *insn) } static void -mmx_rule_loadoffX (OrcCompiler *compiler, void *user, OrcInstruction *insn) +mmx_rule_loadoffX (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; @@ -142,27 +143,29 @@ mmx_rule_loadoffX (OrcCompiler *compiler, void *user, OrcInstruction *insn) int offset = 0; if (compiler->vars[insn->src_args[1]].vartype != ORC_VAR_TYPE_CONST) { - orc_compiler_error (compiler, "code generation rule for %s only works with constant offset", + orc_compiler_error (compiler, + "code generation rule for %s only works with constant offset", insn->opcode->name); return; } offset = (compiler->offset + compiler->vars[insn->src_args[1]].value.i) * - src->size; + src->size; if (src->ptr_register == 0) { int i = insn->src_args[0]; orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i]), compiler->exec_reg, compiler->gp_tmpreg); ptr_reg = compiler->gp_tmpreg; } else { ptr_reg = src->ptr_register; - } + } switch (src->size << compiler->loop_shift) { case 1: orc_x86_emit_mov_memoffset_reg (compiler, 1, offset, ptr_reg, compiler->gp_tmpreg); - orc_mmx_emit_movd_load_register (compiler, compiler->gp_tmpreg, dest->alloc); + orc_mmx_emit_movd_load_register (compiler, compiler->gp_tmpreg, + dest->alloc); break; case 2: orc_mmx_emit_pxor (compiler, dest->alloc, dest->alloc); @@ -181,7 +184,7 @@ mmx_rule_loadoffX (OrcCompiler *compiler, void *user, OrcInstruction *insn) dest->alloc, src->is_aligned); break; default: - orc_compiler_error (compiler,"bad load size %d", + orc_compiler_error (compiler, "bad load size %d", src->size << compiler->loop_shift); break; } @@ -190,7 +193,7 @@ mmx_rule_loadoffX (OrcCompiler *compiler, void *user, OrcInstruction *insn) } static void -mmx_rule_loadupib (OrcCompiler *compiler, void *user, OrcInstruction *insn) +mmx_rule_loadupib (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; @@ -202,12 +205,12 @@ mmx_rule_loadupib (OrcCompiler *compiler, void *user, OrcInstruction *insn) if (src->ptr_register == 0) { int i = insn->src_args[0]; orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i]), compiler->exec_reg, compiler->gp_tmpreg); ptr_reg = compiler->gp_tmpreg; } else { ptr_reg = src->ptr_register; - } + } switch (src->size << compiler->loop_shift) { case 1: case 2: @@ -238,7 +241,7 @@ mmx_rule_loadupib (OrcCompiler *compiler, void *user, OrcInstruction *insn) tmp, FALSE); break; default: - orc_compiler_error(compiler,"bad load size %d", + orc_compiler_error (compiler, "bad load size %d", src->size << compiler->loop_shift); break; } @@ -250,7 +253,7 @@ mmx_rule_loadupib (OrcCompiler *compiler, void *user, OrcInstruction *insn) } static void -mmx_rule_loadupdb (OrcCompiler *compiler, void *user, OrcInstruction *insn) +mmx_rule_loadupdb (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; @@ -261,18 +264,19 @@ mmx_rule_loadupdb (OrcCompiler *compiler, void *user, OrcInstruction *insn) if (src->ptr_register == 0) { int i = insn->src_args[0]; orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i]), compiler->exec_reg, compiler->gp_tmpreg); ptr_reg = compiler->gp_tmpreg; } else { ptr_reg = src->ptr_register; - } + } switch (src->size << compiler->loop_shift) { case 1: case 2: orc_x86_emit_mov_memoffset_reg (compiler, 1, offset, ptr_reg, compiler->gp_tmpreg); - orc_mmx_emit_movd_load_register (compiler, compiler->gp_tmpreg, dest->alloc); + orc_mmx_emit_movd_load_register (compiler, compiler->gp_tmpreg, + dest->alloc); break; case 4: orc_mmx_emit_pinsrw_memoffset (compiler, 0, offset, ptr_reg, dest->alloc); @@ -290,7 +294,7 @@ mmx_rule_loadupdb (OrcCompiler *compiler, void *user, OrcInstruction *insn) dest->alloc, src->is_aligned); break; default: - orc_compiler_error(compiler,"bad load size %d", + orc_compiler_error (compiler, "bad load size %d", src->size << compiler->loop_shift); break; } @@ -310,7 +314,7 @@ mmx_rule_loadupdb (OrcCompiler *compiler, void *user, OrcInstruction *insn) } static void -mmx_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn) +mmx_rule_storeX (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; @@ -321,10 +325,10 @@ mmx_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn) if (dest->ptr_register == 0) { orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4, dest->ptr_offset, compiler->exec_reg, compiler->gp_tmpreg); - ptr_reg = compiler->gp_tmpreg; + ptr_reg = compiler->gp_tmpreg; } else { ptr_reg = dest->ptr_register; - } + } switch (dest->size << compiler->loop_shift) { case 1: /* FIXME we might be using ecx twice here */ @@ -332,9 +336,10 @@ mmx_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn) orc_compiler_error (compiler, "unimplemented corner case in %s", insn->opcode->name); } - orc_mmx_emit_movd_store_register (compiler, src->alloc, compiler->gp_tmpreg); - orc_x86_emit_mov_reg_memoffset (compiler, 1, compiler->gp_tmpreg, - offset, ptr_reg); + orc_mmx_emit_movd_store_register (compiler, src->alloc, + compiler->gp_tmpreg); + orc_x86_emit_mov_reg_memoffset (compiler, 1, compiler->gp_tmpreg, offset, + ptr_reg); break; case 2: if (compiler->target_flags & ORC_TARGET_MMX_SSE4_1) { @@ -343,10 +348,11 @@ mmx_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn) } else { /* FIXME we might be using ecx twice here */ if (ptr_reg == compiler->gp_tmpreg) { - orc_compiler_error(compiler, "unimplemented corner case in %s", + orc_compiler_error (compiler, "unimplemented corner case in %s", insn->opcode->name); - } - orc_mmx_emit_movd_store_register (compiler, src->alloc, compiler->gp_tmpreg); + } + orc_mmx_emit_movd_store_register (compiler, src->alloc, + compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 2, compiler->gp_tmpreg, offset, ptr_reg); } @@ -373,7 +379,7 @@ mmx_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn) #if try1 static void -mmx_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn) +mmx_rule_ldresnearl (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; @@ -408,7 +414,7 @@ mmx_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn) orc_mmx_emit_paddb (compiler, tmp, tmp); #endif - orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF(0,0,0,0), tmp, tmp2); + orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF (0, 0, 0, 0), tmp, tmp2); orc_mmx_emit_psubd (compiler, tmp2, tmp); tmpc = orc_compiler_get_constant (compiler, 4, 0x03020100); orc_mmx_emit_paddd (compiler, tmpc, tmp); @@ -425,7 +431,7 @@ mmx_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn) #endif static void -mmx_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn) +mmx_rule_ldresnearl (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; int increment_var = insn->src_args[2]; @@ -433,7 +439,7 @@ mmx_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn) int tmp = orc_compiler_get_temp_reg (compiler); int i; - for(i=0;i<(1<<compiler->loop_shift);i++){ + for (i = 0; i < (1 << compiler->loop_shift); i++) { if (i == 0) { orc_x86_emit_mov_memoffset_mmx (compiler, 4, 0, src->ptr_register, dest->alloc, FALSE); @@ -442,31 +448,30 @@ mmx_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn) src->ptr_register, compiler->gp_tmpreg, 2, tmp, FALSE); #ifdef MMX //orc_mmx_emit_punpckldq (compiler, tmp, dest->alloc); - orc_mmx_emit_psllq_imm (compiler, 8*4*i, tmp); + orc_mmx_emit_psllq_imm (compiler, 8 * 4 * i, tmp); orc_mmx_emit_por (compiler, tmp, dest->alloc); #else - orc_mmx_emit_pslldq_imm (compiler, 4*i, tmp); + orc_mmx_emit_pslldq_imm (compiler, 4 * i, tmp); orc_mmx_emit_por (compiler, tmp, dest->alloc); #endif } if (compiler->vars[increment_var].vartype == ORC_VAR_TYPE_PARAM) { orc_x86_emit_add_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[increment_var]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[increment_var]), compiler->exec_reg, src->ptr_offset); } else { orc_x86_emit_add_imm_reg (compiler, 4, - compiler->vars[increment_var].value.i, - src->ptr_offset, FALSE); + compiler->vars[increment_var].value.i, src->ptr_offset, FALSE); } - orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, compiler->gp_tmpreg); + orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, + compiler->gp_tmpreg); orc_x86_emit_sar_imm_reg (compiler, 4, 16, compiler->gp_tmpreg); } orc_x86_emit_add_reg_reg_shift (compiler, compiler->is_64bit ? 8 : 4, - compiler->gp_tmpreg, - src->ptr_register, 2); + compiler->gp_tmpreg, src->ptr_register, 2); orc_x86_emit_and_imm_reg (compiler, 4, 0xffff, src->ptr_offset); src->update_type = 0; @@ -474,7 +479,7 @@ mmx_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn) #ifndef MMX static void -mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) +mmx_rule_ldreslinl (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; int increment_var = insn->src_args[2]; @@ -490,11 +495,11 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) orc_mmx_emit_pxor (compiler, tmp2, tmp2); orc_mmx_emit_punpcklbw (compiler, tmp2, tmp); - orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF(3,2,3,2), tmp, tmp2); + orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF (3, 2, 3, 2), tmp, tmp2); orc_mmx_emit_psubw (compiler, tmp, tmp2); orc_mmx_emit_movd_load_register (compiler, src->ptr_offset, tmp); - orc_mmx_emit_pshuflw (compiler, ORC_MMX_SHUF(0,0,0,0), tmp, tmp); + orc_mmx_emit_pshuflw (compiler, ORC_MMX_SHUF (0, 0, 0, 0), tmp, tmp); orc_mmx_emit_psrlw_imm (compiler, 8, tmp); orc_mmx_emit_pmullw (compiler, tmp2, tmp); orc_mmx_emit_psraw_imm (compiler, 8, tmp); @@ -507,15 +512,15 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) if (compiler->vars[increment_var].vartype == ORC_VAR_TYPE_PARAM) { orc_x86_emit_add_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[increment_var]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[increment_var]), compiler->exec_reg, src->ptr_offset); } else { orc_x86_emit_add_imm_reg (compiler, regsize, - compiler->vars[increment_var].value.i, - src->ptr_offset, FALSE); + compiler->vars[increment_var].value.i, src->ptr_offset, FALSE); } - orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, compiler->gp_tmpreg); + orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, + compiler->gp_tmpreg); orc_x86_emit_sar_imm_reg (compiler, 4, 16, compiler->gp_tmpreg); orc_x86_emit_add_reg_reg_shift (compiler, regsize, compiler->gp_tmpreg, @@ -525,21 +530,21 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) int tmp3 = orc_compiler_get_temp_reg (compiler); int tmp4 = orc_compiler_get_temp_reg (compiler); - for(i=0;i<(1<<compiler->loop_shift);i+=2){ + for (i = 0; i < (1 << compiler->loop_shift); i += 2) { orc_x86_emit_mov_memoffset_mmx (compiler, 8, 0, src->ptr_register, tmp, FALSE); orc_mmx_emit_movd_load_register (compiler, src->ptr_offset, tmp4); if (compiler->vars[increment_var].vartype == ORC_VAR_TYPE_PARAM) { orc_x86_emit_add_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[increment_var]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[increment_var]), compiler->exec_reg, src->ptr_offset); } else { orc_x86_emit_add_imm_reg (compiler, 4, - compiler->vars[increment_var].value.i, - src->ptr_offset, FALSE); + compiler->vars[increment_var].value.i, src->ptr_offset, FALSE); } - orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, compiler->gp_tmpreg); + orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, + compiler->gp_tmpreg); orc_x86_emit_sar_imm_reg (compiler, 4, 16, compiler->gp_tmpreg); orc_x86_emit_mov_memindex_mmx (compiler, 8, 0, @@ -565,8 +570,8 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) orc_mmx_emit_punpcklwd (compiler, tmp4, tmp4); orc_mmx_emit_punpckldq (compiler, tmp4, tmp4); #else - orc_mmx_emit_pshuflw (compiler, ORC_MMX_SHUF(1,1,0,0), tmp4, tmp4); - orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF(1,1,0,0), tmp4, tmp4); + orc_mmx_emit_pshuflw (compiler, ORC_MMX_SHUF (1, 1, 0, 0), tmp4, tmp4); + orc_mmx_emit_pshufd (compiler, ORC_MMX_SHUF (1, 1, 0, 0), tmp4, tmp4); #endif orc_mmx_emit_psrlw_imm (compiler, 8, tmp4); orc_mmx_emit_pmullw (compiler, tmp4, tmp2); @@ -581,15 +586,15 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) if (compiler->vars[increment_var].vartype == ORC_VAR_TYPE_PARAM) { orc_x86_emit_add_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[increment_var]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[increment_var]), compiler->exec_reg, src->ptr_offset); } else { orc_x86_emit_add_imm_reg (compiler, 4, - compiler->vars[increment_var].value.i, - src->ptr_offset, FALSE); + compiler->vars[increment_var].value.i, src->ptr_offset, FALSE); } - orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, compiler->gp_tmpreg); + orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, + compiler->gp_tmpreg); orc_x86_emit_sar_imm_reg (compiler, 4, 16, compiler->gp_tmpreg); orc_x86_emit_add_reg_reg_shift (compiler, 8, compiler->gp_tmpreg, @@ -602,7 +607,7 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) } #else static void -mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) +mmx_rule_ldreslinl (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; int increment_var = insn->src_args[2]; @@ -614,7 +619,7 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) int i; zero = orc_compiler_get_constant (compiler, 1, 0); - for(i=0;i<(1<<compiler->loop_shift);i++){ + for (i = 0; i < (1 << compiler->loop_shift); i++) { orc_x86_emit_mov_memoffset_mmx (compiler, 4, 0, src->ptr_register, tmp, FALSE); orc_x86_emit_mov_memoffset_mmx (compiler, 4, 4, @@ -625,7 +630,7 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) orc_mmx_emit_psubw (compiler, tmp, tmp2); orc_mmx_emit_movd_load_register (compiler, src->ptr_offset, tmp); - orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF(0,0,0,0), tmp, tmp); + orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF (0, 0, 0, 0), tmp, tmp); orc_mmx_emit_psrlw_imm (compiler, 8, tmp); orc_mmx_emit_pmullw (compiler, tmp2, tmp); orc_mmx_emit_psraw_imm (compiler, 8, tmp); @@ -646,15 +651,15 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) if (compiler->vars[increment_var].vartype == ORC_VAR_TYPE_PARAM) { orc_x86_emit_add_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[increment_var]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[increment_var]), compiler->exec_reg, src->ptr_offset); } else { orc_x86_emit_add_imm_reg (compiler, regsize, - compiler->vars[increment_var].value.i, - src->ptr_offset, FALSE); + compiler->vars[increment_var].value.i, src->ptr_offset, FALSE); } - orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, compiler->gp_tmpreg); + orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, + compiler->gp_tmpreg); orc_x86_emit_sar_imm_reg (compiler, 4, 16, compiler->gp_tmpreg); orc_x86_emit_add_reg_reg_shift (compiler, regsize, compiler->gp_tmpreg, @@ -667,15 +672,14 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) #endif static void -mmx_rule_copyx (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_copyx (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->vars[insn->src_args[0]].alloc == p->vars[insn->dest_args[0]].alloc) { return; } orc_mmx_emit_movq (p, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[0]].alloc, p->vars[insn->dest_args[0]].alloc); } #define UNARY(opcode,insn_name,code) \ @@ -697,89 +701,87 @@ mmx_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \ } -UNARY(absb,pabsb,0x381c) -BINARY(addb,paddb,0xfc) -BINARY(addssb,paddsb,0xec) -BINARY(addusb,paddusb,0xdc) -BINARY(andb,pand,0xdb) -BINARY(andnb,pandn,0xdf) -BINARY(avgub,pavgb,0xe0) -BINARY(cmpeqb,pcmpeqb,0x74) -BINARY(cmpgtsb,pcmpgtb,0x64) -BINARY(maxsb,pmaxsb,0x383c) -BINARY(maxub,pmaxub,0xde) -BINARY(minsb,pminsb,0x3838) -BINARY(minub,pminub,0xda) +UNARY (absb, pabsb, 0x381c) + BINARY (addb, paddb, 0xfc) + BINARY (addssb, paddsb, 0xec) + BINARY (addusb, paddusb, 0xdc) + BINARY (andb, pand, 0xdb) + BINARY (andnb, pandn, 0xdf) + BINARY (avgub, pavgb, 0xe0) + BINARY (cmpeqb, pcmpeqb, 0x74) + BINARY (cmpgtsb, pcmpgtb, 0x64) + BINARY (maxsb, pmaxsb, 0x383c) + BINARY (maxub, pmaxub, 0xde) + BINARY (minsb, pminsb, 0x3838) + BINARY (minub, pminub, 0xda) //BINARY(mullb,pmullb,0xd5) //BINARY(mulhsb,pmulhb,0xe5) //BINARY(mulhub,pmulhub,0xe4) -BINARY(orb,por,0xeb) + BINARY (orb, por, 0xeb) //UNARY(signb,psignb,0x3808) -BINARY(subb,psubb,0xf8) -BINARY(subssb,psubsb,0xe8) -BINARY(subusb,psubusb,0xd8) -BINARY(xorb,pxor,0xef) - -UNARY(absw,pabsw,0x381d) -BINARY(addw,paddw,0xfd) -BINARY(addssw,paddsw,0xed) -BINARY(addusw,paddusw,0xdd) -BINARY(andw,pand,0xdb) -BINARY(andnw,pandn,0xdf) -BINARY(avguw,pavgw,0xe3) -BINARY(cmpeqw,pcmpeqw,0x75) -BINARY(cmpgtsw,pcmpgtw,0x65) -BINARY(maxsw,pmaxsw,0xee) -BINARY(maxuw,pmaxuw,0x383e) -BINARY(minsw,pminsw,0xea) -BINARY(minuw,pminuw,0x383a) -BINARY(mullw,pmullw,0xd5) -BINARY(mulhsw,pmulhw,0xe5) -BINARY(mulhuw,pmulhuw,0xe4) -BINARY(orw,por,0xeb) + BINARY (subb, psubb, 0xf8) + BINARY (subssb, psubsb, 0xe8) + BINARY (subusb, psubusb, 0xd8) + BINARY (xorb, pxor, 0xef) + + UNARY (absw, pabsw, 0x381d) + BINARY (addw, paddw, 0xfd) + BINARY (addssw, paddsw, 0xed) + BINARY (addusw, paddusw, 0xdd) + BINARY (andw, pand, 0xdb) + BINARY (andnw, pandn, 0xdf) + BINARY (avguw, pavgw, 0xe3) + BINARY (cmpeqw, pcmpeqw, 0x75) + BINARY (cmpgtsw, pcmpgtw, 0x65) + BINARY (maxsw, pmaxsw, 0xee) + BINARY (maxuw, pmaxuw, 0x383e) + BINARY (minsw, pminsw, 0xea) + BINARY (minuw, pminuw, 0x383a) + BINARY (mullw, pmullw, 0xd5) + BINARY (mulhsw, pmulhw, 0xe5) + BINARY (mulhuw, pmulhuw, 0xe4) + BINARY (orw, por, 0xeb) //UNARY(signw,psignw,0x3809) -BINARY(subw,psubw,0xf9) -BINARY(subssw,psubsw,0xe9) -BINARY(subusw,psubusw,0xd9) -BINARY(xorw,pxor,0xef) + BINARY (subw, psubw, 0xf9) + BINARY (subssw, psubsw, 0xe9) + BINARY (subusw, psubusw, 0xd9) + BINARY (xorw, pxor, 0xef) -UNARY(absl,pabsd,0x381e) -BINARY(addl,paddd,0xfe) + UNARY (absl, pabsd, 0x381e) + BINARY (addl, paddd, 0xfe) //BINARY(addssl,paddsd,0xed) //BINARY(addusl,paddusd,0xdd) -BINARY(andl,pand,0xdb) -BINARY(andnl,pandn,0xdf) + BINARY (andl, pand, 0xdb) + BINARY (andnl, pandn, 0xdf) //BINARY(avgul,pavgd,0xe3) -BINARY(cmpeql,pcmpeqd,0x76) -BINARY(cmpgtsl,pcmpgtd,0x66) -BINARY(maxsl,pmaxsd,0x383d) -BINARY(maxul,pmaxud,0x383f) -BINARY(minsl,pminsd,0x3839) -BINARY(minul,pminud,0x383b) -BINARY(mulll,pmulld,0x3840) + BINARY (cmpeql, pcmpeqd, 0x76) + BINARY (cmpgtsl, pcmpgtd, 0x66) + BINARY (maxsl, pmaxsd, 0x383d) + BINARY (maxul, pmaxud, 0x383f) + BINARY (minsl, pminsd, 0x3839) + BINARY (minul, pminud, 0x383b) + BINARY (mulll, pmulld, 0x3840) //BINARY(mulhsl,pmulhd,0xe5) //BINARY(mulhul,pmulhud,0xe4) -BINARY(orl,por,0xeb) + BINARY (orl, por, 0xeb) //UNARY(signl,psignd,0x380a) -BINARY(subl,psubd,0xfa) + BINARY (subl, psubd, 0xfa) //BINARY(subssl,psubsd,0xe9) //BINARY(subusl,psubusd,0xd9) -BINARY(xorl,pxor,0xef) - -BINARY(andq,pand,0xdb) -BINARY(andnq,pandn,0xdf) -BINARY(orq,por,0xeb) -BINARY(xorq,pxor,0xef) -BINARY(cmpeqq,pcmpeqq,0x3829) -BINARY(cmpgtsq,pcmpgtq,0x3837) - + BINARY (xorl, pxor, 0xef) + + BINARY (andq, pand, 0xdb) + BINARY (andnq, pandn, 0xdf) + BINARY (orq, por, 0xeb) + BINARY (xorq, pxor, 0xef) + BINARY (cmpeqq, pcmpeqq, 0x3829) + BINARY (cmpgtsq, pcmpgtq, 0x3837) #ifndef MMX -BINARY(addq,paddq,0xd4) -BINARY(subq,psubq,0xfb) + BINARY (addq, paddq, 0xd4) + BINARY (subq, psubq, 0xfb) #endif - -static void -mmx_rule_accw (OrcCompiler *p, void *user, OrcInstruction *insn) + static void + mmx_rule_accw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -788,7 +790,7 @@ mmx_rule_accw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_accl (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_accl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -802,7 +804,7 @@ mmx_rule_accl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_accsadubl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = p->vars[insn->src_args[0]].alloc; int src2 = p->vars[insn->src_args[1]].alloc; @@ -813,9 +815,9 @@ mmx_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn) #ifndef MMX if (p->loop_shift <= 2) { orc_mmx_emit_movq (p, src1, tmp); - orc_mmx_emit_pslldq_imm (p, 16 - (1<<p->loop_shift), tmp); + orc_mmx_emit_pslldq_imm (p, 16 - (1 << p->loop_shift), tmp); orc_mmx_emit_movq (p, src2, tmp2); - orc_mmx_emit_pslldq_imm (p, 16 - (1<<p->loop_shift), tmp2); + orc_mmx_emit_pslldq_imm (p, 16 - (1 << p->loop_shift), tmp2); orc_mmx_emit_psadbw (p, tmp2, tmp); } else if (p->loop_shift == 3) { orc_mmx_emit_movq (p, src1, tmp); @@ -828,9 +830,9 @@ mmx_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn) #else if (p->loop_shift <= 2) { orc_mmx_emit_movq (p, src1, tmp); - orc_mmx_emit_psllq_imm (p, 8*(8 - (1<<p->loop_shift)), tmp); + orc_mmx_emit_psllq_imm (p, 8 * (8 - (1 << p->loop_shift)), tmp); orc_mmx_emit_movq (p, src2, tmp2); - orc_mmx_emit_psllq_imm (p, 8*(8 - (1<<p->loop_shift)), tmp2); + orc_mmx_emit_psllq_imm (p, 8 * (8 - (1 << p->loop_shift)), tmp2); orc_mmx_emit_psadbw (p, tmp2, tmp); } else { orc_mmx_emit_movq (p, src1, tmp); @@ -842,15 +844,15 @@ mmx_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn) #ifndef MMX static void -mmx_rule_signX_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_signX_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; int opcodes[] = { ORC_X86_psignb, ORC_X86_psignw, ORC_X86_psignd }; - int type = ORC_PTR_TO_INT(user); + int type = ORC_PTR_TO_INT (user); int tmpc; - tmpc = orc_compiler_get_temp_constant (p, 1<<type, 1); + tmpc = orc_compiler_get_temp_constant (p, 1 << type, 1); if (src == dest) { orc_x86_emit_cpuinsn_size (p, opcodes[type], 16, src, tmpc); orc_mmx_emit_movq (p, tmpc, dest); @@ -863,7 +865,7 @@ mmx_rule_signX_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) #endif static void -mmx_rule_signw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_signw_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -876,7 +878,7 @@ mmx_rule_signw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_absb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_absb_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -889,7 +891,7 @@ mmx_rule_absb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_absw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_absw_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -909,7 +911,7 @@ mmx_rule_absw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_absl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_absl_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -929,19 +931,21 @@ mmx_rule_absl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_shift (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_shift (OrcCompiler * p, void *user, OrcInstruction * insn) { - int type = ORC_PTR_TO_INT(user); + int type = ORC_PTR_TO_INT (user); //int imm_code1[] = { 0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x73, 0x73 }; //int imm_code2[] = { 6, 2, 4, 6, 2, 4, 6, 2 }; //int reg_code[] = { 0xf1, 0xd1, 0xe1, 0xf2, 0xd2, 0xe2, 0xf3, 0xd3 }; //const char *code[] = { "psllw", "psrlw", "psraw", "pslld", "psrld", "psrad", "psllq", "psrlq" }; const int opcodes[] = { ORC_X86_psllw, ORC_X86_psrlw, ORC_X86_psraw, ORC_X86_pslld, ORC_X86_psrld, ORC_X86_psrad, ORC_X86_psllq, - ORC_X86_psrlq }; + ORC_X86_psrlq + }; const int opcodes_imm[] = { ORC_X86_psllw_imm, ORC_X86_psrlw_imm, ORC_X86_psraw_imm, ORC_X86_pslld_imm, ORC_X86_psrld_imm, - ORC_X86_psrad_imm, ORC_X86_psllq_imm, ORC_X86_psrlq_imm }; + ORC_X86_psrad_imm, ORC_X86_psllq_imm, ORC_X86_psrlq_imm + }; if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) { orc_x86_emit_cpuinsn_imm (p, opcodes_imm[type], @@ -953,7 +957,7 @@ mmx_rule_shift (OrcCompiler *p, void *user, OrcInstruction *insn) /* FIXME this is a gross hack to reload the register with a * 64-bit version of the parameter. */ orc_x86_emit_mov_memoffset_mmx (p, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[insn->src_args[1]]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[insn->src_args[1]]), p->exec_reg, tmp, FALSE); orc_x86_emit_cpuinsn_size (p, opcodes[type], 16, tmp, @@ -966,7 +970,7 @@ mmx_rule_shift (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_shlb (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_shlb (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -974,7 +978,7 @@ mmx_rule_shlb (OrcCompiler *p, void *user, OrcInstruction *insn) if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) { orc_mmx_emit_psllw_imm (p, p->vars[insn->src_args[1]].value.i, dest); tmp = orc_compiler_get_constant (p, 1, - 0xff&(0xff<<p->vars[insn->src_args[1]].value.i)); + 0xff & (0xff << p->vars[insn->src_args[1]].value.i)); orc_mmx_emit_pand (p, tmp, dest); } else { orc_compiler_error (p, "code generation rule for %s only works with " @@ -984,7 +988,7 @@ mmx_rule_shlb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_shrsb (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_shrsb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1008,7 +1012,7 @@ mmx_rule_shrsb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_shrub (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_shrub (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -1016,7 +1020,7 @@ mmx_rule_shrub (OrcCompiler *p, void *user, OrcInstruction *insn) if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) { orc_mmx_emit_psrlw_imm (p, p->vars[insn->src_args[1]].value.i, dest); tmp = orc_compiler_get_constant (p, 1, - (0xff>>p->vars[insn->src_args[1]].value.i)); + (0xff >> p->vars[insn->src_args[1]].value.i)); orc_mmx_emit_pand (p, tmp, dest); } else { orc_compiler_error (p, "code generation rule for %s only works with " @@ -1026,7 +1030,7 @@ mmx_rule_shrub (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_shrsq (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_shrsq (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1034,12 +1038,12 @@ mmx_rule_shrsq (OrcCompiler *p, void *user, OrcInstruction *insn) if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) { #ifndef MMX - orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(3,3,1,1), src, tmp); + orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (3, 3, 1, 1), src, tmp); #else - orc_mmx_emit_pshufw (p, ORC_MMX_SHUF(3,2,3,2), src, tmp); + orc_mmx_emit_pshufw (p, ORC_MMX_SHUF (3, 2, 3, 2), src, tmp); #endif orc_mmx_emit_psrad_imm (p, 31, tmp); - orc_mmx_emit_psllq_imm (p, 64-p->vars[insn->src_args[1]].value.i, tmp); + orc_mmx_emit_psllq_imm (p, 64 - p->vars[insn->src_args[1]].value.i, tmp); orc_mmx_emit_psrlq_imm (p, p->vars[insn->src_args[1]].value.i, dest); orc_mmx_emit_por (p, tmp, dest); @@ -1051,7 +1055,7 @@ mmx_rule_shrsq (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_convsbw (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convsbw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1061,7 +1065,7 @@ mmx_rule_convsbw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_convubw (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convubw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1072,13 +1076,13 @@ mmx_rule_convubw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_mmx_emit_punpcklbw (p, src, dest); orc_mmx_emit_psrlw_imm (p, 8, dest); } else { - orc_mmx_emit_pxor(p, tmp, tmp); + orc_mmx_emit_pxor (p, tmp, tmp); orc_mmx_emit_punpcklbw (p, tmp, dest); } } static void -mmx_rule_convssswb (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convssswb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1087,7 +1091,7 @@ mmx_rule_convssswb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_convsuswb (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convsuswb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1096,7 +1100,7 @@ mmx_rule_convsuswb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_convuuswb (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convuuswb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1113,7 +1117,7 @@ mmx_rule_convuuswb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_convwb (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convwb (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; @@ -1123,7 +1127,7 @@ mmx_rule_convwb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_convhwb (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convhwb (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; @@ -1132,7 +1136,7 @@ mmx_rule_convhwb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_convswl (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convswl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1142,7 +1146,7 @@ mmx_rule_convswl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_convuwl (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convuwl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1153,13 +1157,13 @@ mmx_rule_convuwl (OrcCompiler *p, void *user, OrcInstruction *insn) orc_mmx_emit_punpcklwd (p, src, dest); orc_mmx_emit_psrld_imm (p, 16, dest); } else { - orc_mmx_emit_pxor(p, tmp, tmp); + orc_mmx_emit_pxor (p, tmp, tmp); orc_mmx_emit_punpcklwd (p, tmp, dest); } } static void -mmx_rule_convlw (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convlw (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; @@ -1169,7 +1173,7 @@ mmx_rule_convlw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_convhlw (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convhlw (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; @@ -1178,7 +1182,7 @@ mmx_rule_convhlw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_convssslw (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convssslw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1187,7 +1191,7 @@ mmx_rule_convssslw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_convsuslw (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convsuslw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1196,7 +1200,7 @@ mmx_rule_convsuslw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_convslq (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convslq (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1208,7 +1212,7 @@ mmx_rule_convslq (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_convulq (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convulq (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -1218,33 +1222,33 @@ mmx_rule_convulq (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_convql (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convql (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; #ifndef MMX - orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,0,2,0), src, dest); + orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 0, 2, 0), src, dest); #else orc_mmx_emit_movq (p, src, dest); #endif } static void -mmx_rule_splatw3q (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_splatw3q (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; #ifndef MMX - orc_mmx_emit_pshuflw (p, ORC_MMX_SHUF(3,3,3,3), dest, dest); - orc_mmx_emit_pshufhw (p, ORC_MMX_SHUF(3,3,3,3), dest, dest); + orc_mmx_emit_pshuflw (p, ORC_MMX_SHUF (3, 3, 3, 3), dest, dest); + orc_mmx_emit_pshufhw (p, ORC_MMX_SHUF (3, 3, 3, 3), dest, dest); #else - orc_mmx_emit_pshufw (p, ORC_MMX_SHUF(3,3,3,3), dest, dest); + orc_mmx_emit_pshufw (p, ORC_MMX_SHUF (3, 3, 3, 3), dest, dest); #endif } static void -mmx_rule_splatbw (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_splatbw (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; @@ -1252,7 +1256,7 @@ mmx_rule_splatbw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_splatbl (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_splatbl (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; @@ -1261,7 +1265,7 @@ mmx_rule_splatbl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_div255w (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_div255w (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp = orc_compiler_get_temp_reg (p); @@ -1277,7 +1281,7 @@ mmx_rule_div255w (OrcCompiler *p, void *user, OrcInstruction *insn) #if 1 static void -mmx_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_divluw (OrcCompiler * p, void *user, OrcInstruction * insn) { /* About 5.2 cycles per array member on ginger */ int src = p->vars[insn->src_args[1]].alloc; @@ -1301,7 +1305,7 @@ mmx_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_mmx_emit_pxor (p, tmp, dest); - for(i=0;i<7;i++){ + for (i = 0; i < 7; i++) { orc_mmx_emit_movq (p, divisor, l); orc_mmx_emit_pxor (p, tmp, l); orc_mmx_emit_pcmpgtw (p, dest, l); @@ -1310,11 +1314,11 @@ mmx_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_mmx_emit_psubw (p, l, dest); orc_mmx_emit_psrlw_imm (p, 1, divisor); - orc_mmx_emit_pand (p, j, j2); - orc_mmx_emit_pxor (p, j2, a); - orc_mmx_emit_psrlw_imm (p, 1, j); + orc_mmx_emit_pand (p, j, j2); + orc_mmx_emit_pxor (p, j2, a); + orc_mmx_emit_psrlw_imm (p, 1, j); } - + orc_mmx_emit_movq (p, divisor, l); orc_mmx_emit_pxor (p, tmp, l); orc_mmx_emit_pcmpgtw (p, dest, l); @@ -1325,7 +1329,7 @@ mmx_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn) } #else static void -mmx_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_divluw (OrcCompiler * p, void *user, OrcInstruction * insn) { /* About 8.4 cycles per array member on ginger */ int src = p->vars[insn->src_args[1]].alloc; @@ -1348,7 +1352,7 @@ mmx_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_mmx_emit_movq (p, tmp, j); orc_mmx_emit_psrlw_imm (p, 8, j); - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { orc_mmx_emit_por (p, j, a); orc_mmx_emit_movq (p, a, k); orc_mmx_emit_pmullw (p, src, k); @@ -1364,7 +1368,7 @@ mmx_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn) #endif static void -mmx_rule_mulsbw (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_mulsbw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1378,7 +1382,7 @@ mmx_rule_mulsbw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_mulubw (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_mulubw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1392,7 +1396,7 @@ mmx_rule_mulubw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_mullb (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_mullb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1415,7 +1419,7 @@ mmx_rule_mullb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_mulhsb (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_mulhsb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1443,7 +1447,7 @@ mmx_rule_mulhsb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_mulhub (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_mulhub (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1471,7 +1475,7 @@ mmx_rule_mulhub (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_mulswl (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_mulswl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1484,7 +1488,7 @@ mmx_rule_mulswl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_muluwl (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_muluwl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1497,22 +1501,22 @@ mmx_rule_muluwl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_mulll_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_mulll_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int i; - int offset = ORC_STRUCT_OFFSET(OrcExecutor,arrays[ORC_VAR_T1]); + int offset = ORC_STRUCT_OFFSET (OrcExecutor, arrays[ORC_VAR_T1]); orc_x86_emit_mov_mmx_memoffset (p, 16, p->vars[insn->src_args[0]].alloc, offset, p->exec_reg, FALSE, FALSE); orc_x86_emit_mov_mmx_memoffset (p, 16, p->vars[insn->src_args[1]].alloc, offset + 16, p->exec_reg, FALSE, FALSE); - for(i=0;i<(1<<p->insn_shift);i++) { - orc_x86_emit_mov_memoffset_reg (p, 4, offset + 4*i, p->exec_reg, + for (i = 0; i < (1 << p->insn_shift); i++) { + orc_x86_emit_mov_memoffset_reg (p, 4, offset + 4 * i, p->exec_reg, p->gp_tmpreg); - orc_x86_emit_imul_memoffset_reg (p, 4, offset + 16+4*i, p->exec_reg, + orc_x86_emit_imul_memoffset_reg (p, 4, offset + 16 + 4 * i, p->exec_reg, p->gp_tmpreg); - orc_x86_emit_mov_reg_memoffset (p, 4, p->gp_tmpreg, offset + 4*i, + orc_x86_emit_mov_reg_memoffset (p, 4, p->gp_tmpreg, offset + 4 * i, p->exec_reg); } @@ -1522,30 +1526,30 @@ mmx_rule_mulll_slow (OrcCompiler *p, void *user, OrcInstruction *insn) #ifndef MMX static void -mmx_rule_mulhsl (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_mulhsl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; int tmp = orc_compiler_get_temp_reg (p); int tmp2 = orc_compiler_get_temp_reg (p); - orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,3,0,1), dest, tmp); - orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,3,0,1), src, tmp2); + orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 3, 0, 1), dest, tmp); + orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 3, 0, 1), src, tmp2); orc_mmx_emit_pmuldq (p, src, dest); orc_mmx_emit_pmuldq (p, tmp, tmp2); - orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,0,3,1), dest, dest); - orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,0,3,1), tmp2, tmp2); + orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 0, 3, 1), dest, dest); + orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 0, 3, 1), tmp2, tmp2); orc_mmx_emit_punpckldq (p, tmp2, dest); } #endif #ifndef MMX static void -mmx_rule_mulhsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_mulhsl_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int i; int regsize = p->is_64bit ? 8 : 4; - int offset = ORC_STRUCT_OFFSET(OrcExecutor,arrays[ORC_VAR_T1]); + int offset = ORC_STRUCT_OFFSET (OrcExecutor, arrays[ORC_VAR_T1]); orc_x86_emit_mov_mmx_memoffset (p, 16, p->vars[insn->src_args[0]].alloc, offset, p->exec_reg, FALSE, FALSE); @@ -1556,41 +1560,43 @@ mmx_rule_mulhsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) orc_x86_emit_mov_reg_memoffset (p, regsize, X86_EDX, offset + 40, p->exec_reg); - for(i=0;i<(1<<p->insn_shift);i++) { - orc_x86_emit_mov_memoffset_reg (p, 4, offset + 4*i, p->exec_reg, X86_EAX); + for (i = 0; i < (1 << p->insn_shift); i++) { + orc_x86_emit_mov_memoffset_reg (p, 4, offset + 4 * i, p->exec_reg, X86_EAX); orc_x86_emit_cpuinsn_memoffset (p, ORC_X86_imul_rm, 4, - offset + 16 + 4*i, p->exec_reg); - orc_x86_emit_mov_reg_memoffset (p, 4, X86_EDX, offset + 4*i, p->exec_reg); + offset + 16 + 4 * i, p->exec_reg); + orc_x86_emit_mov_reg_memoffset (p, 4, X86_EDX, offset + 4 * i, p->exec_reg); } orc_x86_emit_mov_memoffset_mmx (p, 16, offset, p->exec_reg, p->vars[insn->dest_args[0]].alloc, FALSE); - orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 32, p->exec_reg, X86_EAX); - orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 40, p->exec_reg, X86_EDX); + orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 32, p->exec_reg, + X86_EAX); + orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 40, p->exec_reg, + X86_EDX); } #endif #ifndef MMX static void -mmx_rule_mulhul (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_mulhul (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; int tmp = orc_compiler_get_temp_reg (p); int tmp2 = orc_compiler_get_temp_reg (p); - orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,3,0,1), dest, tmp); - orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,3,0,1), src, tmp2); + orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 3, 0, 1), dest, tmp); + orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 3, 0, 1), src, tmp2); orc_mmx_emit_pmuludq (p, src, dest); orc_mmx_emit_pmuludq (p, tmp, tmp2); - orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,0,3,1), dest, dest); - orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,0,3,1), tmp2, tmp2); + orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 0, 3, 1), dest, dest); + orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 0, 3, 1), tmp2, tmp2); orc_mmx_emit_punpckldq (p, tmp2, dest); } #endif static void -mmx_rule_mulslq (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_mulslq (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1604,11 +1610,11 @@ mmx_rule_mulslq (OrcCompiler *p, void *user, OrcInstruction *insn) #ifndef MMX static void -mmx_rule_mulslq_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_mulslq_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int i; int regsize = p->is_64bit ? 8 : 4; - int offset = ORC_STRUCT_OFFSET(OrcExecutor,arrays[ORC_VAR_T1]); + int offset = ORC_STRUCT_OFFSET (OrcExecutor, arrays[ORC_VAR_T1]); orc_x86_emit_mov_mmx_memoffset (p, 8, p->vars[insn->src_args[0]].alloc, offset, p->exec_reg, FALSE, FALSE); @@ -1619,24 +1625,28 @@ mmx_rule_mulslq_slow (OrcCompiler *p, void *user, OrcInstruction *insn) orc_x86_emit_mov_reg_memoffset (p, regsize, X86_EDX, offset + 40, p->exec_reg); - for(i=0;i<(1<<p->insn_shift);i++) { - orc_x86_emit_mov_memoffset_reg (p, 4, offset + 4*i, p->exec_reg, X86_EAX); + for (i = 0; i < (1 << p->insn_shift); i++) { + orc_x86_emit_mov_memoffset_reg (p, 4, offset + 4 * i, p->exec_reg, X86_EAX); orc_x86_emit_cpuinsn_memoffset (p, ORC_X86_imul_rm, 4, - offset + 8 + 4*i, p->exec_reg); - orc_x86_emit_mov_reg_memoffset (p, 4, X86_EAX, offset + 16 + 8*i, p->exec_reg); - orc_x86_emit_mov_reg_memoffset (p, 4, X86_EDX, offset + 16 + 8*i + 4, p->exec_reg); + offset + 8 + 4 * i, p->exec_reg); + orc_x86_emit_mov_reg_memoffset (p, 4, X86_EAX, offset + 16 + 8 * i, + p->exec_reg); + orc_x86_emit_mov_reg_memoffset (p, 4, X86_EDX, offset + 16 + 8 * i + 4, + p->exec_reg); } orc_x86_emit_mov_memoffset_mmx (p, 16, offset + 16, p->exec_reg, p->vars[insn->dest_args[0]].alloc, FALSE); - orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 32, p->exec_reg, X86_EAX); - orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 40, p->exec_reg, X86_EDX); + orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 32, p->exec_reg, + X86_EAX); + orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 40, p->exec_reg, + X86_EDX); } #endif #ifndef MMX static void -mmx_rule_mululq (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_mululq (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1650,7 +1660,7 @@ mmx_rule_mululq (OrcCompiler *p, void *user, OrcInstruction *insn) #endif static void -mmx_rule_select0lw (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_select0lw (OrcCompiler * p, void *user, OrcInstruction * insn) { //int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1664,7 +1674,7 @@ mmx_rule_select0lw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_select1lw (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_select1lw (OrcCompiler * p, void *user, OrcInstruction * insn) { //int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1676,35 +1686,35 @@ mmx_rule_select1lw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_select0ql (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_select0ql (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; /* same as convql */ #ifndef MMX - orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,0,2,0), src, dest); + orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 0, 2, 0), src, dest); #else orc_mmx_emit_movq (p, src, dest); #endif } static void -mmx_rule_select1ql (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_select1ql (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; orc_mmx_emit_psrlq_imm (p, 32, dest); #ifndef MMX - orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,0,2,0), src, dest); + orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 0, 2, 0), src, dest); #else orc_mmx_emit_movq (p, src, dest); #endif } static void -mmx_rule_select0wb (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_select0wb (OrcCompiler * p, void *user, OrcInstruction * insn) { //int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1718,7 +1728,7 @@ mmx_rule_select0wb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_select1wb (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_select1wb (OrcCompiler * p, void *user, OrcInstruction * insn) { //int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1730,23 +1740,23 @@ mmx_rule_select1wb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_splitql (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_splitql (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest1 = p->vars[insn->dest_args[0]].alloc; int dest2 = p->vars[insn->dest_args[1]].alloc; #ifndef MMX - orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,0,2,0), src, dest2); - orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(3,1,3,1), src, dest1); + orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 0, 2, 0), src, dest2); + orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (3, 1, 3, 1), src, dest1); #else orc_mmx_emit_movq (p, src, dest2); - orc_mmx_emit_pshufw (p, ORC_MMX_SHUF(3,2,3,2), src, dest1); + orc_mmx_emit_pshufw (p, ORC_MMX_SHUF (3, 2, 3, 2), src, dest1); #endif } static void -mmx_rule_splitlw (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_splitlw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest1 = p->vars[insn->dest_args[0]].alloc; @@ -1767,7 +1777,7 @@ mmx_rule_splitlw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_splitwb (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_splitwb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest1 = p->vars[insn->dest_args[0]].alloc; @@ -1782,7 +1792,6 @@ mmx_rule_splitwb (OrcCompiler *p, void *user, OrcInstruction *insn) if (dest2 != src) { orc_mmx_emit_movq (p, src, dest2); } - #if 0 orc_mmx_emit_psllw_imm (p, 8, dest2); orc_mmx_emit_psraw_imm (p, 8, dest2); @@ -1794,7 +1803,7 @@ mmx_rule_splitwb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_mergebw (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_mergebw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1803,7 +1812,7 @@ mmx_rule_mergebw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_mergewl (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_mergewl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1812,7 +1821,7 @@ mmx_rule_mergewl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_mergelq (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_mergelq (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1821,7 +1830,7 @@ mmx_rule_mergelq (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_swapw (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_swapw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1834,7 +1843,7 @@ mmx_rule_swapw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_swapl (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_swapl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1851,7 +1860,7 @@ mmx_rule_swapl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_swapwl (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_swapwl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1864,7 +1873,7 @@ mmx_rule_swapwl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_swapq (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_swapq (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1885,20 +1894,20 @@ mmx_rule_swapq (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_swaplq (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_swaplq (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; #ifndef MMX - orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(2,3,0,1), dest, dest); + orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (2, 3, 0, 1), dest, dest); #else - orc_mmx_emit_pshufw (p, ORC_MMX_SHUF(1,0,3,2), dest, dest); + orc_mmx_emit_pshufw (p, ORC_MMX_SHUF (1, 0, 3, 2), dest, dest); #endif } #ifndef MMX static void -mmx_rule_swapw_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_swapw_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -1913,7 +1922,7 @@ mmx_rule_swapw_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_swapl_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_swapl_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -1928,7 +1937,7 @@ mmx_rule_swapl_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_swapwl_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_swapwl_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -1943,7 +1952,7 @@ mmx_rule_swapwl_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_swapq_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_swapq_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -1958,7 +1967,7 @@ mmx_rule_swapq_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_select0lw_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_select0lw_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -1973,7 +1982,7 @@ mmx_rule_select0lw_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_select1lw_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_select1lw_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -1988,7 +1997,7 @@ mmx_rule_select1lw_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_select0wb_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_select0wb_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -2003,7 +2012,7 @@ mmx_rule_select0wb_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_select1wb_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_select1wb_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -2021,22 +2030,22 @@ mmx_rule_select1wb_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) /* slow rules */ static void -mmx_rule_maxuw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_maxuw_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; int tmp = orc_compiler_get_temp_reg (p); tmp = orc_compiler_get_constant (p, 2, 0x8000); - orc_mmx_emit_pxor(p, tmp, src); - orc_mmx_emit_pxor(p, tmp, dest); + orc_mmx_emit_pxor (p, tmp, src); + orc_mmx_emit_pxor (p, tmp, dest); orc_mmx_emit_pmaxsw (p, src, dest); - orc_mmx_emit_pxor(p, tmp, src); - orc_mmx_emit_pxor(p, tmp, dest); + orc_mmx_emit_pxor (p, tmp, src); + orc_mmx_emit_pxor (p, tmp, dest); } static void -mmx_rule_minuw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_minuw_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2044,15 +2053,15 @@ mmx_rule_minuw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) tmp = orc_compiler_get_constant (p, 2, 0x8000); - orc_mmx_emit_pxor(p, tmp, src); - orc_mmx_emit_pxor(p, tmp, dest); + orc_mmx_emit_pxor (p, tmp, src); + orc_mmx_emit_pxor (p, tmp, dest); orc_mmx_emit_pminsw (p, src, dest); - orc_mmx_emit_pxor(p, tmp, src); - orc_mmx_emit_pxor(p, tmp, dest); + orc_mmx_emit_pxor (p, tmp, src); + orc_mmx_emit_pxor (p, tmp, dest); } static void -mmx_rule_avgsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_avgsb_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2060,15 +2069,15 @@ mmx_rule_avgsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) tmp = orc_compiler_get_constant (p, 1, 0x80); - orc_mmx_emit_pxor(p, tmp, src); - orc_mmx_emit_pxor(p, tmp, dest); + orc_mmx_emit_pxor (p, tmp, src); + orc_mmx_emit_pxor (p, tmp, dest); orc_mmx_emit_pavgb (p, src, dest); - orc_mmx_emit_pxor(p, tmp, src); - orc_mmx_emit_pxor(p, tmp, dest); + orc_mmx_emit_pxor (p, tmp, src); + orc_mmx_emit_pxor (p, tmp, dest); } static void -mmx_rule_avgsw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_avgsw_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2076,15 +2085,15 @@ mmx_rule_avgsw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) tmp = orc_compiler_get_constant (p, 2, 0x8000); - orc_mmx_emit_pxor(p, tmp, src); - orc_mmx_emit_pxor(p, tmp, dest); + orc_mmx_emit_pxor (p, tmp, src); + orc_mmx_emit_pxor (p, tmp, dest); orc_mmx_emit_pavgw (p, src, dest); - orc_mmx_emit_pxor(p, tmp, src); - orc_mmx_emit_pxor(p, tmp, dest); + orc_mmx_emit_pxor (p, tmp, src); + orc_mmx_emit_pxor (p, tmp, dest); } static void -mmx_rule_maxsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_maxsb_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2098,7 +2107,7 @@ mmx_rule_maxsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_minsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_minsb_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2112,7 +2121,7 @@ mmx_rule_minsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_maxsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_maxsl_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2126,7 +2135,7 @@ mmx_rule_maxsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_minsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_minsl_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2140,7 +2149,7 @@ mmx_rule_minsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_maxul_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_maxul_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2148,8 +2157,8 @@ mmx_rule_maxul_slow (OrcCompiler *p, void *user, OrcInstruction *insn) int tmpc; tmpc = orc_compiler_get_constant (p, 4, 0x80000000); - orc_mmx_emit_pxor(p, tmpc, src); - orc_mmx_emit_pxor(p, tmpc, dest); + orc_mmx_emit_pxor (p, tmpc, src); + orc_mmx_emit_pxor (p, tmpc, dest); orc_mmx_emit_movq (p, dest, tmp); orc_mmx_emit_pcmpgtd (p, src, tmp); @@ -2157,12 +2166,12 @@ mmx_rule_maxul_slow (OrcCompiler *p, void *user, OrcInstruction *insn) orc_mmx_emit_pandn (p, src, tmp); orc_mmx_emit_por (p, tmp, dest); - orc_mmx_emit_pxor(p, tmpc, src); - orc_mmx_emit_pxor(p, tmpc, dest); + orc_mmx_emit_pxor (p, tmpc, src); + orc_mmx_emit_pxor (p, tmpc, dest); } static void -mmx_rule_minul_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_minul_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2170,8 +2179,8 @@ mmx_rule_minul_slow (OrcCompiler *p, void *user, OrcInstruction *insn) int tmpc; tmpc = orc_compiler_get_constant (p, 4, 0x80000000); - orc_mmx_emit_pxor(p, tmpc, src); - orc_mmx_emit_pxor(p, tmpc, dest); + orc_mmx_emit_pxor (p, tmpc, src); + orc_mmx_emit_pxor (p, tmpc, dest); orc_mmx_emit_movq (p, src, tmp); orc_mmx_emit_pcmpgtd (p, dest, tmp); @@ -2179,12 +2188,12 @@ mmx_rule_minul_slow (OrcCompiler *p, void *user, OrcInstruction *insn) orc_mmx_emit_pandn (p, src, tmp); orc_mmx_emit_por (p, tmp, dest); - orc_mmx_emit_pxor(p, tmpc, src); - orc_mmx_emit_pxor(p, tmpc, dest); + orc_mmx_emit_pxor (p, tmpc, src); + orc_mmx_emit_pxor (p, tmpc, dest); } static void -mmx_rule_avgsl (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_avgsl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2193,15 +2202,15 @@ mmx_rule_avgsl (OrcCompiler *p, void *user, OrcInstruction *insn) /* (a+b+1) >> 1 = (a|b) - ((a^b)>>1) */ orc_mmx_emit_movq (p, dest, tmp); - orc_mmx_emit_pxor(p, src, tmp); - orc_mmx_emit_psrad_imm(p, 1, tmp); + orc_mmx_emit_pxor (p, src, tmp); + orc_mmx_emit_psrad_imm (p, 1, tmp); - orc_mmx_emit_por(p, src, dest); - orc_mmx_emit_psubd(p, tmp, dest); + orc_mmx_emit_por (p, src, dest); + orc_mmx_emit_psubd (p, tmp, dest); } static void -mmx_rule_avgul (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_avgul (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2210,15 +2219,15 @@ mmx_rule_avgul (OrcCompiler *p, void *user, OrcInstruction *insn) /* (a+b+1) >> 1 = (a|b) - ((a^b)>>1) */ orc_mmx_emit_movq (p, dest, tmp); - orc_mmx_emit_pxor(p, src, tmp); - orc_mmx_emit_psrld_imm(p, 1, tmp); + orc_mmx_emit_pxor (p, src, tmp); + orc_mmx_emit_psrld_imm (p, 1, tmp); - orc_mmx_emit_por(p, src, dest); - orc_mmx_emit_psubd(p, tmp, dest); + orc_mmx_emit_por (p, src, dest); + orc_mmx_emit_psubd (p, tmp, dest); } static void -mmx_rule_addssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_addssl_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2245,11 +2254,11 @@ mmx_rule_addssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) orc_mmx_emit_psrad_imm (p, 31, tmp2); tmp = orc_compiler_get_constant (p, 4, 0x80000000); - orc_mmx_emit_pxor (p, tmp, tmp2); // clamped value + orc_mmx_emit_pxor (p, tmp, tmp2); // clamped value orc_mmx_emit_pand (p, tmp3, tmp2); orc_mmx_emit_paddd (p, src, dest); - orc_mmx_emit_pandn (p, dest, tmp3); // tmp is mask: ~0 is for clamping + orc_mmx_emit_pandn (p, dest, tmp3); // tmp is mask: ~0 is for clamping orc_mmx_emit_movq (p, tmp3, dest); orc_mmx_emit_por (p, tmp2, dest); @@ -2277,7 +2286,7 @@ mmx_rule_addssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) t^=m; s=~s&t; _a|=s; - */ + */ orc_mmx_emit_movq (p, dest, s); orc_mmx_emit_movq (p, dest, t); @@ -2298,7 +2307,7 @@ mmx_rule_addssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_subssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_subssl_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2325,7 +2334,7 @@ mmx_rule_subssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) orc_mmx_emit_psrad_imm (p, 31, tmp2); tmp = orc_compiler_get_constant (p, 4, 0x80000000); - orc_mmx_emit_pxor (p, tmp, tmp2); // clamped value + orc_mmx_emit_pxor (p, tmp, tmp2); // clamped value orc_mmx_emit_pand (p, tmp3, tmp2); orc_mmx_emit_psubd (p, src, dest); @@ -2337,7 +2346,7 @@ mmx_rule_subssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_addusl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_addusl_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2384,7 +2393,7 @@ mmx_rule_addusl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_subusl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_subusl_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2428,12 +2437,11 @@ mmx_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \ p->vars[insn->dest_args[0]].alloc); \ } -BINARY_F(addf, addps, 0x58) -BINARY_F(subf, subps, 0x5c) -BINARY_F(mulf, mulps, 0x59) -BINARY_F(divf, divps, 0x5e) -UNARY_F(sqrtf, sqrtps, 0x51) - +BINARY_F (addf, addps, 0x58) + BINARY_F (subf, subps, 0x5c) + BINARY_F (mulf, mulps, 0x59) + BINARY_F (divf, divps, 0x5e) + UNARY_F (sqrtf, sqrtps, 0x51) #define UNARY_D(opcode,insn_name,code) \ static void \ mmx_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \ @@ -2442,7 +2450,6 @@ mmx_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \ p->vars[insn->src_args[0]].alloc, \ p->vars[insn->dest_args[0]].alloc); \ } - #define BINARY_D(opcode,insn_name,code) \ static void \ mmx_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \ @@ -2451,168 +2458,129 @@ mmx_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \ p->vars[insn->src_args[1]].alloc, \ p->vars[insn->dest_args[0]].alloc); \ } + BINARY_D (addd, addpd, 0x58) + BINARY_D (subd, subpd, 0x5c) + BINARY_D (muld, mulpd, 0x59) + BINARY_D (divd, divpd, 0x5e) + UNARY_D (sqrtd, sqrtpd, 0x51) -BINARY_D(addd, addpd, 0x58) -BINARY_D(subd, subpd, 0x5c) -BINARY_D(muld, mulpd, 0x59) -BINARY_D(divd, divpd, 0x5e) -UNARY_D(sqrtd, sqrtpd, 0x51) - -static void -mmx_rule_minf (OrcCompiler *p, void *user, OrcInstruction *insn) + static void + mmx_rule_minf (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->target_flags & ORC_TARGET_FAST_NAN) { orc_mmx_emit_minps (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } else { int tmp = orc_compiler_get_temp_reg (p); - orc_mmx_emit_movq (p, - p->vars[insn->src_args[1]].alloc, - tmp); - orc_mmx_emit_minps (p, - p->vars[insn->dest_args[0]].alloc, - tmp); + orc_mmx_emit_movq (p, p->vars[insn->src_args[1]].alloc, tmp); + orc_mmx_emit_minps (p, p->vars[insn->dest_args[0]].alloc, tmp); orc_mmx_emit_minps (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); - orc_mmx_emit_por (p, - tmp, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); + orc_mmx_emit_por (p, tmp, p->vars[insn->dest_args[0]].alloc); } } static void -mmx_rule_mind (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_mind (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->target_flags & ORC_TARGET_FAST_NAN) { orc_mmx_emit_minpd (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } else { int tmp = orc_compiler_get_temp_reg (p); - orc_mmx_emit_movq (p, - p->vars[insn->src_args[1]].alloc, - tmp); + orc_mmx_emit_movq (p, p->vars[insn->src_args[1]].alloc, tmp); + orc_mmx_emit_minpd (p, p->vars[insn->dest_args[0]].alloc, tmp); orc_mmx_emit_minpd (p, - p->vars[insn->dest_args[0]].alloc, - tmp); - orc_mmx_emit_minpd (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); - orc_mmx_emit_por (p, - tmp, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); + orc_mmx_emit_por (p, tmp, p->vars[insn->dest_args[0]].alloc); } } static void -mmx_rule_maxf (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_maxf (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->target_flags & ORC_TARGET_FAST_NAN) { orc_mmx_emit_maxps (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } else { int tmp = orc_compiler_get_temp_reg (p); - orc_mmx_emit_movq (p, - p->vars[insn->src_args[1]].alloc, - tmp); + orc_mmx_emit_movq (p, p->vars[insn->src_args[1]].alloc, tmp); + orc_mmx_emit_maxps (p, p->vars[insn->dest_args[0]].alloc, tmp); orc_mmx_emit_maxps (p, - p->vars[insn->dest_args[0]].alloc, - tmp); - orc_mmx_emit_maxps (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); - orc_mmx_emit_por (p, - tmp, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); + orc_mmx_emit_por (p, tmp, p->vars[insn->dest_args[0]].alloc); } } static void -mmx_rule_maxd (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_maxd (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->target_flags & ORC_TARGET_FAST_NAN) { orc_mmx_emit_maxpd (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } else { int tmp = orc_compiler_get_temp_reg (p); - orc_mmx_emit_movq (p, - p->vars[insn->src_args[1]].alloc, - tmp); - orc_mmx_emit_maxpd (p, - p->vars[insn->dest_args[0]].alloc, - tmp); + orc_mmx_emit_movq (p, p->vars[insn->src_args[1]].alloc, tmp); + orc_mmx_emit_maxpd (p, p->vars[insn->dest_args[0]].alloc, tmp); orc_mmx_emit_maxpd (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); - orc_mmx_emit_por (p, - tmp, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); + orc_mmx_emit_por (p, tmp, p->vars[insn->dest_args[0]].alloc); } } static void -mmx_rule_cmpeqf (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_cmpeqf (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_mmx_emit_cmpeqps (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } static void -mmx_rule_cmpeqd (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_cmpeqd (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_mmx_emit_cmpeqpd (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } static void -mmx_rule_cmpltf (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_cmpltf (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_mmx_emit_cmpltps (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } static void -mmx_rule_cmpltd (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_cmpltd (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_mmx_emit_cmpltpd (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } static void -mmx_rule_cmplef (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_cmplef (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_mmx_emit_cmpleps (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } static void -mmx_rule_cmpled (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_cmpled (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_mmx_emit_cmplepd (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } static void -mmx_rule_convfl (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convfl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; int tmpc; int tmp = orc_compiler_get_temp_reg (p); - + tmpc = orc_compiler_get_temp_constant (p, 4, 0x80000000); orc_mmx_emit_movq (p, src, tmp); orc_mmx_emit_cvttps2dq (p, src, dest); @@ -2624,15 +2592,15 @@ mmx_rule_convfl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_convdl (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convdl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; int tmpc; int tmp = orc_compiler_get_temp_reg (p); - + tmpc = orc_compiler_get_temp_constant (p, 4, 0x80000000); - orc_mmx_emit_pshufd (p, ORC_MMX_SHUF(3,1,3,1), src, tmp); + orc_mmx_emit_pshufd (p, ORC_MMX_SHUF (3, 1, 3, 1), src, tmp); orc_mmx_emit_cvttpd2dq (p, src, dest); orc_mmx_emit_psrad_imm (p, 31, tmp); orc_mmx_emit_pcmpeqd (p, dest, tmpc); @@ -2641,35 +2609,31 @@ mmx_rule_convdl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -mmx_rule_convlf (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convlf (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_mmx_emit_cvtdq2ps (p, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[0]].alloc, p->vars[insn->dest_args[0]].alloc); } static void -mmx_rule_convld (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convld (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_mmx_emit_cvtdq2pd (p, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[0]].alloc, p->vars[insn->dest_args[0]].alloc); } static void -mmx_rule_convfd (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convfd (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_mmx_emit_cvtps2pd (p, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[0]].alloc, p->vars[insn->dest_args[0]].alloc); } static void -mmx_rule_convdf (OrcCompiler *p, void *user, OrcInstruction *insn) +mmx_rule_convdf (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_mmx_emit_cvtpd2ps (p, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[0]].alloc, p->vars[insn->dest_args[0]].alloc); } #endif @@ -2682,16 +2646,16 @@ mmx_rule_ ## opcode ## _mmx41 (OrcCompiler *p, void *user, OrcInstruction *insn) p->vars[insn->dest_args[0]].alloc); \ } -UNARY_SSE41(convsbw,pmovsxbw); -UNARY_SSE41(convswl,pmovsxwd); -UNARY_SSE41(convslq,pmovsxdq); -UNARY_SSE41(convubw,pmovzxbw); -UNARY_SSE41(convuwl,pmovzxwd); -UNARY_SSE41(convulq,pmovzxdq); +UNARY_SSE41 (convsbw, pmovsxbw); +UNARY_SSE41 (convswl, pmovsxwd); +UNARY_SSE41 (convslq, pmovsxdq); +UNARY_SSE41 (convubw, pmovzxbw); +UNARY_SSE41 (convuwl, pmovzxwd); +UNARY_SSE41 (convulq, pmovzxdq); void -orc_compiler_mmx_register_rules (OrcTarget *target) +orc_compiler_mmx_register_rules (OrcTarget * target) { OrcRuleSet *rule_set; @@ -2700,10 +2664,10 @@ orc_compiler_mmx_register_rules (OrcTarget *target) /* SSE 2 */ #ifndef MMX - rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target, + rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target, ORC_TARGET_MMX_MMXEXT); #else - rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target, + rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target, ORC_TARGET_MMX_MMX); #endif @@ -2716,10 +2680,10 @@ orc_compiler_mmx_register_rules (OrcTarget *target) orc_rule_register (rule_set, "loadoffl", mmx_rule_loadoffX, NULL); orc_rule_register (rule_set, "loadupdb", mmx_rule_loadupdb, NULL); orc_rule_register (rule_set, "loadupib", mmx_rule_loadupib, NULL); - orc_rule_register (rule_set, "loadpb", mmx_rule_loadpX, (void *)1); - orc_rule_register (rule_set, "loadpw", mmx_rule_loadpX, (void *)2); - orc_rule_register (rule_set, "loadpl", mmx_rule_loadpX, (void *)4); - orc_rule_register (rule_set, "loadpq", mmx_rule_loadpX, (void *)8); + orc_rule_register (rule_set, "loadpb", mmx_rule_loadpX, (void *) 1); + orc_rule_register (rule_set, "loadpw", mmx_rule_loadpX, (void *) 2); + orc_rule_register (rule_set, "loadpl", mmx_rule_loadpX, (void *) 4); + orc_rule_register (rule_set, "loadpq", mmx_rule_loadpX, (void *) 8); orc_rule_register (rule_set, "ldresnearl", mmx_rule_ldresnearl, NULL); orc_rule_register (rule_set, "ldreslinl", mmx_rule_ldreslinl, NULL); @@ -2728,78 +2692,78 @@ orc_compiler_mmx_register_rules (OrcTarget *target) orc_rule_register (rule_set, "storel", mmx_rule_storeX, NULL); orc_rule_register (rule_set, "storeq", mmx_rule_storeX, NULL); - REG(addb); - REG(addssb); - REG(addusb); - REG(andb); - REG(andnb); - REG(avgub); - REG(cmpeqb); - REG(cmpgtsb); - REG(maxub); - REG(minub); - REG(orb); - REG(subb); - REG(subssb); - REG(subusb); - REG(xorb); - - REG(addw); - REG(addssw); - REG(addusw); - REG(andw); - REG(andnw); - REG(avguw); - REG(cmpeqw); - REG(cmpgtsw); - REG(maxsw); - REG(minsw); - REG(mullw); - REG(mulhsw); - REG(mulhuw); - REG(orw); - REG(subw); - REG(subssw); - REG(subusw); - REG(xorw); - - REG(addl); - REG(andl); - REG(andnl); - REG(cmpeql); - REG(cmpgtsl); - REG(orl); - REG(subl); - REG(xorl); - - REG(andq); - REG(andnq); - REG(orq); - REG(xorq); - - REG(select0ql); - REG(select1ql); - REG(select0lw); - REG(select1lw); - REG(select0wb); - REG(select1wb); - REG(mergebw); - REG(mergewl); - REG(mergelq); + REG (addb); + REG (addssb); + REG (addusb); + REG (andb); + REG (andnb); + REG (avgub); + REG (cmpeqb); + REG (cmpgtsb); + REG (maxub); + REG (minub); + REG (orb); + REG (subb); + REG (subssb); + REG (subusb); + REG (xorb); + + REG (addw); + REG (addssw); + REG (addusw); + REG (andw); + REG (andnw); + REG (avguw); + REG (cmpeqw); + REG (cmpgtsw); + REG (maxsw); + REG (minsw); + REG (mullw); + REG (mulhsw); + REG (mulhuw); + REG (orw); + REG (subw); + REG (subssw); + REG (subusw); + REG (xorw); + + REG (addl); + REG (andl); + REG (andnl); + REG (cmpeql); + REG (cmpgtsl); + REG (orl); + REG (subl); + REG (xorl); + + REG (andq); + REG (andnq); + REG (orq); + REG (xorq); + + REG (select0ql); + REG (select1ql); + REG (select0lw); + REG (select1lw); + REG (select0wb); + REG (select1wb); + REG (mergebw); + REG (mergewl); + REG (mergelq); orc_rule_register (rule_set, "copyb", mmx_rule_copyx, NULL); orc_rule_register (rule_set, "copyw", mmx_rule_copyx, NULL); orc_rule_register (rule_set, "copyl", mmx_rule_copyx, NULL); orc_rule_register (rule_set, "copyq", mmx_rule_copyx, NULL); - orc_rule_register (rule_set, "shlw", mmx_rule_shift, (void *)0); - orc_rule_register (rule_set, "shruw", mmx_rule_shift, (void *)1); - orc_rule_register (rule_set, "shrsw", mmx_rule_shift, (void *)2); - orc_rule_register (rule_set, "shll", mmx_rule_shift, (void *)3); - orc_rule_register (rule_set, "shrul", mmx_rule_shift, (void *)4); - orc_rule_register (rule_set, "shrsl", mmx_rule_shift, (void *)5); - orc_rule_register (rule_set, "shlq", mmx_rule_shift, (void *)6); - orc_rule_register (rule_set, "shruq", mmx_rule_shift, (void *)7); + orc_rule_register (rule_set, "shlw", mmx_rule_shift, (void *) 0); + orc_rule_register (rule_set, "shruw", mmx_rule_shift, (void *) 1); + orc_rule_register (rule_set, "shrsw", mmx_rule_shift, (void *) 2); + orc_rule_register (rule_set, "shll", mmx_rule_shift, (void *) 3); + orc_rule_register (rule_set, "shrul", mmx_rule_shift, (void *) 4); + orc_rule_register (rule_set, "shrsl", mmx_rule_shift, (void *) 5); + orc_rule_register (rule_set, "shlq", mmx_rule_shift, (void *) 6); + orc_rule_register (rule_set, "shruq", mmx_rule_shift, (void *) 7); orc_rule_register (rule_set, "shrsq", mmx_rule_shrsq, NULL); orc_rule_register (rule_set, "convsbw", mmx_rule_convsbw, NULL); @@ -2831,8 +2795,8 @@ orc_compiler_mmx_register_rules (OrcTarget *target) /* These require the SSE2 flag, although could be used with MMX. That flag is not yet handled. */ orc_rule_register (rule_set, "mululq", mmx_rule_mululq, NULL); - REG(addq); - REG(subq); + REG (addq); + REG (subq); orc_rule_register (rule_set, "addf", mmx_rule_addf, NULL); orc_rule_register (rule_set, "subf", mmx_rule_subf, NULL); @@ -2917,17 +2881,17 @@ orc_compiler_mmx_register_rules (OrcTarget *target) /* SSE 3 -- no rules */ /* SSSE 3 */ - rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target, + rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target, ORC_TARGET_MMX_SSSE3); #ifndef MMX - orc_rule_register (rule_set, "signb", mmx_rule_signX_ssse3, (void *)0); - orc_rule_register (rule_set, "signw", mmx_rule_signX_ssse3, (void *)1); - orc_rule_register (rule_set, "signl", mmx_rule_signX_ssse3, (void *)2); + orc_rule_register (rule_set, "signb", mmx_rule_signX_ssse3, (void *) 0); + orc_rule_register (rule_set, "signw", mmx_rule_signX_ssse3, (void *) 1); + orc_rule_register (rule_set, "signl", mmx_rule_signX_ssse3, (void *) 2); #endif - REG(absb); - REG(absw); - REG(absl); + REG (absb); + REG (absw); + REG (absl); #ifndef MMX orc_rule_register (rule_set, "swapw", mmx_rule_swapw_ssse3, NULL); orc_rule_register (rule_set, "swapl", mmx_rule_swapl_ssse3, NULL); @@ -2940,18 +2904,18 @@ orc_compiler_mmx_register_rules (OrcTarget *target) #endif /* SSE 4.1 */ - rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target, + rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target, ORC_TARGET_MMX_SSE4_1); - REG(maxsb); - REG(minsb); - REG(maxuw); - REG(minuw); - REG(maxsl); - REG(maxul); - REG(minsl); - REG(minul); - REG(mulll); + REG (maxsb); + REG (minsb); + REG (maxuw); + REG (minuw); + REG (maxsl); + REG (maxul); + REG (minsl); + REG (minul); + REG (mulll); orc_rule_register (rule_set, "convsbw", mmx_rule_convsbw_mmx41, NULL); orc_rule_register (rule_set, "convswl", mmx_rule_convswl_mmx41, NULL); orc_rule_register (rule_set, "convslq", mmx_rule_convslq_mmx41, NULL); @@ -2963,14 +2927,13 @@ orc_compiler_mmx_register_rules (OrcTarget *target) #ifndef MMX orc_rule_register (rule_set, "mulhsl", mmx_rule_mulhsl, NULL); #endif - REG(cmpeqq); + REG (cmpeqq); /* SSE 4.2 -- no rules */ - rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target, + rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target, ORC_TARGET_MMX_SSE4_2); - REG(cmpgtsq); + REG (cmpgtsq); /* SSE 4a -- no rules */ } - diff --git a/orc/orcrules-neon.c b/orc/orcrules-neon.c index 8d26dea..4a3b14e 100644 --- a/orc/orcrules-neon.c +++ b/orc/orcrules-neon.c @@ -13,14 +13,15 @@ #include <orc/orcneon.h> -void orc_neon_emit_loadiq (OrcCompiler *compiler, int dest, int param); -void orc_neon_emit_loadpq (OrcCompiler *compiler, int dest, int param); +void orc_neon_emit_loadiq (OrcCompiler * compiler, int dest, int param); +void orc_neon_emit_loadpq (OrcCompiler * compiler, int dest, int param); static const orc_uint32 orc_neon_constants[][4] = { - { 0x03030303, 0x07070707, 0x0b0b0b0b, 0x0f0f0f0f }, + {0x03030303, 0x07070707, 0x0b0b0b0b, 0x0f0f0f0f}, }; -const char *orc_neon_reg_name (int reg) +const char * +orc_neon_reg_name (int reg) { static const char *vec_regs[] = { "d0", "d1", "d2", "d3", @@ -33,14 +34,15 @@ const char *orc_neon_reg_name (int reg) "d28", "d29", "d30", "d31", }; - if (reg < ORC_VEC_REG_BASE || reg >= ORC_VEC_REG_BASE+32) { + if (reg < ORC_VEC_REG_BASE || reg >= ORC_VEC_REG_BASE + 32) { return "ERROR"; } - return vec_regs[reg&0x1f]; + return vec_regs[reg & 0x1f]; } -const char *orc_neon_reg_name_quad (int reg) +const char * +orc_neon_reg_name_quad (int reg) { static const char *vec_regs[] = { "q0", "ERROR", "q1", "ERROR", @@ -53,28 +55,28 @@ const char *orc_neon_reg_name_quad (int reg) "q14", "ERROR", "q15", "ERROR", }; - if (reg < ORC_VEC_REG_BASE || reg >= ORC_VEC_REG_BASE+32) { + if (reg < ORC_VEC_REG_BASE || reg >= ORC_VEC_REG_BASE + 32) { return "ERROR"; } - return vec_regs[reg&0x1f]; + return vec_regs[reg & 0x1f]; } static void -orc_neon_emit_binary (OrcCompiler *p, const char *name, unsigned int code, +orc_neon_emit_binary (OrcCompiler * p, const char *name, unsigned int code, int dest, int src1, int src2) { - ORC_ASSERT((code & 0x004ff0af) == 0); + ORC_ASSERT ((code & 0x004ff0af) == 0); - ORC_ASM_CODE(p," %s %s, %s, %s\n", name, + ORC_ASM_CODE (p, " %s %s, %s, %s\n", name, orc_neon_reg_name (dest), orc_neon_reg_name (src1), orc_neon_reg_name (src2)); - code |= (dest&0xf)<<12; - code |= ((dest>>4)&0x1)<<22; - code |= (src1&0xf)<<16; - code |= ((src1>>4)&0x1)<<7; - code |= (src2&0xf)<<0; - code |= ((src2>>4)&0x1)<<5; + code |= (dest & 0xf) << 12; + code |= ((dest >> 4) & 0x1) << 22; + code |= (src1 & 0xf) << 16; + code |= ((src1 >> 4) & 0x1) << 7; + code |= (src2 & 0xf) << 0; + code |= ((src2 >> 4) & 0x1) << 5; orc_arm_emit (p, code); } @@ -88,139 +90,137 @@ orc_neon_emit_binary (OrcCompiler *p, const char *name, unsigned int code, ((((c)>>4)&0x1)<<5)) static void -orc_neon_emit_binary_long (OrcCompiler *p, const char *name, unsigned int code, +orc_neon_emit_binary_long (OrcCompiler * p, const char *name, unsigned int code, int dest, int src1, int src2) { - ORC_ASSERT((code & 0x004ff0af) == 0); + ORC_ASSERT ((code & 0x004ff0af) == 0); - ORC_ASM_CODE(p," %s %s, %s, %s\n", name, + ORC_ASM_CODE (p, " %s %s, %s, %s\n", name, orc_neon_reg_name_quad (dest), orc_neon_reg_name (src1), orc_neon_reg_name (src2)); - code |= (dest&0xf)<<12; - code |= ((dest>>4)&0x1)<<22; - code |= (src1&0xf)<<16; - code |= ((src1>>4)&0x1)<<7; - code |= (src2&0xf)<<0; - code |= ((src2>>4)&0x1)<<5; + code |= (dest & 0xf) << 12; + code |= ((dest >> 4) & 0x1) << 22; + code |= (src1 & 0xf) << 16; + code |= ((src1 >> 4) & 0x1) << 7; + code |= (src2 & 0xf) << 0; + code |= ((src2 >> 4) & 0x1) << 5; orc_arm_emit (p, code); } #if 0 static void -orc_neon_emit_binary_narrow (OrcCompiler *p, const char *name, unsigned int code, - int dest, int src1, int src2) +orc_neon_emit_binary_narrow (OrcCompiler * p, const char *name, + unsigned int code, int dest, int src1, int src2) { - ORC_ASSERT((code & 0x004ff0af) == 0); + ORC_ASSERT ((code & 0x004ff0af) == 0); - ORC_ASM_CODE(p," %s %s, %s, %s\n", name, + ORC_ASM_CODE (p, " %s %s, %s, %s\n", name, orc_neon_reg_name (dest), orc_neon_reg_name_quad (src1), orc_neon_reg_name_quad (src2)); - code |= (dest&0xf)<<12; - code |= ((dest>>4)&0x1)<<22; - code |= (src1&0xf)<<16; - code |= ((src1>>4)&0x1)<<7; - code |= (src2&0xf)<<0; - code |= ((src2>>4)&0x1)<<5; + code |= (dest & 0xf) << 12; + code |= ((dest >> 4) & 0x1) << 22; + code |= (src1 & 0xf) << 16; + code |= ((src1 >> 4) & 0x1) << 7; + code |= (src2 & 0xf) << 0; + code |= ((src2 >> 4) & 0x1) << 5; orc_arm_emit (p, code); } #endif static void -orc_neon_emit_binary_quad (OrcCompiler *p, const char *name, unsigned int code, +orc_neon_emit_binary_quad (OrcCompiler * p, const char *name, unsigned int code, int dest, int src1, int src2) { - ORC_ASSERT((code & 0x004ff0af) == 0); + ORC_ASSERT ((code & 0x004ff0af) == 0); - ORC_ASM_CODE(p," %s %s, %s, %s\n", name, + ORC_ASM_CODE (p, " %s %s, %s, %s\n", name, orc_neon_reg_name_quad (dest), orc_neon_reg_name_quad (src1), orc_neon_reg_name_quad (src2)); - code |= (dest&0xf)<<12; - code |= ((dest>>4)&0x1)<<22; - code |= (src1&0xf)<<16; - code |= ((src1>>4)&0x1)<<7; - code |= (src2&0xf)<<0; - code |= ((src2>>4)&0x1)<<5; + code |= (dest & 0xf) << 12; + code |= ((dest >> 4) & 0x1) << 22; + code |= (src1 & 0xf) << 16; + code |= ((src1 >> 4) & 0x1) << 7; + code |= (src2 & 0xf) << 0; + code |= ((src2 >> 4) & 0x1) << 5; code |= 0x40; orc_arm_emit (p, code); } static void -orc_neon_emit_unary (OrcCompiler *p, const char *name, unsigned int code, +orc_neon_emit_unary (OrcCompiler * p, const char *name, unsigned int code, int dest, int src1) { - ORC_ASSERT((code & 0x0040f02f) == 0); + ORC_ASSERT ((code & 0x0040f02f) == 0); - ORC_ASM_CODE(p," %s %s, %s\n", name, + ORC_ASM_CODE (p, " %s %s, %s\n", name, orc_neon_reg_name (dest), orc_neon_reg_name (src1)); - code |= (dest&0xf)<<12; - code |= ((dest>>4)&0x1)<<22; - code |= (src1&0xf)<<0; - code |= ((src1>>4)&0x1)<<5; + code |= (dest & 0xf) << 12; + code |= ((dest >> 4) & 0x1) << 22; + code |= (src1 & 0xf) << 0; + code |= ((src1 >> 4) & 0x1) << 5; orc_arm_emit (p, code); } static void -orc_neon_emit_unary_long (OrcCompiler *p, const char *name, unsigned int code, +orc_neon_emit_unary_long (OrcCompiler * p, const char *name, unsigned int code, int dest, int src1) { - ORC_ASSERT((code & 0x0040f02f) == 0); + ORC_ASSERT ((code & 0x0040f02f) == 0); - ORC_ASM_CODE(p," %s %s, %s\n", name, + ORC_ASM_CODE (p, " %s %s, %s\n", name, orc_neon_reg_name_quad (dest), orc_neon_reg_name (src1)); - code |= (dest&0xf)<<12; - code |= ((dest>>4)&0x1)<<22; - code |= (src1&0xf)<<0; - code |= ((src1>>4)&0x1)<<5; + code |= (dest & 0xf) << 12; + code |= ((dest >> 4) & 0x1) << 22; + code |= (src1 & 0xf) << 0; + code |= ((src1 >> 4) & 0x1) << 5; orc_arm_emit (p, code); } static void -orc_neon_emit_unary_narrow (OrcCompiler *p, const char *name, unsigned int code, - int dest, int src1) +orc_neon_emit_unary_narrow (OrcCompiler * p, const char *name, + unsigned int code, int dest, int src1) { - ORC_ASSERT((code & 0x0040f02f) == 0); + ORC_ASSERT ((code & 0x0040f02f) == 0); - ORC_ASM_CODE(p," %s %s, %s\n", name, + ORC_ASM_CODE (p, " %s %s, %s\n", name, orc_neon_reg_name (dest), orc_neon_reg_name_quad (src1)); - code |= (dest&0xf)<<12; - code |= ((dest>>4)&0x1)<<22; - code |= (src1&0xf)<<0; - code |= ((src1>>4)&0x1)<<5; + code |= (dest & 0xf) << 12; + code |= ((dest >> 4) & 0x1) << 22; + code |= (src1 & 0xf) << 0; + code |= ((src1 >> 4) & 0x1) << 5; orc_arm_emit (p, code); } static void -orc_neon_emit_unary_quad (OrcCompiler *p, const char *name, unsigned int code, +orc_neon_emit_unary_quad (OrcCompiler * p, const char *name, unsigned int code, int dest, int src1) { - ORC_ASSERT((code & 0x0040f02f) == 0); + ORC_ASSERT ((code & 0x0040f02f) == 0); - ORC_ASM_CODE(p," %s %s, %s\n", name, + ORC_ASM_CODE (p, " %s %s, %s\n", name, orc_neon_reg_name_quad (dest), orc_neon_reg_name_quad (src1)); - code |= (dest&0xf)<<12; - code |= ((dest>>4)&0x1)<<22; - code |= (src1&0xf)<<0; - code |= ((src1>>4)&0x1)<<5; + code |= (dest & 0xf) << 12; + code |= ((dest >> 4) & 0x1) << 22; + code |= (src1 & 0xf) << 0; + code |= ((src1 >> 4) & 0x1) << 5; code |= 0x40; orc_arm_emit (p, code); } void -orc_neon_emit_mov (OrcCompiler *compiler, int dest, int src) +orc_neon_emit_mov (OrcCompiler * compiler, int dest, int src) { - orc_neon_emit_binary (compiler, "vorr", 0xf2200110, - dest, src, src); + orc_neon_emit_binary (compiler, "vorr", 0xf2200110, dest, src, src); } void -orc_neon_emit_mov_quad (OrcCompiler *compiler, int dest, int src) +orc_neon_emit_mov_quad (OrcCompiler * compiler, int dest, int src) { - orc_neon_emit_binary_quad (compiler, "vorr", 0xf2200110, - dest, src, src); + orc_neon_emit_binary_quad (compiler, "vorr", 0xf2200110, dest, src, src); } void -orc_neon_preload (OrcCompiler *compiler, OrcVariable *var, int write, +orc_neon_preload (OrcCompiler * compiler, OrcVariable * var, int write, int offset) { orc_uint32 code; @@ -228,91 +228,89 @@ orc_neon_preload (OrcCompiler *compiler, OrcVariable *var, int write, /* Don't use multiprocessing extensions */ write = FALSE; - ORC_ASM_CODE(compiler," pld%s [%s, #%d]\n", - write ? "w" : "", - orc_arm_reg_name (var->ptr_register), offset); + ORC_ASM_CODE (compiler, " pld%s [%s, #%d]\n", + write ? "w" : "", orc_arm_reg_name (var->ptr_register), offset); code = 0xf510f000; - if (!write) code |= (1<<22); - code |= (var->ptr_register&0xf) << 16; + if (!write) + code |= (1 << 22); + code |= (var->ptr_register & 0xf) << 16; if (offset < 0) { - code |= ((-offset)&0xfff) << 0; + code |= ((-offset) & 0xfff) << 0; } else { - code |= (offset&0xfff) << 0; - code |= (1<<23); + code |= (offset & 0xfff) << 0; + code |= (1 << 23); } orc_arm_emit (compiler, code); } #if 0 void -orc_neon_load_halfvec_aligned (OrcCompiler *compiler, OrcVariable *var, int update) +orc_neon_load_halfvec_aligned (OrcCompiler * compiler, OrcVariable * var, + int update) { orc_uint32 code; - ORC_ASM_CODE(compiler," vld1.32 %s[0], [%s]%s\n", + ORC_ASM_CODE (compiler, " vld1.32 %s[0], [%s]%s\n", orc_neon_reg_name (var->alloc), - orc_arm_reg_name (var->ptr_register), - update ? "!" : ""); + orc_arm_reg_name (var->ptr_register), update ? "!" : ""); code = 0xf4a0080d; - code |= (var->ptr_register&0xf) << 16; - code |= (var->alloc&0xf) << 12; - code |= ((var->alloc>>4)&0x1) << 22; + code |= (var->ptr_register & 0xf) << 16; + code |= (var->alloc & 0xf) << 12; + code |= ((var->alloc >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } void -orc_neon_load_vec_aligned (OrcCompiler *compiler, OrcVariable *var, int update) +orc_neon_load_vec_aligned (OrcCompiler * compiler, OrcVariable * var, + int update) { orc_uint32 code; - ORC_ASM_CODE(compiler," vld1.64 %s, [%s]%s\n", + ORC_ASM_CODE (compiler, " vld1.64 %s, [%s]%s\n", orc_neon_reg_name (var->alloc), - orc_arm_reg_name (var->ptr_register), - update ? "!" : ""); + orc_arm_reg_name (var->ptr_register), update ? "!" : ""); code = 0xf42007cd; - code |= (var->ptr_register&0xf) << 16; - code |= (var->alloc&0xf) << 12; - code |= ((var->alloc>>4)&0x1) << 22; + code |= (var->ptr_register & 0xf) << 16; + code |= (var->alloc & 0xf) << 12; + code |= ((var->alloc >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } void -orc_neon_load_vec_unaligned (OrcCompiler *compiler, OrcVariable *var, +orc_neon_load_vec_unaligned (OrcCompiler * compiler, OrcVariable * var, int update) { orc_uint32 code; - ORC_ASM_CODE(compiler," vld1.8 %s, [%s]%s\n", + ORC_ASM_CODE (compiler, " vld1.8 %s, [%s]%s\n", orc_neon_reg_name (var->alloc), - orc_arm_reg_name (var->ptr_register), - update ? "!" : ""); + orc_arm_reg_name (var->ptr_register), update ? "!" : ""); code = 0xf420070d; - code |= (var->ptr_register&0xf) << 16; - code |= ((var->alloc)&0xf) << 12; - code |= (((var->alloc)>>4)&0x1) << 22; + code |= (var->ptr_register & 0xf) << 16; + code |= ((var->alloc) & 0xf) << 12; + code |= (((var->alloc) >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); #if 0 /* used with need_mask_regs */ - ORC_ASM_CODE(compiler," vld1.64 %s, [%s]%s\n", + ORC_ASM_CODE (compiler, " vld1.64 %s, [%s]%s\n", orc_neon_reg_name (var->aligned_data + 1), - orc_arm_reg_name (var->ptr_register), - update ? "!" : ""); + orc_arm_reg_name (var->ptr_register), update ? "!" : ""); code = 0xf42007cd; - code |= (var->ptr_register&0xf) << 16; - code |= ((var->aligned_data+1)&0xf) << 12; - code |= (((var->aligned_data+1)>>4)&0x1) << 22; + code |= (var->ptr_register & 0xf) << 16; + code |= ((var->aligned_data + 1) & 0xf) << 12; + code |= (((var->aligned_data + 1) >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); - ORC_ASM_CODE(compiler," vtbl.8 %s, {%s,%s}, %s\n", + ORC_ASM_CODE (compiler, " vtbl.8 %s, {%s,%s}, %s\n", orc_neon_reg_name (var->alloc), orc_neon_reg_name (var->aligned_data), - orc_neon_reg_name (var->aligned_data+1), + orc_neon_reg_name (var->aligned_data + 1), orc_neon_reg_name (var->mask_alloc)); - code = NEON_BINARY(0xf3b00900, var->alloc, var->aligned_data, + code = NEON_BINARY (0xf3b00900, var->alloc, var->aligned_data, var->mask_alloc); orc_arm_emit (compiler, code); //orc_neon_emit_mov (compiler, var->alloc, var->mask_alloc); @@ -322,45 +320,43 @@ orc_neon_load_vec_unaligned (OrcCompiler *compiler, OrcVariable *var, } void -orc_neon_load_halfvec_unaligned (OrcCompiler *compiler, OrcVariable *var, +orc_neon_load_halfvec_unaligned (OrcCompiler * compiler, OrcVariable * var, int update) { orc_uint32 code; - ORC_ASM_CODE(compiler," vld1.8 %s, [%s]\n", - orc_neon_reg_name (var->alloc), - orc_arm_reg_name (var->ptr_register)); + ORC_ASM_CODE (compiler, " vld1.8 %s, [%s]\n", + orc_neon_reg_name (var->alloc), orc_arm_reg_name (var->ptr_register)); code = 0xf420070d; - code |= (var->ptr_register&0xf) << 16; - code |= ((var->alloc)&0xf) << 12; - code |= (((var->alloc)>>4)&0x1) << 22; + code |= (var->ptr_register & 0xf) << 16; + code |= ((var->alloc) & 0xf) << 12; + code |= (((var->alloc) >> 4) & 0x1) << 22; //code |= (!update) << 1; code |= (1) << 1; orc_arm_emit (compiler, code); if (update) { - orc_arm_emit_add_imm (compiler, var->ptr_register, - var->ptr_register, 4); + orc_arm_emit_add_imm (compiler, var->ptr_register, var->ptr_register, 4); } #if 0 /* used with need_mask_regs */ - ORC_ASM_CODE(compiler," vld1.32 %s[1], [%s]%s\n", + ORC_ASM_CODE (compiler, " vld1.32 %s[1], [%s]%s\n", orc_neon_reg_name (var->aligned_data), - orc_arm_reg_name (var->ptr_register), - update ? "!" : ""); + orc_arm_reg_name (var->ptr_register), update ? "!" : ""); code = 0xf4a0088d; - code |= (var->ptr_register&0xf) << 16; - code |= ((var->aligned_data)&0xf) << 12; - code |= (((var->aligned_data)>>4)&0x1) << 22; + code |= (var->ptr_register & 0xf) << 16; + code |= ((var->aligned_data) & 0xf) << 12; + code |= (((var->aligned_data) >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); - ORC_ASM_CODE(compiler," vtbl.8 %s, {%s,%s}, %s\n", + ORC_ASM_CODE (compiler, " vtbl.8 %s, {%s,%s}, %s\n", orc_neon_reg_name (var->alloc), orc_neon_reg_name (var->aligned_data), orc_neon_reg_name (var->aligned_data + 1), orc_neon_reg_name (var->mask_alloc)); - code = NEON_BINARY(0xf3b00900, var->alloc, var->aligned_data, var->mask_alloc); + code = + NEON_BINARY (0xf3b00900, var->alloc, var->aligned_data, var->mask_alloc); orc_arm_emit (compiler, code); orc_neon_emit_unary (compiler, "vrev64.i32", 0xf3b80000, @@ -369,85 +365,83 @@ orc_neon_load_halfvec_unaligned (OrcCompiler *compiler, OrcVariable *var, } void -orc_neon_load_fourvec_aligned (OrcCompiler *compiler, OrcVariable *var, int update) +orc_neon_load_fourvec_aligned (OrcCompiler * compiler, OrcVariable * var, + int update) { orc_uint32 code; - ORC_ASM_CODE(compiler," vld1.64 { %s, %s, %s, %s }, [%s,:256]%s\n", + ORC_ASM_CODE (compiler, " vld1.64 { %s, %s, %s, %s }, [%s,:256]%s\n", orc_neon_reg_name (var->alloc), orc_neon_reg_name (var->alloc + 1), orc_neon_reg_name (var->alloc + 2), orc_neon_reg_name (var->alloc + 3), - orc_arm_reg_name (var->ptr_register), - update ? "!" : ""); + orc_arm_reg_name (var->ptr_register), update ? "!" : ""); code = 0xf42002dd; - code |= (var->ptr_register&0xf) << 16; - code |= (var->alloc&0xf) << 12; - code |= ((var->alloc>>4)&0x1) << 22; + code |= (var->ptr_register & 0xf) << 16; + code |= (var->alloc & 0xf) << 12; + code |= ((var->alloc >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } void -orc_neon_load_fourvec_unaligned (OrcCompiler *compiler, OrcVariable *var, +orc_neon_load_fourvec_unaligned (OrcCompiler * compiler, OrcVariable * var, int update) { orc_uint32 code; - ORC_ASM_CODE(compiler," vld1.8 { %s, %s, %s, %s }, [%s]%s\n", + ORC_ASM_CODE (compiler, " vld1.8 { %s, %s, %s, %s }, [%s]%s\n", orc_neon_reg_name (var->alloc), orc_neon_reg_name (var->alloc + 1), orc_neon_reg_name (var->alloc + 2), orc_neon_reg_name (var->alloc + 3), - orc_arm_reg_name (var->ptr_register), - update ? "!" : ""); + orc_arm_reg_name (var->ptr_register), update ? "!" : ""); code = 0xf420020d; - code |= (var->ptr_register&0xf) << 16; - code |= ((var->alloc)&0xf) << 12; - code |= (((var->alloc)>>4)&0x1) << 22; + code |= (var->ptr_register & 0xf) << 16; + code |= ((var->alloc) & 0xf) << 12; + code |= (((var->alloc) >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } void -orc_neon_load_twovec_aligned (OrcCompiler *compiler, OrcVariable *var, int update) +orc_neon_load_twovec_aligned (OrcCompiler * compiler, OrcVariable * var, + int update) { orc_uint32 code; - ORC_ASM_CODE(compiler," vld1.64 { %s, %s }, [%s,:128]%s\n", + ORC_ASM_CODE (compiler, " vld1.64 { %s, %s }, [%s,:128]%s\n", orc_neon_reg_name (var->alloc), orc_neon_reg_name (var->alloc + 1), - orc_arm_reg_name (var->ptr_register), - update ? "!" : ""); + orc_arm_reg_name (var->ptr_register), update ? "!" : ""); code = 0xf4200aed; - code |= (var->ptr_register&0xf) << 16; - code |= (var->alloc&0xf) << 12; - code |= ((var->alloc>>4)&0x1) << 22; + code |= (var->ptr_register & 0xf) << 16; + code |= (var->alloc & 0xf) << 12; + code |= ((var->alloc >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } void -orc_neon_load_twovec_unaligned (OrcCompiler *compiler, OrcVariable *var, +orc_neon_load_twovec_unaligned (OrcCompiler * compiler, OrcVariable * var, int update) { orc_uint32 code; - ORC_ASM_CODE(compiler," vld1.8 { %s, %s }, [%s]%s\n", + ORC_ASM_CODE (compiler, " vld1.8 { %s, %s }, [%s]%s\n", orc_neon_reg_name (var->alloc), orc_neon_reg_name (var->alloc + 1), - orc_arm_reg_name (var->ptr_register), - update ? "!" : ""); + orc_arm_reg_name (var->ptr_register), update ? "!" : ""); code = 0xf4200a0d; - code |= (var->ptr_register&0xf) << 16; - code |= ((var->alloc)&0xf) << 12; - code |= (((var->alloc)>>4)&0x1) << 22; + code |= (var->ptr_register & 0xf) << 16; + code |= ((var->alloc) & 0xf) << 12; + code |= (((var->alloc) >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } void -orc_neon_loadb (OrcCompiler *compiler, OrcVariable *var, int update) +orc_neon_loadb (OrcCompiler * compiler, OrcVariable * var, int update) { orc_uint32 code; int i; @@ -470,16 +464,15 @@ orc_neon_loadb (OrcCompiler *compiler, OrcVariable *var, int update) orc_neon_load_halfvec_unaligned (compiler, var, update); } else { if (compiler->insn_shift > 1) { - ORC_ERROR("slow load"); + ORC_ERROR ("slow load"); } - for(i=0;i<(1<<compiler->insn_shift);i++){ - ORC_ASM_CODE(compiler," vld1.8 %s[%d], [%s]%s\n", - orc_neon_reg_name (var->alloc + (i>>3)), i&7, - orc_arm_reg_name (var->ptr_register), - update ? "!" : ""); - code = NEON_BINARY(0xf4a0000d, var->alloc + (i>>3), + for (i = 0; i < (1 << compiler->insn_shift); i++) { + ORC_ASM_CODE (compiler, " vld1.8 %s[%d], [%s]%s\n", + orc_neon_reg_name (var->alloc + (i >> 3)), i & 7, + orc_arm_reg_name (var->ptr_register), update ? "!" : ""); + code = NEON_BINARY (0xf4a0000d, var->alloc + (i >> 3), var->ptr_register, 0); - code |= (i&7) << 5; + code |= (i & 7) << 5; code |= (!update) << 1; orc_arm_emit (compiler, code); } @@ -487,7 +480,7 @@ orc_neon_loadb (OrcCompiler *compiler, OrcVariable *var, int update) } void -orc_neon_loadw (OrcCompiler *compiler, OrcVariable *var, int update) +orc_neon_loadw (OrcCompiler * compiler, OrcVariable * var, int update) { if (var->is_aligned && compiler->insn_shift == 3) { orc_neon_load_twovec_aligned (compiler, var, update); @@ -513,16 +506,15 @@ orc_neon_loadw (OrcCompiler *compiler, OrcVariable *var, int update) return; } if (compiler->insn_shift > 1) { - ORC_ERROR("slow load"); + ORC_ERROR ("slow load"); } - for(i=0;i<(1<<compiler->insn_shift);i++){ - ORC_ASM_CODE(compiler," vld1.16 %s[%d], [%s]%s\n", - orc_neon_reg_name (var->alloc + (i>>2)), i&3, - orc_arm_reg_name (var->ptr_register), - update ? "!" : ""); - code = NEON_BINARY(0xf4a0040d, var->alloc + (i>>2), + for (i = 0; i < (1 << compiler->insn_shift); i++) { + ORC_ASM_CODE (compiler, " vld1.16 %s[%d], [%s]%s\n", + orc_neon_reg_name (var->alloc + (i >> 2)), i & 3, + orc_arm_reg_name (var->ptr_register), update ? "!" : ""); + code = NEON_BINARY (0xf4a0040d, var->alloc + (i >> 2), var->ptr_register, 0); - code |= (i&3) << 6; + code |= (i & 3) << 6; code |= (!update) << 1; orc_arm_emit (compiler, code); } @@ -530,7 +522,7 @@ orc_neon_loadw (OrcCompiler *compiler, OrcVariable *var, int update) } void -orc_neon_loadl (OrcCompiler *compiler, OrcVariable *var, int update) +orc_neon_loadl (OrcCompiler * compiler, OrcVariable * var, int update) { orc_uint32 code; int i; @@ -547,14 +539,13 @@ orc_neon_loadl (OrcCompiler *compiler, OrcVariable *var, int update) if (compiler->insn_shift > 0) { //ORC_ERROR("slow load"); } - for(i=0;i<(1<<compiler->insn_shift);i++){ - ORC_ASM_CODE(compiler," vld1.32 %s[%d], [%s]%s\n", - orc_neon_reg_name (var->alloc + (i>>1)), i & 1, - orc_arm_reg_name (var->ptr_register), - update ? "!" : ""); - code = NEON_BINARY(0xf4a0080d, var->alloc + (i>>1), + for (i = 0; i < (1 << compiler->insn_shift); i++) { + ORC_ASM_CODE (compiler, " vld1.32 %s[%d], [%s]%s\n", + orc_neon_reg_name (var->alloc + (i >> 1)), i & 1, + orc_arm_reg_name (var->ptr_register), update ? "!" : ""); + code = NEON_BINARY (0xf4a0080d, var->alloc + (i >> 1), var->ptr_register, 0); - code |= (i&1)<<7; + code |= (i & 1) << 7; code |= (!update) << 1; orc_arm_emit (compiler, code); } @@ -562,103 +553,96 @@ orc_neon_loadl (OrcCompiler *compiler, OrcVariable *var, int update) } void -orc_neon_loadq (OrcCompiler *compiler, int dest, int src1, int update, int is_aligned) +orc_neon_loadq (OrcCompiler * compiler, int dest, int src1, int update, + int is_aligned) { orc_uint32 code; - ORC_ASM_CODE(compiler," vld1.64 %s, [%s]%s\n", - orc_neon_reg_name (dest), - orc_arm_reg_name (src1), - update ? "!" : ""); + ORC_ASM_CODE (compiler, " vld1.64 %s, [%s]%s\n", + orc_neon_reg_name (dest), orc_arm_reg_name (src1), update ? "!" : ""); code = 0xf42007cd; - code |= (src1&0xf) << 16; - code |= (dest&0xf) << 12; - code |= ((dest>>4)&0x1) << 22; + code |= (src1 & 0xf) << 16; + code |= (dest & 0xf) << 12; + code |= ((dest >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } void -orc_neon_storeb (OrcCompiler *compiler, int dest, int update, int src1, int is_aligned) +orc_neon_storeb (OrcCompiler * compiler, int dest, int update, int src1, + int is_aligned) { orc_uint32 code; int i; if (is_aligned && compiler->insn_shift == 5) { - ORC_ASM_CODE(compiler," vst1.8 { %s, %s, %s, %s }, [%s,:256]%s\n", + ORC_ASM_CODE (compiler, " vst1.8 { %s, %s, %s, %s }, [%s,:256]%s\n", orc_neon_reg_name (src1), - orc_neon_reg_name (src1+1), - orc_neon_reg_name (src1+2), - orc_neon_reg_name (src1+3), - orc_arm_reg_name (dest), - update ? "!" : ""); + orc_neon_reg_name (src1 + 1), + orc_neon_reg_name (src1 + 2), + orc_neon_reg_name (src1 + 3), + orc_arm_reg_name (dest), update ? "!" : ""); code = 0xf400023d; - code |= (dest&0xf) << 16; - code |= (src1&0xf) << 12; - code |= ((src1>>4)&0x1) << 22; + code |= (dest & 0xf) << 16; + code |= (src1 & 0xf) << 12; + code |= ((src1 >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } else if (compiler->insn_shift == 5) { - ORC_ASM_CODE(compiler," vst1.8 { %s, %s, %s, %s }, [%s]%s\n", + ORC_ASM_CODE (compiler, " vst1.8 { %s, %s, %s, %s }, [%s]%s\n", orc_neon_reg_name (src1), - orc_neon_reg_name (src1+1), - orc_neon_reg_name (src1+2), - orc_neon_reg_name (src1+3), - orc_arm_reg_name (dest), - update ? "!" : ""); + orc_neon_reg_name (src1 + 1), + orc_neon_reg_name (src1 + 2), + orc_neon_reg_name (src1 + 3), + orc_arm_reg_name (dest), update ? "!" : ""); code = 0xf400020d; - code |= (dest&0xf) << 16; - code |= (src1&0xf) << 12; - code |= ((src1>>4)&0x1) << 22; + code |= (dest & 0xf) << 16; + code |= (src1 & 0xf) << 12; + code |= ((src1 >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } else if (is_aligned && compiler->insn_shift == 4) { - ORC_ASM_CODE(compiler," vst1.8 { %s, %s }, [%s,:128]%s\n", + ORC_ASM_CODE (compiler, " vst1.8 { %s, %s }, [%s,:128]%s\n", orc_neon_reg_name (src1), - orc_neon_reg_name (src1+1), - orc_arm_reg_name (dest), - update ? "!" : ""); + orc_neon_reg_name (src1 + 1), + orc_arm_reg_name (dest), update ? "!" : ""); code = 0xf4000a2d; - code |= (dest&0xf) << 16; - code |= (src1&0xf) << 12; - code |= ((src1>>4)&0x1) << 22; + code |= (dest & 0xf) << 16; + code |= (src1 & 0xf) << 12; + code |= ((src1 >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } else if (compiler->insn_shift == 4) { - ORC_ASM_CODE(compiler," vst1.8 { %s, %s }, [%s]%s\n", + ORC_ASM_CODE (compiler, " vst1.8 { %s, %s }, [%s]%s\n", orc_neon_reg_name (src1), - orc_neon_reg_name (src1+1), - orc_arm_reg_name (dest), - update ? "!" : ""); + orc_neon_reg_name (src1 + 1), + orc_arm_reg_name (dest), update ? "!" : ""); code = 0xf4000a0d; - code |= (dest&0xf) << 16; - code |= (src1&0xf) << 12; - code |= ((src1>>4)&0x1) << 22; + code |= (dest & 0xf) << 16; + code |= (src1 & 0xf) << 12; + code |= ((src1 >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } else if (is_aligned && compiler->insn_shift == 3) { - ORC_ASM_CODE(compiler," vst1.8 %s, [%s,:64]%s\n", - orc_neon_reg_name (src1), - orc_arm_reg_name (dest), - update ? "!" : ""); + ORC_ASM_CODE (compiler, " vst1.8 %s, [%s,:64]%s\n", + orc_neon_reg_name (src1), orc_arm_reg_name (dest), update ? "!" : ""); code = 0xf400071d; - code |= (dest&0xf) << 16; - code |= (src1&0xf) << 12; - code |= ((src1>>4)&0x1) << 22; + code |= (dest & 0xf) << 16; + code |= (src1 & 0xf) << 12; + code |= ((src1 >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } else { - for(i=0;i<(1<<compiler->insn_shift);i++){ - ORC_ASM_CODE(compiler," vst1.8 %s[%d], [%s]%s\n", - orc_neon_reg_name (src1 + (i>>3)), i&7, - orc_arm_reg_name (dest), - update ? "!" : ""); + for (i = 0; i < (1 << compiler->insn_shift); i++) { + ORC_ASM_CODE (compiler, " vst1.8 %s[%d], [%s]%s\n", + orc_neon_reg_name (src1 + (i >> 3)), i & 7, + orc_arm_reg_name (dest), update ? "!" : ""); code = 0xf480000d; - code |= (dest&0xf) << 16; - code |= ((src1 + (i>>3))&0xf) << 12; - code |= ((src1>>4)&0x1) << 22; - code |= (i&7)<<5; + code |= (dest & 0xf) << 16; + code |= ((src1 + (i >> 3)) & 0xf) << 12; + code |= ((src1 >> 4) & 0x1) << 22; + code |= (i & 7) << 5; code |= (!update) << 1; orc_arm_emit (compiler, code); } @@ -666,45 +650,42 @@ orc_neon_storeb (OrcCompiler *compiler, int dest, int update, int src1, int is_a } void -orc_neon_storew (OrcCompiler *compiler, int dest, int update, int src1, int is_aligned) +orc_neon_storew (OrcCompiler * compiler, int dest, int update, int src1, + int is_aligned) { orc_uint32 code; int i; if (is_aligned && compiler->insn_shift == 3) { - ORC_ASM_CODE(compiler," vst1.16 { %s, %s }, [%s,:128]%s\n", + ORC_ASM_CODE (compiler, " vst1.16 { %s, %s }, [%s,:128]%s\n", orc_neon_reg_name (src1), orc_neon_reg_name (src1 + 1), - orc_arm_reg_name (dest), - update ? "!" : ""); + orc_arm_reg_name (dest), update ? "!" : ""); code = 0xf4000a6d; - code |= (dest&0xf) << 16; - code |= (src1&0xf) << 12; - code |= ((src1>>4)&0x1) << 22; + code |= (dest & 0xf) << 16; + code |= (src1 & 0xf) << 12; + code |= ((src1 >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } else if (is_aligned && compiler->insn_shift == 2) { - ORC_ASM_CODE(compiler," vst1.16 %s, [%s,:64]%s\n", - orc_neon_reg_name (src1), - orc_arm_reg_name (dest), - update ? "!" : ""); + ORC_ASM_CODE (compiler, " vst1.16 %s, [%s,:64]%s\n", + orc_neon_reg_name (src1), orc_arm_reg_name (dest), update ? "!" : ""); code = 0xf400075d; - code |= (dest&0xf) << 16; - code |= (src1&0xf) << 12; - code |= ((src1>>4)&0x1) << 22; + code |= (dest & 0xf) << 16; + code |= (src1 & 0xf) << 12; + code |= ((src1 >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } else { - for(i=0;i<(1<<compiler->insn_shift);i++){ - ORC_ASM_CODE(compiler," vst1.16 %s[%d], [%s]%s\n", - orc_neon_reg_name (src1 + (i>>2)), i&3, - orc_arm_reg_name (dest), - update ? "!" : ""); + for (i = 0; i < (1 << compiler->insn_shift); i++) { + ORC_ASM_CODE (compiler, " vst1.16 %s[%d], [%s]%s\n", + orc_neon_reg_name (src1 + (i >> 2)), i & 3, + orc_arm_reg_name (dest), update ? "!" : ""); code = 0xf480040d; - code |= (dest&0xf) << 16; - code |= ((src1 + (i>>2))&0xf) << 12; - code |= ((src1>>4)&0x1) << 22; - code |= (i&3)<<6; + code |= (dest & 0xf) << 16; + code |= ((src1 + (i >> 2)) & 0xf) << 12; + code |= ((src1 >> 4) & 0x1) << 22; + code |= (i & 3) << 6; code |= (!update) << 1; orc_arm_emit (compiler, code); } @@ -712,45 +693,42 @@ orc_neon_storew (OrcCompiler *compiler, int dest, int update, int src1, int is_a } void -orc_neon_storel (OrcCompiler *compiler, int dest, int update, int src1, int is_aligned) +orc_neon_storel (OrcCompiler * compiler, int dest, int update, int src1, + int is_aligned) { orc_uint32 code; int i; if (is_aligned && compiler->insn_shift == 2) { - ORC_ASM_CODE(compiler," vst1.32 { %s, %s }, [%s,:128]%s\n", + ORC_ASM_CODE (compiler, " vst1.32 { %s, %s }, [%s,:128]%s\n", orc_neon_reg_name (src1), orc_neon_reg_name (src1 + 1), - orc_arm_reg_name (dest), - update ? "!" : ""); + orc_arm_reg_name (dest), update ? "!" : ""); code = 0xf4000aad; - code |= (dest&0xf) << 16; - code |= (src1&0xf) << 12; - code |= ((src1>>4)&0x1) << 22; + code |= (dest & 0xf) << 16; + code |= (src1 & 0xf) << 12; + code |= ((src1 >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } else if (is_aligned && compiler->insn_shift == 1) { - ORC_ASM_CODE(compiler," vst1.32 %s, [%s,:64]%s\n", - orc_neon_reg_name (src1), - orc_arm_reg_name (dest), - update ? "!" : ""); + ORC_ASM_CODE (compiler, " vst1.32 %s, [%s,:64]%s\n", + orc_neon_reg_name (src1), orc_arm_reg_name (dest), update ? "!" : ""); code = 0xf400079d; - code |= (dest&0xf) << 16; - code |= (src1&0xf) << 12; - code |= ((src1>>4)&0x1) << 22; + code |= (dest & 0xf) << 16; + code |= (src1 & 0xf) << 12; + code |= ((src1 >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } else { - for(i=0;i<(1<<compiler->insn_shift);i++){ - ORC_ASM_CODE(compiler," vst1.32 %s[%d], [%s]%s\n", - orc_neon_reg_name (src1 + (i>>1)), i&1, - orc_arm_reg_name (dest), - update ? "!" : ""); + for (i = 0; i < (1 << compiler->insn_shift); i++) { + ORC_ASM_CODE (compiler, " vst1.32 %s[%d], [%s]%s\n", + orc_neon_reg_name (src1 + (i >> 1)), i & 1, + orc_arm_reg_name (dest), update ? "!" : ""); code = 0xf480080d; - code |= (dest&0xf) << 16; - code |= ((src1 + (i>>1))&0xf) << 12; - code |= ((src1>>4)&0x1) << 22; - code |= (i&1)<<7; + code |= (dest & 0xf) << 16; + code |= ((src1 + (i >> 1)) & 0xf) << 12; + code |= ((src1 >> 4) & 0x1) << 22; + code |= (i & 1) << 7; code |= (!update) << 1; orc_arm_emit (compiler, code); } @@ -758,25 +736,24 @@ orc_neon_storel (OrcCompiler *compiler, int dest, int update, int src1, int is_a } void -orc_neon_storeq (OrcCompiler *compiler, int dest, int update, int src1, int is_aligned) +orc_neon_storeq (OrcCompiler * compiler, int dest, int update, int src1, + int is_aligned) { orc_uint32 code; - ORC_ASM_CODE(compiler," vst1.64 %s, [%s]%s\n", - orc_neon_reg_name (src1), - orc_arm_reg_name (dest), - update ? "!" : ""); + ORC_ASM_CODE (compiler, " vst1.64 %s, [%s]%s\n", + orc_neon_reg_name (src1), orc_arm_reg_name (dest), update ? "!" : ""); code = 0xf40007cd; - code |= (dest&0xf) << 16; - code |= (src1&0xf) << 12; - code |= ((src1>>4)&0x1) << 22; + code |= (dest & 0xf) << 16; + code |= (src1 & 0xf) << 12; + code |= ((src1 >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } #endif static void -neon_rule_loadpX (OrcCompiler *compiler, void *user, OrcInstruction *insn) +neon_rule_loadpX (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; @@ -791,11 +768,11 @@ neon_rule_loadpX (OrcCompiler *compiler, void *user, OrcInstruction *insn) orc_neon_emit_loadil (compiler, dest->alloc, src->value.i); } else if (size == 8) { if (src->size == 8) { - ORC_COMPILER_ERROR(compiler,"64-bit constants not implemented"); + ORC_COMPILER_ERROR (compiler, "64-bit constants not implemented"); } orc_neon_emit_loadiq (compiler, dest->alloc, src->value.i); } else { - ORC_PROGRAM_ERROR(compiler,"unimplemented"); + ORC_PROGRAM_ERROR (compiler, "unimplemented"); } } else { if (size == 1) { @@ -806,38 +783,39 @@ neon_rule_loadpX (OrcCompiler *compiler, void *user, OrcInstruction *insn) orc_neon_emit_loadpl (compiler, dest->alloc, insn->src_args[0]); } else if (size == 8) { if (src->size == 8) { - ORC_COMPILER_ERROR(compiler,"64-bit parameters not implemented"); + ORC_COMPILER_ERROR (compiler, "64-bit parameters not implemented"); } orc_neon_emit_loadpq (compiler, dest->alloc, insn->src_args[0]); } else { - ORC_PROGRAM_ERROR(compiler,"unimplemented"); + ORC_PROGRAM_ERROR (compiler, "unimplemented"); } } } static void -neon_rule_loadX (OrcCompiler *compiler, void *user, OrcInstruction *insn) +neon_rule_loadX (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; int update = FALSE; unsigned int code = 0; int size = src->size << compiler->insn_shift; - int type = ORC_PTR_TO_INT(user); + int type = ORC_PTR_TO_INT (user); int ptr_register; int is_aligned = src->is_aligned; /* FIXME this should be fixed at a higher level */ if (src->vartype != ORC_VAR_TYPE_SRC && src->vartype != ORC_VAR_TYPE_DEST) { - ORC_COMPILER_ERROR(compiler, "loadX used with non src/dest"); + ORC_COMPILER_ERROR (compiler, "loadX used with non src/dest"); return; } - if (src->vartype == ORC_VAR_TYPE_DEST) update = FALSE; + if (src->vartype == ORC_VAR_TYPE_DEST) + update = FALSE; if (type == 1) { if (compiler->vars[insn->src_args[1]].vartype != ORC_VAR_TYPE_CONST) { - ORC_PROGRAM_ERROR(compiler,"unimplemented"); + ORC_PROGRAM_ERROR (compiler, "unimplemented"); return; } @@ -855,56 +833,50 @@ neon_rule_loadX (OrcCompiler *compiler, void *user, OrcInstruction *insn) if (size >= 8) { if (is_aligned) { if (size == 32) { - ORC_ASM_CODE(compiler," vld1.64 { %s, %s, %s, %s }, [%s,:256]%s\n", + ORC_ASM_CODE (compiler, " vld1.64 { %s, %s, %s, %s }, [%s,:256]%s\n", orc_neon_reg_name (dest->alloc), orc_neon_reg_name (dest->alloc + 1), orc_neon_reg_name (dest->alloc + 2), orc_neon_reg_name (dest->alloc + 3), - orc_arm_reg_name (ptr_register), - update ? "!" : ""); + orc_arm_reg_name (ptr_register), update ? "!" : ""); code = 0xf42002dd; } else if (size == 16) { - ORC_ASM_CODE(compiler," vld1.64 { %s, %s }, [%s,:128]%s\n", + ORC_ASM_CODE (compiler, " vld1.64 { %s, %s }, [%s,:128]%s\n", orc_neon_reg_name (dest->alloc), orc_neon_reg_name (dest->alloc + 1), - orc_arm_reg_name (ptr_register), - update ? "!" : ""); + orc_arm_reg_name (ptr_register), update ? "!" : ""); code = 0xf4200aed; } else if (size == 8) { - ORC_ASM_CODE(compiler," vld1.64 %s, [%s]%s\n", + ORC_ASM_CODE (compiler, " vld1.64 %s, [%s]%s\n", orc_neon_reg_name (dest->alloc), - orc_arm_reg_name (ptr_register), - update ? "!" : ""); + orc_arm_reg_name (ptr_register), update ? "!" : ""); code = 0xf42007cd; } else { - ORC_COMPILER_ERROR(compiler,"bad aligned load size %d", + ORC_COMPILER_ERROR (compiler, "bad aligned load size %d", src->size << compiler->insn_shift); } } else { if (size == 32) { - ORC_ASM_CODE(compiler," vld1.8 { %s, %s, %s, %s }, [%s]%s\n", + ORC_ASM_CODE (compiler, " vld1.8 { %s, %s, %s, %s }, [%s]%s\n", orc_neon_reg_name (dest->alloc), orc_neon_reg_name (dest->alloc + 1), orc_neon_reg_name (dest->alloc + 2), orc_neon_reg_name (dest->alloc + 3), - orc_arm_reg_name (ptr_register), - update ? "!" : ""); + orc_arm_reg_name (ptr_register), update ? "!" : ""); code = 0xf420020d; } else if (size == 16) { - ORC_ASM_CODE(compiler," vld1.8 { %s, %s }, [%s]%s\n", + ORC_ASM_CODE (compiler, " vld1.8 { %s, %s }, [%s]%s\n", orc_neon_reg_name (dest->alloc), orc_neon_reg_name (dest->alloc + 1), - orc_arm_reg_name (ptr_register), - update ? "!" : ""); + orc_arm_reg_name (ptr_register), update ? "!" : ""); code = 0xf4200a0d; } else if (size == 8) { - ORC_ASM_CODE(compiler," vld1.8 %s, [%s]%s\n", + ORC_ASM_CODE (compiler, " vld1.8 %s, [%s]%s\n", orc_neon_reg_name (dest->alloc), - orc_arm_reg_name (ptr_register), - update ? "!" : ""); + orc_arm_reg_name (ptr_register), update ? "!" : ""); code = 0xf420070d; } else { - ORC_COMPILER_ERROR(compiler,"bad unaligned load size %d", + ORC_COMPILER_ERROR (compiler, "bad unaligned load size %d", src->size << compiler->insn_shift); } } @@ -917,24 +889,23 @@ neon_rule_loadX (OrcCompiler *compiler, void *user, OrcInstruction *insn) } else { shift = 0; } - ORC_ASM_CODE(compiler," vld1.%d %s[0], [%s]%s\n", - 8<<shift, + ORC_ASM_CODE (compiler, " vld1.%d %s[0], [%s]%s\n", + 8 << shift, orc_neon_reg_name (dest->alloc), - orc_arm_reg_name (ptr_register), - update ? "!" : ""); + orc_arm_reg_name (ptr_register), update ? "!" : ""); code = 0xf4a0000d; - code |= shift<<10; - code |= (0&7)<<5; + code |= shift << 10; + code |= (0 & 7) << 5; } - code |= (ptr_register&0xf) << 16; - code |= (dest->alloc&0xf) << 12; - code |= ((dest->alloc>>4)&0x1) << 22; + code |= (ptr_register & 0xf) << 16; + code |= (dest->alloc & 0xf) << 12; + code |= ((dest->alloc >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } static void -neon_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn) +neon_rule_storeX (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; @@ -945,55 +916,49 @@ neon_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn) if (size >= 8) { if (dest->is_aligned) { if (size == 32) { - ORC_ASM_CODE(compiler," vst1.64 { %s, %s, %s, %s }, [%s,:256]%s\n", + ORC_ASM_CODE (compiler, " vst1.64 { %s, %s, %s, %s }, [%s,:256]%s\n", orc_neon_reg_name (src->alloc), orc_neon_reg_name (src->alloc + 1), orc_neon_reg_name (src->alloc + 2), orc_neon_reg_name (src->alloc + 3), - orc_arm_reg_name (dest->ptr_register), - update ? "!" : ""); + orc_arm_reg_name (dest->ptr_register), update ? "!" : ""); code = 0xf40002dd; } else if (size == 16) { - ORC_ASM_CODE(compiler," vst1.64 { %s, %s }, [%s,:128]%s\n", + ORC_ASM_CODE (compiler, " vst1.64 { %s, %s }, [%s,:128]%s\n", orc_neon_reg_name (src->alloc), orc_neon_reg_name (src->alloc + 1), - orc_arm_reg_name (dest->ptr_register), - update ? "!" : ""); + orc_arm_reg_name (dest->ptr_register), update ? "!" : ""); code = 0xf4000aed; } else if (size == 8) { - ORC_ASM_CODE(compiler," vst1.64 %s, [%s]%s\n", + ORC_ASM_CODE (compiler, " vst1.64 %s, [%s]%s\n", orc_neon_reg_name (src->alloc), - orc_arm_reg_name (dest->ptr_register), - update ? "!" : ""); + orc_arm_reg_name (dest->ptr_register), update ? "!" : ""); code = 0xf40007cd; } else { - ORC_COMPILER_ERROR(compiler,"bad aligned store size %d", size); + ORC_COMPILER_ERROR (compiler, "bad aligned store size %d", size); } } else { if (size == 32) { - ORC_ASM_CODE(compiler," vst1.8 { %s, %s, %s, %s }, [%s]%s\n", + ORC_ASM_CODE (compiler, " vst1.8 { %s, %s, %s, %s }, [%s]%s\n", orc_neon_reg_name (src->alloc), orc_neon_reg_name (src->alloc + 1), orc_neon_reg_name (src->alloc + 2), orc_neon_reg_name (src->alloc + 3), - orc_arm_reg_name (dest->ptr_register), - update ? "!" : ""); + orc_arm_reg_name (dest->ptr_register), update ? "!" : ""); code = 0xf400020d; } else if (size == 16) { - ORC_ASM_CODE(compiler," vst1.8 { %s, %s }, [%s]%s\n", + ORC_ASM_CODE (compiler, " vst1.8 { %s, %s }, [%s]%s\n", orc_neon_reg_name (src->alloc), orc_neon_reg_name (src->alloc + 1), - orc_arm_reg_name (dest->ptr_register), - update ? "!" : ""); + orc_arm_reg_name (dest->ptr_register), update ? "!" : ""); code = 0xf4000a0d; } else if (size == 8) { - ORC_ASM_CODE(compiler," vst1.8 %s, [%s]%s\n", + ORC_ASM_CODE (compiler, " vst1.8 %s, [%s]%s\n", orc_neon_reg_name (src->alloc), - orc_arm_reg_name (dest->ptr_register), - update ? "!" : ""); + orc_arm_reg_name (dest->ptr_register), update ? "!" : ""); code = 0xf400070d; } else { - ORC_COMPILER_ERROR(compiler,"bad aligned store size %d", size); + ORC_COMPILER_ERROR (compiler, "bad aligned store size %d", size); } } } else { @@ -1005,18 +970,17 @@ neon_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn) } else { shift = 0; } - ORC_ASM_CODE(compiler," vst1.%d %s[0], [%s]%s\n", - 8<<shift, + ORC_ASM_CODE (compiler, " vst1.%d %s[0], [%s]%s\n", + 8 << shift, orc_neon_reg_name (src->alloc), - orc_arm_reg_name (dest->ptr_register), - update ? "!" : ""); + orc_arm_reg_name (dest->ptr_register), update ? "!" : ""); code = 0xf480000d; - code |= shift<<10; - code |= (0&7)<<5; + code |= shift << 10; + code |= (0 & 7) << 5; } - code |= (dest->ptr_register&0xf) << 16; - code |= (src->alloc&0xf) << 12; - code |= ((src->alloc>>4)&0x1) << 22; + code |= (dest->ptr_register & 0xf) << 16; + code |= (src->alloc & 0xf) << 12; + code |= ((src->alloc >> 4) & 0x1) << 22; code |= (!update) << 1; orc_arm_emit (compiler, code); } @@ -1027,7 +991,7 @@ orc_neon_get_const_shift (unsigned int value) { int shift = 0; - while((value & 0xff) != value) { + while ((value & 0xff) != value) { shift++; value >>= 1; } @@ -1035,7 +999,7 @@ orc_neon_get_const_shift (unsigned int value) } void -orc_neon_emit_loadib (OrcCompiler *compiler, int reg, int value) +orc_neon_emit_loadib (OrcCompiler * compiler, int reg, int value) { orc_uint32 code; @@ -1045,20 +1009,20 @@ orc_neon_emit_loadib (OrcCompiler *compiler, int reg, int value) } value &= 0xff; - ORC_ASM_CODE(compiler," vmov.i8 %s, #%d\n", + ORC_ASM_CODE (compiler, " vmov.i8 %s, #%d\n", orc_neon_reg_name_quad (reg), value); code = 0xf2800e10; - code |= (reg&0xf) << 12; - code |= ((reg>>4)&0x1) << 22; - code |= (value&0xf) << 0; - code |= (value&0x70) << 12; - code |= (value&0x80) << 17; + code |= (reg & 0xf) << 12; + code |= ((reg >> 4) & 0x1) << 22; + code |= (value & 0xf) << 0; + code |= (value & 0x70) << 12; + code |= (value & 0x80) << 17; code |= 0x40; orc_arm_emit (compiler, code); } void -orc_neon_emit_loadiw (OrcCompiler *compiler, int reg, int value) +orc_neon_emit_loadiw (OrcCompiler * compiler, int reg, int value) { orc_uint32 code; int shift; @@ -1074,34 +1038,34 @@ orc_neon_emit_loadiw (OrcCompiler *compiler, int reg, int value) value = ~value; } shift = orc_neon_get_const_shift (value); - if ((value & (0xff<<shift)) == value) { + if ((value & (0xff << shift)) == value) { value >>= shift; if (neg) { - ORC_ASM_CODE(compiler," vmvn.i16 %s, #%d\n", + ORC_ASM_CODE (compiler, " vmvn.i16 %s, #%d\n", orc_neon_reg_name_quad (reg), value); code = 0xf2800830; } else { - ORC_ASM_CODE(compiler," vmov.i16 %s, #%d\n", + ORC_ASM_CODE (compiler, " vmov.i16 %s, #%d\n", orc_neon_reg_name_quad (reg), value); code = 0xf2800810; } - code |= (reg&0xf) << 12; - code |= ((reg>>4)&0x1) << 22; - code |= (value&0xf) << 0; - code |= (value&0x70) << 12; - code |= (value&0x80) << 17; + code |= (reg & 0xf) << 12; + code |= ((reg >> 4) & 0x1) << 22; + code |= (value & 0xf) << 0; + code |= (value & 0x70) << 12; + code |= (value & 0x80) << 17; code |= 0x40; orc_arm_emit (compiler, code); if (shift > 0) { - ORC_ASM_CODE(compiler," vshl.i16 %s, %s, #%d\n", + ORC_ASM_CODE (compiler, " vshl.i16 %s, %s, #%d\n", orc_neon_reg_name_quad (reg), orc_neon_reg_name_quad (reg), shift); code = 0xf2900510; - code |= (reg&0xf) << 12; - code |= ((reg>>4)&0x1) << 22; - code |= (reg&0xf) << 0; - code |= ((reg>>4)&0x1) << 5; - code |= (shift&0xf) << 16; + code |= (reg & 0xf) << 12; + code |= ((reg >> 4) & 0x1) << 22; + code |= (reg & 0xf) << 0; + code |= ((reg >> 4) & 0x1) << 5; + code |= (shift & 0xf) << 16; code |= 0x40; orc_arm_emit (compiler, code); } @@ -1109,11 +1073,11 @@ orc_neon_emit_loadiw (OrcCompiler *compiler, int reg, int value) return; } - ORC_COMPILER_ERROR(compiler, "unimplemented load of constant %d", value); + ORC_COMPILER_ERROR (compiler, "unimplemented load of constant %d", value); } void -orc_neon_emit_loadil (OrcCompiler *compiler, int reg, int value) +orc_neon_emit_loadil (OrcCompiler * compiler, int reg, int value) { orc_uint32 code; int shift; @@ -1129,34 +1093,34 @@ orc_neon_emit_loadil (OrcCompiler *compiler, int reg, int value) value = ~value; } shift = orc_neon_get_const_shift (value); - if ((value & (0xff<<shift)) == value) { + if ((value & (0xff << shift)) == value) { value >>= shift; if (neg) { - ORC_ASM_CODE(compiler," vmvn.i32 %s, #%d\n", + ORC_ASM_CODE (compiler, " vmvn.i32 %s, #%d\n", orc_neon_reg_name_quad (reg), value); code = 0xf2800030; } else { - ORC_ASM_CODE(compiler," vmov.i32 %s, #%d\n", + ORC_ASM_CODE (compiler, " vmov.i32 %s, #%d\n", orc_neon_reg_name_quad (reg), value); code = 0xf2800010; } - code |= (reg&0xf) << 12; - code |= ((reg>>4)&0x1) << 22; - code |= (value&0xf) << 0; - code |= (value&0x70) << 12; - code |= (value&0x80) << 17; + code |= (reg & 0xf) << 12; + code |= ((reg >> 4) & 0x1) << 22; + code |= (value & 0xf) << 0; + code |= (value & 0x70) << 12; + code |= (value & 0x80) << 17; code |= 0x40; orc_arm_emit (compiler, code); if (shift > 0) { - ORC_ASM_CODE(compiler," vshl.i32 %s, %s, #%d\n", + ORC_ASM_CODE (compiler, " vshl.i32 %s, %s, #%d\n", orc_neon_reg_name_quad (reg), orc_neon_reg_name_quad (reg), shift); code = 0xf2a00510; - code |= (reg&0xf) << 12; - code |= ((reg>>4)&0x1) << 22; - code |= (reg&0xf) << 0; - code |= ((reg>>4)&0x1) << 5; - code |= (shift&0x1f) << 16; + code |= (reg & 0xf) << 12; + code |= ((reg >> 4) & 0x1) << 22; + code |= (reg & 0xf) << 0; + code |= ((reg >> 4) & 0x1) << 5; + code |= (shift & 0x1f) << 16; code |= 0x40; orc_arm_emit (compiler, code); } @@ -1164,11 +1128,11 @@ orc_neon_emit_loadil (OrcCompiler *compiler, int reg, int value) return; } - ORC_COMPILER_ERROR(compiler, "unimplemented load of constant %d", value); + ORC_COMPILER_ERROR (compiler, "unimplemented load of constant %d", value); } void -orc_neon_emit_loadiq (OrcCompiler *compiler, int reg, int value) +orc_neon_emit_loadiq (OrcCompiler * compiler, int reg, int value) { //orc_uint32 code; //int shift; @@ -1185,34 +1149,34 @@ orc_neon_emit_loadiq (OrcCompiler *compiler, int reg, int value) } #if 0 shift = orc_neon_get_const_shift (value); - if ((value & (0xff<<shift)) == value) { + if ((value & (0xff << shift)) == value) { value >>= shift; if (neg) { - ORC_ASM_CODE(compiler," vmvn.i64 %s, #%d\n", + ORC_ASM_CODE (compiler, " vmvn.i64 %s, #%d\n", orc_neon_reg_name_quad (reg), value); code = 0xf2800030; } else { - ORC_ASM_CODE(compiler," vmov.i64 %s, #%d\n", + ORC_ASM_CODE (compiler, " vmov.i64 %s, #%d\n", orc_neon_reg_name_quad (reg), value); code = 0xf2800010; } - code |= (reg&0xf) << 12; - code |= ((reg>>4)&0x1) << 22; - code |= (value&0xf) << 0; - code |= (value&0x70) << 12; - code |= (value&0x80) << 17; + code |= (reg & 0xf) << 12; + code |= ((reg >> 4) & 0x1) << 22; + code |= (value & 0xf) << 0; + code |= (value & 0x70) << 12; + code |= (value & 0x80) << 17; code |= 0x40; orc_arm_emit (compiler, code); if (shift > 0) { - ORC_ASM_CODE(compiler," vshl.i64 %s, %s, #%d\n", + ORC_ASM_CODE (compiler, " vshl.i64 %s, %s, #%d\n", orc_neon_reg_name_quad (reg), orc_neon_reg_name_quad (reg), shift); code = 0xf2a00510; - code |= (reg&0xf) << 12; - code |= ((reg>>4)&0x1) << 22; - code |= (reg&0xf) << 0; - code |= ((reg>>4)&0x1) << 5; - code |= (shift&0xf) << 16; + code |= (reg & 0xf) << 12; + code |= ((reg >> 4) & 0x1) << 22; + code |= (reg & 0xf) << 0; + code |= ((reg >> 4) & 0x1) << 5; + code |= (shift & 0xf) << 16; code |= 0x40; orc_arm_emit (compiler, code); } @@ -1221,92 +1185,90 @@ orc_neon_emit_loadiq (OrcCompiler *compiler, int reg, int value) } #endif - ORC_COMPILER_ERROR(compiler, "unimplemented load of constant %d", value); + ORC_COMPILER_ERROR (compiler, "unimplemented load of constant %d", value); } void -orc_neon_emit_loadpb (OrcCompiler *compiler, int dest, int param) +orc_neon_emit_loadpb (OrcCompiler * compiler, int dest, int param) { orc_uint32 code; orc_arm_emit_add_imm (compiler, compiler->gp_tmpreg, - compiler->exec_reg, ORC_STRUCT_OFFSET(OrcExecutor, params[param])); + compiler->exec_reg, ORC_STRUCT_OFFSET (OrcExecutor, params[param])); - ORC_ASM_CODE(compiler," vld1.8 {%s[],%s[]}, [%s]\n", - orc_neon_reg_name (dest), orc_neon_reg_name (dest+1), + ORC_ASM_CODE (compiler, " vld1.8 {%s[],%s[]}, [%s]\n", + orc_neon_reg_name (dest), orc_neon_reg_name (dest + 1), orc_arm_reg_name (compiler->gp_tmpreg)); code = 0xf4a00c2f; - code |= (compiler->gp_tmpreg&0xf) << 16; - code |= (dest&0xf) << 12; - code |= ((dest>>4)&0x1) << 22; + code |= (compiler->gp_tmpreg & 0xf) << 16; + code |= (dest & 0xf) << 12; + code |= ((dest >> 4) & 0x1) << 22; orc_arm_emit (compiler, code); } void -orc_neon_emit_loadpw (OrcCompiler *compiler, int dest, int param) +orc_neon_emit_loadpw (OrcCompiler * compiler, int dest, int param) { orc_uint32 code; orc_arm_emit_add_imm (compiler, compiler->gp_tmpreg, - compiler->exec_reg, ORC_STRUCT_OFFSET(OrcExecutor, params[param])); + compiler->exec_reg, ORC_STRUCT_OFFSET (OrcExecutor, params[param])); - ORC_ASM_CODE(compiler," vld1.16 {%s[],%s[]}, [%s]\n", - orc_neon_reg_name (dest), orc_neon_reg_name (dest+1), + ORC_ASM_CODE (compiler, " vld1.16 {%s[],%s[]}, [%s]\n", + orc_neon_reg_name (dest), orc_neon_reg_name (dest + 1), orc_arm_reg_name (compiler->gp_tmpreg)); code = 0xf4a00c6f; - code |= (compiler->gp_tmpreg&0xf) << 16; - code |= (dest&0xf) << 12; - code |= ((dest>>4)&0x1) << 22; + code |= (compiler->gp_tmpreg & 0xf) << 16; + code |= (dest & 0xf) << 12; + code |= ((dest >> 4) & 0x1) << 22; orc_arm_emit (compiler, code); } void -orc_neon_emit_loadpl (OrcCompiler *compiler, int dest, int param) +orc_neon_emit_loadpl (OrcCompiler * compiler, int dest, int param) { orc_uint32 code; orc_arm_emit_add_imm (compiler, compiler->gp_tmpreg, - compiler->exec_reg, ORC_STRUCT_OFFSET(OrcExecutor, params[param])); + compiler->exec_reg, ORC_STRUCT_OFFSET (OrcExecutor, params[param])); - ORC_ASM_CODE(compiler," vld1.32 {%s[],%s[]}, [%s]\n", - orc_neon_reg_name (dest), orc_neon_reg_name (dest+1), + ORC_ASM_CODE (compiler, " vld1.32 {%s[],%s[]}, [%s]\n", + orc_neon_reg_name (dest), orc_neon_reg_name (dest + 1), orc_arm_reg_name (compiler->gp_tmpreg)); code = 0xf4a00caf; - code |= (compiler->gp_tmpreg&0xf) << 16; - code |= (dest&0xf) << 12; - code |= ((dest>>4)&0x1) << 22; + code |= (compiler->gp_tmpreg & 0xf) << 16; + code |= (dest & 0xf) << 12; + code |= ((dest >> 4) & 0x1) << 22; orc_arm_emit (compiler, code); } void -orc_neon_emit_loadpq (OrcCompiler *compiler, int dest, int param) +orc_neon_emit_loadpq (OrcCompiler * compiler, int dest, int param) { orc_uint32 code; int update = FALSE; orc_arm_emit_add_imm (compiler, compiler->gp_tmpreg, - compiler->exec_reg, ORC_STRUCT_OFFSET(OrcExecutor, params[param])); + compiler->exec_reg, ORC_STRUCT_OFFSET (OrcExecutor, params[param])); - ORC_ASM_CODE(compiler," vld1.32 %s[0], [%s]%s\n", + ORC_ASM_CODE (compiler, " vld1.32 %s[0], [%s]%s\n", orc_neon_reg_name (dest), - orc_arm_reg_name (compiler->gp_tmpreg), - update ? "!" : ""); + orc_arm_reg_name (compiler->gp_tmpreg), update ? "!" : ""); code = 0xf4a0000d; - code |= 2<<10; - code |= (0&7)<<5; + code |= 2 << 10; + code |= (0 & 7) << 5; orc_arm_emit (compiler, code); orc_arm_emit_add_imm (compiler, compiler->gp_tmpreg, - compiler->exec_reg, ORC_STRUCT_OFFSET(OrcExecutor, - params[param + (ORC_VAR_T1-ORC_VAR_P1)])); + compiler->exec_reg, ORC_STRUCT_OFFSET (OrcExecutor, + params[param + (ORC_VAR_T1 - ORC_VAR_P1)])); - ORC_ASM_CODE(compiler," vld1.32 %s[1], [%s]%s\n", + ORC_ASM_CODE (compiler, " vld1.32 %s[1], [%s]%s\n", orc_neon_reg_name (dest), - orc_arm_reg_name (compiler->gp_tmpreg), - update ? "!" : ""); + orc_arm_reg_name (compiler->gp_tmpreg), update ? "!" : ""); code = 0xf4a0000d; - code |= 2<<10; - code |= (1&7)<<5; + code |= 2 << 10; + code |= (1 & 7) << 5; orc_arm_emit (compiler, code); } @@ -1423,7 +1385,8 @@ orc_neon_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \ } -typedef struct { +typedef struct +{ orc_uint32 code; char *name; int negate; @@ -1431,336 +1394,332 @@ typedef struct { int vec_shift; } ShiftInfo; ShiftInfo immshift_info[] = { - { 0xf2880510, "vshl.i8", FALSE, 8, 3 }, /* shlb */ - { 0xf2880010, "vshr.s8", TRUE, 8, 3 }, /* shrsb */ - { 0xf3880010, "vshr.u8", TRUE, 8, 3 }, /* shrub */ - { 0xf2900510, "vshl.i16", FALSE, 16, 2 }, - { 0xf2900010, "vshr.s16", TRUE, 16, 2 }, - { 0xf3900010, "vshr.u16", TRUE, 16, 2 }, - { 0xf2a00510, "vshl.i32", FALSE, 32, 1 }, - { 0xf2a00010, "vshr.s32", TRUE, 32, 1 }, - { 0xf3a00010, "vshr.u32", TRUE, 32, 1 } + {0xf2880510, "vshl.i8", FALSE, 8, 3}, /* shlb */ + {0xf2880010, "vshr.s8", TRUE, 8, 3}, /* shrsb */ + {0xf3880010, "vshr.u8", TRUE, 8, 3}, /* shrub */ + {0xf2900510, "vshl.i16", FALSE, 16, 2}, + {0xf2900010, "vshr.s16", TRUE, 16, 2}, + {0xf3900010, "vshr.u16", TRUE, 16, 2}, + {0xf2a00510, "vshl.i32", FALSE, 32, 1}, + {0xf2a00010, "vshr.s32", TRUE, 32, 1}, + {0xf3a00010, "vshr.u32", TRUE, 32, 1} }; + ShiftInfo regshift_info[] = { - { 0xf3000400, "vshl.u8", FALSE, 0, 3 }, /* shlb */ - { 0xf2000400, "vshl.s8", TRUE, 0, 3 }, /* shrsb */ - { 0xf3000400, "vshl.u8", TRUE, 0, 3 }, /* shrub */ - { 0xf3100400, "vshl.u16", FALSE, 0, 2 }, - { 0xf2100400, "vshl.s16", TRUE, 0, 2 }, - { 0xf3100400, "vshl.u16", TRUE, 0, 2 }, - { 0xf3200400, "vshl.u32", FALSE, 0, 1 }, - { 0xf2200400, "vshl.s32", TRUE, 0, 1 }, - { 0xf3200400, "vshl.u32", TRUE, 0, 1 } + {0xf3000400, "vshl.u8", FALSE, 0, 3}, /* shlb */ + {0xf2000400, "vshl.s8", TRUE, 0, 3}, /* shrsb */ + {0xf3000400, "vshl.u8", TRUE, 0, 3}, /* shrub */ + {0xf3100400, "vshl.u16", FALSE, 0, 2}, + {0xf2100400, "vshl.s16", TRUE, 0, 2}, + {0xf3100400, "vshl.u16", TRUE, 0, 2}, + {0xf3200400, "vshl.u32", FALSE, 0, 1}, + {0xf2200400, "vshl.s32", TRUE, 0, 1}, + {0xf3200400, "vshl.u32", TRUE, 0, 1} }; static void -orc_neon_rule_shift (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_shift (OrcCompiler * p, void *user, OrcInstruction * insn) { - int type = ORC_PTR_TO_INT(user); + int type = ORC_PTR_TO_INT (user); orc_uint32 code; if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) { int shift = p->vars[insn->src_args[1]].value.i; if (shift < 0) { - ORC_COMPILER_ERROR(p, "shift negative"); + ORC_COMPILER_ERROR (p, "shift negative"); return; } if (shift >= immshift_info[type].bits) { - ORC_COMPILER_ERROR(p, "shift too large"); + ORC_COMPILER_ERROR (p, "shift too large"); return; } code = immshift_info[type].code; if (p->insn_shift <= immshift_info[type].vec_shift) { - ORC_ASM_CODE(p," %s %s, %s, #%d\n", + ORC_ASM_CODE (p, " %s %s, %s, #%d\n", immshift_info[type].name, orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name (p->vars[insn->src_args[0]].alloc), - (int)p->vars[insn->src_args[1]].value.i); + (int) p->vars[insn->src_args[1]].value.i); } else { - ORC_ASM_CODE(p," %s %s, %s, #%d\n", + ORC_ASM_CODE (p, " %s %s, %s, #%d\n", immshift_info[type].name, orc_neon_reg_name_quad (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name_quad (p->vars[insn->src_args[0]].alloc), - (int)p->vars[insn->src_args[1]].value.i); + (int) p->vars[insn->src_args[1]].value.i); code |= 0x40; } - code |= (p->vars[insn->dest_args[0]].alloc&0xf)<<12; - code |= ((p->vars[insn->dest_args[0]].alloc>>4)&0x1)<<22; - code |= (p->vars[insn->src_args[0]].alloc&0xf)<<0; - code |= ((p->vars[insn->src_args[0]].alloc>>4)&0x1)<<5; + code |= (p->vars[insn->dest_args[0]].alloc & 0xf) << 12; + code |= ((p->vars[insn->dest_args[0]].alloc >> 4) & 0x1) << 22; + code |= (p->vars[insn->src_args[0]].alloc & 0xf) << 0; + code |= ((p->vars[insn->src_args[0]].alloc >> 4) & 0x1) << 5; if (immshift_info[type].negate) { shift = immshift_info[type].bits - shift; } - code |= shift<<16; + code |= shift << 16; orc_arm_emit (p, code); } else if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_PARAM) { orc_neon_emit_loadpb (p, p->tmpreg, insn->src_args[1]); if (regshift_info[type].negate) { - orc_neon_emit_unary_quad (p, "vneg.s8", 0xf3b10380, - p->tmpreg, p->tmpreg); + orc_neon_emit_unary_quad (p, "vneg.s8", 0xf3b10380, p->tmpreg, p->tmpreg); } code = regshift_info[type].code; if (p->insn_shift <= regshift_info[type].vec_shift) { - ORC_ASM_CODE(p," %s %s, %s, %s\n", + ORC_ASM_CODE (p, " %s %s, %s, %s\n", regshift_info[type].name, orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name (p->vars[insn->src_args[0]].alloc), orc_neon_reg_name (p->tmpreg)); } else { - ORC_ASM_CODE(p," %s %s, %s, %s\n", + ORC_ASM_CODE (p, " %s %s, %s, %s\n", regshift_info[type].name, orc_neon_reg_name_quad (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name_quad (p->vars[insn->src_args[0]].alloc), orc_neon_reg_name_quad (p->tmpreg)); code |= 0x40; } - code |= (p->vars[insn->dest_args[0]].alloc&0xf)<<12; - code |= ((p->vars[insn->dest_args[0]].alloc>>4)&0x1)<<22; - code |= (p->vars[insn->src_args[0]].alloc&0xf)<<0; - code |= ((p->vars[insn->src_args[0]].alloc>>4)&0x1)<<5; - code |= (p->tmpreg&0xf)<<16; - code |= ((p->tmpreg>>4)&0x1)<<7; + code |= (p->vars[insn->dest_args[0]].alloc & 0xf) << 12; + code |= ((p->vars[insn->dest_args[0]].alloc >> 4) & 0x1) << 22; + code |= (p->vars[insn->src_args[0]].alloc & 0xf) << 0; + code |= ((p->vars[insn->src_args[0]].alloc >> 4) & 0x1) << 5; + code |= (p->tmpreg & 0xf) << 16; + code |= ((p->tmpreg >> 4) & 0x1) << 7; orc_arm_emit (p, code); } else { - ORC_PROGRAM_ERROR(p,"shift rule only works with constants and params"); + ORC_PROGRAM_ERROR (p, "shift rule only works with constants and params"); } } #if 0 static void -orc_neon_rule_shrsw (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_shrsw (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_uint32 code; if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) { code = 0xf2900010; - ORC_ASM_CODE(p," vshr.s16 %s, %s, #%d\n", + ORC_ASM_CODE (p, " vshr.s16 %s, %s, #%d\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name (p->vars[insn->src_args[0]].alloc), p->vars[insn->src_args[1]].value); - code |= (p->vars[insn->dest_args[0]].alloc&0xf)<<12; - code |= ((p->vars[insn->dest_args[0]].alloc>>4)&0x1)<<22; - code |= (p->vars[insn->src_args[0]].alloc&0xf)<<0; - code |= ((p->vars[insn->src_args[0]].alloc>>4)&0x1)<<5; - code |= ((16 - p->vars[insn->src_args[1]].value)&0xf)<<16; + code |= (p->vars[insn->dest_args[0]].alloc & 0xf) << 12; + code |= ((p->vars[insn->dest_args[0]].alloc >> 4) & 0x1) << 22; + code |= (p->vars[insn->src_args[0]].alloc & 0xf) << 0; + code |= ((p->vars[insn->src_args[0]].alloc >> 4) & 0x1) << 5; + code |= ((16 - p->vars[insn->src_args[1]].value) & 0xf) << 16; orc_arm_emit (p, code); } else if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_PARAM) { code = 0xf2100400; - ORC_ASM_CODE(p," vshl.s16 %s, %s, %s\n", + ORC_ASM_CODE (p, " vshl.s16 %s, %s, %s\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name (p->vars[insn->src_args[0]].alloc), orc_neon_reg_name (p->vars[insn->src_args[1]].alloc)); - code |= (p->vars[insn->dest_args[0]].alloc&0xf)<<12; - code |= ((p->vars[insn->dest_args[0]].alloc>>4)&0x1)<<22; - code |= (p->vars[insn->src_args[0]].alloc&0xf)<<0; - code |= ((p->vars[insn->src_args[0]].alloc>>4)&0x1)<<5; - code |= (p->vars[insn->src_args[1]].alloc&0xf)<<16; - code |= ((p->vars[insn->src_args[1]].alloc>>4)&0x1)<<7; + code |= (p->vars[insn->dest_args[0]].alloc & 0xf) << 12; + code |= ((p->vars[insn->dest_args[0]].alloc >> 4) & 0x1) << 22; + code |= (p->vars[insn->src_args[0]].alloc & 0xf) << 0; + code |= ((p->vars[insn->src_args[0]].alloc >> 4) & 0x1) << 5; + code |= (p->vars[insn->src_args[1]].alloc & 0xf) << 16; + code |= ((p->vars[insn->src_args[1]].alloc >> 4) & 0x1) << 7; orc_arm_emit (p, code); } else { - ORC_PROGRAM_ERROR(p,"shift rule only works with constants and params"); + ORC_PROGRAM_ERROR (p, "shift rule only works with constants and params"); } } static void -orc_neon_rule_shrsl (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_shrsl (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_uint32 code; if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) { code = 0xf2900010; - ORC_ASM_CODE(p," vshr.s32 %s, %s, #%d\n", + ORC_ASM_CODE (p, " vshr.s32 %s, %s, #%d\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name (p->vars[insn->src_args[0]].alloc), p->vars[insn->src_args[1]].value); - code |= (p->vars[insn->dest_args[0]].alloc&0xf)<<12; - code |= ((p->vars[insn->dest_args[0]].alloc>>4)&0x1)<<22; - code |= (p->vars[insn->src_args[0]].alloc&0xf)<<0; - code |= ((p->vars[insn->src_args[0]].alloc>>4)&0x1)<<5; - code |= ((16 - p->vars[insn->src_args[1]].value)&0xf)<<16; + code |= (p->vars[insn->dest_args[0]].alloc & 0xf) << 12; + code |= ((p->vars[insn->dest_args[0]].alloc >> 4) & 0x1) << 22; + code |= (p->vars[insn->src_args[0]].alloc & 0xf) << 0; + code |= ((p->vars[insn->src_args[0]].alloc >> 4) & 0x1) << 5; + code |= ((16 - p->vars[insn->src_args[1]].value) & 0xf) << 16; orc_arm_emit (p, code); } else if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_PARAM) { code = 0xf2100400; - ORC_ASM_CODE(p," vshl.s32 %s, %s, %s\n", + ORC_ASM_CODE (p, " vshl.s32 %s, %s, %s\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name (p->vars[insn->src_args[0]].alloc), orc_neon_reg_name (p->vars[insn->src_args[1]].alloc)); - code |= (p->vars[insn->dest_args[0]].alloc&0xf)<<12; - code |= ((p->vars[insn->dest_args[0]].alloc>>4)&0x1)<<22; - code |= (p->vars[insn->src_args[0]].alloc&0xf)<<0; - code |= ((p->vars[insn->src_args[0]].alloc>>4)&0x1)<<5; - code |= (p->vars[insn->src_args[1]].alloc&0xf)<<16; - code |= ((p->vars[insn->src_args[1]].alloc>>4)&0x1)<<7; + code |= (p->vars[insn->dest_args[0]].alloc & 0xf) << 12; + code |= ((p->vars[insn->dest_args[0]].alloc >> 4) & 0x1) << 22; + code |= (p->vars[insn->src_args[0]].alloc & 0xf) << 0; + code |= ((p->vars[insn->src_args[0]].alloc >> 4) & 0x1) << 5; + code |= (p->vars[insn->src_args[1]].alloc & 0xf) << 16; + code |= ((p->vars[insn->src_args[1]].alloc >> 4) & 0x1) << 7; orc_arm_emit (p, code); } else { - ORC_PROGRAM_ERROR(p,"shift rule only works with constants and params"); + ORC_PROGRAM_ERROR (p, "shift rule only works with constants and params"); } } #endif static void -orc_neon_rule_andn (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_andn (OrcCompiler * p, void *user, OrcInstruction * insn) { - int max_shift = ORC_PTR_TO_INT(user); + int max_shift = ORC_PTR_TO_INT (user); /* this is special because the operand order is reversed */ - if (p->insn_shift <= max_shift) { \ + if (p->insn_shift <= max_shift) { orc_neon_emit_binary (p, "vbic", 0xf2100110, p->vars[insn->dest_args[0]].alloc, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->src_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->src_args[0]].alloc); } else { orc_neon_emit_binary_quad (p, "vbic", 0xf2100110, p->vars[insn->dest_args[0]].alloc, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->src_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->src_args[0]].alloc); } } -UNARY(absb,"vabs.s8",0xf3b10300, 3) -BINARY(addb,"vadd.i8",0xf2000800, 3) -BINARY(addssb,"vqadd.s8",0xf2000010, 3) -BINARY(addusb,"vqadd.u8",0xf3000010, 3) -BINARY(andb,"vand",0xf2000110, 3) +UNARY (absb, "vabs.s8", 0xf3b10300, 3) + BINARY (addb, "vadd.i8", 0xf2000800, 3) + BINARY (addssb, "vqadd.s8", 0xf2000010, 3) + BINARY (addusb, "vqadd.u8", 0xf3000010, 3) + BINARY (andb, "vand", 0xf2000110, 3) //BINARY(andnb,"vbic",0xf2100110, 3) -BINARY(avgsb,"vrhadd.s8",0xf2000100, 3) -BINARY(avgub,"vrhadd.u8",0xf3000100, 3) -BINARY(cmpeqb,"vceq.i8",0xf3000810, 3) -BINARY(cmpgtsb,"vcgt.s8",0xf2000300, 3) -MOVE(copyb,"vmov",0xf2200110, 3) -BINARY(maxsb,"vmax.s8",0xf2000600, 3) -BINARY(maxub,"vmax.u8",0xf3000600, 3) -BINARY(minsb,"vmin.s8",0xf2000610, 3) -BINARY(minub,"vmin.u8",0xf3000610, 3) -BINARY(mullb,"vmul.i8",0xf2000910, 3) -BINARY(orb,"vorr",0xf2200110, 3) + BINARY (avgsb, "vrhadd.s8", 0xf2000100, 3) + BINARY (avgub, "vrhadd.u8", 0xf3000100, 3) + BINARY (cmpeqb, "vceq.i8", 0xf3000810, 3) + BINARY (cmpgtsb, "vcgt.s8", 0xf2000300, 3) + MOVE (copyb, "vmov", 0xf2200110, 3) + BINARY (maxsb, "vmax.s8", 0xf2000600, 3) + BINARY (maxub, "vmax.u8", 0xf3000600, 3) + BINARY (minsb, "vmin.s8", 0xf2000610, 3) + BINARY (minub, "vmin.u8", 0xf3000610, 3) + BINARY (mullb, "vmul.i8", 0xf2000910, 3) + BINARY (orb, "vorr", 0xf2200110, 3) //LSHIFT(shlb,"vshl.i8",0xf2880510, 3) //RSHIFT(shrsb,"vshr.s8",0xf2880010,8, 3) //RSHIFT(shrub,"vshr.u8",0xf3880010,8, 3) -BINARY(subb,"vsub.i8",0xf3000800, 3) -BINARY(subssb,"vqsub.s8",0xf2000210, 3) -BINARY(subusb,"vqsub.u8",0xf3000210, 3) -BINARY(xorb,"veor",0xf3000110, 3) - -UNARY(absw,"vabs.s16",0xf3b50300, 2) -BINARY(addw,"vadd.i16",0xf2100800, 2) -BINARY(addssw,"vqadd.s16",0xf2100010, 2) -BINARY(addusw,"vqadd.u16",0xf3100010, 2) -BINARY(andw,"vand",0xf2000110, 2) + BINARY (subb, "vsub.i8", 0xf3000800, 3) + BINARY (subssb, "vqsub.s8", 0xf2000210, 3) + BINARY (subusb, "vqsub.u8", 0xf3000210, 3) + BINARY (xorb, "veor", 0xf3000110, 3) + + UNARY (absw, "vabs.s16", 0xf3b50300, 2) + BINARY (addw, "vadd.i16", 0xf2100800, 2) + BINARY (addssw, "vqadd.s16", 0xf2100010, 2) + BINARY (addusw, "vqadd.u16", 0xf3100010, 2) + BINARY (andw, "vand", 0xf2000110, 2) //BINARY(andnw,"vbic",0xf2100110, 2) -BINARY(avgsw,"vrhadd.s16",0xf2100100, 2) -BINARY(avguw,"vrhadd.u16",0xf3100100, 2) -BINARY(cmpeqw,"vceq.i16",0xf3100810, 2) -BINARY(cmpgtsw,"vcgt.s16",0xf2100300, 2) -MOVE(copyw,"vmov",0xf2200110, 2) -BINARY(maxsw,"vmax.s16",0xf2100600, 2) -BINARY(maxuw,"vmax.u16",0xf3100600, 2) -BINARY(minsw,"vmin.s16",0xf2100610, 2) -BINARY(minuw,"vmin.u16",0xf3100610, 2) -BINARY(mullw,"vmul.i16",0xf2100910, 2) -BINARY(orw,"vorr",0xf2200110, 2) + BINARY (avgsw, "vrhadd.s16", 0xf2100100, 2) + BINARY (avguw, "vrhadd.u16", 0xf3100100, 2) + BINARY (cmpeqw, "vceq.i16", 0xf3100810, 2) + BINARY (cmpgtsw, "vcgt.s16", 0xf2100300, 2) + MOVE (copyw, "vmov", 0xf2200110, 2) + BINARY (maxsw, "vmax.s16", 0xf2100600, 2) + BINARY (maxuw, "vmax.u16", 0xf3100600, 2) + BINARY (minsw, "vmin.s16", 0xf2100610, 2) + BINARY (minuw, "vmin.u16", 0xf3100610, 2) + BINARY (mullw, "vmul.i16", 0xf2100910, 2) + BINARY (orw, "vorr", 0xf2200110, 2) //LSHIFT(shlw,"vshl.i16",0xf2900510, 2) //RSHIFT(shrsw,"vshr.s16",0xf2900010,16, 2) //RSHIFT(shruw,"vshr.u16",0xf3900010,16, 2) -BINARY(subw,"vsub.i16",0xf3100800, 2) -BINARY(subssw,"vqsub.s16",0xf2100210, 2) -BINARY(subusw,"vqsub.u16",0xf3100210, 2) -BINARY(xorw,"veor",0xf3000110, 2) - -UNARY(absl,"vabs.s32",0xf3b90300, 1) -BINARY(addl,"vadd.i32",0xf2200800, 1) -BINARY(addssl,"vqadd.s32",0xf2200010, 1) -BINARY(addusl,"vqadd.u32",0xf3200010, 1) -BINARY(andl,"vand",0xf2000110, 1) + BINARY (subw, "vsub.i16", 0xf3100800, 2) + BINARY (subssw, "vqsub.s16", 0xf2100210, 2) + BINARY (subusw, "vqsub.u16", 0xf3100210, 2) + BINARY (xorw, "veor", 0xf3000110, 2) + + UNARY (absl, "vabs.s32", 0xf3b90300, 1) + BINARY (addl, "vadd.i32", 0xf2200800, 1) + BINARY (addssl, "vqadd.s32", 0xf2200010, 1) + BINARY (addusl, "vqadd.u32", 0xf3200010, 1) + BINARY (andl, "vand", 0xf2000110, 1) //BINARY(andnl,"vbic",0xf2100110, 1) -BINARY(avgsl,"vrhadd.s32",0xf2200100, 1) -BINARY(avgul,"vrhadd.u32",0xf3200100, 1) -BINARY(cmpeql,"vceq.i32",0xf3200810, 1) -BINARY(cmpgtsl,"vcgt.s32",0xf2200300, 1) -MOVE(copyl,"vmov",0xf2200110, 1) -BINARY(maxsl,"vmax.s32",0xf2200600, 1) -BINARY(maxul,"vmax.u32",0xf3200600, 1) -BINARY(minsl,"vmin.s32",0xf2200610, 1) -BINARY(minul,"vmin.u32",0xf3200610, 1) -BINARY(mulll,"vmul.i32",0xf2200910, 1) -BINARY(orl,"vorr",0xf2200110, 1) + BINARY (avgsl, "vrhadd.s32", 0xf2200100, 1) + BINARY (avgul, "vrhadd.u32", 0xf3200100, 1) + BINARY (cmpeql, "vceq.i32", 0xf3200810, 1) + BINARY (cmpgtsl, "vcgt.s32", 0xf2200300, 1) + MOVE (copyl, "vmov", 0xf2200110, 1) + BINARY (maxsl, "vmax.s32", 0xf2200600, 1) + BINARY (maxul, "vmax.u32", 0xf3200600, 1) + BINARY (minsl, "vmin.s32", 0xf2200610, 1) + BINARY (minul, "vmin.u32", 0xf3200610, 1) + BINARY (mulll, "vmul.i32", 0xf2200910, 1) + BINARY (orl, "vorr", 0xf2200110, 1) //LSHIFT(shll,"vshl.i32",0xf2a00510, 1) //RSHIFT(shrsl,"vshr.s32",0xf2a00010,32, 1) //RSHIFT(shrul,"vshr.u32",0xf3a00010,32, 1) -BINARY(subl,"vsub.i32",0xf3200800, 1) -BINARY(subssl,"vqsub.s32",0xf2200210, 1) -BINARY(subusl,"vqsub.u32",0xf3200210, 1) -BINARY(xorl,"veor",0xf3000110, 1) - + BINARY (subl, "vsub.i32", 0xf3200800, 1) + BINARY (subssl, "vqsub.s32", 0xf2200210, 1) + BINARY (subusl, "vqsub.u32", 0xf3200210, 1) + BINARY (xorl, "veor", 0xf3000110, 1) //UNARY(absq,"vabs.s64",0xf3b10300, 0) -BINARY(addq,"vadd.i64",0xf2300800, 0) + BINARY (addq, "vadd.i64", 0xf2300800, 0) //BINARY(addssq,"vqadd.s64",0xf2000010, 0) //BINARY(addusq,"vqadd.u64",0xf3000010, 0) -BINARY(andq,"vand",0xf2000110, 0) + BINARY (andq, "vand", 0xf2000110, 0) //BINARY(avgsq,"vrhadd.s64",0xf2000100, 0) //BINARY(avguq,"vrhadd.u64",0xf3000100, 0) //BINARY(cmpeqq,"vceq.i64",0xf3000810, 0) //BINARY(cmpgtsq,"vcgt.s64",0xf2000300, 0) -MOVE(copyq,"vmov",0xf2200110, 0) + MOVE (copyq, "vmov", 0xf2200110, 0) //BINARY(maxsq,"vmax.s64",0xf2000600, 0) //BINARY(maxuq,"vmax.u64",0xf3000600, 0) //BINARY(minsq,"vmin.s64",0xf2000610, 0) //BINARY(minuq,"vmin.u64",0xf3000610, 0) //BINARY(mullq,"vmul.i64",0xf2000910, 0) -BINARY(orq,"vorr",0xf2200110, 0) -BINARY(subq,"vsub.i64",0xf3300800, 0) + BINARY (orq, "vorr", 0xf2200110, 0) + BINARY (subq, "vsub.i64", 0xf3300800, 0) //BINARY(subssq,"vqsub.s64",0xf2000210, 0) //BINARY(subusq,"vqsub.u64",0xf3000210, 0) -BINARY(xorq,"veor",0xf3000110, 0) - -UNARY_LONG(convsbw,"vmovl.s8",0xf2880a10, 3) -UNARY_LONG(convubw,"vmovl.u8",0xf3880a10, 3) -UNARY_LONG(convswl,"vmovl.s16",0xf2900a10, 2) -UNARY_LONG(convuwl,"vmovl.u16",0xf3900a10, 2) -UNARY_LONG(convslq,"vmovl.s32",0xf2a00a10, 1) -UNARY_LONG(convulq,"vmovl.u32",0xf3a00a10, 1) -UNARY_NARROW(convwb,"vmovn.i16",0xf3b20200, 3) -UNARY_NARROW(convssswb,"vqmovn.s16",0xf3b20280, 3) -UNARY_NARROW(convsuswb,"vqmovun.s16",0xf3b20240, 3) -UNARY_NARROW(convuuswb,"vqmovn.u16",0xf3b202c0, 3) -UNARY_NARROW(convlw,"vmovn.i32",0xf3b60200, 2) -UNARY_NARROW(convql,"vmovn.i64",0xf3ba0200, 1) -UNARY_NARROW(convssslw,"vqmovn.s32",0xf3b60280, 2) -UNARY_NARROW(convsuslw,"vqmovun.s32",0xf3b60240, 2) -UNARY_NARROW(convuuslw,"vqmovn.u32",0xf3b602c0, 2) -UNARY_NARROW(convsssql,"vqmovn.s64",0xf3ba0280, 1) -UNARY_NARROW(convsusql,"vqmovun.s64",0xf3ba0240, 1) -UNARY_NARROW(convuusql,"vqmovn.u64",0xf3ba02c0, 1) - -BINARY_LONG(mulsbw,"vmull.s8",0xf2800c00, 3) -BINARY_LONG(mulubw,"vmull.u8",0xf3800c00, 3) -BINARY_LONG(mulswl,"vmull.s16",0xf2900c00, 2) -BINARY_LONG(muluwl,"vmull.u16",0xf3900c00, 2) - -UNARY(swapw,"vrev16.i8",0xf3b00100, 2) -UNARY(swapl,"vrev32.i8",0xf3b00080, 1) -UNARY(swapq,"vrev64.i8",0xf3b00000, 0) -UNARY(swapwl,"vrev32.i16",0xf3b40080, 1) -UNARY(swaplq,"vrev64.i32",0xf3b80000, 0) - -UNARY_NARROW(select0ql,"vmovn.i64",0xf3ba0200, 1) -UNARY_NARROW(select0lw,"vmovn.i32",0xf3b60200, 2) -UNARY_NARROW(select0wb,"vmovn.i16",0xf3b20200, 3) - -BINARY(addf,"vadd.f32",0xf2000d00, 1) -BINARY(subf,"vsub.f32",0xf2200d00, 1) -BINARY(mulf,"vmul.f32",0xf3000d10, 1) -BINARY(maxf,"vmax.f32",0xf2000f00, 1) -BINARY(minf,"vmin.f32",0xf2200f00, 1) -BINARY(cmpeqf,"vceq.f32",0xf2000e00, 1) + BINARY (xorq, "veor", 0xf3000110, 0) + + UNARY_LONG (convsbw, "vmovl.s8", 0xf2880a10, 3) + UNARY_LONG (convubw, "vmovl.u8", 0xf3880a10, 3) + UNARY_LONG (convswl, "vmovl.s16", 0xf2900a10, 2) + UNARY_LONG (convuwl, "vmovl.u16", 0xf3900a10, 2) + UNARY_LONG (convslq, "vmovl.s32", 0xf2a00a10, 1) + UNARY_LONG (convulq, "vmovl.u32", 0xf3a00a10, 1) + UNARY_NARROW (convwb, "vmovn.i16", 0xf3b20200, 3) + UNARY_NARROW (convssswb, "vqmovn.s16", 0xf3b20280, 3) + UNARY_NARROW (convsuswb, "vqmovun.s16", 0xf3b20240, 3) + UNARY_NARROW (convuuswb, "vqmovn.u16", 0xf3b202c0, 3) + UNARY_NARROW (convlw, "vmovn.i32", 0xf3b60200, 2) + UNARY_NARROW (convql, "vmovn.i64", 0xf3ba0200, 1) + UNARY_NARROW (convssslw, "vqmovn.s32", 0xf3b60280, 2) + UNARY_NARROW (convsuslw, "vqmovun.s32", 0xf3b60240, 2) + UNARY_NARROW (convuuslw, "vqmovn.u32", 0xf3b602c0, 2) + UNARY_NARROW (convsssql, "vqmovn.s64", 0xf3ba0280, 1) + UNARY_NARROW (convsusql, "vqmovun.s64", 0xf3ba0240, 1) + UNARY_NARROW (convuusql, "vqmovn.u64", 0xf3ba02c0, 1) + + BINARY_LONG (mulsbw, "vmull.s8", 0xf2800c00, 3) + BINARY_LONG (mulubw, "vmull.u8", 0xf3800c00, 3) + BINARY_LONG (mulswl, "vmull.s16", 0xf2900c00, 2) + BINARY_LONG (muluwl, "vmull.u16", 0xf3900c00, 2) + + UNARY (swapw, "vrev16.i8", 0xf3b00100, 2) + UNARY (swapl, "vrev32.i8", 0xf3b00080, 1) + UNARY (swapq, "vrev64.i8", 0xf3b00000, 0) + UNARY (swapwl, "vrev32.i16", 0xf3b40080, 1) + UNARY (swaplq, "vrev64.i32", 0xf3b80000, 0) + + UNARY_NARROW (select0ql, "vmovn.i64", 0xf3ba0200, 1) + UNARY_NARROW (select0lw, "vmovn.i32", 0xf3b60200, 2) + UNARY_NARROW (select0wb, "vmovn.i16", 0xf3b20200, 3) + + BINARY (addf, "vadd.f32", 0xf2000d00, 1) + BINARY (subf, "vsub.f32", 0xf2200d00, 1) + BINARY (mulf, "vmul.f32", 0xf3000d10, 1) + BINARY (maxf, "vmax.f32", 0xf2000f00, 1) + BINARY (minf, "vmin.f32", 0xf2200f00, 1) + BINARY (cmpeqf, "vceq.f32", 0xf2000e00, 1) //BINARY_R(cmpltf,"vclt.f32",0xf3200e00, 1) //BINARY_R(cmplef,"vcle.f32",0xf3000e00, 1) -UNARY(convfl,"vcvt.s32.f32",0xf3bb0700, 1) -UNARY(convlf,"vcvt.f32.s32",0xf3bb0600, 1) - + UNARY (convfl, "vcvt.s32.f32", 0xf3bb0700, 1) + UNARY (convlf, "vcvt.f32.s32", 0xf3bb0600, 1) #define UNARY_VFP(opcode,insn_name,code,vec_shift) \ static void \ orc_neon_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \ @@ -1776,7 +1735,6 @@ orc_neon_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \ ORC_COMPILER_ERROR(p, "shift too large"); \ } \ } - #define BINARY_VFP(opcode,insn_name,code,vec_shift) \ static void \ orc_neon_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \ @@ -1794,66 +1752,56 @@ orc_neon_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \ ORC_COMPILER_ERROR(p, "shift too large"); \ } \ } - -BINARY_VFP(addd,"vadd.f64",0xee300b00, 0) -BINARY_VFP(subd,"vsub.f64",0xee300b40, 0) -BINARY_VFP(muld,"vmul.f64",0xee200b00, 0) -BINARY_VFP(divd,"vdiv.f64",0xee800b00, 0) -UNARY_VFP(sqrtd,"vsqrt.f64",0xeeb10b00, 0) + BINARY_VFP (addd, "vadd.f64", 0xee300b00, 0) + BINARY_VFP (subd, "vsub.f64", 0xee300b40, 0) + BINARY_VFP (muld, "vmul.f64", 0xee200b00, 0) + BINARY_VFP (divd, "vdiv.f64", 0xee800b00, 0) + UNARY_VFP (sqrtd, "vsqrt.f64", 0xeeb10b00, 0) //BINARY_VFP(cmpeqd,"vcmpe.f64",0xee000000, 0) -UNARY_VFP(convdf,"vcvt.f64.f32",0xee200b00, 0) -UNARY_VFP(convfd,"vcvt.f32.f64",0xee200b00, 0) - + UNARY_VFP (convdf, "vcvt.f64.f32", 0xee200b00, 0) + UNARY_VFP (convfd, "vcvt.f32.f64", 0xee200b00, 0) #if 1 #define NUM_ITERS_DIVF 2 -static void -orc_neon_rule_divf (OrcCompiler *p, void *user, OrcInstruction *insn) + static void + orc_neon_rule_divf (OrcCompiler * p, void *user, OrcInstruction * insn) { int vec_shift = 1; if (p->insn_shift <= vec_shift) { int i; orc_neon_emit_unary (p, "vrecpe.f32", 0xf3bb0500, - p->tmpreg, - p->vars[insn->src_args[1]].alloc); - for(i = 0; i < NUM_ITERS_DIVF; i++) { - orc_neon_emit_binary (p, "vrecps.f32", 0xf2000f10, - p->tmpreg2, //correction factor - p->tmpreg, //the last estimate - p->vars[insn->src_args[1]].alloc); //the original number - orc_neon_emit_binary (p, "vmul.f32", 0xf3000d10, - p->tmpreg, //revised estimate - p->tmpreg, //last estimate - p->tmpreg2); //correction factor + p->tmpreg, p->vars[insn->src_args[1]].alloc); + for (i = 0; i < NUM_ITERS_DIVF; i++) { + orc_neon_emit_binary (p, "vrecps.f32", 0xf2000f10, p->tmpreg2, //correction factor + p->tmpreg, //the last estimate + p->vars[insn->src_args[1]].alloc); //the original number + orc_neon_emit_binary (p, "vmul.f32", 0xf3000d10, p->tmpreg, //revised estimate + p->tmpreg, //last estimate + p->tmpreg2); //correction factor } orc_neon_emit_binary (p, "vmul.f32", 0xf3000d10, - p->vars[insn->dest_args[0]].alloc, - p->vars[insn->src_args[0]].alloc, - p->tmpreg); + p->vars[insn->dest_args[0]].alloc, + p->vars[insn->src_args[0]].alloc, p->tmpreg); } else if (p->insn_shift == vec_shift + 1) { int i; orc_neon_emit_unary_quad (p, "vrecpe.f32", 0xf3bb0500, - p->tmpreg, - p->vars[insn->src_args[1]].alloc); - for(i = 0; i < NUM_ITERS_DIVF; i++) { - orc_neon_emit_binary_quad (p, "vrecps.f32", 0xf2000f10, - p->tmpreg2, //correction factor - p->tmpreg, //the last estimate - p->vars[insn->src_args[1]].alloc); //the original number - orc_neon_emit_binary_quad (p, "vmul.f32", 0xf3000d10, - p->tmpreg, //revised estimate - p->tmpreg, //last estimate - p->tmpreg2); //correction factor + p->tmpreg, p->vars[insn->src_args[1]].alloc); + for (i = 0; i < NUM_ITERS_DIVF; i++) { + orc_neon_emit_binary_quad (p, "vrecps.f32", 0xf2000f10, p->tmpreg2, //correction factor + p->tmpreg, //the last estimate + p->vars[insn->src_args[1]].alloc); //the original number + orc_neon_emit_binary_quad (p, "vmul.f32", 0xf3000d10, p->tmpreg, //revised estimate + p->tmpreg, //last estimate + p->tmpreg2); //correction factor } orc_neon_emit_binary_quad (p, "vmul.f32", 0xf3000d10, - p->vars[insn->dest_args[0]].alloc, - p->vars[insn->src_args[0]].alloc, - p->tmpreg); + p->vars[insn->dest_args[0]].alloc, + p->vars[insn->src_args[0]].alloc, p->tmpreg); } else { - ORC_COMPILER_ERROR(p, "shift too large"); + ORC_COMPILER_ERROR (p, "shift too large"); } } #endif @@ -1861,204 +1809,175 @@ orc_neon_rule_divf (OrcCompiler *p, void *user, OrcInstruction *insn) #if 1 #define NUM_ITERS_SQRTF 2 static void -orc_neon_rule_sqrtf (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_sqrtf (OrcCompiler * p, void *user, OrcInstruction * insn) { int vec_shift = 1; if (p->insn_shift <= vec_shift) { int i; orc_neon_emit_unary (p, "vrsqrte.f32", 0xf3bb0580, - p->tmpreg, - p->vars[insn->src_args[0]].alloc); - for(i = 0; i < NUM_ITERS_SQRTF; i++) { + p->tmpreg, p->vars[insn->src_args[0]].alloc); + for (i = 0; i < NUM_ITERS_SQRTF; i++) { orc_neon_emit_binary (p, "vmul.f32", 0xf3000d10, - p->tmpreg2, - p->tmpreg, - p->vars[insn->src_args[0]].alloc); + p->tmpreg2, p->tmpreg, p->vars[insn->src_args[0]].alloc); orc_neon_emit_binary (p, "vrsqrts.f32", 0xf2200f10, - p->tmpreg2, - p->tmpreg, - p->tmpreg2); + p->tmpreg2, p->tmpreg, p->tmpreg2); orc_neon_emit_binary (p, "vmul.f32", 0xf3000d10, - p->tmpreg, - p->tmpreg, - p->tmpreg2); + p->tmpreg, p->tmpreg, p->tmpreg2); } - orc_neon_emit_unary(p, "vrecpe.f32", 0xf3bb0500, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg); - - for(i=0; i < NUM_ITERS_DIVF; i++) { - orc_neon_emit_binary (p, "vrecps.f32", 0xf2000f10, - p->tmpreg2, //correction factor - p->vars[insn->dest_args[0]].alloc, //the last estimate - p->tmpreg); //the original number - orc_neon_emit_binary (p, "vmul.f32", 0xf3000d10, - p->vars[insn->dest_args[0]].alloc, //revised estimate - p->vars[insn->dest_args[0]].alloc, //last estimate - p->tmpreg2); //correction factor + orc_neon_emit_unary (p, "vrecpe.f32", 0xf3bb0500, + p->vars[insn->dest_args[0]].alloc, p->tmpreg); + + for (i = 0; i < NUM_ITERS_DIVF; i++) { + orc_neon_emit_binary (p, "vrecps.f32", 0xf2000f10, p->tmpreg2, //correction factor + p->vars[insn->dest_args[0]].alloc, //the last estimate + p->tmpreg); //the original number + orc_neon_emit_binary (p, "vmul.f32", 0xf3000d10, p->vars[insn->dest_args[0]].alloc, //revised estimate + p->vars[insn->dest_args[0]].alloc, //last estimate + p->tmpreg2); //correction factor } } else if (p->insn_shift == vec_shift + 1) { int i; orc_neon_emit_unary_quad (p, "vrsqrte.f32", 0xf3bb0580, - p->tmpreg, - p->vars[insn->src_args[0]].alloc); - for(i = 0; i < NUM_ITERS_SQRTF; i++) { + p->tmpreg, p->vars[insn->src_args[0]].alloc); + for (i = 0; i < NUM_ITERS_SQRTF; i++) { orc_neon_emit_binary_quad (p, "vmul.f32", 0xf3000d10, - p->tmpreg2, - p->tmpreg, - p->vars[insn->src_args[0]].alloc); + p->tmpreg2, p->tmpreg, p->vars[insn->src_args[0]].alloc); orc_neon_emit_binary_quad (p, "vrsqrts.f32", 0xf2200f10, - p->tmpreg2, - p->tmpreg, - p->tmpreg2); + p->tmpreg2, p->tmpreg, p->tmpreg2); orc_neon_emit_binary_quad (p, "vmul.f32", 0xf3000d10, - p->tmpreg, - p->tmpreg, - p->tmpreg2); + p->tmpreg, p->tmpreg, p->tmpreg2); } - orc_neon_emit_unary_quad(p, "vrecpe.f32", 0xf3bb0500, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg); - - for(i=0; i < NUM_ITERS_DIVF; i++) { - orc_neon_emit_binary_quad (p, "vrecps.f32", 0xf2000f10, - p->tmpreg2, //correction factor - p->vars[insn->dest_args[0]].alloc, //the last estimate - p->tmpreg); //the original number - orc_neon_emit_binary_quad (p, "vmul.f32", 0xf3000d10, - p->vars[insn->dest_args[0]].alloc, //revised estimate - p->vars[insn->dest_args[0]].alloc, //last estimate - p->tmpreg2); //correction factor + orc_neon_emit_unary_quad (p, "vrecpe.f32", 0xf3bb0500, + p->vars[insn->dest_args[0]].alloc, p->tmpreg); + + for (i = 0; i < NUM_ITERS_DIVF; i++) { + orc_neon_emit_binary_quad (p, "vrecps.f32", 0xf2000f10, p->tmpreg2, //correction factor + p->vars[insn->dest_args[0]].alloc, //the last estimate + p->tmpreg); //the original number + orc_neon_emit_binary_quad (p, "vmul.f32", 0xf3000d10, p->vars[insn->dest_args[0]].alloc, //revised estimate + p->vars[insn->dest_args[0]].alloc, //last estimate + p->tmpreg2); //correction factor } } else { - ORC_COMPILER_ERROR(p, "shift too large"); + ORC_COMPILER_ERROR (p, "shift too large"); } } #endif static void -orc_neon_rule_accw (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_accw (OrcCompiler * p, void *user, OrcInstruction * insn) { unsigned int code; if (p->insn_shift < 2) { - ORC_ASM_CODE(p," vshl.i64 %s, %s, #%d\n", + ORC_ASM_CODE (p, " vshl.i64 %s, %s, #%d\n", orc_neon_reg_name (p->tmpreg), orc_neon_reg_name (p->vars[insn->src_args[0]].alloc), 48); - code = NEON_BINARY(0xf2a00590, p->tmpreg, 0, + code = NEON_BINARY (0xf2a00590, p->tmpreg, 0, p->vars[insn->src_args[0]].alloc); code |= (48) << 16; orc_arm_emit (p, code); orc_neon_emit_binary (p, "vadd.i16", 0xf2100800, p->vars[insn->dest_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg); + p->vars[insn->dest_args[0]].alloc, p->tmpreg); } else { orc_neon_emit_binary (p, "vadd.i16", 0xf2100800, p->vars[insn->dest_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc, - p->vars[insn->src_args[0]].alloc); + p->vars[insn->dest_args[0]].alloc, p->vars[insn->src_args[0]].alloc); } } static void -orc_neon_rule_accl (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_accl (OrcCompiler * p, void *user, OrcInstruction * insn) { unsigned int code; if (p->insn_shift < 1) { - ORC_ASM_CODE(p," vshl.i64 %s, %s, #%d\n", + ORC_ASM_CODE (p, " vshl.i64 %s, %s, #%d\n", orc_neon_reg_name (p->tmpreg), orc_neon_reg_name (p->vars[insn->src_args[0]].alloc), 32); - code = NEON_BINARY(0xf2a00590, p->tmpreg, 0, + code = NEON_BINARY (0xf2a00590, p->tmpreg, 0, p->vars[insn->src_args[0]].alloc); code |= (32) << 16; orc_arm_emit (p, code); orc_neon_emit_binary (p, "vadd.i32", 0xf2200800, p->vars[insn->dest_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg); + p->vars[insn->dest_args[0]].alloc, p->tmpreg); } else { orc_neon_emit_binary (p, "vadd.i32", 0xf2200800, p->vars[insn->dest_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc, - p->vars[insn->src_args[0]].alloc); + p->vars[insn->dest_args[0]].alloc, p->vars[insn->src_args[0]].alloc); } } static void -orc_neon_rule_select1wb (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_select1wb (OrcCompiler * p, void *user, OrcInstruction * insn) { unsigned int code; - ORC_ASM_CODE(p," vshrn.i16 %s, %s, #%d\n", + ORC_ASM_CODE (p, " vshrn.i16 %s, %s, #%d\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name_quad (p->vars[insn->src_args[0]].alloc), 8); code = NEON_BINARY (0xf2880810, - p->vars[insn->dest_args[0]].alloc, - 0, p->vars[insn->src_args[0]].alloc); + p->vars[insn->dest_args[0]].alloc, 0, p->vars[insn->src_args[0]].alloc); orc_arm_emit (p, code); } static void -orc_neon_rule_select1lw (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_select1lw (OrcCompiler * p, void *user, OrcInstruction * insn) { unsigned int code; - ORC_ASM_CODE(p," vshrn.i32 %s, %s, #%d\n", + ORC_ASM_CODE (p, " vshrn.i32 %s, %s, #%d\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name_quad (p->vars[insn->src_args[0]].alloc), 16); code = NEON_BINARY (0xf2900810, - p->vars[insn->dest_args[0]].alloc, - 0, p->vars[insn->src_args[0]].alloc); + p->vars[insn->dest_args[0]].alloc, 0, p->vars[insn->src_args[0]].alloc); orc_arm_emit (p, code); } static void -orc_neon_rule_select1ql (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_select1ql (OrcCompiler * p, void *user, OrcInstruction * insn) { unsigned int code; - ORC_ASM_CODE(p," vtrn.32 %s, %s\n", + ORC_ASM_CODE (p, " vtrn.32 %s, %s\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name_quad (p->vars[insn->src_args[0]].alloc)); code = NEON_BINARY (0xf2a00810, - p->vars[insn->dest_args[0]].alloc, - 0, p->vars[insn->src_args[0]].alloc); + p->vars[insn->dest_args[0]].alloc, 0, p->vars[insn->src_args[0]].alloc); orc_arm_emit (p, code); } static void -orc_neon_rule_convhwb (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_convhwb (OrcCompiler * p, void *user, OrcInstruction * insn) { unsigned int code; - ORC_ASM_CODE(p," vshrn.i16 %s, %s, #%d\n", + ORC_ASM_CODE (p, " vshrn.i16 %s, %s, #%d\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name_quad (p->vars[insn->src_args[0]].alloc), 8); code = NEON_BINARY (0xf2880810, - p->vars[insn->dest_args[0]].alloc, - 0, p->vars[insn->src_args[0]].alloc); + p->vars[insn->dest_args[0]].alloc, 0, p->vars[insn->src_args[0]].alloc); orc_arm_emit (p, code); } static void -orc_neon_rule_convhlw (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_convhlw (OrcCompiler * p, void *user, OrcInstruction * insn) { unsigned int code; - ORC_ASM_CODE(p," vshrn.i32 %s, %s, #%d\n", + ORC_ASM_CODE (p, " vshrn.i32 %s, %s, #%d\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name_quad (p->vars[insn->src_args[0]].alloc), 16); code = NEON_BINARY (0xf2900810, - p->vars[insn->dest_args[0]].alloc, - 0, p->vars[insn->src_args[0]].alloc); + p->vars[insn->dest_args[0]].alloc, 0, p->vars[insn->src_args[0]].alloc); orc_arm_emit (p, code); } static void -orc_neon_rule_mergebw (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_mergebw (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->insn_shift <= 2) { if (p->vars[insn->dest_args[0]].alloc != p->vars[insn->src_args[0]].alloc) { @@ -2069,12 +1988,10 @@ orc_neon_rule_mergebw (OrcCompiler *p, void *user, OrcInstruction *insn) if (p->vars[insn->src_args[1]].last_use != p->insn_index) { orc_neon_emit_mov (p, p->tmpreg, p->vars[insn->src_args[1]].alloc); orc_neon_emit_unary (p, "vzip.8", 0xf3b20180, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg); + p->vars[insn->dest_args[0]].alloc, p->tmpreg); } else { orc_neon_emit_unary (p, "vzip.8", 0xf3b20180, - p->vars[insn->dest_args[0]].alloc, - p->vars[insn->src_args[1]].alloc); + p->vars[insn->dest_args[0]].alloc, p->vars[insn->src_args[1]].alloc); } } else { if (p->vars[insn->dest_args[0]].alloc != p->vars[insn->src_args[0]].alloc) { @@ -2084,13 +2001,12 @@ orc_neon_rule_mergebw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_neon_emit_mov_quad (p, p->tmpreg, p->vars[insn->src_args[1]].alloc); orc_neon_emit_unary_quad (p, "vzip.8", 0xf3b20180, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg); + p->vars[insn->dest_args[0]].alloc, p->tmpreg); } } static void -orc_neon_rule_mergewl (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_mergewl (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->insn_shift <= 1) { if (p->vars[insn->dest_args[0]].alloc != p->vars[insn->src_args[0]].alloc) { @@ -2101,12 +2017,10 @@ orc_neon_rule_mergewl (OrcCompiler *p, void *user, OrcInstruction *insn) if (p->vars[insn->src_args[1]].last_use != p->insn_index) { orc_neon_emit_mov (p, p->tmpreg, p->vars[insn->src_args[1]].alloc); orc_neon_emit_unary (p, "vzip.16", 0xf3b60180, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg); + p->vars[insn->dest_args[0]].alloc, p->tmpreg); } else { orc_neon_emit_unary (p, "vzip.16", 0xf3b60180, - p->vars[insn->dest_args[0]].alloc, - p->vars[insn->src_args[1]].alloc); + p->vars[insn->dest_args[0]].alloc, p->vars[insn->src_args[1]].alloc); } } else { if (p->vars[insn->dest_args[0]].alloc != p->vars[insn->src_args[0]].alloc) { @@ -2117,18 +2031,16 @@ orc_neon_rule_mergewl (OrcCompiler *p, void *user, OrcInstruction *insn) if (p->vars[insn->src_args[1]].last_use != p->insn_index) { orc_neon_emit_mov_quad (p, p->tmpreg, p->vars[insn->src_args[1]].alloc); orc_neon_emit_unary_quad (p, "vzip.16", 0xf3b60180, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg); + p->vars[insn->dest_args[0]].alloc, p->tmpreg); } else { orc_neon_emit_unary_quad (p, "vzip.16", 0xf3b60180, - p->vars[insn->dest_args[0]].alloc, - p->vars[insn->src_args[1]].alloc); + p->vars[insn->dest_args[0]].alloc, p->vars[insn->src_args[1]].alloc); } } } static void -orc_neon_rule_mergelq (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_mergelq (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->insn_shift <= 0) { if (p->vars[insn->dest_args[0]].alloc != p->vars[insn->src_args[0]].alloc) { @@ -2139,12 +2051,10 @@ orc_neon_rule_mergelq (OrcCompiler *p, void *user, OrcInstruction *insn) if (p->vars[insn->src_args[1]].last_use != p->insn_index) { orc_neon_emit_mov (p, p->tmpreg, p->vars[insn->src_args[1]].alloc); orc_neon_emit_unary (p, "vtrn.32", 0xf3ba0080, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg); + p->vars[insn->dest_args[0]].alloc, p->tmpreg); } else { orc_neon_emit_unary (p, "vtrn.32", 0xf3ba0080, - p->vars[insn->dest_args[0]].alloc, - p->vars[insn->src_args[1]].alloc); + p->vars[insn->dest_args[0]].alloc, p->vars[insn->src_args[1]].alloc); } } else { if (p->vars[insn->dest_args[0]].alloc != p->vars[insn->src_args[0]].alloc) { @@ -2155,18 +2065,16 @@ orc_neon_rule_mergelq (OrcCompiler *p, void *user, OrcInstruction *insn) if (p->vars[insn->src_args[1]].last_use != p->insn_index) { orc_neon_emit_mov_quad (p, p->tmpreg, p->vars[insn->src_args[1]].alloc); orc_neon_emit_unary_quad (p, "vzip.32", 0xf3ba0180, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg); + p->vars[insn->dest_args[0]].alloc, p->tmpreg); } else { orc_neon_emit_unary_quad (p, "vzip.32", 0xf3ba0180, - p->vars[insn->dest_args[0]].alloc, - p->vars[insn->src_args[1]].alloc); + p->vars[insn->dest_args[0]].alloc, p->vars[insn->src_args[1]].alloc); } } } static void -orc_neon_rule_splatbw (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_splatbw (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->insn_shift <= 2) { if (p->vars[insn->dest_args[0]].alloc != p->vars[insn->src_args[0]].alloc) { @@ -2176,8 +2084,7 @@ orc_neon_rule_splatbw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_neon_emit_mov (p, p->tmpreg, p->vars[insn->dest_args[0]].alloc); orc_neon_emit_unary (p, "vzip.8", 0xf3b20180, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg); + p->vars[insn->dest_args[0]].alloc, p->tmpreg); } else { if (p->vars[insn->dest_args[0]].alloc != p->vars[insn->src_args[0]].alloc) { orc_neon_emit_mov_quad (p, p->vars[insn->dest_args[0]].alloc, @@ -2186,13 +2093,12 @@ orc_neon_rule_splatbw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_neon_emit_mov_quad (p, p->tmpreg, p->vars[insn->dest_args[0]].alloc); orc_neon_emit_unary_quad (p, "vzip.8", 0xf3b20180, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg); + p->vars[insn->dest_args[0]].alloc, p->tmpreg); } } static void -orc_neon_rule_splatbl (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_splatbl (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->insn_shift <= 1) { if (p->vars[insn->dest_args[0]].alloc != p->vars[insn->src_args[0]].alloc) { @@ -2202,12 +2108,10 @@ orc_neon_rule_splatbl (OrcCompiler *p, void *user, OrcInstruction *insn) orc_neon_emit_mov (p, p->tmpreg, p->vars[insn->dest_args[0]].alloc); orc_neon_emit_unary (p, "vzip.8", 0xf3b20180, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg); + p->vars[insn->dest_args[0]].alloc, p->tmpreg); orc_neon_emit_mov (p, p->tmpreg, p->vars[insn->dest_args[0]].alloc); orc_neon_emit_unary (p, "vzip.16", 0xf3b60180, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg); + p->vars[insn->dest_args[0]].alloc, p->tmpreg); } else { if (p->vars[insn->dest_args[0]].alloc != p->vars[insn->src_args[0]].alloc) { orc_neon_emit_mov_quad (p, p->vars[insn->dest_args[0]].alloc, @@ -2216,108 +2120,102 @@ orc_neon_rule_splatbl (OrcCompiler *p, void *user, OrcInstruction *insn) orc_neon_emit_mov (p, p->tmpreg, p->vars[insn->dest_args[0]].alloc); orc_neon_emit_unary_quad (p, "vzip.8", 0xf3b20180, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg); + p->vars[insn->dest_args[0]].alloc, p->tmpreg); orc_neon_emit_mov (p, p->tmpreg, p->vars[insn->dest_args[0]].alloc); orc_neon_emit_unary_quad (p, "vzip.16", 0xf3b60180, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg); + p->vars[insn->dest_args[0]].alloc, p->tmpreg); } } static void -orc_neon_rule_splatw3q (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_splatw3q (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_uint32 code; int offset = 0; int label = 20; orc_arm_add_fixup (p, label, 1); - ORC_ASM_CODE(p," vldr %s, .L%d+%d\n", + ORC_ASM_CODE (p, " vldr %s, .L%d+%d\n", orc_neon_reg_name (p->tmpreg), label, offset); code = 0xed9f0b00; - code |= (p->tmpreg&0xf) << 12; - code |= ((p->tmpreg>>4)&0x1) << 22; - code |= ((offset - 8) >> 2)&0xff; + code |= (p->tmpreg & 0xf) << 12; + code |= ((p->tmpreg >> 4) & 0x1) << 22; + code |= ((offset - 8) >> 2) & 0xff; orc_arm_emit (p, code); - ORC_ASM_CODE(p," vtbl.8 %s, { %s, %s }, %s\n", + ORC_ASM_CODE (p, " vtbl.8 %s, { %s, %s }, %s\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name (p->vars[insn->src_args[0]].alloc), orc_neon_reg_name (p->vars[insn->src_args[0]].alloc + 1), orc_neon_reg_name (p->tmpreg)); - code = NEON_BINARY(0xf3b00900, + code = NEON_BINARY (0xf3b00900, p->vars[insn->dest_args[0]].alloc, - p->vars[insn->src_args[0]].alloc, - p->tmpreg); + p->vars[insn->src_args[0]].alloc, p->tmpreg); orc_arm_emit (p, code); if (p->insn_shift > 0) { - ORC_ASM_CODE(p," vtbl.8 %s, { %s }, %s\n", - orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc+1), - orc_neon_reg_name (p->vars[insn->src_args[0]].alloc+1), + ORC_ASM_CODE (p, " vtbl.8 %s, { %s }, %s\n", + orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc + 1), + orc_neon_reg_name (p->vars[insn->src_args[0]].alloc + 1), orc_neon_reg_name (p->tmpreg)); - code = NEON_BINARY(0xf3b00800, - p->vars[insn->dest_args[0]].alloc+1, - p->vars[insn->src_args[0]].alloc+1, - p->tmpreg); + code = NEON_BINARY (0xf3b00800, + p->vars[insn->dest_args[0]].alloc + 1, + p->vars[insn->src_args[0]].alloc + 1, p->tmpreg); orc_arm_emit (p, code); } } static void -orc_neon_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_accsadubl (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_uint32 x; unsigned int code; if (p->insn_shift < 2) { x = 0xf3800700; - ORC_ASM_CODE(p," vabdl.u8 %s, %s, %s\n", + ORC_ASM_CODE (p, " vabdl.u8 %s, %s, %s\n", orc_neon_reg_name_quad (p->tmpreg), orc_neon_reg_name (p->vars[insn->src_args[0]].alloc), orc_neon_reg_name (p->vars[insn->src_args[1]].alloc)); - x |= (p->tmpreg&0xf)<<12; - x |= ((p->tmpreg>>4)&0x1)<<22; - x |= (p->vars[insn->src_args[0]].alloc&0xf)<<16; - x |= ((p->vars[insn->src_args[0]].alloc>>4)&0x1)<<7; - x |= (p->vars[insn->src_args[1]].alloc&0xf)<<0; - x |= ((p->vars[insn->src_args[1]].alloc>>4)&0x1)<<5; + x |= (p->tmpreg & 0xf) << 12; + x |= ((p->tmpreg >> 4) & 0x1) << 22; + x |= (p->vars[insn->src_args[0]].alloc & 0xf) << 16; + x |= ((p->vars[insn->src_args[0]].alloc >> 4) & 0x1) << 7; + x |= (p->vars[insn->src_args[1]].alloc & 0xf) << 0; + x |= ((p->vars[insn->src_args[1]].alloc >> 4) & 0x1) << 5; orc_arm_emit (p, x); - ORC_ASM_CODE(p," vshl.i64 %s, %s, #%d\n", + ORC_ASM_CODE (p, " vshl.i64 %s, %s, #%d\n", orc_neon_reg_name (p->tmpreg), - orc_neon_reg_name (p->tmpreg), 64 - (16<<p->insn_shift)); - code = NEON_BINARY(0xf2a00590, p->tmpreg, 0, p->tmpreg); - code |= (64 - (16<<p->insn_shift)) << 16; + orc_neon_reg_name (p->tmpreg), 64 - (16 << p->insn_shift)); + code = NEON_BINARY (0xf2a00590, p->tmpreg, 0, p->tmpreg); + code |= (64 - (16 << p->insn_shift)) << 16; orc_arm_emit (p, code); orc_neon_emit_unary (p, "vpadal.u16", 0xf3b40680, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg); + p->vars[insn->dest_args[0]].alloc, p->tmpreg); } else { x = 0xf3800700; - ORC_ASM_CODE(p," vabdl.u8 %s, %s, %s\n", + ORC_ASM_CODE (p, " vabdl.u8 %s, %s, %s\n", orc_neon_reg_name_quad (p->tmpreg), orc_neon_reg_name (p->vars[insn->src_args[0]].alloc), orc_neon_reg_name (p->vars[insn->src_args[1]].alloc)); - x |= (p->tmpreg&0xf)<<12; - x |= ((p->tmpreg>>4)&0x1)<<22; - x |= (p->vars[insn->src_args[0]].alloc&0xf)<<16; - x |= ((p->vars[insn->src_args[0]].alloc>>4)&0x1)<<7; - x |= (p->vars[insn->src_args[1]].alloc&0xf)<<0; - x |= ((p->vars[insn->src_args[1]].alloc>>4)&0x1)<<5; + x |= (p->tmpreg & 0xf) << 12; + x |= ((p->tmpreg >> 4) & 0x1) << 22; + x |= (p->vars[insn->src_args[0]].alloc & 0xf) << 16; + x |= ((p->vars[insn->src_args[0]].alloc >> 4) & 0x1) << 7; + x |= (p->vars[insn->src_args[1]].alloc & 0xf) << 0; + x |= ((p->vars[insn->src_args[1]].alloc >> 4) & 0x1) << 5; orc_arm_emit (p, x); orc_neon_emit_unary (p, "vpadal.u16", 0xf3b40680, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg); + p->vars[insn->dest_args[0]].alloc, p->tmpreg); } } static void -orc_neon_rule_signw (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_signw (OrcCompiler * p, void *user, OrcInstruction * insn) { /* slow */ @@ -2325,30 +2223,26 @@ orc_neon_rule_signw (OrcCompiler *p, void *user, OrcInstruction *insn) if (p->insn_shift < 3) { orc_neon_emit_binary (p, "vmin.s16", 0xf2100610, p->vars[insn->dest_args[0]].alloc, - p->tmpreg, - p->vars[insn->src_args[0]].alloc); + p->tmpreg, p->vars[insn->src_args[0]].alloc); } else { orc_neon_emit_binary_quad (p, "vmin.s16", 0xf2100610, p->vars[insn->dest_args[0]].alloc, - p->tmpreg, - p->vars[insn->src_args[0]].alloc); + p->tmpreg, p->vars[insn->src_args[0]].alloc); } orc_neon_emit_loadiw (p, p->tmpreg, -1); if (p->insn_shift < 3) { orc_neon_emit_binary (p, "vmax.s16", 0xf2100600, p->vars[insn->dest_args[0]].alloc, - p->tmpreg, - p->vars[insn->dest_args[0]].alloc); + p->tmpreg, p->vars[insn->dest_args[0]].alloc); } else { orc_neon_emit_binary_quad (p, "vmax.s16", 0xf2100600, p->vars[insn->dest_args[0]].alloc, - p->tmpreg, - p->vars[insn->dest_args[0]].alloc); + p->tmpreg, p->vars[insn->dest_args[0]].alloc); } } static void -orc_neon_rule_signb (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_signb (OrcCompiler * p, void *user, OrcInstruction * insn) { /* slow */ @@ -2356,30 +2250,26 @@ orc_neon_rule_signb (OrcCompiler *p, void *user, OrcInstruction *insn) if (p->insn_shift < 4) { orc_neon_emit_binary (p, "vmin.s8", 0xf2000610, p->vars[insn->dest_args[0]].alloc, - p->tmpreg, - p->vars[insn->src_args[0]].alloc); + p->tmpreg, p->vars[insn->src_args[0]].alloc); } else { orc_neon_emit_binary_quad (p, "vmin.s8", 0xf2000610, p->vars[insn->dest_args[0]].alloc, - p->tmpreg, - p->vars[insn->src_args[0]].alloc); + p->tmpreg, p->vars[insn->src_args[0]].alloc); } orc_neon_emit_loadib (p, p->tmpreg, -1); if (p->insn_shift < 4) { orc_neon_emit_binary (p, "vmax.s8", 0xf2000600, p->vars[insn->dest_args[0]].alloc, - p->tmpreg, - p->vars[insn->dest_args[0]].alloc); + p->tmpreg, p->vars[insn->dest_args[0]].alloc); } else { orc_neon_emit_binary_quad (p, "vmax.s8", 0xf2000600, p->vars[insn->dest_args[0]].alloc, - p->tmpreg, - p->vars[insn->dest_args[0]].alloc); + p->tmpreg, p->vars[insn->dest_args[0]].alloc); } } static void -orc_neon_rule_signl (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_signl (OrcCompiler * p, void *user, OrcInstruction * insn) { /* slow */ @@ -2387,222 +2277,200 @@ orc_neon_rule_signl (OrcCompiler *p, void *user, OrcInstruction *insn) if (p->insn_shift < 2) { orc_neon_emit_binary (p, "vmin.s32", 0xf2200610, p->vars[insn->dest_args[0]].alloc, - p->tmpreg, - p->vars[insn->src_args[0]].alloc); + p->tmpreg, p->vars[insn->src_args[0]].alloc); } else { orc_neon_emit_binary_quad (p, "vmin.s32", 0xf2200610, p->vars[insn->dest_args[0]].alloc, - p->tmpreg, - p->vars[insn->src_args[0]].alloc); + p->tmpreg, p->vars[insn->src_args[0]].alloc); } orc_neon_emit_loadil (p, p->tmpreg, -1); if (p->insn_shift < 2) { orc_neon_emit_binary (p, "vmax.s32", 0xf2200600, p->vars[insn->dest_args[0]].alloc, - p->tmpreg, - p->vars[insn->dest_args[0]].alloc); + p->tmpreg, p->vars[insn->dest_args[0]].alloc); } else { orc_neon_emit_binary_quad (p, "vmax.s32", 0xf2200600, p->vars[insn->dest_args[0]].alloc, - p->tmpreg, - p->vars[insn->dest_args[0]].alloc); + p->tmpreg, p->vars[insn->dest_args[0]].alloc); } } static void -orc_neon_rule_mulhub (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_mulhub (OrcCompiler * p, void *user, OrcInstruction * insn) { unsigned int code; - orc_neon_emit_binary_long (p, "vmull.u8",0xf3800c00, + orc_neon_emit_binary_long (p, "vmull.u8", 0xf3800c00, p->tmpreg, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->src_args[1]].alloc); - ORC_ASM_CODE(p," vshrn.i16 %s, %s, #%d\n", + p->vars[insn->src_args[0]].alloc, p->vars[insn->src_args[1]].alloc); + ORC_ASM_CODE (p, " vshrn.i16 %s, %s, #%d\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name_quad (p->tmpreg), 8); code = NEON_BINARY (0xf2880810, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg, 0); + p->vars[insn->dest_args[0]].alloc, p->tmpreg, 0); orc_arm_emit (p, code); if (p->insn_shift == 4) { - orc_neon_emit_binary_long (p, "vmull.u8",0xf3800c00, + orc_neon_emit_binary_long (p, "vmull.u8", 0xf3800c00, p->tmpreg, p->vars[insn->src_args[0]].alloc + 1, p->vars[insn->src_args[1]].alloc + 1); - ORC_ASM_CODE(p," vshrn.i16 %s, %s, #%d\n", + ORC_ASM_CODE (p, " vshrn.i16 %s, %s, #%d\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc + 1), orc_neon_reg_name_quad (p->tmpreg), 8); code = NEON_BINARY (0xf2880810, - p->vars[insn->dest_args[0]].alloc + 1, - p->tmpreg, 0); + p->vars[insn->dest_args[0]].alloc + 1, p->tmpreg, 0); orc_arm_emit (p, code); } } static void -orc_neon_rule_mulhsb (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_mulhsb (OrcCompiler * p, void *user, OrcInstruction * insn) { unsigned int code; - orc_neon_emit_binary_long (p, "vmull.s8",0xf2800c00, + orc_neon_emit_binary_long (p, "vmull.s8", 0xf2800c00, p->tmpreg, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->src_args[1]].alloc); - ORC_ASM_CODE(p," vshrn.i16 %s, %s, #%d\n", + p->vars[insn->src_args[0]].alloc, p->vars[insn->src_args[1]].alloc); + ORC_ASM_CODE (p, " vshrn.i16 %s, %s, #%d\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name_quad (p->tmpreg), 8); code = NEON_BINARY (0xf2880810, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg, 0); + p->vars[insn->dest_args[0]].alloc, p->tmpreg, 0); orc_arm_emit (p, code); if (p->insn_shift == 4) { - orc_neon_emit_binary_long (p, "vmull.s8",0xf2800c00, + orc_neon_emit_binary_long (p, "vmull.s8", 0xf2800c00, p->tmpreg, p->vars[insn->src_args[0]].alloc + 1, p->vars[insn->src_args[1]].alloc + 1); - ORC_ASM_CODE(p," vshrn.i16 %s, %s, #%d\n", + ORC_ASM_CODE (p, " vshrn.i16 %s, %s, #%d\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc + 1), orc_neon_reg_name_quad (p->tmpreg), 8); code = NEON_BINARY (0xf2880810, - p->vars[insn->dest_args[0]].alloc + 1, - p->tmpreg, 0); + p->vars[insn->dest_args[0]].alloc + 1, p->tmpreg, 0); orc_arm_emit (p, code); } } static void -orc_neon_rule_mulhuw (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_mulhuw (OrcCompiler * p, void *user, OrcInstruction * insn) { unsigned int code; - orc_neon_emit_binary_long (p, "vmull.u16",0xf3900c00, + orc_neon_emit_binary_long (p, "vmull.u16", 0xf3900c00, p->tmpreg, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->src_args[1]].alloc); - ORC_ASM_CODE(p," vshrn.i32 %s, %s, #%d\n", + p->vars[insn->src_args[0]].alloc, p->vars[insn->src_args[1]].alloc); + ORC_ASM_CODE (p, " vshrn.i32 %s, %s, #%d\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name_quad (p->tmpreg), 16); code = NEON_BINARY (0xf2900810, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg, 0); + p->vars[insn->dest_args[0]].alloc, p->tmpreg, 0); orc_arm_emit (p, code); if (p->insn_shift == 3) { - orc_neon_emit_binary_long (p, "vmull.u16",0xf3900c00, + orc_neon_emit_binary_long (p, "vmull.u16", 0xf3900c00, p->tmpreg, p->vars[insn->src_args[0]].alloc + 1, p->vars[insn->src_args[1]].alloc + 1); - ORC_ASM_CODE(p," vshrn.i32 %s, %s, #%d\n", + ORC_ASM_CODE (p, " vshrn.i32 %s, %s, #%d\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc + 1), orc_neon_reg_name_quad (p->tmpreg), 16); code = NEON_BINARY (0xf2900810, - p->vars[insn->dest_args[0]].alloc + 1, - p->tmpreg, 0); + p->vars[insn->dest_args[0]].alloc + 1, p->tmpreg, 0); orc_arm_emit (p, code); } } static void -orc_neon_rule_mulhsw (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_mulhsw (OrcCompiler * p, void *user, OrcInstruction * insn) { unsigned int code; - orc_neon_emit_binary_long (p, "vmull.s16",0xf2900c00, + orc_neon_emit_binary_long (p, "vmull.s16", 0xf2900c00, p->tmpreg, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->src_args[1]].alloc); - ORC_ASM_CODE(p," vshrn.i32 %s, %s, #%d\n", + p->vars[insn->src_args[0]].alloc, p->vars[insn->src_args[1]].alloc); + ORC_ASM_CODE (p, " vshrn.i32 %s, %s, #%d\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name_quad (p->tmpreg), 16); code = NEON_BINARY (0xf2900810, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg, 0); + p->vars[insn->dest_args[0]].alloc, p->tmpreg, 0); orc_arm_emit (p, code); if (p->insn_shift == 3) { - orc_neon_emit_binary_long (p, "vmull.s16",0xf2900c00, + orc_neon_emit_binary_long (p, "vmull.s16", 0xf2900c00, p->tmpreg, p->vars[insn->src_args[0]].alloc + 1, p->vars[insn->src_args[1]].alloc + 1); - ORC_ASM_CODE(p," vshrn.i32 %s, %s, #%d\n", + ORC_ASM_CODE (p, " vshrn.i32 %s, %s, #%d\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc + 1), orc_neon_reg_name_quad (p->tmpreg), 16); code = NEON_BINARY (0xf2900810, - p->vars[insn->dest_args[0]].alloc + 1, - p->tmpreg, 0); + p->vars[insn->dest_args[0]].alloc + 1, p->tmpreg, 0); orc_arm_emit (p, code); } } static void -orc_neon_rule_mulhul (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_mulhul (OrcCompiler * p, void *user, OrcInstruction * insn) { unsigned int code; - orc_neon_emit_binary_long (p, "vmull.u32",0xf3a00c00, + orc_neon_emit_binary_long (p, "vmull.u32", 0xf3a00c00, p->tmpreg, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->src_args[1]].alloc); - ORC_ASM_CODE(p," vshrn.i64 %s, %s, #%d\n", + p->vars[insn->src_args[0]].alloc, p->vars[insn->src_args[1]].alloc); + ORC_ASM_CODE (p, " vshrn.i64 %s, %s, #%d\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name_quad (p->tmpreg), 32); code = NEON_BINARY (0xf2a00810, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg, 0); + p->vars[insn->dest_args[0]].alloc, p->tmpreg, 0); orc_arm_emit (p, code); if (p->insn_shift == 2) { - orc_neon_emit_binary_long (p, "vmull.u32",0xf3a00c00, + orc_neon_emit_binary_long (p, "vmull.u32", 0xf3a00c00, p->tmpreg, p->vars[insn->src_args[0]].alloc + 1, p->vars[insn->src_args[1]].alloc + 1); - ORC_ASM_CODE(p," vshrn.i64 %s, %s, #%d\n", + ORC_ASM_CODE (p, " vshrn.i64 %s, %s, #%d\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc + 1), orc_neon_reg_name_quad (p->tmpreg), 32); code = NEON_BINARY (0xf2a00810, - p->vars[insn->dest_args[0]].alloc + 1, - p->tmpreg, 0); + p->vars[insn->dest_args[0]].alloc + 1, p->tmpreg, 0); orc_arm_emit (p, code); } } static void -orc_neon_rule_mulhsl (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_mulhsl (OrcCompiler * p, void *user, OrcInstruction * insn) { unsigned int code; - orc_neon_emit_binary_long (p, "vmull.s32",0xf2a00c00, + orc_neon_emit_binary_long (p, "vmull.s32", 0xf2a00c00, p->tmpreg, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->src_args[1]].alloc); - ORC_ASM_CODE(p," vshrn.i64 %s, %s, #%d\n", + p->vars[insn->src_args[0]].alloc, p->vars[insn->src_args[1]].alloc); + ORC_ASM_CODE (p, " vshrn.i64 %s, %s, #%d\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc), orc_neon_reg_name_quad (p->tmpreg), 32); code = NEON_BINARY (0xf2a00810, - p->vars[insn->dest_args[0]].alloc, - p->tmpreg, 0); + p->vars[insn->dest_args[0]].alloc, p->tmpreg, 0); orc_arm_emit (p, code); if (p->insn_shift == 2) { - orc_neon_emit_binary_long (p, "vmull.s32",0xf2a00c00, + orc_neon_emit_binary_long (p, "vmull.s32", 0xf2a00c00, p->tmpreg, p->vars[insn->src_args[0]].alloc + 1, p->vars[insn->src_args[1]].alloc + 1); - ORC_ASM_CODE(p," vshrn.i64 %s, %s, #%d\n", + ORC_ASM_CODE (p, " vshrn.i64 %s, %s, #%d\n", orc_neon_reg_name (p->vars[insn->dest_args[0]].alloc + 1), orc_neon_reg_name_quad (p->tmpreg), 32); code = NEON_BINARY (0xf2a00810, - p->vars[insn->dest_args[0]].alloc + 1, - p->tmpreg, 0); + p->vars[insn->dest_args[0]].alloc + 1, p->tmpreg, 0); orc_arm_emit (p, code); } } static void -orc_neon_rule_splitql (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_splitql (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest0 = p->vars[insn->dest_args[0]].alloc; int dest1 = p->vars[insn->dest_args[1]].alloc; @@ -2628,7 +2496,7 @@ orc_neon_rule_splitql (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -orc_neon_rule_splitlw (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_splitlw (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest0 = p->vars[insn->dest_args[0]].alloc; int dest1 = p->vars[insn->dest_args[1]].alloc; @@ -2654,7 +2522,7 @@ orc_neon_rule_splitlw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -orc_neon_rule_splitwb (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_splitwb (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest0 = p->vars[insn->dest_args[0]].alloc; int dest1 = p->vars[insn->dest_args[1]].alloc; @@ -2680,239 +2548,239 @@ orc_neon_rule_splitwb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -orc_neon_rule_div255w (OrcCompiler *p, void *user, OrcInstruction *insn) +orc_neon_rule_div255w (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int src = p->vars[insn->src_args[0]].alloc; int tmp = p->tmpreg; if (p->insn_shift < 3) { - ORC_ASM_CODE(p," vrshrn.u16 %s, %s, #%d\n", orc_neon_reg_name(tmp), - orc_neon_reg_name_quad(src), 8); + ORC_ASM_CODE (p, " vrshrn.u16 %s, %s, #%d\n", orc_neon_reg_name (tmp), + orc_neon_reg_name_quad (src), 8); orc_arm_emit (p, NEON_BINARY (0xf2880850, tmp, 0, src)); - orc_neon_emit_unary_long (p, "vmovl.u8",0xf3880a10, tmp, tmp); + orc_neon_emit_unary_long (p, "vmovl.u8", 0xf3880a10, tmp, tmp); orc_neon_emit_binary (p, "vadd.i16", 0xf2100800, tmp, tmp, src); - ORC_ASM_CODE(p," vrshrn.u16 %s, %s, #%d\n", orc_neon_reg_name(dest), - orc_neon_reg_name_quad(tmp), 8); + ORC_ASM_CODE (p, " vrshrn.u16 %s, %s, #%d\n", orc_neon_reg_name (dest), + orc_neon_reg_name_quad (tmp), 8); orc_arm_emit (p, NEON_BINARY (0xf2880850, dest, 0, tmp)); - orc_neon_emit_unary_long (p, "vmovl.u8",0xf3880a10, dest, dest); + orc_neon_emit_unary_long (p, "vmovl.u8", 0xf3880a10, dest, dest); } else { - ORC_ASM_CODE(p," vrshrn.u16 %s, %s, #%d\n", orc_neon_reg_name(tmp), - orc_neon_reg_name_quad(src), 8); + ORC_ASM_CODE (p, " vrshrn.u16 %s, %s, #%d\n", orc_neon_reg_name (tmp), + orc_neon_reg_name_quad (src), 8); orc_arm_emit (p, NEON_BINARY (0xf2880850, tmp, 0, src)); - orc_neon_emit_unary_long (p, "vmovl.u8",0xf3880a10, tmp, tmp); + orc_neon_emit_unary_long (p, "vmovl.u8", 0xf3880a10, tmp, tmp); orc_neon_emit_binary_quad (p, "vadd.i16", 0xf2100800, tmp, tmp, src); - ORC_ASM_CODE(p," vrshrn.u16 %s, %s, #%d\n", orc_neon_reg_name(dest), - orc_neon_reg_name_quad(tmp), 8); + ORC_ASM_CODE (p, " vrshrn.u16 %s, %s, #%d\n", orc_neon_reg_name (dest), + orc_neon_reg_name_quad (tmp), 8); orc_arm_emit (p, NEON_BINARY (0xf2880850, dest, 0, tmp)); - orc_neon_emit_unary_long (p, "vmovl.u8",0xf3880a10, dest, dest); + orc_neon_emit_unary_long (p, "vmovl.u8", 0xf3880a10, dest, dest); } } void -orc_compiler_neon_register_rules (OrcTarget *target) +orc_compiler_neon_register_rules (OrcTarget * target) { OrcRuleSet *rule_set; - rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target, 0); + rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target, 0); #define REG(x) \ orc_rule_register (rule_set, #x , orc_neon_rule_ ## x, NULL) - REG(absb); - REG(addb); - REG(addssb); - REG(addusb); - REG(andb); + REG (absb); + REG (addb); + REG (addssb); + REG (addusb); + REG (andb); //REG(andnb); - REG(avgsb); - REG(avgub); - REG(cmpeqb); - REG(cmpgtsb); - REG(copyb); - REG(maxsb); - REG(maxub); - REG(minsb); - REG(minub); - REG(mullb); - REG(mulhsb); - REG(mulhub); - REG(orb); + REG (avgsb); + REG (avgub); + REG (cmpeqb); + REG (cmpgtsb); + REG (copyb); + REG (maxsb); + REG (maxub); + REG (minsb); + REG (minub); + REG (mullb); + REG (mulhsb); + REG (mulhub); + REG (orb); //REG(shlb); //REG(shrsb); //REG(shrub); - REG(signb); - REG(subb); - REG(subssb); - REG(subusb); - REG(xorb); - - REG(absw); - REG(addw); - REG(addssw); - REG(addusw); - REG(andw); + REG (signb); + REG (subb); + REG (subssb); + REG (subusb); + REG (xorb); + + REG (absw); + REG (addw); + REG (addssw); + REG (addusw); + REG (andw); //REG(andnw); - REG(avgsw); - REG(avguw); - REG(cmpeqw); - REG(cmpgtsw); - REG(copyw); - REG(maxsw); - REG(maxuw); - REG(minsw); - REG(minuw); - REG(mullw); - REG(mulhsw); - REG(mulhuw); - REG(orw); + REG (avgsw); + REG (avguw); + REG (cmpeqw); + REG (cmpgtsw); + REG (copyw); + REG (maxsw); + REG (maxuw); + REG (minsw); + REG (minuw); + REG (mullw); + REG (mulhsw); + REG (mulhuw); + REG (orw); //REG(shlw); //REG(shrsw); //REG(shruw); - REG(signw); - REG(subw); - REG(subssw); - REG(subusw); - REG(xorw); - - REG(absl); - REG(addl); - REG(addssl); - REG(addusl); - REG(andl); + REG (signw); + REG (subw); + REG (subssw); + REG (subusw); + REG (xorw); + + REG (absl); + REG (addl); + REG (addssl); + REG (addusl); + REG (andl); //REG(andnl); - REG(avgsl); - REG(avgul); - REG(cmpeql); - REG(cmpgtsl); - REG(copyl); - REG(maxsl); - REG(maxul); - REG(minsl); - REG(minul); - REG(mulll); - REG(mulhsl); - REG(mulhul); - REG(orl); + REG (avgsl); + REG (avgul); + REG (cmpeql); + REG (cmpgtsl); + REG (copyl); + REG (maxsl); + REG (maxul); + REG (minsl); + REG (minul); + REG (mulll); + REG (mulhsl); + REG (mulhul); + REG (orl); //REG(shll); //REG(shrsl); //REG(shrul); - REG(signl); - REG(subl); - REG(subssl); - REG(subusl); - REG(xorl); - - REG(addq); - REG(andq); - REG(orq); - REG(copyq); - REG(subq); - REG(xorq); - - REG(convsbw); - REG(convubw); - REG(convswl); - REG(convuwl); - REG(convslq); - REG(convulq); - REG(convlw); - REG(convql); - REG(convssslw); - REG(convsuslw); - REG(convuuslw); - REG(convsssql); - REG(convsusql); - REG(convuusql); - REG(convwb); - REG(convhwb); - REG(convhlw); - REG(convssswb); - REG(convsuswb); - REG(convuuswb); - - REG(mulsbw); - REG(mulubw); - REG(mulswl); - REG(muluwl); - - REG(accw); - REG(accl); - REG(accsadubl); - REG(swapw); - REG(swapl); - REG(swapq); - REG(swapwl); - REG(swaplq); - REG(select0wb); - REG(select1wb); - REG(select0lw); - REG(select1lw); - REG(select0ql); - if (0) REG(select1ql); - REG(mergebw); - REG(mergewl); - REG(mergelq); - REG(splitql); - REG(splitlw); - REG(splitwb); - - REG(addf); - REG(subf); - REG(mulf); - REG(divf); - REG(sqrtf); - REG(maxf); - REG(minf); - REG(cmpeqf); + REG (signl); + REG (subl); + REG (subssl); + REG (subusl); + REG (xorl); + + REG (addq); + REG (andq); + REG (orq); + REG (copyq); + REG (subq); + REG (xorq); + + REG (convsbw); + REG (convubw); + REG (convswl); + REG (convuwl); + REG (convslq); + REG (convulq); + REG (convlw); + REG (convql); + REG (convssslw); + REG (convsuslw); + REG (convuuslw); + REG (convsssql); + REG (convsusql); + REG (convuusql); + REG (convwb); + REG (convhwb); + REG (convhlw); + REG (convssswb); + REG (convsuswb); + REG (convuuswb); + + REG (mulsbw); + REG (mulubw); + REG (mulswl); + REG (muluwl); + + REG (accw); + REG (accl); + REG (accsadubl); + REG (swapw); + REG (swapl); + REG (swapq); + REG (swapwl); + REG (swaplq); + REG (select0wb); + REG (select1wb); + REG (select0lw); + REG (select1lw); + REG (select0ql); + if (0) + REG (select1ql); + REG (mergebw); + REG (mergewl); + REG (mergelq); + REG (splitql); + REG (splitlw); + REG (splitwb); + + REG (addf); + REG (subf); + REG (mulf); + REG (divf); + REG (sqrtf); + REG (maxf); + REG (minf); + REG (cmpeqf); //REG(cmpltf); //REG(cmplef); - REG(convfl); - REG(convlf); - - REG(addd); - REG(subd); - REG(muld); - REG(divd); - REG(sqrtd); + REG (convfl); + REG (convlf); + + REG (addd); + REG (subd); + REG (muld); + REG (divd); + REG (sqrtd); //REG(cmpeqd); - REG(convdf); - REG(convfd); - - REG(splatbw); - REG(splatbl); - REG(splatw3q); - REG(div255w); - - orc_rule_register (rule_set, "loadpb", neon_rule_loadpX, (void *)1); - orc_rule_register (rule_set, "loadpw", neon_rule_loadpX, (void *)2); - orc_rule_register (rule_set, "loadpl", neon_rule_loadpX, (void *)4); - orc_rule_register (rule_set, "loadpq", neon_rule_loadpX, (void *)8); - orc_rule_register (rule_set, "loadb", neon_rule_loadX, (void *)0); - orc_rule_register (rule_set, "loadw", neon_rule_loadX, (void *)0); - orc_rule_register (rule_set, "loadl", neon_rule_loadX, (void *)0); - orc_rule_register (rule_set, "loadq", neon_rule_loadX, (void *)0); - orc_rule_register (rule_set, "loadoffb", neon_rule_loadX, (void *)1); - orc_rule_register (rule_set, "loadoffw", neon_rule_loadX, (void *)1); - orc_rule_register (rule_set, "loadoffl", neon_rule_loadX, (void *)1); - orc_rule_register (rule_set, "storeb", neon_rule_storeX, (void *)0); - orc_rule_register (rule_set, "storew", neon_rule_storeX, (void *)0); - orc_rule_register (rule_set, "storel", neon_rule_storeX, (void *)0); - orc_rule_register (rule_set, "storeq", neon_rule_storeX, (void *)0); - - orc_rule_register (rule_set, "shlb", orc_neon_rule_shift, (void *)0); - orc_rule_register (rule_set, "shrsb", orc_neon_rule_shift, (void *)1); - orc_rule_register (rule_set, "shrub", orc_neon_rule_shift, (void *)2); - orc_rule_register (rule_set, "shlw", orc_neon_rule_shift, (void *)3); - orc_rule_register (rule_set, "shrsw", orc_neon_rule_shift, (void *)4); - orc_rule_register (rule_set, "shruw", orc_neon_rule_shift, (void *)5); - orc_rule_register (rule_set, "shll", orc_neon_rule_shift, (void *)6); - orc_rule_register (rule_set, "shrsl", orc_neon_rule_shift, (void *)7); - orc_rule_register (rule_set, "shrul", orc_neon_rule_shift, (void *)8); - - orc_rule_register (rule_set, "andnb", orc_neon_rule_andn, (void *)3); - orc_rule_register (rule_set, "andnw", orc_neon_rule_andn, (void *)2); - orc_rule_register (rule_set, "andnl", orc_neon_rule_andn, (void *)1); - orc_rule_register (rule_set, "andnq", orc_neon_rule_andn, (void *)0); + REG (convdf); + REG (convfd); + + REG (splatbw); + REG (splatbl); + REG (splatw3q); + REG (div255w); + + orc_rule_register (rule_set, "loadpb", neon_rule_loadpX, (void *) 1); + orc_rule_register (rule_set, "loadpw", neon_rule_loadpX, (void *) 2); + orc_rule_register (rule_set, "loadpl", neon_rule_loadpX, (void *) 4); + orc_rule_register (rule_set, "loadpq", neon_rule_loadpX, (void *) 8); + orc_rule_register (rule_set, "loadb", neon_rule_loadX, (void *) 0); + orc_rule_register (rule_set, "loadw", neon_rule_loadX, (void *) 0); + orc_rule_register (rule_set, "loadl", neon_rule_loadX, (void *) 0); + orc_rule_register (rule_set, "loadq", neon_rule_loadX, (void *) 0); + orc_rule_register (rule_set, "loadoffb", neon_rule_loadX, (void *) 1); + orc_rule_register (rule_set, "loadoffw", neon_rule_loadX, (void *) 1); + orc_rule_register (rule_set, "loadoffl", neon_rule_loadX, (void *) 1); + orc_rule_register (rule_set, "storeb", neon_rule_storeX, (void *) 0); + orc_rule_register (rule_set, "storew", neon_rule_storeX, (void *) 0); + orc_rule_register (rule_set, "storel", neon_rule_storeX, (void *) 0); + orc_rule_register (rule_set, "storeq", neon_rule_storeX, (void *) 0); + + orc_rule_register (rule_set, "shlb", orc_neon_rule_shift, (void *) 0); + orc_rule_register (rule_set, "shrsb", orc_neon_rule_shift, (void *) 1); + orc_rule_register (rule_set, "shrub", orc_neon_rule_shift, (void *) 2); + orc_rule_register (rule_set, "shlw", orc_neon_rule_shift, (void *) 3); + orc_rule_register (rule_set, "shrsw", orc_neon_rule_shift, (void *) 4); + orc_rule_register (rule_set, "shruw", orc_neon_rule_shift, (void *) 5); + orc_rule_register (rule_set, "shll", orc_neon_rule_shift, (void *) 6); + orc_rule_register (rule_set, "shrsl", orc_neon_rule_shift, (void *) 7); + orc_rule_register (rule_set, "shrul", orc_neon_rule_shift, (void *) 8); + + orc_rule_register (rule_set, "andnb", orc_neon_rule_andn, (void *) 3); + orc_rule_register (rule_set, "andnw", orc_neon_rule_andn, (void *) 2); + orc_rule_register (rule_set, "andnl", orc_neon_rule_andn, (void *) 1); + orc_rule_register (rule_set, "andnq", orc_neon_rule_andn, (void *) 0); } - diff --git a/orc/orcrules-sse.c b/orc/orcrules-sse.c index 260a4f9..85dea56 100644 --- a/orc/orcrules-sse.c +++ b/orc/orcrules-sse.c @@ -17,43 +17,43 @@ /* sse rules */ static void -sse_rule_loadpX (OrcCompiler *compiler, void *user, OrcInstruction *insn) +sse_rule_loadpX (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; int reg; - int size = ORC_PTR_TO_INT(user); + int size = ORC_PTR_TO_INT (user); if (src->vartype == ORC_VAR_TYPE_PARAM) { reg = dest->alloc; if (size == 8 && src->size == 8) { orc_x86_emit_mov_memoffset_sse (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[insn->src_args[0]]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[insn->src_args[0]]), compiler->exec_reg, reg, FALSE); #ifndef MMX orc_sse_emit_movhps_load_memoffset (compiler, - (int)ORC_STRUCT_OFFSET(OrcExecutor, - params[insn->src_args[0] + (ORC_VAR_T1 - ORC_VAR_P1)]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, + params[insn->src_args[0] + (ORC_VAR_T1 - ORC_VAR_P1)]), compiler->exec_reg, reg); - orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF(2,0,2,0), reg, reg); + orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF (2, 0, 2, 0), reg, reg); #else /* FIXME yes, I understand this is terrible */ orc_sse_emit_pinsrw_memoffset (compiler, 2, - (int)ORC_STRUCT_OFFSET(OrcExecutor, - params[insn->src_args[0] + (ORC_VAR_T1 - ORC_VAR_P1)]) + 0, + (int) ORC_STRUCT_OFFSET (OrcExecutor, + params[insn->src_args[0] + (ORC_VAR_T1 - ORC_VAR_P1)]) + 0, compiler->exec_reg, reg); orc_sse_emit_pinsrw_memoffset (compiler, 3, - (int)ORC_STRUCT_OFFSET(OrcExecutor, - params[insn->src_args[0] + (ORC_VAR_T1 - ORC_VAR_P1)]) + 2, + (int) ORC_STRUCT_OFFSET (OrcExecutor, + params[insn->src_args[0] + (ORC_VAR_T1 - ORC_VAR_P1)]) + 2, compiler->exec_reg, reg); #ifndef MMX - orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF(1,0,1,0), reg, reg); + orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF (1, 0, 1, 0), reg, reg); #endif #endif } else { orc_x86_emit_mov_memoffset_sse (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[insn->src_args[0]]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[insn->src_args[0]]), compiler->exec_reg, reg, FALSE); if (size < 8) { if (size == 1) { @@ -66,26 +66,26 @@ sse_rule_loadpX (OrcCompiler *compiler, void *user, OrcInstruction *insn) orc_sse_emit_pshufd (compiler, 0, reg, reg); #else if (size <= 2) { - orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF(0,0,0,0), reg, reg); + orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF (0, 0, 0, 0), reg, reg); } else { - orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF(1,0,1,0), reg, reg); + orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF (1, 0, 1, 0), reg, reg); } #endif } else { #ifndef MMX - orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF(1,0,1,0), reg, reg); + orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF (1, 0, 1, 0), reg, reg); #endif } } } else if (src->vartype == ORC_VAR_TYPE_CONST) { orc_sse_load_constant (compiler, dest->alloc, size, src->value.i); } else { - ORC_ASSERT(0); + ORC_ASSERT (0); } } static void -sse_rule_loadX (OrcCompiler *compiler, void *user, OrcInstruction *insn) +sse_rule_loadX (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; @@ -96,17 +96,18 @@ sse_rule_loadX (OrcCompiler *compiler, void *user, OrcInstruction *insn) if (src->ptr_register == 0) { int i = insn->src_args[0]; orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i]), compiler->exec_reg, compiler->gp_tmpreg); ptr_reg = compiler->gp_tmpreg; } else { ptr_reg = src->ptr_register; - } + } switch (src->size << compiler->loop_shift) { case 1: orc_x86_emit_mov_memoffset_reg (compiler, 1, offset, ptr_reg, compiler->gp_tmpreg); - orc_sse_emit_movd_load_register (compiler, compiler->gp_tmpreg, dest->alloc); + orc_sse_emit_movd_load_register (compiler, compiler->gp_tmpreg, + dest->alloc); break; case 2: orc_sse_emit_pxor (compiler, dest->alloc, dest->alloc); @@ -134,7 +135,7 @@ sse_rule_loadX (OrcCompiler *compiler, void *user, OrcInstruction *insn) } static void -sse_rule_loadoffX (OrcCompiler *compiler, void *user, OrcInstruction *insn) +sse_rule_loadoffX (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; @@ -142,27 +143,29 @@ sse_rule_loadoffX (OrcCompiler *compiler, void *user, OrcInstruction *insn) int offset = 0; if (compiler->vars[insn->src_args[1]].vartype != ORC_VAR_TYPE_CONST) { - orc_compiler_error (compiler, "code generation rule for %s only works with constant offset", + orc_compiler_error (compiler, + "code generation rule for %s only works with constant offset", insn->opcode->name); return; } offset = (compiler->offset + compiler->vars[insn->src_args[1]].value.i) * - src->size; + src->size; if (src->ptr_register == 0) { int i = insn->src_args[0]; orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i]), compiler->exec_reg, compiler->gp_tmpreg); ptr_reg = compiler->gp_tmpreg; } else { ptr_reg = src->ptr_register; - } + } switch (src->size << compiler->loop_shift) { case 1: orc_x86_emit_mov_memoffset_reg (compiler, 1, offset, ptr_reg, compiler->gp_tmpreg); - orc_sse_emit_movd_load_register (compiler, compiler->gp_tmpreg, dest->alloc); + orc_sse_emit_movd_load_register (compiler, compiler->gp_tmpreg, + dest->alloc); break; case 2: orc_sse_emit_pxor (compiler, dest->alloc, dest->alloc); @@ -181,7 +184,7 @@ sse_rule_loadoffX (OrcCompiler *compiler, void *user, OrcInstruction *insn) dest->alloc, src->is_aligned); break; default: - orc_compiler_error (compiler,"bad load size %d", + orc_compiler_error (compiler, "bad load size %d", src->size << compiler->loop_shift); break; } @@ -190,7 +193,7 @@ sse_rule_loadoffX (OrcCompiler *compiler, void *user, OrcInstruction *insn) } static void -sse_rule_loadupib (OrcCompiler *compiler, void *user, OrcInstruction *insn) +sse_rule_loadupib (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; @@ -202,12 +205,12 @@ sse_rule_loadupib (OrcCompiler *compiler, void *user, OrcInstruction *insn) if (src->ptr_register == 0) { int i = insn->src_args[0]; orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i]), compiler->exec_reg, compiler->gp_tmpreg); ptr_reg = compiler->gp_tmpreg; } else { ptr_reg = src->ptr_register; - } + } switch (src->size << compiler->loop_shift) { case 1: case 2: @@ -238,7 +241,7 @@ sse_rule_loadupib (OrcCompiler *compiler, void *user, OrcInstruction *insn) tmp, FALSE); break; default: - orc_compiler_error(compiler,"bad load size %d", + orc_compiler_error (compiler, "bad load size %d", src->size << compiler->loop_shift); break; } @@ -250,7 +253,7 @@ sse_rule_loadupib (OrcCompiler *compiler, void *user, OrcInstruction *insn) } static void -sse_rule_loadupdb (OrcCompiler *compiler, void *user, OrcInstruction *insn) +sse_rule_loadupdb (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; @@ -261,18 +264,19 @@ sse_rule_loadupdb (OrcCompiler *compiler, void *user, OrcInstruction *insn) if (src->ptr_register == 0) { int i = insn->src_args[0]; orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[i]), compiler->exec_reg, compiler->gp_tmpreg); ptr_reg = compiler->gp_tmpreg; } else { ptr_reg = src->ptr_register; - } + } switch (src->size << compiler->loop_shift) { case 1: case 2: orc_x86_emit_mov_memoffset_reg (compiler, 1, offset, ptr_reg, compiler->gp_tmpreg); - orc_sse_emit_movd_load_register (compiler, compiler->gp_tmpreg, dest->alloc); + orc_sse_emit_movd_load_register (compiler, compiler->gp_tmpreg, + dest->alloc); break; case 4: orc_sse_emit_pinsrw_memoffset (compiler, 0, offset, ptr_reg, dest->alloc); @@ -290,7 +294,7 @@ sse_rule_loadupdb (OrcCompiler *compiler, void *user, OrcInstruction *insn) dest->alloc, src->is_aligned); break; default: - orc_compiler_error(compiler,"bad load size %d", + orc_compiler_error (compiler, "bad load size %d", src->size << compiler->loop_shift); break; } @@ -310,7 +314,7 @@ sse_rule_loadupdb (OrcCompiler *compiler, void *user, OrcInstruction *insn) } static void -sse_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn) +sse_rule_storeX (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; @@ -321,10 +325,10 @@ sse_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn) if (dest->ptr_register == 0) { orc_x86_emit_mov_memoffset_reg (compiler, compiler->is_64bit ? 8 : 4, dest->ptr_offset, compiler->exec_reg, compiler->gp_tmpreg); - ptr_reg = compiler->gp_tmpreg; + ptr_reg = compiler->gp_tmpreg; } else { ptr_reg = dest->ptr_register; - } + } switch (dest->size << compiler->loop_shift) { case 1: /* FIXME we might be using ecx twice here */ @@ -332,9 +336,10 @@ sse_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn) orc_compiler_error (compiler, "unimplemented corner case in %s", insn->opcode->name); } - orc_sse_emit_movd_store_register (compiler, src->alloc, compiler->gp_tmpreg); - orc_x86_emit_mov_reg_memoffset (compiler, 1, compiler->gp_tmpreg, - offset, ptr_reg); + orc_sse_emit_movd_store_register (compiler, src->alloc, + compiler->gp_tmpreg); + orc_x86_emit_mov_reg_memoffset (compiler, 1, compiler->gp_tmpreg, offset, + ptr_reg); break; case 2: if (compiler->target_flags & ORC_TARGET_SSE_SSE4_1) { @@ -343,10 +348,11 @@ sse_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn) } else { /* FIXME we might be using ecx twice here */ if (ptr_reg == compiler->gp_tmpreg) { - orc_compiler_error(compiler, "unimplemented corner case in %s", + orc_compiler_error (compiler, "unimplemented corner case in %s", insn->opcode->name); - } - orc_sse_emit_movd_store_register (compiler, src->alloc, compiler->gp_tmpreg); + } + orc_sse_emit_movd_store_register (compiler, src->alloc, + compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 2, compiler->gp_tmpreg, offset, ptr_reg); } @@ -373,7 +379,7 @@ sse_rule_storeX (OrcCompiler *compiler, void *user, OrcInstruction *insn) #if try1 static void -sse_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn) +sse_rule_ldresnearl (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; OrcVariable *dest = compiler->vars + insn->dest_args[0]; @@ -408,7 +414,7 @@ sse_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn) orc_sse_emit_paddb (compiler, tmp, tmp); #endif - orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF(0,0,0,0), tmp, tmp2); + orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF (0, 0, 0, 0), tmp, tmp2); orc_sse_emit_psubd (compiler, tmp2, tmp); tmpc = orc_compiler_get_constant (compiler, 4, 0x03020100); orc_sse_emit_paddd (compiler, tmpc, tmp); @@ -425,7 +431,7 @@ sse_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn) #endif static void -sse_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn) +sse_rule_ldresnearl (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; int increment_var = insn->src_args[2]; @@ -433,7 +439,7 @@ sse_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn) int tmp = orc_compiler_get_temp_reg (compiler); int i; - for(i=0;i<(1<<compiler->loop_shift);i++){ + for (i = 0; i < (1 << compiler->loop_shift); i++) { if (i == 0) { orc_x86_emit_mov_memoffset_sse (compiler, 4, 0, src->ptr_register, dest->alloc, FALSE); @@ -442,31 +448,30 @@ sse_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn) src->ptr_register, compiler->gp_tmpreg, 2, tmp, FALSE); #ifdef MMX //orc_mmx_emit_punpckldq (compiler, tmp, dest->alloc); - orc_sse_emit_psllq_imm (compiler, 8*4*i, tmp); + orc_sse_emit_psllq_imm (compiler, 8 * 4 * i, tmp); orc_sse_emit_por (compiler, tmp, dest->alloc); #else - orc_sse_emit_pslldq_imm (compiler, 4*i, tmp); + orc_sse_emit_pslldq_imm (compiler, 4 * i, tmp); orc_sse_emit_por (compiler, tmp, dest->alloc); #endif } if (compiler->vars[increment_var].vartype == ORC_VAR_TYPE_PARAM) { orc_x86_emit_add_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[increment_var]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[increment_var]), compiler->exec_reg, src->ptr_offset); } else { orc_x86_emit_add_imm_reg (compiler, 4, - compiler->vars[increment_var].value.i, - src->ptr_offset, FALSE); + compiler->vars[increment_var].value.i, src->ptr_offset, FALSE); } - orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, compiler->gp_tmpreg); + orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, + compiler->gp_tmpreg); orc_x86_emit_sar_imm_reg (compiler, 4, 16, compiler->gp_tmpreg); } orc_x86_emit_add_reg_reg_shift (compiler, compiler->is_64bit ? 8 : 4, - compiler->gp_tmpreg, - src->ptr_register, 2); + compiler->gp_tmpreg, src->ptr_register, 2); orc_x86_emit_and_imm_reg (compiler, 4, 0xffff, src->ptr_offset); src->update_type = 0; @@ -474,7 +479,7 @@ sse_rule_ldresnearl (OrcCompiler *compiler, void *user, OrcInstruction *insn) #ifndef MMX static void -sse_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) +sse_rule_ldreslinl (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; int increment_var = insn->src_args[2]; @@ -490,11 +495,11 @@ sse_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) orc_sse_emit_pxor (compiler, tmp2, tmp2); orc_sse_emit_punpcklbw (compiler, tmp2, tmp); - orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF(3,2,3,2), tmp, tmp2); + orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF (3, 2, 3, 2), tmp, tmp2); orc_sse_emit_psubw (compiler, tmp, tmp2); orc_sse_emit_movd_load_register (compiler, src->ptr_offset, tmp); - orc_sse_emit_pshuflw (compiler, ORC_SSE_SHUF(0,0,0,0), tmp, tmp); + orc_sse_emit_pshuflw (compiler, ORC_SSE_SHUF (0, 0, 0, 0), tmp, tmp); orc_sse_emit_psrlw_imm (compiler, 8, tmp); orc_sse_emit_pmullw (compiler, tmp2, tmp); orc_sse_emit_psraw_imm (compiler, 8, tmp); @@ -507,15 +512,15 @@ sse_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) if (compiler->vars[increment_var].vartype == ORC_VAR_TYPE_PARAM) { orc_x86_emit_add_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[increment_var]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[increment_var]), compiler->exec_reg, src->ptr_offset); } else { orc_x86_emit_add_imm_reg (compiler, regsize, - compiler->vars[increment_var].value.i, - src->ptr_offset, FALSE); + compiler->vars[increment_var].value.i, src->ptr_offset, FALSE); } - orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, compiler->gp_tmpreg); + orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, + compiler->gp_tmpreg); orc_x86_emit_sar_imm_reg (compiler, 4, 16, compiler->gp_tmpreg); orc_x86_emit_add_reg_reg_shift (compiler, regsize, compiler->gp_tmpreg, @@ -525,21 +530,21 @@ sse_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) int tmp3 = orc_compiler_get_temp_reg (compiler); int tmp4 = orc_compiler_get_temp_reg (compiler); - for(i=0;i<(1<<compiler->loop_shift);i+=2){ + for (i = 0; i < (1 << compiler->loop_shift); i += 2) { orc_x86_emit_mov_memoffset_sse (compiler, 8, 0, src->ptr_register, tmp, FALSE); orc_sse_emit_movd_load_register (compiler, src->ptr_offset, tmp4); if (compiler->vars[increment_var].vartype == ORC_VAR_TYPE_PARAM) { orc_x86_emit_add_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[increment_var]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[increment_var]), compiler->exec_reg, src->ptr_offset); } else { orc_x86_emit_add_imm_reg (compiler, 4, - compiler->vars[increment_var].value.i, - src->ptr_offset, FALSE); + compiler->vars[increment_var].value.i, src->ptr_offset, FALSE); } - orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, compiler->gp_tmpreg); + orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, + compiler->gp_tmpreg); orc_x86_emit_sar_imm_reg (compiler, 4, 16, compiler->gp_tmpreg); orc_x86_emit_mov_memindex_sse (compiler, 8, 0, @@ -565,8 +570,8 @@ sse_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) orc_sse_emit_punpcklwd (compiler, tmp4, tmp4); orc_sse_emit_punpckldq (compiler, tmp4, tmp4); #else - orc_sse_emit_pshuflw (compiler, ORC_SSE_SHUF(1,1,0,0), tmp4, tmp4); - orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF(1,1,0,0), tmp4, tmp4); + orc_sse_emit_pshuflw (compiler, ORC_SSE_SHUF (1, 1, 0, 0), tmp4, tmp4); + orc_sse_emit_pshufd (compiler, ORC_SSE_SHUF (1, 1, 0, 0), tmp4, tmp4); #endif orc_sse_emit_psrlw_imm (compiler, 8, tmp4); orc_sse_emit_pmullw (compiler, tmp4, tmp2); @@ -581,15 +586,15 @@ sse_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) if (compiler->vars[increment_var].vartype == ORC_VAR_TYPE_PARAM) { orc_x86_emit_add_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[increment_var]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[increment_var]), compiler->exec_reg, src->ptr_offset); } else { orc_x86_emit_add_imm_reg (compiler, 4, - compiler->vars[increment_var].value.i, - src->ptr_offset, FALSE); + compiler->vars[increment_var].value.i, src->ptr_offset, FALSE); } - orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, compiler->gp_tmpreg); + orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, + compiler->gp_tmpreg); orc_x86_emit_sar_imm_reg (compiler, 4, 16, compiler->gp_tmpreg); orc_x86_emit_add_reg_reg_shift (compiler, 8, compiler->gp_tmpreg, @@ -602,7 +607,7 @@ sse_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) } #else static void -mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) +mmx_rule_ldreslinl (OrcCompiler * compiler, void *user, OrcInstruction * insn) { OrcVariable *src = compiler->vars + insn->src_args[0]; int increment_var = insn->src_args[2]; @@ -614,7 +619,7 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) int i; zero = orc_compiler_get_constant (compiler, 1, 0); - for(i=0;i<(1<<compiler->loop_shift);i++){ + for (i = 0; i < (1 << compiler->loop_shift); i++) { orc_x86_emit_mov_memoffset_mmx (compiler, 4, 0, src->ptr_register, tmp, FALSE); orc_x86_emit_mov_memoffset_mmx (compiler, 4, 4, @@ -625,7 +630,7 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) orc_mmx_emit_psubw (compiler, tmp, tmp2); orc_sse_emit_movd_load_register (compiler, src->ptr_offset, tmp); - orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF(0,0,0,0), tmp, tmp); + orc_mmx_emit_pshufw (compiler, ORC_MMX_SHUF (0, 0, 0, 0), tmp, tmp); orc_mmx_emit_psrlw_imm (compiler, 8, tmp); orc_mmx_emit_pmullw (compiler, tmp2, tmp); orc_mmx_emit_psraw_imm (compiler, 8, tmp); @@ -646,15 +651,15 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) if (compiler->vars[increment_var].vartype == ORC_VAR_TYPE_PARAM) { orc_x86_emit_add_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[increment_var]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[increment_var]), compiler->exec_reg, src->ptr_offset); } else { orc_x86_emit_add_imm_reg (compiler, regsize, - compiler->vars[increment_var].value.i, - src->ptr_offset, FALSE); + compiler->vars[increment_var].value.i, src->ptr_offset, FALSE); } - orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, compiler->gp_tmpreg); + orc_x86_emit_mov_reg_reg (compiler, 4, src->ptr_offset, + compiler->gp_tmpreg); orc_x86_emit_sar_imm_reg (compiler, 4, 16, compiler->gp_tmpreg); orc_x86_emit_add_reg_reg_shift (compiler, regsize, compiler->gp_tmpreg, @@ -667,15 +672,14 @@ mmx_rule_ldreslinl (OrcCompiler *compiler, void *user, OrcInstruction *insn) #endif static void -sse_rule_copyx (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_copyx (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->vars[insn->src_args[0]].alloc == p->vars[insn->dest_args[0]].alloc) { return; } orc_sse_emit_movdqa (p, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[0]].alloc, p->vars[insn->dest_args[0]].alloc); } #define UNARY(opcode,insn_name,code) \ @@ -697,89 +701,87 @@ sse_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \ } -UNARY(absb,pabsb,0x381c) -BINARY(addb,paddb,0xfc) -BINARY(addssb,paddsb,0xec) -BINARY(addusb,paddusb,0xdc) -BINARY(andb,pand,0xdb) -BINARY(andnb,pandn,0xdf) -BINARY(avgub,pavgb,0xe0) -BINARY(cmpeqb,pcmpeqb,0x74) -BINARY(cmpgtsb,pcmpgtb,0x64) -BINARY(maxsb,pmaxsb,0x383c) -BINARY(maxub,pmaxub,0xde) -BINARY(minsb,pminsb,0x3838) -BINARY(minub,pminub,0xda) +UNARY (absb, pabsb, 0x381c) + BINARY (addb, paddb, 0xfc) + BINARY (addssb, paddsb, 0xec) + BINARY (addusb, paddusb, 0xdc) + BINARY (andb, pand, 0xdb) + BINARY (andnb, pandn, 0xdf) + BINARY (avgub, pavgb, 0xe0) + BINARY (cmpeqb, pcmpeqb, 0x74) + BINARY (cmpgtsb, pcmpgtb, 0x64) + BINARY (maxsb, pmaxsb, 0x383c) + BINARY (maxub, pmaxub, 0xde) + BINARY (minsb, pminsb, 0x3838) + BINARY (minub, pminub, 0xda) //BINARY(mullb,pmullb,0xd5) //BINARY(mulhsb,pmulhb,0xe5) //BINARY(mulhub,pmulhub,0xe4) -BINARY(orb,por,0xeb) + BINARY (orb, por, 0xeb) //UNARY(signb,psignb,0x3808) -BINARY(subb,psubb,0xf8) -BINARY(subssb,psubsb,0xe8) -BINARY(subusb,psubusb,0xd8) -BINARY(xorb,pxor,0xef) - -UNARY(absw,pabsw,0x381d) -BINARY(addw,paddw,0xfd) -BINARY(addssw,paddsw,0xed) -BINARY(addusw,paddusw,0xdd) -BINARY(andw,pand,0xdb) -BINARY(andnw,pandn,0xdf) -BINARY(avguw,pavgw,0xe3) -BINARY(cmpeqw,pcmpeqw,0x75) -BINARY(cmpgtsw,pcmpgtw,0x65) -BINARY(maxsw,pmaxsw,0xee) -BINARY(maxuw,pmaxuw,0x383e) -BINARY(minsw,pminsw,0xea) -BINARY(minuw,pminuw,0x383a) -BINARY(mullw,pmullw,0xd5) -BINARY(mulhsw,pmulhw,0xe5) -BINARY(mulhuw,pmulhuw,0xe4) -BINARY(orw,por,0xeb) + BINARY (subb, psubb, 0xf8) + BINARY (subssb, psubsb, 0xe8) + BINARY (subusb, psubusb, 0xd8) + BINARY (xorb, pxor, 0xef) + + UNARY (absw, pabsw, 0x381d) + BINARY (addw, paddw, 0xfd) + BINARY (addssw, paddsw, 0xed) + BINARY (addusw, paddusw, 0xdd) + BINARY (andw, pand, 0xdb) + BINARY (andnw, pandn, 0xdf) + BINARY (avguw, pavgw, 0xe3) + BINARY (cmpeqw, pcmpeqw, 0x75) + BINARY (cmpgtsw, pcmpgtw, 0x65) + BINARY (maxsw, pmaxsw, 0xee) + BINARY (maxuw, pmaxuw, 0x383e) + BINARY (minsw, pminsw, 0xea) + BINARY (minuw, pminuw, 0x383a) + BINARY (mullw, pmullw, 0xd5) + BINARY (mulhsw, pmulhw, 0xe5) + BINARY (mulhuw, pmulhuw, 0xe4) + BINARY (orw, por, 0xeb) //UNARY(signw,psignw,0x3809) -BINARY(subw,psubw,0xf9) -BINARY(subssw,psubsw,0xe9) -BINARY(subusw,psubusw,0xd9) -BINARY(xorw,pxor,0xef) + BINARY (subw, psubw, 0xf9) + BINARY (subssw, psubsw, 0xe9) + BINARY (subusw, psubusw, 0xd9) + BINARY (xorw, pxor, 0xef) -UNARY(absl,pabsd,0x381e) -BINARY(addl,paddd,0xfe) + UNARY (absl, pabsd, 0x381e) + BINARY (addl, paddd, 0xfe) //BINARY(addssl,paddsd,0xed) //BINARY(addusl,paddusd,0xdd) -BINARY(andl,pand,0xdb) -BINARY(andnl,pandn,0xdf) + BINARY (andl, pand, 0xdb) + BINARY (andnl, pandn, 0xdf) //BINARY(avgul,pavgd,0xe3) -BINARY(cmpeql,pcmpeqd,0x76) -BINARY(cmpgtsl,pcmpgtd,0x66) -BINARY(maxsl,pmaxsd,0x383d) -BINARY(maxul,pmaxud,0x383f) -BINARY(minsl,pminsd,0x3839) -BINARY(minul,pminud,0x383b) -BINARY(mulll,pmulld,0x3840) + BINARY (cmpeql, pcmpeqd, 0x76) + BINARY (cmpgtsl, pcmpgtd, 0x66) + BINARY (maxsl, pmaxsd, 0x383d) + BINARY (maxul, pmaxud, 0x383f) + BINARY (minsl, pminsd, 0x3839) + BINARY (minul, pminud, 0x383b) + BINARY (mulll, pmulld, 0x3840) //BINARY(mulhsl,pmulhd,0xe5) //BINARY(mulhul,pmulhud,0xe4) -BINARY(orl,por,0xeb) + BINARY (orl, por, 0xeb) //UNARY(signl,psignd,0x380a) -BINARY(subl,psubd,0xfa) + BINARY (subl, psubd, 0xfa) //BINARY(subssl,psubsd,0xe9) //BINARY(subusl,psubusd,0xd9) -BINARY(xorl,pxor,0xef) - -BINARY(andq,pand,0xdb) -BINARY(andnq,pandn,0xdf) -BINARY(orq,por,0xeb) -BINARY(xorq,pxor,0xef) -BINARY(cmpeqq,pcmpeqq,0x3829) -BINARY(cmpgtsq,pcmpgtq,0x3837) - + BINARY (xorl, pxor, 0xef) + + BINARY (andq, pand, 0xdb) + BINARY (andnq, pandn, 0xdf) + BINARY (orq, por, 0xeb) + BINARY (xorq, pxor, 0xef) + BINARY (cmpeqq, pcmpeqq, 0x3829) + BINARY (cmpgtsq, pcmpgtq, 0x3837) #ifndef MMX -BINARY(addq,paddq,0xd4) -BINARY(subq,psubq,0xfb) + BINARY (addq, paddq, 0xd4) + BINARY (subq, psubq, 0xfb) #endif - -static void -sse_rule_accw (OrcCompiler *p, void *user, OrcInstruction *insn) + static void + sse_rule_accw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -788,7 +790,7 @@ sse_rule_accw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_accl (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_accl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -802,7 +804,7 @@ sse_rule_accl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_accsadubl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src1 = p->vars[insn->src_args[0]].alloc; int src2 = p->vars[insn->src_args[1]].alloc; @@ -813,9 +815,9 @@ sse_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn) #ifndef MMX if (p->loop_shift <= 2) { orc_sse_emit_movdqa (p, src1, tmp); - orc_sse_emit_pslldq_imm (p, 16 - (1<<p->loop_shift), tmp); + orc_sse_emit_pslldq_imm (p, 16 - (1 << p->loop_shift), tmp); orc_sse_emit_movdqa (p, src2, tmp2); - orc_sse_emit_pslldq_imm (p, 16 - (1<<p->loop_shift), tmp2); + orc_sse_emit_pslldq_imm (p, 16 - (1 << p->loop_shift), tmp2); orc_sse_emit_psadbw (p, tmp2, tmp); } else if (p->loop_shift == 3) { orc_sse_emit_movdqa (p, src1, tmp); @@ -828,9 +830,9 @@ sse_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn) #else if (p->loop_shift <= 2) { orc_sse_emit_movdqa (p, src1, tmp); - orc_sse_emit_psllq_imm (p, 8*(8 - (1<<p->loop_shift)), tmp); + orc_sse_emit_psllq_imm (p, 8 * (8 - (1 << p->loop_shift)), tmp); orc_sse_emit_movdqa (p, src2, tmp2); - orc_sse_emit_psllq_imm (p, 8*(8 - (1<<p->loop_shift)), tmp2); + orc_sse_emit_psllq_imm (p, 8 * (8 - (1 << p->loop_shift)), tmp2); orc_sse_emit_psadbw (p, tmp2, tmp); } else { orc_sse_emit_movdqa (p, src1, tmp); @@ -842,15 +844,15 @@ sse_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn) #ifndef MMX static void -sse_rule_signX_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_signX_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; int opcodes[] = { ORC_X86_psignb, ORC_X86_psignw, ORC_X86_psignd }; - int type = ORC_PTR_TO_INT(user); + int type = ORC_PTR_TO_INT (user); int tmpc; - tmpc = orc_compiler_get_temp_constant (p, 1<<type, 1); + tmpc = orc_compiler_get_temp_constant (p, 1 << type, 1); if (src == dest) { orc_x86_emit_cpuinsn_size (p, opcodes[type], 16, src, tmpc); orc_sse_emit_movdqa (p, tmpc, dest); @@ -863,7 +865,7 @@ sse_rule_signX_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) #endif static void -sse_rule_signw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_signw_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -876,7 +878,7 @@ sse_rule_signw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_absb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_absb_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -889,7 +891,7 @@ sse_rule_absb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_absw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_absw_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -909,7 +911,7 @@ sse_rule_absw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_absl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_absl_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -929,19 +931,21 @@ sse_rule_absl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_shift (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_shift (OrcCompiler * p, void *user, OrcInstruction * insn) { - int type = ORC_PTR_TO_INT(user); + int type = ORC_PTR_TO_INT (user); //int imm_code1[] = { 0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x73, 0x73 }; //int imm_code2[] = { 6, 2, 4, 6, 2, 4, 6, 2 }; //int reg_code[] = { 0xf1, 0xd1, 0xe1, 0xf2, 0xd2, 0xe2, 0xf3, 0xd3 }; //const char *code[] = { "psllw", "psrlw", "psraw", "pslld", "psrld", "psrad", "psllq", "psrlq" }; const int opcodes[] = { ORC_X86_psllw, ORC_X86_psrlw, ORC_X86_psraw, ORC_X86_pslld, ORC_X86_psrld, ORC_X86_psrad, ORC_X86_psllq, - ORC_X86_psrlq }; + ORC_X86_psrlq + }; const int opcodes_imm[] = { ORC_X86_psllw_imm, ORC_X86_psrlw_imm, ORC_X86_psraw_imm, ORC_X86_pslld_imm, ORC_X86_psrld_imm, - ORC_X86_psrad_imm, ORC_X86_psllq_imm, ORC_X86_psrlq_imm }; + ORC_X86_psrad_imm, ORC_X86_psllq_imm, ORC_X86_psrlq_imm + }; if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) { orc_x86_emit_cpuinsn_imm (p, opcodes_imm[type], @@ -953,7 +957,7 @@ sse_rule_shift (OrcCompiler *p, void *user, OrcInstruction *insn) /* FIXME this is a gross hack to reload the register with a * 64-bit version of the parameter. */ orc_x86_emit_mov_memoffset_sse (p, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor, params[insn->src_args[1]]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[insn->src_args[1]]), p->exec_reg, tmp, FALSE); orc_x86_emit_cpuinsn_size (p, opcodes[type], 16, tmp, @@ -966,7 +970,7 @@ sse_rule_shift (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_shlb (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_shlb (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -974,7 +978,7 @@ sse_rule_shlb (OrcCompiler *p, void *user, OrcInstruction *insn) if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) { orc_sse_emit_psllw_imm (p, p->vars[insn->src_args[1]].value.i, dest); tmp = orc_compiler_get_constant (p, 1, - 0xff&(0xff<<p->vars[insn->src_args[1]].value.i)); + 0xff & (0xff << p->vars[insn->src_args[1]].value.i)); orc_sse_emit_pand (p, tmp, dest); } else { orc_compiler_error (p, "code generation rule for %s only works with " @@ -984,7 +988,7 @@ sse_rule_shlb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_shrsb (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_shrsb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1008,7 +1012,7 @@ sse_rule_shrsb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_shrub (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_shrub (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -1016,7 +1020,7 @@ sse_rule_shrub (OrcCompiler *p, void *user, OrcInstruction *insn) if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) { orc_sse_emit_psrlw_imm (p, p->vars[insn->src_args[1]].value.i, dest); tmp = orc_compiler_get_constant (p, 1, - (0xff>>p->vars[insn->src_args[1]].value.i)); + (0xff >> p->vars[insn->src_args[1]].value.i)); orc_sse_emit_pand (p, tmp, dest); } else { orc_compiler_error (p, "code generation rule for %s only works with " @@ -1026,7 +1030,7 @@ sse_rule_shrub (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_shrsq (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_shrsq (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1034,12 +1038,12 @@ sse_rule_shrsq (OrcCompiler *p, void *user, OrcInstruction *insn) if (p->vars[insn->src_args[1]].vartype == ORC_VAR_TYPE_CONST) { #ifndef MMX - orc_sse_emit_pshufd (p, ORC_SSE_SHUF(3,3,1,1), src, tmp); + orc_sse_emit_pshufd (p, ORC_SSE_SHUF (3, 3, 1, 1), src, tmp); #else - orc_mmx_emit_pshufw (p, ORC_MMX_SHUF(3,2,3,2), src, tmp); + orc_mmx_emit_pshufw (p, ORC_MMX_SHUF (3, 2, 3, 2), src, tmp); #endif orc_sse_emit_psrad_imm (p, 31, tmp); - orc_sse_emit_psllq_imm (p, 64-p->vars[insn->src_args[1]].value.i, tmp); + orc_sse_emit_psllq_imm (p, 64 - p->vars[insn->src_args[1]].value.i, tmp); orc_sse_emit_psrlq_imm (p, p->vars[insn->src_args[1]].value.i, dest); orc_sse_emit_por (p, tmp, dest); @@ -1051,7 +1055,7 @@ sse_rule_shrsq (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_convsbw (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convsbw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1061,7 +1065,7 @@ sse_rule_convsbw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_convubw (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convubw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1072,13 +1076,13 @@ sse_rule_convubw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_sse_emit_punpcklbw (p, src, dest); orc_sse_emit_psrlw_imm (p, 8, dest); } else { - orc_sse_emit_pxor(p, tmp, tmp); + orc_sse_emit_pxor (p, tmp, tmp); orc_sse_emit_punpcklbw (p, tmp, dest); } } static void -sse_rule_convssswb (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convssswb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1087,7 +1091,7 @@ sse_rule_convssswb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_convsuswb (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convsuswb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1096,7 +1100,7 @@ sse_rule_convsuswb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_convuuswb (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convuuswb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1113,7 +1117,7 @@ sse_rule_convuuswb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_convwb (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convwb (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; @@ -1123,7 +1127,7 @@ sse_rule_convwb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_convhwb (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convhwb (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; @@ -1132,7 +1136,7 @@ sse_rule_convhwb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_convswl (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convswl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1142,7 +1146,7 @@ sse_rule_convswl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_convuwl (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convuwl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1153,13 +1157,13 @@ sse_rule_convuwl (OrcCompiler *p, void *user, OrcInstruction *insn) orc_sse_emit_punpcklwd (p, src, dest); orc_sse_emit_psrld_imm (p, 16, dest); } else { - orc_sse_emit_pxor(p, tmp, tmp); + orc_sse_emit_pxor (p, tmp, tmp); orc_sse_emit_punpcklwd (p, tmp, dest); } } static void -sse_rule_convlw (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convlw (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; @@ -1169,7 +1173,7 @@ sse_rule_convlw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_convhlw (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convhlw (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; @@ -1178,7 +1182,7 @@ sse_rule_convhlw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_convssslw (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convssslw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1187,7 +1191,7 @@ sse_rule_convssslw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_convsuslw (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convsuslw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1196,7 +1200,7 @@ sse_rule_convsuslw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_convslq (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convslq (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1208,7 +1212,7 @@ sse_rule_convslq (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_convulq (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convulq (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -1218,33 +1222,33 @@ sse_rule_convulq (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_convql (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convql (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; #ifndef MMX - orc_sse_emit_pshufd (p, ORC_SSE_SHUF(2,0,2,0), src, dest); + orc_sse_emit_pshufd (p, ORC_SSE_SHUF (2, 0, 2, 0), src, dest); #else orc_sse_emit_movdqa (p, src, dest); #endif } static void -sse_rule_splatw3q (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_splatw3q (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; #ifndef MMX - orc_sse_emit_pshuflw (p, ORC_SSE_SHUF(3,3,3,3), dest, dest); - orc_sse_emit_pshufhw (p, ORC_SSE_SHUF(3,3,3,3), dest, dest); + orc_sse_emit_pshuflw (p, ORC_SSE_SHUF (3, 3, 3, 3), dest, dest); + orc_sse_emit_pshufhw (p, ORC_SSE_SHUF (3, 3, 3, 3), dest, dest); #else - orc_mmx_emit_pshufw (p, ORC_SSE_SHUF(3,3,3,3), dest, dest); + orc_mmx_emit_pshufw (p, ORC_SSE_SHUF (3, 3, 3, 3), dest, dest); #endif } static void -sse_rule_splatbw (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_splatbw (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; @@ -1252,7 +1256,7 @@ sse_rule_splatbw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_splatbl (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_splatbl (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; @@ -1261,7 +1265,7 @@ sse_rule_splatbl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_div255w (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_div255w (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp = orc_compiler_get_temp_reg (p); @@ -1277,7 +1281,7 @@ sse_rule_div255w (OrcCompiler *p, void *user, OrcInstruction *insn) #if 1 static void -sse_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_divluw (OrcCompiler * p, void *user, OrcInstruction * insn) { /* About 5.2 cycles per array member on ginger */ int src = p->vars[insn->src_args[1]].alloc; @@ -1301,7 +1305,7 @@ sse_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_sse_emit_pxor (p, tmp, dest); - for(i=0;i<7;i++){ + for (i = 0; i < 7; i++) { orc_sse_emit_movdqa (p, divisor, l); orc_sse_emit_pxor (p, tmp, l); orc_sse_emit_pcmpgtw (p, dest, l); @@ -1310,11 +1314,11 @@ sse_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_sse_emit_psubw (p, l, dest); orc_sse_emit_psrlw_imm (p, 1, divisor); - orc_sse_emit_pand (p, j, j2); - orc_sse_emit_pxor (p, j2, a); - orc_sse_emit_psrlw_imm (p, 1, j); + orc_sse_emit_pand (p, j, j2); + orc_sse_emit_pxor (p, j2, a); + orc_sse_emit_psrlw_imm (p, 1, j); } - + orc_sse_emit_movdqa (p, divisor, l); orc_sse_emit_pxor (p, tmp, l); orc_sse_emit_pcmpgtw (p, dest, l); @@ -1325,7 +1329,7 @@ sse_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn) } #else static void -sse_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_divluw (OrcCompiler * p, void *user, OrcInstruction * insn) { /* About 8.4 cycles per array member on ginger */ int src = p->vars[insn->src_args[1]].alloc; @@ -1348,7 +1352,7 @@ sse_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn) orc_sse_emit_movdqa (p, tmp, j); orc_sse_emit_psrlw_imm (p, 8, j); - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { orc_sse_emit_por (p, j, a); orc_sse_emit_movdqa (p, a, k); orc_sse_emit_pmullw (p, src, k); @@ -1364,7 +1368,7 @@ sse_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn) #endif static void -sse_rule_mulsbw (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_mulsbw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1378,7 +1382,7 @@ sse_rule_mulsbw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_mulubw (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_mulubw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1392,7 +1396,7 @@ sse_rule_mulubw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_mullb (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_mullb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1415,7 +1419,7 @@ sse_rule_mullb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_mulhsb (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_mulhsb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1443,7 +1447,7 @@ sse_rule_mulhsb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_mulhub (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_mulhub (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1471,7 +1475,7 @@ sse_rule_mulhub (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_mulswl (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_mulswl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1484,7 +1488,7 @@ sse_rule_mulswl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_muluwl (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_muluwl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1497,22 +1501,22 @@ sse_rule_muluwl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_mulll_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_mulll_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int i; - int offset = ORC_STRUCT_OFFSET(OrcExecutor,arrays[ORC_VAR_T1]); + int offset = ORC_STRUCT_OFFSET (OrcExecutor, arrays[ORC_VAR_T1]); orc_x86_emit_mov_sse_memoffset (p, 16, p->vars[insn->src_args[0]].alloc, offset, p->exec_reg, FALSE, FALSE); orc_x86_emit_mov_sse_memoffset (p, 16, p->vars[insn->src_args[1]].alloc, offset + 16, p->exec_reg, FALSE, FALSE); - for(i=0;i<(1<<p->insn_shift);i++) { - orc_x86_emit_mov_memoffset_reg (p, 4, offset + 4*i, p->exec_reg, + for (i = 0; i < (1 << p->insn_shift); i++) { + orc_x86_emit_mov_memoffset_reg (p, 4, offset + 4 * i, p->exec_reg, p->gp_tmpreg); - orc_x86_emit_imul_memoffset_reg (p, 4, offset + 16+4*i, p->exec_reg, + orc_x86_emit_imul_memoffset_reg (p, 4, offset + 16 + 4 * i, p->exec_reg, p->gp_tmpreg); - orc_x86_emit_mov_reg_memoffset (p, 4, p->gp_tmpreg, offset + 4*i, + orc_x86_emit_mov_reg_memoffset (p, 4, p->gp_tmpreg, offset + 4 * i, p->exec_reg); } @@ -1522,30 +1526,30 @@ sse_rule_mulll_slow (OrcCompiler *p, void *user, OrcInstruction *insn) #ifndef MMX static void -sse_rule_mulhsl (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_mulhsl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; int tmp = orc_compiler_get_temp_reg (p); int tmp2 = orc_compiler_get_temp_reg (p); - orc_sse_emit_pshufd (p, ORC_SSE_SHUF(2,3,0,1), dest, tmp); - orc_sse_emit_pshufd (p, ORC_SSE_SHUF(2,3,0,1), src, tmp2); + orc_sse_emit_pshufd (p, ORC_SSE_SHUF (2, 3, 0, 1), dest, tmp); + orc_sse_emit_pshufd (p, ORC_SSE_SHUF (2, 3, 0, 1), src, tmp2); orc_sse_emit_pmuldq (p, src, dest); orc_sse_emit_pmuldq (p, tmp, tmp2); - orc_sse_emit_pshufd (p, ORC_SSE_SHUF(2,0,3,1), dest, dest); - orc_sse_emit_pshufd (p, ORC_SSE_SHUF(2,0,3,1), tmp2, tmp2); + orc_sse_emit_pshufd (p, ORC_SSE_SHUF (2, 0, 3, 1), dest, dest); + orc_sse_emit_pshufd (p, ORC_SSE_SHUF (2, 0, 3, 1), tmp2, tmp2); orc_sse_emit_punpckldq (p, tmp2, dest); } #endif #ifndef MMX static void -sse_rule_mulhsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_mulhsl_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int i; int regsize = p->is_64bit ? 8 : 4; - int offset = ORC_STRUCT_OFFSET(OrcExecutor,arrays[ORC_VAR_T1]); + int offset = ORC_STRUCT_OFFSET (OrcExecutor, arrays[ORC_VAR_T1]); orc_x86_emit_mov_sse_memoffset (p, 16, p->vars[insn->src_args[0]].alloc, offset, p->exec_reg, FALSE, FALSE); @@ -1556,41 +1560,43 @@ sse_rule_mulhsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) orc_x86_emit_mov_reg_memoffset (p, regsize, X86_EDX, offset + 40, p->exec_reg); - for(i=0;i<(1<<p->insn_shift);i++) { - orc_x86_emit_mov_memoffset_reg (p, 4, offset + 4*i, p->exec_reg, X86_EAX); + for (i = 0; i < (1 << p->insn_shift); i++) { + orc_x86_emit_mov_memoffset_reg (p, 4, offset + 4 * i, p->exec_reg, X86_EAX); orc_x86_emit_cpuinsn_memoffset (p, ORC_X86_imul_rm, 4, - offset + 16 + 4*i, p->exec_reg); - orc_x86_emit_mov_reg_memoffset (p, 4, X86_EDX, offset + 4*i, p->exec_reg); + offset + 16 + 4 * i, p->exec_reg); + orc_x86_emit_mov_reg_memoffset (p, 4, X86_EDX, offset + 4 * i, p->exec_reg); } orc_x86_emit_mov_memoffset_sse (p, 16, offset, p->exec_reg, p->vars[insn->dest_args[0]].alloc, FALSE); - orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 32, p->exec_reg, X86_EAX); - orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 40, p->exec_reg, X86_EDX); + orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 32, p->exec_reg, + X86_EAX); + orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 40, p->exec_reg, + X86_EDX); } #endif #ifndef MMX static void -sse_rule_mulhul (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_mulhul (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; int tmp = orc_compiler_get_temp_reg (p); int tmp2 = orc_compiler_get_temp_reg (p); - orc_sse_emit_pshufd (p, ORC_SSE_SHUF(2,3,0,1), dest, tmp); - orc_sse_emit_pshufd (p, ORC_SSE_SHUF(2,3,0,1), src, tmp2); + orc_sse_emit_pshufd (p, ORC_SSE_SHUF (2, 3, 0, 1), dest, tmp); + orc_sse_emit_pshufd (p, ORC_SSE_SHUF (2, 3, 0, 1), src, tmp2); orc_sse_emit_pmuludq (p, src, dest); orc_sse_emit_pmuludq (p, tmp, tmp2); - orc_sse_emit_pshufd (p, ORC_SSE_SHUF(2,0,3,1), dest, dest); - orc_sse_emit_pshufd (p, ORC_SSE_SHUF(2,0,3,1), tmp2, tmp2); + orc_sse_emit_pshufd (p, ORC_SSE_SHUF (2, 0, 3, 1), dest, dest); + orc_sse_emit_pshufd (p, ORC_SSE_SHUF (2, 0, 3, 1), tmp2, tmp2); orc_sse_emit_punpckldq (p, tmp2, dest); } #endif static void -sse_rule_mulslq (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_mulslq (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1604,11 +1610,11 @@ sse_rule_mulslq (OrcCompiler *p, void *user, OrcInstruction *insn) #ifndef MMX static void -sse_rule_mulslq_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_mulslq_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int i; int regsize = p->is_64bit ? 8 : 4; - int offset = ORC_STRUCT_OFFSET(OrcExecutor,arrays[ORC_VAR_T1]); + int offset = ORC_STRUCT_OFFSET (OrcExecutor, arrays[ORC_VAR_T1]); orc_x86_emit_mov_sse_memoffset (p, 8, p->vars[insn->src_args[0]].alloc, offset, p->exec_reg, FALSE, FALSE); @@ -1619,24 +1625,28 @@ sse_rule_mulslq_slow (OrcCompiler *p, void *user, OrcInstruction *insn) orc_x86_emit_mov_reg_memoffset (p, regsize, X86_EDX, offset + 40, p->exec_reg); - for(i=0;i<(1<<p->insn_shift);i++) { - orc_x86_emit_mov_memoffset_reg (p, 4, offset + 4*i, p->exec_reg, X86_EAX); + for (i = 0; i < (1 << p->insn_shift); i++) { + orc_x86_emit_mov_memoffset_reg (p, 4, offset + 4 * i, p->exec_reg, X86_EAX); orc_x86_emit_cpuinsn_memoffset (p, ORC_X86_imul_rm, 4, - offset + 8 + 4*i, p->exec_reg); - orc_x86_emit_mov_reg_memoffset (p, 4, X86_EAX, offset + 16 + 8*i, p->exec_reg); - orc_x86_emit_mov_reg_memoffset (p, 4, X86_EDX, offset + 16 + 8*i + 4, p->exec_reg); + offset + 8 + 4 * i, p->exec_reg); + orc_x86_emit_mov_reg_memoffset (p, 4, X86_EAX, offset + 16 + 8 * i, + p->exec_reg); + orc_x86_emit_mov_reg_memoffset (p, 4, X86_EDX, offset + 16 + 8 * i + 4, + p->exec_reg); } orc_x86_emit_mov_memoffset_sse (p, 16, offset + 16, p->exec_reg, p->vars[insn->dest_args[0]].alloc, FALSE); - orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 32, p->exec_reg, X86_EAX); - orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 40, p->exec_reg, X86_EDX); + orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 32, p->exec_reg, + X86_EAX); + orc_x86_emit_mov_memoffset_reg (p, regsize, offset + 40, p->exec_reg, + X86_EDX); } #endif #ifndef MMX static void -sse_rule_mululq (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_mululq (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1650,7 +1660,7 @@ sse_rule_mululq (OrcCompiler *p, void *user, OrcInstruction *insn) #endif static void -sse_rule_select0lw (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_select0lw (OrcCompiler * p, void *user, OrcInstruction * insn) { //int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1664,7 +1674,7 @@ sse_rule_select0lw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_select1lw (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_select1lw (OrcCompiler * p, void *user, OrcInstruction * insn) { //int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1676,35 +1686,35 @@ sse_rule_select1lw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_select0ql (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_select0ql (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; /* same as convql */ #ifndef MMX - orc_sse_emit_pshufd (p, ORC_SSE_SHUF(2,0,2,0), src, dest); + orc_sse_emit_pshufd (p, ORC_SSE_SHUF (2, 0, 2, 0), src, dest); #else orc_sse_emit_movdqa (p, src, dest); #endif } static void -sse_rule_select1ql (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_select1ql (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; orc_sse_emit_psrlq_imm (p, 32, dest); #ifndef MMX - orc_sse_emit_pshufd (p, ORC_SSE_SHUF(2,0,2,0), src, dest); + orc_sse_emit_pshufd (p, ORC_SSE_SHUF (2, 0, 2, 0), src, dest); #else orc_sse_emit_movdqa (p, src, dest); #endif } static void -sse_rule_select0wb (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_select0wb (OrcCompiler * p, void *user, OrcInstruction * insn) { //int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1718,7 +1728,7 @@ sse_rule_select0wb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_select1wb (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_select1wb (OrcCompiler * p, void *user, OrcInstruction * insn) { //int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1730,23 +1740,23 @@ sse_rule_select1wb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_splitql (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_splitql (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest1 = p->vars[insn->dest_args[0]].alloc; int dest2 = p->vars[insn->dest_args[1]].alloc; #ifndef MMX - orc_sse_emit_pshufd (p, ORC_SSE_SHUF(2,0,2,0), src, dest2); - orc_sse_emit_pshufd (p, ORC_SSE_SHUF(3,1,3,1), src, dest1); + orc_sse_emit_pshufd (p, ORC_SSE_SHUF (2, 0, 2, 0), src, dest2); + orc_sse_emit_pshufd (p, ORC_SSE_SHUF (3, 1, 3, 1), src, dest1); #else orc_sse_emit_movdqa (p, src, dest2); - orc_sse_emit_pshufw (p, ORC_SSE_SHUF(3,2,3,2), src, dest1); + orc_sse_emit_pshufw (p, ORC_SSE_SHUF (3, 2, 3, 2), src, dest1); #endif } static void -sse_rule_splitlw (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_splitlw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest1 = p->vars[insn->dest_args[0]].alloc; @@ -1767,7 +1777,7 @@ sse_rule_splitlw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_splitwb (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_splitwb (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest1 = p->vars[insn->dest_args[0]].alloc; @@ -1782,7 +1792,6 @@ sse_rule_splitwb (OrcCompiler *p, void *user, OrcInstruction *insn) if (dest2 != src) { orc_sse_emit_movdqa (p, src, dest2); } - #if 0 orc_sse_emit_psllw_imm (p, 8, dest2); orc_sse_emit_psraw_imm (p, 8, dest2); @@ -1794,7 +1803,7 @@ sse_rule_splitwb (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_mergebw (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_mergebw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1803,7 +1812,7 @@ sse_rule_mergebw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_mergewl (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_mergewl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1812,7 +1821,7 @@ sse_rule_mergewl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_mergelq (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_mergelq (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1821,7 +1830,7 @@ sse_rule_mergelq (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_swapw (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_swapw (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1834,7 +1843,7 @@ sse_rule_swapw (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_swapl (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_swapl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1851,7 +1860,7 @@ sse_rule_swapl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_swapwl (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_swapwl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1864,7 +1873,7 @@ sse_rule_swapwl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_swapq (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_swapq (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -1885,20 +1894,20 @@ sse_rule_swapq (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_swaplq (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_swaplq (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; #ifndef MMX - orc_sse_emit_pshufd (p, ORC_SSE_SHUF(2,3,0,1), dest, dest); + orc_sse_emit_pshufd (p, ORC_SSE_SHUF (2, 3, 0, 1), dest, dest); #else - orc_mmx_emit_pshufw (p, ORC_MMX_SHUF(1,0,3,2), dest, dest); + orc_mmx_emit_pshufw (p, ORC_MMX_SHUF (1, 0, 3, 2), dest, dest); #endif } #ifndef MMX static void -sse_rule_swapw_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_swapw_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -1913,7 +1922,7 @@ sse_rule_swapw_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_swapl_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_swapl_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -1928,7 +1937,7 @@ sse_rule_swapl_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_swapwl_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_swapwl_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -1943,7 +1952,7 @@ sse_rule_swapwl_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_swapq_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_swapq_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -1958,7 +1967,7 @@ sse_rule_swapq_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_select0lw_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_select0lw_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -1973,7 +1982,7 @@ sse_rule_select0lw_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_select1lw_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_select1lw_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -1988,7 +1997,7 @@ sse_rule_select1lw_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_select0wb_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_select0wb_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -2003,7 +2012,7 @@ sse_rule_select0wb_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_select1wb_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_select1wb_ssse3 (OrcCompiler * p, void *user, OrcInstruction * insn) { int dest = p->vars[insn->dest_args[0]].alloc; int tmp; @@ -2021,22 +2030,22 @@ sse_rule_select1wb_ssse3 (OrcCompiler *p, void *user, OrcInstruction *insn) /* slow rules */ static void -sse_rule_maxuw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_maxuw_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; int tmp = orc_compiler_get_temp_reg (p); tmp = orc_compiler_get_constant (p, 2, 0x8000); - orc_sse_emit_pxor(p, tmp, src); - orc_sse_emit_pxor(p, tmp, dest); + orc_sse_emit_pxor (p, tmp, src); + orc_sse_emit_pxor (p, tmp, dest); orc_sse_emit_pmaxsw (p, src, dest); - orc_sse_emit_pxor(p, tmp, src); - orc_sse_emit_pxor(p, tmp, dest); + orc_sse_emit_pxor (p, tmp, src); + orc_sse_emit_pxor (p, tmp, dest); } static void -sse_rule_minuw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_minuw_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2044,15 +2053,15 @@ sse_rule_minuw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) tmp = orc_compiler_get_constant (p, 2, 0x8000); - orc_sse_emit_pxor(p, tmp, src); - orc_sse_emit_pxor(p, tmp, dest); + orc_sse_emit_pxor (p, tmp, src); + orc_sse_emit_pxor (p, tmp, dest); orc_sse_emit_pminsw (p, src, dest); - orc_sse_emit_pxor(p, tmp, src); - orc_sse_emit_pxor(p, tmp, dest); + orc_sse_emit_pxor (p, tmp, src); + orc_sse_emit_pxor (p, tmp, dest); } static void -sse_rule_avgsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_avgsb_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2060,15 +2069,15 @@ sse_rule_avgsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) tmp = orc_compiler_get_constant (p, 1, 0x80); - orc_sse_emit_pxor(p, tmp, src); - orc_sse_emit_pxor(p, tmp, dest); + orc_sse_emit_pxor (p, tmp, src); + orc_sse_emit_pxor (p, tmp, dest); orc_sse_emit_pavgb (p, src, dest); - orc_sse_emit_pxor(p, tmp, src); - orc_sse_emit_pxor(p, tmp, dest); + orc_sse_emit_pxor (p, tmp, src); + orc_sse_emit_pxor (p, tmp, dest); } static void -sse_rule_avgsw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_avgsw_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2076,15 +2085,15 @@ sse_rule_avgsw_slow (OrcCompiler *p, void *user, OrcInstruction *insn) tmp = orc_compiler_get_constant (p, 2, 0x8000); - orc_sse_emit_pxor(p, tmp, src); - orc_sse_emit_pxor(p, tmp, dest); + orc_sse_emit_pxor (p, tmp, src); + orc_sse_emit_pxor (p, tmp, dest); orc_sse_emit_pavgw (p, src, dest); - orc_sse_emit_pxor(p, tmp, src); - orc_sse_emit_pxor(p, tmp, dest); + orc_sse_emit_pxor (p, tmp, src); + orc_sse_emit_pxor (p, tmp, dest); } static void -sse_rule_maxsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_maxsb_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2098,7 +2107,7 @@ sse_rule_maxsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_minsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_minsb_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2112,7 +2121,7 @@ sse_rule_minsb_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_maxsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_maxsl_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2126,7 +2135,7 @@ sse_rule_maxsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_minsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_minsl_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2140,7 +2149,7 @@ sse_rule_minsl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_maxul_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_maxul_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2148,8 +2157,8 @@ sse_rule_maxul_slow (OrcCompiler *p, void *user, OrcInstruction *insn) int tmpc; tmpc = orc_compiler_get_constant (p, 4, 0x80000000); - orc_sse_emit_pxor(p, tmpc, src); - orc_sse_emit_pxor(p, tmpc, dest); + orc_sse_emit_pxor (p, tmpc, src); + orc_sse_emit_pxor (p, tmpc, dest); orc_sse_emit_movdqa (p, dest, tmp); orc_sse_emit_pcmpgtd (p, src, tmp); @@ -2157,12 +2166,12 @@ sse_rule_maxul_slow (OrcCompiler *p, void *user, OrcInstruction *insn) orc_sse_emit_pandn (p, src, tmp); orc_sse_emit_por (p, tmp, dest); - orc_sse_emit_pxor(p, tmpc, src); - orc_sse_emit_pxor(p, tmpc, dest); + orc_sse_emit_pxor (p, tmpc, src); + orc_sse_emit_pxor (p, tmpc, dest); } static void -sse_rule_minul_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_minul_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2170,8 +2179,8 @@ sse_rule_minul_slow (OrcCompiler *p, void *user, OrcInstruction *insn) int tmpc; tmpc = orc_compiler_get_constant (p, 4, 0x80000000); - orc_sse_emit_pxor(p, tmpc, src); - orc_sse_emit_pxor(p, tmpc, dest); + orc_sse_emit_pxor (p, tmpc, src); + orc_sse_emit_pxor (p, tmpc, dest); orc_sse_emit_movdqa (p, src, tmp); orc_sse_emit_pcmpgtd (p, dest, tmp); @@ -2179,12 +2188,12 @@ sse_rule_minul_slow (OrcCompiler *p, void *user, OrcInstruction *insn) orc_sse_emit_pandn (p, src, tmp); orc_sse_emit_por (p, tmp, dest); - orc_sse_emit_pxor(p, tmpc, src); - orc_sse_emit_pxor(p, tmpc, dest); + orc_sse_emit_pxor (p, tmpc, src); + orc_sse_emit_pxor (p, tmpc, dest); } static void -sse_rule_avgsl (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_avgsl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2193,15 +2202,15 @@ sse_rule_avgsl (OrcCompiler *p, void *user, OrcInstruction *insn) /* (a+b+1) >> 1 = (a|b) - ((a^b)>>1) */ orc_sse_emit_movdqa (p, dest, tmp); - orc_sse_emit_pxor(p, src, tmp); - orc_sse_emit_psrad_imm(p, 1, tmp); + orc_sse_emit_pxor (p, src, tmp); + orc_sse_emit_psrad_imm (p, 1, tmp); - orc_sse_emit_por(p, src, dest); - orc_sse_emit_psubd(p, tmp, dest); + orc_sse_emit_por (p, src, dest); + orc_sse_emit_psubd (p, tmp, dest); } static void -sse_rule_avgul (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_avgul (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2210,15 +2219,15 @@ sse_rule_avgul (OrcCompiler *p, void *user, OrcInstruction *insn) /* (a+b+1) >> 1 = (a|b) - ((a^b)>>1) */ orc_sse_emit_movdqa (p, dest, tmp); - orc_sse_emit_pxor(p, src, tmp); - orc_sse_emit_psrld_imm(p, 1, tmp); + orc_sse_emit_pxor (p, src, tmp); + orc_sse_emit_psrld_imm (p, 1, tmp); - orc_sse_emit_por(p, src, dest); - orc_sse_emit_psubd(p, tmp, dest); + orc_sse_emit_por (p, src, dest); + orc_sse_emit_psubd (p, tmp, dest); } static void -sse_rule_addssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_addssl_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2245,11 +2254,11 @@ sse_rule_addssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) orc_sse_emit_psrad_imm (p, 31, tmp2); tmp = orc_compiler_get_constant (p, 4, 0x80000000); - orc_sse_emit_pxor (p, tmp, tmp2); // clamped value + orc_sse_emit_pxor (p, tmp, tmp2); // clamped value orc_sse_emit_pand (p, tmp3, tmp2); orc_sse_emit_paddd (p, src, dest); - orc_sse_emit_pandn (p, dest, tmp3); // tmp is mask: ~0 is for clamping + orc_sse_emit_pandn (p, dest, tmp3); // tmp is mask: ~0 is for clamping orc_sse_emit_movdqa (p, tmp3, dest); orc_sse_emit_por (p, tmp2, dest); @@ -2277,7 +2286,7 @@ sse_rule_addssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) t^=m; s=~s&t; _a|=s; - */ + */ orc_sse_emit_movdqa (p, dest, s); orc_sse_emit_movdqa (p, dest, t); @@ -2298,7 +2307,7 @@ sse_rule_addssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_subssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_subssl_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2325,7 +2334,7 @@ sse_rule_subssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) orc_sse_emit_psrad_imm (p, 31, tmp2); tmp = orc_compiler_get_constant (p, 4, 0x80000000); - orc_sse_emit_pxor (p, tmp, tmp2); // clamped value + orc_sse_emit_pxor (p, tmp, tmp2); // clamped value orc_sse_emit_pand (p, tmp3, tmp2); orc_sse_emit_psubd (p, src, dest); @@ -2337,7 +2346,7 @@ sse_rule_subssl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_addusl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_addusl_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2384,7 +2393,7 @@ sse_rule_addusl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_subusl_slow (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_subusl_slow (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[1]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; @@ -2428,12 +2437,11 @@ sse_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \ p->vars[insn->dest_args[0]].alloc); \ } -BINARY_F(addf, addps, 0x58) -BINARY_F(subf, subps, 0x5c) -BINARY_F(mulf, mulps, 0x59) -BINARY_F(divf, divps, 0x5e) -UNARY_F(sqrtf, sqrtps, 0x51) - +BINARY_F (addf, addps, 0x58) + BINARY_F (subf, subps, 0x5c) + BINARY_F (mulf, mulps, 0x59) + BINARY_F (divf, divps, 0x5e) + UNARY_F (sqrtf, sqrtps, 0x51) #define UNARY_D(opcode,insn_name,code) \ static void \ sse_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \ @@ -2442,7 +2450,6 @@ sse_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \ p->vars[insn->src_args[0]].alloc, \ p->vars[insn->dest_args[0]].alloc); \ } - #define BINARY_D(opcode,insn_name,code) \ static void \ sse_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \ @@ -2451,168 +2458,129 @@ sse_rule_ ## opcode (OrcCompiler *p, void *user, OrcInstruction *insn) \ p->vars[insn->src_args[1]].alloc, \ p->vars[insn->dest_args[0]].alloc); \ } + BINARY_D (addd, addpd, 0x58) + BINARY_D (subd, subpd, 0x5c) + BINARY_D (muld, mulpd, 0x59) + BINARY_D (divd, divpd, 0x5e) + UNARY_D (sqrtd, sqrtpd, 0x51) -BINARY_D(addd, addpd, 0x58) -BINARY_D(subd, subpd, 0x5c) -BINARY_D(muld, mulpd, 0x59) -BINARY_D(divd, divpd, 0x5e) -UNARY_D(sqrtd, sqrtpd, 0x51) - -static void -sse_rule_minf (OrcCompiler *p, void *user, OrcInstruction *insn) + static void + sse_rule_minf (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->target_flags & ORC_TARGET_FAST_NAN) { orc_sse_emit_minps (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } else { int tmp = orc_compiler_get_temp_reg (p); - orc_sse_emit_movdqa (p, - p->vars[insn->src_args[1]].alloc, - tmp); - orc_sse_emit_minps (p, - p->vars[insn->dest_args[0]].alloc, - tmp); + orc_sse_emit_movdqa (p, p->vars[insn->src_args[1]].alloc, tmp); + orc_sse_emit_minps (p, p->vars[insn->dest_args[0]].alloc, tmp); orc_sse_emit_minps (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); - orc_sse_emit_por (p, - tmp, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); + orc_sse_emit_por (p, tmp, p->vars[insn->dest_args[0]].alloc); } } static void -sse_rule_mind (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_mind (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->target_flags & ORC_TARGET_FAST_NAN) { orc_sse_emit_minpd (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } else { int tmp = orc_compiler_get_temp_reg (p); - orc_sse_emit_movdqa (p, - p->vars[insn->src_args[1]].alloc, - tmp); + orc_sse_emit_movdqa (p, p->vars[insn->src_args[1]].alloc, tmp); + orc_sse_emit_minpd (p, p->vars[insn->dest_args[0]].alloc, tmp); orc_sse_emit_minpd (p, - p->vars[insn->dest_args[0]].alloc, - tmp); - orc_sse_emit_minpd (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); - orc_sse_emit_por (p, - tmp, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); + orc_sse_emit_por (p, tmp, p->vars[insn->dest_args[0]].alloc); } } static void -sse_rule_maxf (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_maxf (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->target_flags & ORC_TARGET_FAST_NAN) { orc_sse_emit_maxps (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } else { int tmp = orc_compiler_get_temp_reg (p); - orc_sse_emit_movdqa (p, - p->vars[insn->src_args[1]].alloc, - tmp); + orc_sse_emit_movdqa (p, p->vars[insn->src_args[1]].alloc, tmp); + orc_sse_emit_maxps (p, p->vars[insn->dest_args[0]].alloc, tmp); orc_sse_emit_maxps (p, - p->vars[insn->dest_args[0]].alloc, - tmp); - orc_sse_emit_maxps (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); - orc_sse_emit_por (p, - tmp, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); + orc_sse_emit_por (p, tmp, p->vars[insn->dest_args[0]].alloc); } } static void -sse_rule_maxd (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_maxd (OrcCompiler * p, void *user, OrcInstruction * insn) { if (p->target_flags & ORC_TARGET_FAST_NAN) { orc_sse_emit_maxpd (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } else { int tmp = orc_compiler_get_temp_reg (p); - orc_sse_emit_movdqa (p, - p->vars[insn->src_args[1]].alloc, - tmp); - orc_sse_emit_maxpd (p, - p->vars[insn->dest_args[0]].alloc, - tmp); + orc_sse_emit_movdqa (p, p->vars[insn->src_args[1]].alloc, tmp); + orc_sse_emit_maxpd (p, p->vars[insn->dest_args[0]].alloc, tmp); orc_sse_emit_maxpd (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); - orc_sse_emit_por (p, - tmp, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); + orc_sse_emit_por (p, tmp, p->vars[insn->dest_args[0]].alloc); } } static void -sse_rule_cmpeqf (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_cmpeqf (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_sse_emit_cmpeqps (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } static void -sse_rule_cmpeqd (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_cmpeqd (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_sse_emit_cmpeqpd (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } static void -sse_rule_cmpltf (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_cmpltf (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_sse_emit_cmpltps (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } static void -sse_rule_cmpltd (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_cmpltd (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_sse_emit_cmpltpd (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } static void -sse_rule_cmplef (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_cmplef (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_sse_emit_cmpleps (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } static void -sse_rule_cmpled (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_cmpled (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_sse_emit_cmplepd (p, - p->vars[insn->src_args[1]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[1]].alloc, p->vars[insn->dest_args[0]].alloc); } static void -sse_rule_convfl (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convfl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; int tmpc; int tmp = orc_compiler_get_temp_reg (p); - + tmpc = orc_compiler_get_temp_constant (p, 4, 0x80000000); orc_sse_emit_movdqa (p, src, tmp); orc_sse_emit_cvttps2dq (p, src, dest); @@ -2624,15 +2592,15 @@ sse_rule_convfl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_convdl (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convdl (OrcCompiler * p, void *user, OrcInstruction * insn) { int src = p->vars[insn->src_args[0]].alloc; int dest = p->vars[insn->dest_args[0]].alloc; int tmpc; int tmp = orc_compiler_get_temp_reg (p); - + tmpc = orc_compiler_get_temp_constant (p, 4, 0x80000000); - orc_sse_emit_pshufd (p, ORC_SSE_SHUF(3,1,3,1), src, tmp); + orc_sse_emit_pshufd (p, ORC_SSE_SHUF (3, 1, 3, 1), src, tmp); orc_sse_emit_cvttpd2dq (p, src, dest); orc_sse_emit_psrad_imm (p, 31, tmp); orc_sse_emit_pcmpeqd (p, dest, tmpc); @@ -2641,35 +2609,31 @@ sse_rule_convdl (OrcCompiler *p, void *user, OrcInstruction *insn) } static void -sse_rule_convlf (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convlf (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_sse_emit_cvtdq2ps (p, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[0]].alloc, p->vars[insn->dest_args[0]].alloc); } static void -sse_rule_convld (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convld (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_sse_emit_cvtdq2pd (p, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[0]].alloc, p->vars[insn->dest_args[0]].alloc); } static void -sse_rule_convfd (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convfd (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_sse_emit_cvtps2pd (p, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[0]].alloc, p->vars[insn->dest_args[0]].alloc); } static void -sse_rule_convdf (OrcCompiler *p, void *user, OrcInstruction *insn) +sse_rule_convdf (OrcCompiler * p, void *user, OrcInstruction * insn) { orc_sse_emit_cvtpd2ps (p, - p->vars[insn->src_args[0]].alloc, - p->vars[insn->dest_args[0]].alloc); + p->vars[insn->src_args[0]].alloc, p->vars[insn->dest_args[0]].alloc); } #endif @@ -2682,16 +2646,16 @@ sse_rule_ ## opcode ## _sse41 (OrcCompiler *p, void *user, OrcInstruction *insn) p->vars[insn->dest_args[0]].alloc); \ } -UNARY_SSE41(convsbw,pmovsxbw); -UNARY_SSE41(convswl,pmovsxwd); -UNARY_SSE41(convslq,pmovsxdq); -UNARY_SSE41(convubw,pmovzxbw); -UNARY_SSE41(convuwl,pmovzxwd); -UNARY_SSE41(convulq,pmovzxdq); +UNARY_SSE41 (convsbw, pmovsxbw); +UNARY_SSE41 (convswl, pmovsxwd); +UNARY_SSE41 (convslq, pmovsxdq); +UNARY_SSE41 (convubw, pmovzxbw); +UNARY_SSE41 (convuwl, pmovzxwd); +UNARY_SSE41 (convulq, pmovzxdq); void -orc_compiler_sse_register_rules (OrcTarget *target) +orc_compiler_sse_register_rules (OrcTarget * target) { OrcRuleSet *rule_set; @@ -2700,10 +2664,10 @@ orc_compiler_sse_register_rules (OrcTarget *target) /* SSE 2 */ #ifndef MMX - rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target, + rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target, ORC_TARGET_SSE_SSE2); #else - rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target, + rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target, ORC_TARGET_MMX_MMX); #endif @@ -2716,10 +2680,10 @@ orc_compiler_sse_register_rules (OrcTarget *target) orc_rule_register (rule_set, "loadoffl", sse_rule_loadoffX, NULL); orc_rule_register (rule_set, "loadupdb", sse_rule_loadupdb, NULL); orc_rule_register (rule_set, "loadupib", sse_rule_loadupib, NULL); - orc_rule_register (rule_set, "loadpb", sse_rule_loadpX, (void *)1); - orc_rule_register (rule_set, "loadpw", sse_rule_loadpX, (void *)2); - orc_rule_register (rule_set, "loadpl", sse_rule_loadpX, (void *)4); - orc_rule_register (rule_set, "loadpq", sse_rule_loadpX, (void *)8); + orc_rule_register (rule_set, "loadpb", sse_rule_loadpX, (void *) 1); + orc_rule_register (rule_set, "loadpw", sse_rule_loadpX, (void *) 2); + orc_rule_register (rule_set, "loadpl", sse_rule_loadpX, (void *) 4); + orc_rule_register (rule_set, "loadpq", sse_rule_loadpX, (void *) 8); orc_rule_register (rule_set, "ldresnearl", sse_rule_ldresnearl, NULL); orc_rule_register (rule_set, "ldreslinl", sse_rule_ldreslinl, NULL); @@ -2728,78 +2692,78 @@ orc_compiler_sse_register_rules (OrcTarget *target) orc_rule_register (rule_set, "storel", sse_rule_storeX, NULL); orc_rule_register (rule_set, "storeq", sse_rule_storeX, NULL); - REG(addb); - REG(addssb); - REG(addusb); - REG(andb); - REG(andnb); - REG(avgub); - REG(cmpeqb); - REG(cmpgtsb); - REG(maxub); - REG(minub); - REG(orb); - REG(subb); - REG(subssb); - REG(subusb); - REG(xorb); - - REG(addw); - REG(addssw); - REG(addusw); - REG(andw); - REG(andnw); - REG(avguw); - REG(cmpeqw); - REG(cmpgtsw); - REG(maxsw); - REG(minsw); - REG(mullw); - REG(mulhsw); - REG(mulhuw); - REG(orw); - REG(subw); - REG(subssw); - REG(subusw); - REG(xorw); - - REG(addl); - REG(andl); - REG(andnl); - REG(cmpeql); - REG(cmpgtsl); - REG(orl); - REG(subl); - REG(xorl); - - REG(andq); - REG(andnq); - REG(orq); - REG(xorq); - - REG(select0ql); - REG(select1ql); - REG(select0lw); - REG(select1lw); - REG(select0wb); - REG(select1wb); - REG(mergebw); - REG(mergewl); - REG(mergelq); + REG (addb); + REG (addssb); + REG (addusb); + REG (andb); + REG (andnb); + REG (avgub); + REG (cmpeqb); + REG (cmpgtsb); + REG (maxub); + REG (minub); + REG (orb); + REG (subb); + REG (subssb); + REG (subusb); + REG (xorb); + + REG (addw); + REG (addssw); + REG (addusw); + REG (andw); + REG (andnw); + REG (avguw); + REG (cmpeqw); + REG (cmpgtsw); + REG (maxsw); + REG (minsw); + REG (mullw); + REG (mulhsw); + REG (mulhuw); + REG (orw); + REG (subw); + REG (subssw); + REG (subusw); + REG (xorw); + + REG (addl); + REG (andl); + REG (andnl); + REG (cmpeql); + REG (cmpgtsl); + REG (orl); + REG (subl); + REG (xorl); + + REG (andq); + REG (andnq); + REG (orq); + REG (xorq); + + REG (select0ql); + REG (select1ql); + REG (select0lw); + REG (select1lw); + REG (select0wb); + REG (select1wb); + REG (mergebw); + REG (mergewl); + REG (mergelq); orc_rule_register (rule_set, "copyb", sse_rule_copyx, NULL); orc_rule_register (rule_set, "copyw", sse_rule_copyx, NULL); orc_rule_register (rule_set, "copyl", sse_rule_copyx, NULL); orc_rule_register (rule_set, "copyq", sse_rule_copyx, NULL); - orc_rule_register (rule_set, "shlw", sse_rule_shift, (void *)0); - orc_rule_register (rule_set, "shruw", sse_rule_shift, (void *)1); - orc_rule_register (rule_set, "shrsw", sse_rule_shift, (void *)2); - orc_rule_register (rule_set, "shll", sse_rule_shift, (void *)3); - orc_rule_register (rule_set, "shrul", sse_rule_shift, (void *)4); - orc_rule_register (rule_set, "shrsl", sse_rule_shift, (void *)5); - orc_rule_register (rule_set, "shlq", sse_rule_shift, (void *)6); - orc_rule_register (rule_set, "shruq", sse_rule_shift, (void *)7); + orc_rule_register (rule_set, "shlw", sse_rule_shift, (void *) 0); + orc_rule_register (rule_set, "shruw", sse_rule_shift, (void *) 1); + orc_rule_register (rule_set, "shrsw", sse_rule_shift, (void *) 2); + orc_rule_register (rule_set, "shll", sse_rule_shift, (void *) 3); + orc_rule_register (rule_set, "shrul", sse_rule_shift, (void *) 4); + orc_rule_register (rule_set, "shrsl", sse_rule_shift, (void *) 5); + orc_rule_register (rule_set, "shlq", sse_rule_shift, (void *) 6); + orc_rule_register (rule_set, "shruq", sse_rule_shift, (void *) 7); orc_rule_register (rule_set, "shrsq", sse_rule_shrsq, NULL); orc_rule_register (rule_set, "convsbw", sse_rule_convsbw, NULL); @@ -2831,8 +2795,8 @@ orc_compiler_sse_register_rules (OrcTarget *target) /* These require the SSE2 flag, although could be used with MMX. That flag is not yet handled. */ orc_rule_register (rule_set, "mululq", sse_rule_mululq, NULL); - REG(addq); - REG(subq); + REG (addq); + REG (subq); orc_rule_register (rule_set, "addf", sse_rule_addf, NULL); orc_rule_register (rule_set, "subf", sse_rule_subf, NULL); @@ -2917,17 +2881,17 @@ orc_compiler_sse_register_rules (OrcTarget *target) /* SSE 3 -- no rules */ /* SSSE 3 */ - rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target, + rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target, ORC_TARGET_SSE_SSSE3); #ifndef MMX - orc_rule_register (rule_set, "signb", sse_rule_signX_ssse3, (void *)0); - orc_rule_register (rule_set, "signw", sse_rule_signX_ssse3, (void *)1); - orc_rule_register (rule_set, "signl", sse_rule_signX_ssse3, (void *)2); + orc_rule_register (rule_set, "signb", sse_rule_signX_ssse3, (void *) 0); + orc_rule_register (rule_set, "signw", sse_rule_signX_ssse3, (void *) 1); + orc_rule_register (rule_set, "signl", sse_rule_signX_ssse3, (void *) 2); #endif - REG(absb); - REG(absw); - REG(absl); + REG (absb); + REG (absw); + REG (absl); #ifndef MMX orc_rule_register (rule_set, "swapw", sse_rule_swapw_ssse3, NULL); orc_rule_register (rule_set, "swapl", sse_rule_swapl_ssse3, NULL); @@ -2940,18 +2904,18 @@ orc_compiler_sse_register_rules (OrcTarget *target) #endif /* SSE 4.1 */ - rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target, + rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target, ORC_TARGET_SSE_SSE4_1); - REG(maxsb); - REG(minsb); - REG(maxuw); - REG(minuw); - REG(maxsl); - REG(maxul); - REG(minsl); - REG(minul); - REG(mulll); + REG (maxsb); + REG (minsb); + REG (maxuw); + REG (minuw); + REG (maxsl); + REG (maxul); + REG (minsl); + REG (minul); + REG (mulll); orc_rule_register (rule_set, "convsbw", sse_rule_convsbw_sse41, NULL); orc_rule_register (rule_set, "convswl", sse_rule_convswl_sse41, NULL); orc_rule_register (rule_set, "convslq", sse_rule_convslq_sse41, NULL); @@ -2963,14 +2927,13 @@ orc_compiler_sse_register_rules (OrcTarget *target) #ifndef MMX orc_rule_register (rule_set, "mulhsl", sse_rule_mulhsl, NULL); #endif - REG(cmpeqq); + REG (cmpeqq); /* SSE 4.2 -- no rules */ - rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target, + rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), target, ORC_TARGET_SSE_SSE4_2); - REG(cmpgtsq); + REG (cmpgtsq); /* SSE 4a -- no rules */ } - diff --git a/orc/orcsse.c b/orc/orcsse.c index 128654f..427c6b5 100644 --- a/orc/orcsse.c +++ b/orc/orcsse.c @@ -21,15 +21,17 @@ const char * -orc_x86_get_regname_sse(int i) +orc_x86_get_regname_sse (int i) { static const char *x86_regs[] = { "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7", "xmm8", "xmm9", "xmm10", "xmm11", "xmm12", "xmm13", "xmm14", "xmm15" }; - if (i>=X86_XMM0 && i<X86_XMM0 + 16) return x86_regs[i - X86_XMM0]; - if (i>=X86_MM0 && i<X86_MM0 + 8) return "ERROR_MMX"; + if (i >= X86_XMM0 && i < X86_XMM0 + 16) + return x86_regs[i - X86_XMM0]; + if (i >= X86_MM0 && i < X86_MM0 + 8) + return "ERROR_MMX"; switch (i) { case 0: return "UNALLOCATED"; @@ -42,7 +44,7 @@ orc_x86_get_regname_sse(int i) void -orc_x86_emit_mov_memoffset_sse (OrcCompiler *compiler, int size, int offset, +orc_x86_emit_mov_memoffset_sse (OrcCompiler * compiler, int size, int offset, int reg1, int reg2, int is_aligned) { switch (size) { @@ -60,13 +62,13 @@ orc_x86_emit_mov_memoffset_sse (OrcCompiler *compiler, int size, int offset, } break; default: - ORC_COMPILER_ERROR(compiler, "bad size"); + ORC_COMPILER_ERROR (compiler, "bad size"); break; } } void -orc_x86_emit_mov_memindex_sse (OrcCompiler *compiler, int size, int offset, +orc_x86_emit_mov_memindex_sse (OrcCompiler * compiler, int size, int offset, int reg1, int regindex, int shift, int reg2, int is_aligned) { switch (size) { @@ -88,14 +90,14 @@ orc_x86_emit_mov_memindex_sse (OrcCompiler *compiler, int size, int offset, } break; default: - ORC_COMPILER_ERROR(compiler, "bad size"); + ORC_COMPILER_ERROR (compiler, "bad size"); break; } } void -orc_x86_emit_mov_sse_memoffset (OrcCompiler *compiler, int size, int reg1, int offset, - int reg2, int aligned, int uncached) +orc_x86_emit_mov_sse_memoffset (OrcCompiler * compiler, int size, int reg1, + int offset, int reg2, int aligned, int uncached) { switch (size) { case 4: @@ -116,44 +118,43 @@ orc_x86_emit_mov_sse_memoffset (OrcCompiler *compiler, int size, int reg1, int o } break; default: - ORC_COMPILER_ERROR(compiler, "bad size"); + ORC_COMPILER_ERROR (compiler, "bad size"); break; } } void -orc_sse_set_mxcsr (OrcCompiler *compiler) +orc_sse_set_mxcsr (OrcCompiler * compiler) { orc_x86_emit_cpuinsn_load_memoffset (compiler, ORC_X86_stmxcsr, 4, 0, - (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A4]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A4]), compiler->exec_reg, 0); orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A4]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A4]), compiler->exec_reg, compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 4, compiler->gp_tmpreg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_C1]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_C1]), compiler->exec_reg); orc_x86_emit_cpuinsn_imm_reg (compiler, ORC_X86_or_imm32_rm, 4, 0x8040, compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 4, compiler->gp_tmpreg, - (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A4]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A4]), compiler->exec_reg); orc_x86_emit_cpuinsn_load_memoffset (compiler, ORC_X86_ldmxcsr, 4, 0, - (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A4]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A4]), compiler->exec_reg, 0); } void -orc_sse_restore_mxcsr (OrcCompiler *compiler) +orc_sse_restore_mxcsr (OrcCompiler * compiler) { orc_x86_emit_cpuinsn_load_memoffset (compiler, ORC_X86_ldmxcsr, 4, 0, - (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A4]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A4]), compiler->exec_reg, 0); } - diff --git a/orc/orcutils.c b/orc/orcutils.c index a37129d..c24537d 100644 --- a/orc/orcutils.c +++ b/orc/orcutils.c @@ -46,9 +46,9 @@ char * _strndup (const char *s, int n) { char *r; - r = malloc (n+1); - memcpy(r,s,n); - r[n]=0; + r = malloc (n + 1); + memcpy (r, s, n); + r[n] = 0; return r; } @@ -60,16 +60,19 @@ strsplit (const char *s, char delimiter) const char *tok; int n = 0; - while (*s == ' ') s++; + while (*s == ' ') + s++; - list = malloc (1 * sizeof(char *)); + list = malloc (1 * sizeof (char *)); while (*s) { tok = s; - while (*s && *s != delimiter) s++; + while (*s && *s != delimiter) + s++; list[n] = _strndup (tok, s - tok); - while (*s && *s == delimiter) s++; - list = realloc (list, (n + 2) * sizeof(char *)); + while (*s && *s == delimiter) + s++; + list = realloc (list, (n + 2) * sizeof (char *)); n++; } @@ -84,17 +87,21 @@ get_tag_value (char *s, const char *tag) char *end; char *colon; - flags = strstr(s,tag); - if (flags == NULL) return NULL; + flags = strstr (s, tag); + if (flags == NULL) + return NULL; - end = strchr(flags, '\n'); - if (end == NULL) return NULL; + end = strchr (flags, '\n'); + if (end == NULL) + return NULL; colon = strchr (flags, ':'); - if (colon == NULL) return NULL; + if (colon == NULL) + return NULL; colon++; - if(colon >= end) return NULL; + if (colon >= end) + return NULL; - return _strndup (colon, end-colon); + return _strndup (colon, end - colon); } orc_int64 @@ -102,7 +109,7 @@ _strtoll (const char *nptr, char **endptr, int base) { int neg = 0; orc_int64 val = 0; - + /* Skip all spaces */ while (isspace (*nptr)) nptr++; @@ -155,20 +162,19 @@ _strtoll (const char *nptr, char **endptr, int base) if (c >= base) break; - if ((orc_uint64) val > ORC_UINT64_C(0xffffffffffffffff) / base || - (orc_uint64) (val * base) > ORC_UINT64_C(0xffffffffffffffff) - c) { - val = ORC_UINT64_C(0xffffffffffffffff); + if ((orc_uint64) val > ORC_UINT64_C (0xffffffffffffffff) / base || + (orc_uint64) (val * base) > ORC_UINT64_C (0xffffffffffffffff) - c) { + val = ORC_UINT64_C (0xffffffffffffffff); break; } val = val * base + c; - + nptr++; } if (endptr) *endptr = (char *) nptr; - return (neg) ? - val : val; + return (neg) ? -val : val; } - diff --git a/orc/orcx86.c b/orc/orcx86.c index c3a22f1..d8f7e55 100644 --- a/orc/orcx86.c +++ b/orc/orcx86.c @@ -22,13 +22,15 @@ */ const char * -orc_x86_get_regname(int i) +orc_x86_get_regname (int i) { static const char *x86_regs[] = { "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi", - "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d" }; + "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d" + }; - if (i>=ORC_GP_REG_BASE && i<ORC_GP_REG_BASE + 16) return x86_regs[i - ORC_GP_REG_BASE]; + if (i >= ORC_GP_REG_BASE && i < ORC_GP_REG_BASE + 16) + return x86_regs[i - ORC_GP_REG_BASE]; switch (i) { case 0: return "UNALLOCATED"; @@ -40,18 +42,20 @@ orc_x86_get_regname(int i) } int -orc_x86_get_regnum(int i) +orc_x86_get_regnum (int i) { - return (i&0xf); + return (i & 0xf); } const char * -orc_x86_get_regname_8(int i) +orc_x86_get_regname_8 (int i) { static const char *x86_regs[] = { "al", "cl", "dl", "bl", - "ah", "ch", "dh", "bh" }; + "ah", "ch", "dh", "bh" + }; - if (i>=ORC_GP_REG_BASE && i<ORC_GP_REG_BASE + 8) return x86_regs[i - ORC_GP_REG_BASE]; + if (i >= ORC_GP_REG_BASE && i < ORC_GP_REG_BASE + 8) + return x86_regs[i - ORC_GP_REG_BASE]; switch (i) { case 0: return "UNALLOCATED"; @@ -63,12 +67,14 @@ orc_x86_get_regname_8(int i) } const char * -orc_x86_get_regname_16(int i) +orc_x86_get_regname_16 (int i) { static const char *x86_regs[] = { "ax", "cx", "dx", "bx", - "sp", "bp", "si", "di" }; + "sp", "bp", "si", "di" + }; - if (i>=ORC_GP_REG_BASE && i<ORC_GP_REG_BASE + 8) return x86_regs[i - ORC_GP_REG_BASE]; + if (i >= ORC_GP_REG_BASE && i < ORC_GP_REG_BASE + 8) + return x86_regs[i - ORC_GP_REG_BASE]; switch (i) { case 0: return "UNALLOCATED"; @@ -80,13 +86,15 @@ orc_x86_get_regname_16(int i) } const char * -orc_x86_get_regname_64(int i) +orc_x86_get_regname_64 (int i) { static const char *x86_regs[] = { "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi", - "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15" }; + "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15" + }; - if (i>=ORC_GP_REG_BASE && i<ORC_GP_REG_BASE + 16) return x86_regs[i - ORC_GP_REG_BASE]; + if (i >= ORC_GP_REG_BASE && i < ORC_GP_REG_BASE + 16) + return x86_regs[i - ORC_GP_REG_BASE]; switch (i) { case 0: return "UNALLOCATED"; @@ -98,7 +106,7 @@ orc_x86_get_regname_64(int i) } const char * -orc_x86_get_regname_ptr(OrcCompiler *compiler, int i) +orc_x86_get_regname_ptr (OrcCompiler * compiler, int i) { if (compiler->is_64bit) { return orc_x86_get_regname_64 (i); @@ -108,7 +116,7 @@ orc_x86_get_regname_ptr(OrcCompiler *compiler, int i) } const char * -orc_x86_get_regname_size(int i, int size) +orc_x86_get_regname_size (int i, int size) { switch (size) { case 1: @@ -124,13 +132,13 @@ orc_x86_get_regname_size(int i, int size) } void -orc_x86_emit_push (OrcCompiler *compiler, int size, int reg) +orc_x86_emit_push (OrcCompiler * compiler, int size, int reg) { orc_x86_emit_cpuinsn_size (compiler, ORC_X86_push, 0, reg, reg); } void -orc_x86_emit_pop (OrcCompiler *compiler, int size, int reg) +orc_x86_emit_pop (OrcCompiler * compiler, int size, int reg) { orc_x86_emit_cpuinsn_size (compiler, ORC_X86_pop, 0, reg, reg); } @@ -139,149 +147,163 @@ orc_x86_emit_pop (OrcCompiler *compiler, int size, int reg) #define X86_SIB(ss, ind, reg) ((((ss)&3)<<6)|(((ind)&7)<<3)|((reg)&7)) void -orc_x86_emit_modrm_memoffset_old (OrcCompiler *compiler, int reg1, int offset, int reg2) +orc_x86_emit_modrm_memoffset_old (OrcCompiler * compiler, int reg1, int offset, + int reg2) { if (offset == 0 && reg2 != compiler->exec_reg) { if (reg2 == X86_ESP) { - *compiler->codeptr++ = X86_MODRM(0, 4, reg1); - *compiler->codeptr++ = X86_SIB(0, 4, reg2); + *compiler->codeptr++ = X86_MODRM (0, 4, reg1); + *compiler->codeptr++ = X86_SIB (0, 4, reg2); } else { - *compiler->codeptr++ = X86_MODRM(0, reg2, reg1); + *compiler->codeptr++ = X86_MODRM (0, reg2, reg1); } } else if (offset >= -128 && offset < 128) { - *compiler->codeptr++ = X86_MODRM(1, reg2, reg1); + *compiler->codeptr++ = X86_MODRM (1, reg2, reg1); if (reg2 == X86_ESP) { - *compiler->codeptr++ = X86_SIB(0, 4, reg2); + *compiler->codeptr++ = X86_SIB (0, 4, reg2); } *compiler->codeptr++ = (offset & 0xff); } else { - *compiler->codeptr++ = X86_MODRM(2, reg2, reg1); + *compiler->codeptr++ = X86_MODRM (2, reg2, reg1); if (reg2 == X86_ESP) { - *compiler->codeptr++ = X86_SIB(0, 4, reg2); + *compiler->codeptr++ = X86_SIB (0, 4, reg2); } *compiler->codeptr++ = (offset & 0xff); - *compiler->codeptr++ = ((offset>>8) & 0xff); - *compiler->codeptr++ = ((offset>>16) & 0xff); - *compiler->codeptr++ = ((offset>>24) & 0xff); + *compiler->codeptr++ = ((offset >> 8) & 0xff); + *compiler->codeptr++ = ((offset >> 16) & 0xff); + *compiler->codeptr++ = ((offset >> 24) & 0xff); } } void -orc_x86_emit_modrm_memoffset (OrcCompiler *compiler, int offset, int src, int dest) +orc_x86_emit_modrm_memoffset (OrcCompiler * compiler, int offset, int src, + int dest) { if (offset == 0 && src != compiler->exec_reg) { if (src == X86_ESP) { - *compiler->codeptr++ = X86_MODRM(0, 4, dest); - *compiler->codeptr++ = X86_SIB(0, 4, src); + *compiler->codeptr++ = X86_MODRM (0, 4, dest); + *compiler->codeptr++ = X86_SIB (0, 4, src); } else { - *compiler->codeptr++ = X86_MODRM(0, src, dest); + *compiler->codeptr++ = X86_MODRM (0, src, dest); } } else if (offset >= -128 && offset < 128) { - *compiler->codeptr++ = X86_MODRM(1, src, dest); + *compiler->codeptr++ = X86_MODRM (1, src, dest); if (src == X86_ESP) { - *compiler->codeptr++ = X86_SIB(0, 4, src); + *compiler->codeptr++ = X86_SIB (0, 4, src); } *compiler->codeptr++ = (offset & 0xff); } else { - *compiler->codeptr++ = X86_MODRM(2, src, dest); + *compiler->codeptr++ = X86_MODRM (2, src, dest); if (src == X86_ESP) { - *compiler->codeptr++ = X86_SIB(0, 4, src); + *compiler->codeptr++ = X86_SIB (0, 4, src); } *compiler->codeptr++ = (offset & 0xff); - *compiler->codeptr++ = ((offset>>8) & 0xff); - *compiler->codeptr++ = ((offset>>16) & 0xff); - *compiler->codeptr++ = ((offset>>24) & 0xff); + *compiler->codeptr++ = ((offset >> 8) & 0xff); + *compiler->codeptr++ = ((offset >> 16) & 0xff); + *compiler->codeptr++ = ((offset >> 24) & 0xff); } } -void orc_x86_emit_modrm_memindex (OrcCompiler *compiler, int reg1, int offset, +void +orc_x86_emit_modrm_memindex (OrcCompiler * compiler, int reg1, int offset, int reg2, int regindex, int shift) { if (offset == 0) { - *compiler->codeptr++ = X86_MODRM(0, 4, reg1); - *compiler->codeptr++ = X86_SIB(shift, regindex, reg2); + *compiler->codeptr++ = X86_MODRM (0, 4, reg1); + *compiler->codeptr++ = X86_SIB (shift, regindex, reg2); } else if (offset >= -128 && offset < 128) { - *compiler->codeptr++ = X86_MODRM(1, 4, reg1); - *compiler->codeptr++ = X86_SIB(shift, regindex, reg2); + *compiler->codeptr++ = X86_MODRM (1, 4, reg1); + *compiler->codeptr++ = X86_SIB (shift, regindex, reg2); *compiler->codeptr++ = (offset & 0xff); } else { - *compiler->codeptr++ = X86_MODRM(2, 4, reg1); - *compiler->codeptr++ = X86_SIB(shift, regindex, reg2); + *compiler->codeptr++ = X86_MODRM (2, 4, reg1); + *compiler->codeptr++ = X86_SIB (shift, regindex, reg2); *compiler->codeptr++ = (offset & 0xff); - *compiler->codeptr++ = ((offset>>8) & 0xff); - *compiler->codeptr++ = ((offset>>16) & 0xff); - *compiler->codeptr++ = ((offset>>24) & 0xff); + *compiler->codeptr++ = ((offset >> 8) & 0xff); + *compiler->codeptr++ = ((offset >> 16) & 0xff); + *compiler->codeptr++ = ((offset >> 24) & 0xff); } } -void orc_x86_emit_modrm_memindex2 (OrcCompiler *compiler, int offset, +void +orc_x86_emit_modrm_memindex2 (OrcCompiler * compiler, int offset, int src, int src_index, int shift, int dest) { if (offset == 0) { - *compiler->codeptr++ = X86_MODRM(0, 4, dest); - *compiler->codeptr++ = X86_SIB(shift, src_index, src); + *compiler->codeptr++ = X86_MODRM (0, 4, dest); + *compiler->codeptr++ = X86_SIB (shift, src_index, src); } else if (offset >= -128 && offset < 128) { - *compiler->codeptr++ = X86_MODRM(1, 4, dest); - *compiler->codeptr++ = X86_SIB(shift, src_index, src); + *compiler->codeptr++ = X86_MODRM (1, 4, dest); + *compiler->codeptr++ = X86_SIB (shift, src_index, src); *compiler->codeptr++ = (offset & 0xff); } else { - *compiler->codeptr++ = X86_MODRM(2, 4, dest); - *compiler->codeptr++ = X86_SIB(shift, src_index, src); + *compiler->codeptr++ = X86_MODRM (2, 4, dest); + *compiler->codeptr++ = X86_SIB (shift, src_index, src); *compiler->codeptr++ = (offset & 0xff); - *compiler->codeptr++ = ((offset>>8) & 0xff); - *compiler->codeptr++ = ((offset>>16) & 0xff); - *compiler->codeptr++ = ((offset>>24) & 0xff); + *compiler->codeptr++ = ((offset >> 8) & 0xff); + *compiler->codeptr++ = ((offset >> 16) & 0xff); + *compiler->codeptr++ = ((offset >> 24) & 0xff); } } void -orc_x86_emit_modrm_reg (OrcCompiler *compiler, int reg1, int reg2) +orc_x86_emit_modrm_reg (OrcCompiler * compiler, int reg1, int reg2) { - *compiler->codeptr++ = X86_MODRM(3, reg1, reg2); + *compiler->codeptr++ = X86_MODRM (3, reg1, reg2); } void -orc_x86_emit_rex (OrcCompiler *compiler, int size, int reg1, int reg2, int reg3) +orc_x86_emit_rex (OrcCompiler * compiler, int size, int reg1, int reg2, + int reg3) { int rex = 0x40; if (compiler->is_64bit) { - if (size >= 8) rex |= 0x08; - if (reg1 & 8) rex |= 0x4; - if (reg2 & 8) rex |= 0x2; - if (reg3 & 8) rex |= 0x1; - - if (rex != 0x40) *compiler->codeptr++ = rex; + if (size >= 8) + rex |= 0x08; + if (reg1 & 8) + rex |= 0x4; + if (reg2 & 8) + rex |= 0x2; + if (reg3 & 8) + rex |= 0x1; + + if (rex != 0x40) + *compiler->codeptr++ = rex; } } void -orc_x86_emit_mov_memoffset_reg (OrcCompiler *compiler, int size, int offset, +orc_x86_emit_mov_memoffset_reg (OrcCompiler * compiler, int size, int offset, int reg1, int reg2) { switch (size) { case 1: - orc_x86_emit_cpuinsn_memoffset_reg (compiler, ORC_X86_movzx_rm_r, 4, offset, reg1, reg2); + orc_x86_emit_cpuinsn_memoffset_reg (compiler, ORC_X86_movzx_rm_r, 4, + offset, reg1, reg2); return; case 2: - orc_x86_emit_cpuinsn_memoffset_reg (compiler, ORC_X86_movw_rm_r, size, offset, reg1, reg2); + orc_x86_emit_cpuinsn_memoffset_reg (compiler, ORC_X86_movw_rm_r, size, + offset, reg1, reg2); break; case 4: - orc_x86_emit_cpuinsn_memoffset_reg (compiler, ORC_X86_movl_rm_r, size, offset, reg1, reg2); + orc_x86_emit_cpuinsn_memoffset_reg (compiler, ORC_X86_movl_rm_r, size, + offset, reg1, reg2); break; case 8: - orc_x86_emit_cpuinsn_memoffset_reg (compiler, ORC_X86_mov_rm_r, size, offset, reg1, reg2); + orc_x86_emit_cpuinsn_memoffset_reg (compiler, ORC_X86_mov_rm_r, size, + offset, reg1, reg2); break; default: - orc_compiler_error(compiler, "bad size"); + orc_compiler_error (compiler, "bad size"); break; } } void -orc_x86_emit_mov_reg_memoffset (OrcCompiler *compiler, int size, int reg1, int offset, - int reg2) +orc_x86_emit_mov_reg_memoffset (OrcCompiler * compiler, int size, int reg1, + int offset, int reg2) { switch (size) { case 1: @@ -301,14 +323,15 @@ orc_x86_emit_mov_reg_memoffset (OrcCompiler *compiler, int size, int reg1, int o reg1, offset, reg2); break; default: - orc_compiler_error(compiler, "bad size"); + orc_compiler_error (compiler, "bad size"); break; } } void -orc_x86_emit_add_imm_reg (OrcCompiler *compiler, int size, int value, int reg, orc_bool record) +orc_x86_emit_add_imm_reg (OrcCompiler * compiler, int size, int value, int reg, + orc_bool record) { if (!record) { if (size == 4 && !compiler->is_64bit) { @@ -333,7 +356,7 @@ orc_x86_emit_add_imm_reg (OrcCompiler *compiler, int size, int value, int reg, o } void -orc_x86_emit_add_reg_reg_shift (OrcCompiler *compiler, int size, int reg1, +orc_x86_emit_add_reg_reg_shift (OrcCompiler * compiler, int size, int reg1, int reg2, int shift) { if (size == 4) { @@ -346,17 +369,19 @@ orc_x86_emit_add_reg_reg_shift (OrcCompiler *compiler, int size, int reg1, } void -orc_x86_emit_cmp_imm_reg (OrcCompiler *compiler, int size, int value, int reg) +orc_x86_emit_cmp_imm_reg (OrcCompiler * compiler, int size, int value, int reg) { if (value >= -128 && value < 128) { - orc_x86_emit_cpuinsn_imm_reg (compiler, ORC_X86_cmp_imm8_rm, size, value, reg); + orc_x86_emit_cpuinsn_imm_reg (compiler, ORC_X86_cmp_imm8_rm, size, value, + reg); } else { - orc_x86_emit_cpuinsn_imm_reg (compiler, ORC_X86_cmp_imm32_rm, size, value, reg); + orc_x86_emit_cpuinsn_imm_reg (compiler, ORC_X86_cmp_imm32_rm, size, value, + reg); } } void -orc_x86_emit_cmp_imm_memoffset (OrcCompiler *compiler, int size, int value, +orc_x86_emit_cmp_imm_memoffset (OrcCompiler * compiler, int size, int value, int offset, int reg) { if (value >= -128 && value < 128) { @@ -369,7 +394,7 @@ orc_x86_emit_cmp_imm_memoffset (OrcCompiler *compiler, int size, int value, } void -orc_x86_emit_dec_memoffset (OrcCompiler *compiler, int size, +orc_x86_emit_dec_memoffset (OrcCompiler * compiler, int size, int offset, int reg) { if (size == 4) { @@ -381,7 +406,8 @@ orc_x86_emit_dec_memoffset (OrcCompiler *compiler, int size, } } -void orc_x86_emit_rep_movs (OrcCompiler *compiler, int size) +void +orc_x86_emit_rep_movs (OrcCompiler * compiler, int size) { switch (size) { case 1: @@ -397,7 +423,7 @@ void orc_x86_emit_rep_movs (OrcCompiler *compiler, int size) } void -x86_add_fixup (OrcCompiler *compiler, unsigned char *ptr, int label, int type) +x86_add_fixup (OrcCompiler * compiler, unsigned char *ptr, int label, int type) { compiler->fixups[compiler->n_fixups].ptr = ptr; compiler->fixups[compiler->n_fixups].label = label; @@ -406,29 +432,29 @@ x86_add_fixup (OrcCompiler *compiler, unsigned char *ptr, int label, int type) } void -x86_add_label (OrcCompiler *compiler, unsigned char *ptr, int label) +x86_add_label (OrcCompiler * compiler, unsigned char *ptr, int label) { compiler->labels[label] = ptr; } void -x86_add_label2 (OrcCompiler *compiler, int index, int label) +x86_add_label2 (OrcCompiler * compiler, int index, int label) { compiler->labels_int[label] = index; } void -orc_x86_do_fixups (OrcCompiler *compiler) +orc_x86_do_fixups (OrcCompiler * compiler) { int i; - for(i=0;i<compiler->n_fixups;i++){ + for (i = 0; i < compiler->n_fixups; i++) { if (compiler->fixups[i].type == 0) { unsigned char *label = compiler->labels[compiler->fixups[i].label]; unsigned char *ptr = compiler->fixups[i].ptr; int diff; - diff = ((orc_int8)ptr[0]) + (label - ptr); - if (diff != (orc_int8)diff) { + diff = ((orc_int8) ptr[0]) + (label - ptr); + if (diff != (orc_int8) diff) { orc_compiler_error (compiler, "short jump too long %d", diff); } @@ -439,23 +465,23 @@ orc_x86_do_fixups (OrcCompiler *compiler) int diff; diff = ORC_READ_UINT32_LE (ptr) + (label - ptr); - ORC_WRITE_UINT32_LE(ptr, diff); + ORC_WRITE_UINT32_LE (ptr, diff); } } } void -orc_x86_emit_prologue (OrcCompiler *compiler) +orc_x86_emit_prologue (OrcCompiler * compiler) { - orc_compiler_append_code(compiler,".global %s\n", compiler->program->name); - orc_compiler_append_code(compiler,".p2align 4\n"); - orc_compiler_append_code(compiler,"%s:\n", compiler->program->name); + orc_compiler_append_code (compiler, ".global %s\n", compiler->program->name); + orc_compiler_append_code (compiler, ".p2align 4\n"); + orc_compiler_append_code (compiler, "%s:\n", compiler->program->name); if (compiler->is_64bit) { int i; - for(i=0;i<16;i++){ - if (compiler->used_regs[ORC_GP_REG_BASE+i] && - compiler->save_regs[ORC_GP_REG_BASE+i]) { - orc_x86_emit_push (compiler, 8, ORC_GP_REG_BASE+i); + for (i = 0; i < 16; i++) { + if (compiler->used_regs[ORC_GP_REG_BASE + i] && + compiler->save_regs[ORC_GP_REG_BASE + i]) { + orc_x86_emit_push (compiler, 8, ORC_GP_REG_BASE + i); } } } else { @@ -463,7 +489,8 @@ orc_x86_emit_prologue (OrcCompiler *compiler) if (compiler->use_frame_pointer) { orc_x86_emit_mov_reg_reg (compiler, 4, X86_ESP, X86_EBP); } - orc_x86_emit_mov_memoffset_reg (compiler, 4, 8, X86_ESP, compiler->exec_reg); + orc_x86_emit_mov_memoffset_reg (compiler, 4, 8, X86_ESP, + compiler->exec_reg); if (compiler->used_regs[X86_EDI]) { orc_x86_emit_push (compiler, 4, X86_EDI); } @@ -476,27 +503,27 @@ orc_x86_emit_prologue (OrcCompiler *compiler) } #if 0 - orc_x86_emit_rdtsc(compiler); + orc_x86_emit_rdtsc (compiler); orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX, - ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A3]), compiler->exec_reg); + ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A3]), compiler->exec_reg); #endif } void -orc_x86_emit_epilogue (OrcCompiler *compiler) +orc_x86_emit_epilogue (OrcCompiler * compiler) { #if 0 - orc_x86_emit_rdtsc(compiler); + orc_x86_emit_rdtsc (compiler); orc_x86_emit_mov_reg_memoffset (compiler, 4, X86_EAX, - ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A4]), compiler->exec_reg); + ORC_STRUCT_OFFSET (OrcExecutor, params[ORC_VAR_A4]), compiler->exec_reg); #endif if (compiler->is_64bit) { int i; - for(i=15;i>=0;i--){ - if (compiler->used_regs[ORC_GP_REG_BASE+i] && - compiler->save_regs[ORC_GP_REG_BASE+i]) { - orc_x86_emit_pop (compiler, 8, ORC_GP_REG_BASE+i); + for (i = 15; i >= 0; i--) { + if (compiler->used_regs[ORC_GP_REG_BASE + i] && + compiler->save_regs[ORC_GP_REG_BASE + i]) { + orc_x86_emit_pop (compiler, 8, ORC_GP_REG_BASE + i); } } } else { @@ -517,13 +544,13 @@ orc_x86_emit_epilogue (OrcCompiler *compiler) /* memcpy implementation based on rep movs */ int -orc_x86_assemble_copy_check (OrcCompiler *compiler) +orc_x86_assemble_copy_check (OrcCompiler * compiler) { if (compiler->program->n_insns == 1 && compiler->program->is_2d == FALSE && (strcmp (compiler->program->insns[0].opcode->name, "copyb") == 0 || - strcmp (compiler->program->insns[0].opcode->name, "copyw") == 0 || - strcmp (compiler->program->insns[0].opcode->name, "copyl") == 0)) { + strcmp (compiler->program->insns[0].opcode->name, "copyw") == 0 || + strcmp (compiler->program->insns[0].opcode->name, "copyl") == 0)) { return TRUE; } @@ -531,7 +558,7 @@ orc_x86_assemble_copy_check (OrcCompiler *compiler) } void -orc_x86_assemble_copy (OrcCompiler *compiler) +orc_x86_assemble_copy (OrcCompiler * compiler) { OrcInstruction *insn; int shift = 0; @@ -550,27 +577,27 @@ orc_x86_assemble_copy (OrcCompiler *compiler) orc_x86_emit_prologue (compiler); orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor,arrays[insn->dest_args[0]]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[insn->dest_args[0]]), compiler->exec_reg, X86_EDI); orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor,arrays[insn->src_args[0]]), + (int) ORC_STRUCT_OFFSET (OrcExecutor, arrays[insn->src_args[0]]), compiler->exec_reg, X86_ESI); orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor,n), compiler->exec_reg, + (int) ORC_STRUCT_OFFSET (OrcExecutor, n), compiler->exec_reg, compiler->gp_tmpreg); orc_x86_emit_sar_imm_reg (compiler, 4, 2 - shift, compiler->gp_tmpreg); orc_x86_emit_rep_movs (compiler, 4); if (shift == 0) { orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor,n), compiler->exec_reg, + (int) ORC_STRUCT_OFFSET (OrcExecutor, n), compiler->exec_reg, compiler->gp_tmpreg); orc_x86_emit_and_imm_reg (compiler, 4, 3, compiler->gp_tmpreg); orc_x86_emit_rep_movs (compiler, 1); } if (shift == 1) { orc_x86_emit_mov_memoffset_reg (compiler, 4, - (int)ORC_STRUCT_OFFSET(OrcExecutor,n), compiler->exec_reg, + (int) ORC_STRUCT_OFFSET (OrcExecutor, n), compiler->exec_reg, compiler->gp_tmpreg); orc_x86_emit_and_imm_reg (compiler, 4, 1, compiler->gp_tmpreg); orc_x86_emit_rep_movs (compiler, 2); @@ -580,4 +607,3 @@ orc_x86_assemble_copy (OrcCompiler *compiler) orc_x86_do_fixups (compiler); } - diff --git a/orc/orcx86insn.c b/orc/orcx86insn.c index 4675a99..af49d90 100644 --- a/orc/orcx86insn.c +++ b/orc/orcx86insn.c @@ -14,253 +14,253 @@ static const OrcSysOpcode orc_x86_opcodes[] = { - { "punpcklbw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f60 }, - { "punpcklwd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f61 }, - { "punpckldq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f62 }, - { "packsswb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f63 }, - { "pcmpgtb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f64 }, - { "pcmpgtw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f65 }, - { "pcmpgtd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f66 }, - { "packuswb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f67 }, - { "punpckhbw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f68 }, - { "punpckhwd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f69 }, - { "punpckhdq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f6a }, - { "packssdw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f6b }, - { "punpcklqdq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f6c }, - { "punpckhqdq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f6d }, - { "movdqa", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f6f }, - { "psraw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fe1 }, - { "psrlw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fd1 }, - { "psllw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ff1 }, - { "psrad", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fe2 }, - { "psrld", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fd2 }, - { "pslld", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ff2 }, - { "psrlq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fd3 }, - { "psllq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ff3 }, - { "psrldq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f73 }, - { "pslldq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f73 }, - { "psrlq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fd3 }, - { "pcmpeqb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f74 }, - { "pcmpeqw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f75 }, - { "pcmpeqd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f76 }, - { "paddq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fd4 }, - { "pmullw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fd5 }, - { "psubusb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fd8 }, - { "psubusw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fd9 }, - { "pminub", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fda }, - { "pand", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fdb }, - { "paddusb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fdc }, - { "paddusw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fdd }, - { "pmaxub", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fde }, - { "pandn", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fdf }, - { "pavgb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fe0 }, - { "pavgw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fe3 }, - { "pmulhuw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fe4 }, - { "pmulhw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fe5 }, - { "psubsb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fe8 }, - { "psubsw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fe9 }, - { "pminsw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fea }, - { "por", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0feb }, - { "paddsb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fec }, - { "paddsw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fed }, - { "pmaxsw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fee }, - { "pxor", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fef }, - { "pmuludq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ff4 }, - { "pmaddwd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ff5 }, - { "psadbw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ff6 }, - { "psubb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ff8 }, - { "psubw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ff9 }, - { "psubd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ffa }, - { "psubq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ffb }, - { "paddb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ffc }, - { "paddw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ffd }, - { "paddd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ffe }, - { "pshufb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3800 }, - { "phaddw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3801 }, - { "phaddd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3802 }, - { "phaddsw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3803 }, - { "pmaddubsw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3804 }, - { "phsubw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3805 }, - { "phsubd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3806 }, - { "phsubsw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3807 }, - { "psignb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3808 }, - { "psignw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3809 }, - { "psignd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f380a }, - { "pmulhrsw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f380b }, - { "pabsb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f381c }, - { "pabsw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f381d }, - { "pabsd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f381e }, - { "pmovsxbw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3820 }, - { "pmovsxbd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3821 }, - { "pmovsxbq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3822 }, - { "pmovsxwd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3823 }, - { "pmovsxwq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3824 }, - { "pmovsxdq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3825 }, - { "pmuldq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3828 }, - { "pcmpeqq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3829 }, - { "packusdw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f382b }, - { "pmovzxbw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3830 }, - { "pmovzxbd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3831 }, - { "pmovzxbq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3832 }, - { "pmovzxwd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3833 }, - { "pmovzxwq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3834 }, - { "pmovzxdq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3835 }, - { "pmulld", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3840 }, - { "phminposuw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3841 }, - { "pminsb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3838 }, - { "pminsd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3839 }, - { "pminuw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f383a }, - { "pminud", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f383b }, - { "pmaxsb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f383c }, - { "pmaxsd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f383d }, - { "pmaxuw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f383e }, - { "pmaxud", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f383f }, - { "pcmpgtq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3837 }, - { "addps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f58 }, - { "subps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f5c }, - { "mulps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f59 }, - { "divps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f5e }, - { "sqrtps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f51 }, - { "addpd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0f58 }, - { "subpd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0f5c }, - { "mulpd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0f59 }, - { "divpd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0f5e }, - { "sqrtpd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0f51 }, - { "cmpeqps", ORC_X86_INSN_TYPE_SSEM_SSE, 0, 0x00, 0x0fc2, 0 }, - { "cmpeqpd", ORC_X86_INSN_TYPE_SSEM_SSE, 0, 0x66, 0x0fc2, 0 }, - { "cmpltps", ORC_X86_INSN_TYPE_SSEM_SSE, 0, 0x00, 0x0fc2, 1 }, - { "cmpltpd", ORC_X86_INSN_TYPE_SSEM_SSE, 0, 0x66, 0x0fc2, 1 }, - { "cmpleps", ORC_X86_INSN_TYPE_SSEM_SSE, 0, 0x00, 0x0fc2, 2 }, - { "cmplepd", ORC_X86_INSN_TYPE_SSEM_SSE, 0, 0x66, 0x0fc2, 2 }, - { "cvttps2dq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0xf3, 0x0f5b }, - { "cvttpd2dq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0fe6 }, - { "cvtdq2ps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f5b }, - { "cvtdq2pd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0xf3, 0x0fe6 }, - { "cvtps2pd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f5a }, - { "cvtpd2ps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0f5a }, - { "minps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f5d }, - { "minpd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0f5d }, - { "maxps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f5f }, - { "maxpd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0f5f }, - { "psraw", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f71, 4 }, - { "psrlw", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f71, 2 }, - { "psllw", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f71, 6 }, - { "psrad", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f72, 4 }, - { "psrld", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f72, 2 }, - { "pslld", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f72, 6 }, - { "psrlq", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f73, 2 }, - { "psllq", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f73, 6 }, - { "psrldq", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f73, 3 }, - { "pslldq", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f73, 7 }, - { "pshufd", ORC_X86_INSN_TYPE_IMM8_MMXM_MMX, 0, 0x66, 0x0f70 }, - { "pshuflw", ORC_X86_INSN_TYPE_IMM8_MMXM_MMX, 0, 0xf2, 0x0f70 }, - { "pshufhw", ORC_X86_INSN_TYPE_IMM8_MMXM_MMX, 0, 0xf3, 0x0f70 }, - { "palignr", ORC_X86_INSN_TYPE_IMM8_MMXM_MMX, 0, 0x66, 0x0f3a0f }, - { "pinsrw", ORC_X86_INSN_TYPE_IMM8_REGM_MMX, 0, 0x01, 0x0fc4 }, - { "movd", ORC_X86_INSN_TYPE_REGM_MMX, 0, 0x01, 0x0f6e }, - { "movq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0xf3, 0x0f7e }, - { "movdqa", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0f6f }, - { "movdqu", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0xf3, 0x0f6f }, - { "movhps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f16 }, - { "pextrw", ORC_X86_INSN_TYPE_IMM8_MMX_REG_REV, 0, 0x01, 0x0f3a15 }, - { "movd", ORC_X86_INSN_TYPE_MMX_REGM_REV, 0, 0x01, 0x0f7e }, - { "movq", ORC_X86_INSN_TYPE_MMXM_MMX_REV, 0, 0x66, 0x0fd6 }, - { "movdqa", ORC_X86_INSN_TYPE_MMXM_MMX_REV, 0, 0x66, 0x0f7f }, - { "movdqu", ORC_X86_INSN_TYPE_MMXM_MMX_REV, 0, 0xf3, 0x0f7f }, - { "movntdq", ORC_X86_INSN_TYPE_MMXM_MMX_REV, 0, 0x66, 0x0fe7 }, - { "ldmxcsr", ORC_X86_INSN_TYPE_MEM, 0, 0x00, 0x0fae, 2 }, - { "stmxcsr", ORC_X86_INSN_TYPE_MEM, 0, 0x00, 0x0fae, 3 }, - { "add", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0x83, 0 }, - { "add", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 0 }, - { "add", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x03 }, - { "add", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x01 }, - { "or", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0x83, 1 }, - { "or", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 1 }, - { "or", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x0b }, - { "or", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x09 }, - { "adc", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0x83, 2 }, - { "adc", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 2 }, - { "adc", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x13 }, - { "adc", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x11 }, - { "sbb", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0x83, 3 }, - { "sbb", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 3 }, - { "sbb", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x1b }, - { "sbb", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x19 }, - { "and", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0x83, 4 }, - { "and", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 4 }, - { "and", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x23 }, - { "and", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x21 }, - { "sub", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0x83, 5 }, - { "sub", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 5 }, - { "sub", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x2b }, - { "sub", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x29 }, - { "xor", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0x83, 6 }, - { "xor", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 6 }, - { "xor", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x33 }, - { "xor", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x31 }, - { "cmp", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0x83, 7 }, - { "cmp", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 7 }, - { "cmp", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x3b }, - { "cmp", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x39 }, - { "jo", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x70 }, - { "jno", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x71 }, - { "jc", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x72 }, - { "jnc", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x73 }, - { "jz", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x74 }, - { "jnz", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x75 }, - { "jbe", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x76 }, - { "ja", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x77 }, - { "js", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x78 }, - { "jns", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x79 }, - { "jp", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x7a }, - { "jnp", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x7b }, - { "jl", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x7c }, - { "jge", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x7d }, - { "jle", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x7e }, - { "jg", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x7f }, - { "jmp", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0xeb }, - { "", ORC_X86_INSN_TYPE_LABEL, 0, 0x00, 0x00 }, - { "ret", ORC_X86_INSN_TYPE_NONE, 0, 0x00, 0xc3 }, - { "retq", ORC_X86_INSN_TYPE_NONE, 0, 0x00, 0xc3 }, - { "emms", ORC_X86_INSN_TYPE_NONE, 0, 0x00, 0x0f77 }, - { "rdtsc", ORC_X86_INSN_TYPE_NONE, 0, 0x00, 0x0f31 }, - { "nop", ORC_X86_INSN_TYPE_NONE, 0, 0x00, 0x90 }, - { "rep movsb", ORC_X86_INSN_TYPE_NONE, 0, 0xf3, 0xa4 }, - { "rep movsw", ORC_X86_INSN_TYPE_NONE, 0, 0x66, 0xf3a5 }, - { "rep movsl", ORC_X86_INSN_TYPE_NONE, 0, 0xf3, 0xa5 }, - { "push", ORC_X86_INSN_TYPE_STACK, 0, 0x00, 0x50 }, - { "pop", ORC_X86_INSN_TYPE_STACK, 0, 0x00, 0x58 }, - { "movzx", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x0fb6 }, - { "movw", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x66, 0x8b }, - { "movl", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x8b }, - { "mov", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x8b }, - { "mov", ORC_X86_INSN_TYPE_IMM32_REGM_MOV, 0, 0x00, 0xb8 }, - { "movb", ORC_X86_INSN_TYPE_REG8_REGM, 0, 0x00, 0x88 }, - { "movw", ORC_X86_INSN_TYPE_REG16_REGM, 0, 0x66, 0x89 }, - { "movl", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x89 }, - { "mov", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x89 }, - { "test", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x85 }, - { "testl", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0xf7, 0 }, - { "leal", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x8d }, - { "leaq", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x8d }, - { "imul", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x0faf }, - { "imull", ORC_X86_INSN_TYPE_REGM, 0, 0x00, 0xf7, 5 }, - { "incl", ORC_X86_INSN_TYPE_REGM, 0, 0x00, 0xff, 0 }, - { "decl", ORC_X86_INSN_TYPE_REGM, 0, 0x00, 0xff, 1 }, - { "sar", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0xc1, 7 }, - { "sar", ORC_X86_INSN_TYPE_REGM, 0, 0x00, 0xd1, 7 }, - { "and", ORC_X86_INSN_TYPE_IMM32_A, 0, 0x00, 0x25, 4 }, - { "", ORC_X86_INSN_TYPE_ALIGN, 0, 0x00, 0x00 }, - { "pshufw", ORC_X86_INSN_TYPE_IMM8_MMXM_MMX, 0, 0x00, 0x0f70 }, - { "movq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f6f }, - { "movq", ORC_X86_INSN_TYPE_MMXM_MMX_REV, 0, 0x00, 0x0f7f }, + {"punpcklbw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f60}, + {"punpcklwd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f61}, + {"punpckldq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f62}, + {"packsswb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f63}, + {"pcmpgtb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f64}, + {"pcmpgtw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f65}, + {"pcmpgtd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f66}, + {"packuswb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f67}, + {"punpckhbw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f68}, + {"punpckhwd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f69}, + {"punpckhdq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f6a}, + {"packssdw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f6b}, + {"punpcklqdq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f6c}, + {"punpckhqdq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f6d}, + {"movdqa", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f6f}, + {"psraw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fe1}, + {"psrlw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fd1}, + {"psllw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ff1}, + {"psrad", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fe2}, + {"psrld", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fd2}, + {"pslld", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ff2}, + {"psrlq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fd3}, + {"psllq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ff3}, + {"psrldq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f73}, + {"pslldq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f73}, + {"psrlq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fd3}, + {"pcmpeqb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f74}, + {"pcmpeqw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f75}, + {"pcmpeqd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f76}, + {"paddq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fd4}, + {"pmullw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fd5}, + {"psubusb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fd8}, + {"psubusw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fd9}, + {"pminub", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fda}, + {"pand", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fdb}, + {"paddusb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fdc}, + {"paddusw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fdd}, + {"pmaxub", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fde}, + {"pandn", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fdf}, + {"pavgb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fe0}, + {"pavgw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fe3}, + {"pmulhuw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fe4}, + {"pmulhw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fe5}, + {"psubsb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fe8}, + {"psubsw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fe9}, + {"pminsw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fea}, + {"por", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0feb}, + {"paddsb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fec}, + {"paddsw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fed}, + {"pmaxsw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fee}, + {"pxor", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0fef}, + {"pmuludq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ff4}, + {"pmaddwd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ff5}, + {"psadbw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ff6}, + {"psubb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ff8}, + {"psubw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ff9}, + {"psubd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ffa}, + {"psubq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ffb}, + {"paddb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ffc}, + {"paddw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ffd}, + {"paddd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0ffe}, + {"pshufb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3800}, + {"phaddw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3801}, + {"phaddd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3802}, + {"phaddsw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3803}, + {"pmaddubsw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3804}, + {"phsubw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3805}, + {"phsubd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3806}, + {"phsubsw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3807}, + {"psignb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3808}, + {"psignw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3809}, + {"psignd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f380a}, + {"pmulhrsw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f380b}, + {"pabsb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f381c}, + {"pabsw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f381d}, + {"pabsd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f381e}, + {"pmovsxbw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3820}, + {"pmovsxbd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3821}, + {"pmovsxbq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3822}, + {"pmovsxwd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3823}, + {"pmovsxwq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3824}, + {"pmovsxdq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3825}, + {"pmuldq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3828}, + {"pcmpeqq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3829}, + {"packusdw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f382b}, + {"pmovzxbw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3830}, + {"pmovzxbd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3831}, + {"pmovzxbq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3832}, + {"pmovzxwd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3833}, + {"pmovzxwq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3834}, + {"pmovzxdq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3835}, + {"pmulld", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3840}, + {"phminposuw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3841}, + {"pminsb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3838}, + {"pminsd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3839}, + {"pminuw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f383a}, + {"pminud", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f383b}, + {"pmaxsb", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f383c}, + {"pmaxsd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f383d}, + {"pmaxuw", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f383e}, + {"pmaxud", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f383f}, + {"pcmpgtq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x01, 0x0f3837}, + {"addps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f58}, + {"subps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f5c}, + {"mulps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f59}, + {"divps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f5e}, + {"sqrtps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f51}, + {"addpd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0f58}, + {"subpd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0f5c}, + {"mulpd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0f59}, + {"divpd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0f5e}, + {"sqrtpd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0f51}, + {"cmpeqps", ORC_X86_INSN_TYPE_SSEM_SSE, 0, 0x00, 0x0fc2, 0}, + {"cmpeqpd", ORC_X86_INSN_TYPE_SSEM_SSE, 0, 0x66, 0x0fc2, 0}, + {"cmpltps", ORC_X86_INSN_TYPE_SSEM_SSE, 0, 0x00, 0x0fc2, 1}, + {"cmpltpd", ORC_X86_INSN_TYPE_SSEM_SSE, 0, 0x66, 0x0fc2, 1}, + {"cmpleps", ORC_X86_INSN_TYPE_SSEM_SSE, 0, 0x00, 0x0fc2, 2}, + {"cmplepd", ORC_X86_INSN_TYPE_SSEM_SSE, 0, 0x66, 0x0fc2, 2}, + {"cvttps2dq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0xf3, 0x0f5b}, + {"cvttpd2dq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0fe6}, + {"cvtdq2ps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f5b}, + {"cvtdq2pd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0xf3, 0x0fe6}, + {"cvtps2pd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f5a}, + {"cvtpd2ps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0f5a}, + {"minps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f5d}, + {"minpd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0f5d}, + {"maxps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f5f}, + {"maxpd", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0f5f}, + {"psraw", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f71, 4}, + {"psrlw", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f71, 2}, + {"psllw", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f71, 6}, + {"psrad", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f72, 4}, + {"psrld", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f72, 2}, + {"pslld", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f72, 6}, + {"psrlq", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f73, 2}, + {"psllq", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f73, 6}, + {"psrldq", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f73, 3}, + {"pslldq", ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT, 0, 0x01, 0x0f73, 7}, + {"pshufd", ORC_X86_INSN_TYPE_IMM8_MMXM_MMX, 0, 0x66, 0x0f70}, + {"pshuflw", ORC_X86_INSN_TYPE_IMM8_MMXM_MMX, 0, 0xf2, 0x0f70}, + {"pshufhw", ORC_X86_INSN_TYPE_IMM8_MMXM_MMX, 0, 0xf3, 0x0f70}, + {"palignr", ORC_X86_INSN_TYPE_IMM8_MMXM_MMX, 0, 0x66, 0x0f3a0f}, + {"pinsrw", ORC_X86_INSN_TYPE_IMM8_REGM_MMX, 0, 0x01, 0x0fc4}, + {"movd", ORC_X86_INSN_TYPE_REGM_MMX, 0, 0x01, 0x0f6e}, + {"movq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0xf3, 0x0f7e}, + {"movdqa", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x66, 0x0f6f}, + {"movdqu", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0xf3, 0x0f6f}, + {"movhps", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f16}, + {"pextrw", ORC_X86_INSN_TYPE_IMM8_MMX_REG_REV, 0, 0x01, 0x0f3a15}, + {"movd", ORC_X86_INSN_TYPE_MMX_REGM_REV, 0, 0x01, 0x0f7e}, + {"movq", ORC_X86_INSN_TYPE_MMXM_MMX_REV, 0, 0x66, 0x0fd6}, + {"movdqa", ORC_X86_INSN_TYPE_MMXM_MMX_REV, 0, 0x66, 0x0f7f}, + {"movdqu", ORC_X86_INSN_TYPE_MMXM_MMX_REV, 0, 0xf3, 0x0f7f}, + {"movntdq", ORC_X86_INSN_TYPE_MMXM_MMX_REV, 0, 0x66, 0x0fe7}, + {"ldmxcsr", ORC_X86_INSN_TYPE_MEM, 0, 0x00, 0x0fae, 2}, + {"stmxcsr", ORC_X86_INSN_TYPE_MEM, 0, 0x00, 0x0fae, 3}, + {"add", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0x83, 0}, + {"add", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 0}, + {"add", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x03}, + {"add", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x01}, + {"or", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0x83, 1}, + {"or", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 1}, + {"or", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x0b}, + {"or", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x09}, + {"adc", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0x83, 2}, + {"adc", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 2}, + {"adc", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x13}, + {"adc", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x11}, + {"sbb", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0x83, 3}, + {"sbb", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 3}, + {"sbb", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x1b}, + {"sbb", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x19}, + {"and", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0x83, 4}, + {"and", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 4}, + {"and", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x23}, + {"and", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x21}, + {"sub", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0x83, 5}, + {"sub", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 5}, + {"sub", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x2b}, + {"sub", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x29}, + {"xor", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0x83, 6}, + {"xor", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 6}, + {"xor", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x33}, + {"xor", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x31}, + {"cmp", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0x83, 7}, + {"cmp", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 7}, + {"cmp", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x3b}, + {"cmp", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x39}, + {"jo", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x70}, + {"jno", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x71}, + {"jc", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x72}, + {"jnc", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x73}, + {"jz", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x74}, + {"jnz", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x75}, + {"jbe", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x76}, + {"ja", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x77}, + {"js", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x78}, + {"jns", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x79}, + {"jp", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x7a}, + {"jnp", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x7b}, + {"jl", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x7c}, + {"jge", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x7d}, + {"jle", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x7e}, + {"jg", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x7f}, + {"jmp", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0xeb}, + {"", ORC_X86_INSN_TYPE_LABEL, 0, 0x00, 0x00}, + {"ret", ORC_X86_INSN_TYPE_NONE, 0, 0x00, 0xc3}, + {"retq", ORC_X86_INSN_TYPE_NONE, 0, 0x00, 0xc3}, + {"emms", ORC_X86_INSN_TYPE_NONE, 0, 0x00, 0x0f77}, + {"rdtsc", ORC_X86_INSN_TYPE_NONE, 0, 0x00, 0x0f31}, + {"nop", ORC_X86_INSN_TYPE_NONE, 0, 0x00, 0x90}, + {"rep movsb", ORC_X86_INSN_TYPE_NONE, 0, 0xf3, 0xa4}, + {"rep movsw", ORC_X86_INSN_TYPE_NONE, 0, 0x66, 0xf3a5}, + {"rep movsl", ORC_X86_INSN_TYPE_NONE, 0, 0xf3, 0xa5}, + {"push", ORC_X86_INSN_TYPE_STACK, 0, 0x00, 0x50}, + {"pop", ORC_X86_INSN_TYPE_STACK, 0, 0x00, 0x58}, + {"movzx", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x0fb6}, + {"movw", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x66, 0x8b}, + {"movl", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x8b}, + {"mov", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x8b}, + {"mov", ORC_X86_INSN_TYPE_IMM32_REGM_MOV, 0, 0x00, 0xb8}, + {"movb", ORC_X86_INSN_TYPE_REG8_REGM, 0, 0x00, 0x88}, + {"movw", ORC_X86_INSN_TYPE_REG16_REGM, 0, 0x66, 0x89}, + {"movl", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x89}, + {"mov", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x89}, + {"test", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x85}, + {"testl", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0xf7, 0}, + {"leal", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x8d}, + {"leaq", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x8d}, + {"imul", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x0faf}, + {"imull", ORC_X86_INSN_TYPE_REGM, 0, 0x00, 0xf7, 5}, + {"incl", ORC_X86_INSN_TYPE_REGM, 0, 0x00, 0xff, 0}, + {"decl", ORC_X86_INSN_TYPE_REGM, 0, 0x00, 0xff, 1}, + {"sar", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0xc1, 7}, + {"sar", ORC_X86_INSN_TYPE_REGM, 0, 0x00, 0xd1, 7}, + {"and", ORC_X86_INSN_TYPE_IMM32_A, 0, 0x00, 0x25, 4}, + {"", ORC_X86_INSN_TYPE_ALIGN, 0, 0x00, 0x00}, + {"pshufw", ORC_X86_INSN_TYPE_IMM8_MMXM_MMX, 0, 0x00, 0x0f70}, + {"movq", ORC_X86_INSN_TYPE_MMXM_MMX, 0, 0x00, 0x0f6f}, + {"movq", ORC_X86_INSN_TYPE_MMXM_MMX_REV, 0, 0x00, 0x0f7f}, }; static void -output_opcode (OrcCompiler *p, const OrcSysOpcode *opcode, int size, +output_opcode (OrcCompiler * p, const OrcSysOpcode * opcode, int size, int src, int dest, int is_sse) { - ORC_ASSERT(opcode->code != 0); + ORC_ASSERT (opcode->code != 0); if (opcode->prefix != 0) { if (opcode->prefix == 0x01) { @@ -298,7 +298,7 @@ is_sse_reg (int reg) } void -orc_x86_insn_output_asm (OrcCompiler *p, OrcX86Insn *xinsn) +orc_x86_insn_output_asm (OrcCompiler * p, OrcX86Insn * xinsn) { char imm_str[40] = { 0 }; char op1_str[40] = { 0 }; @@ -306,11 +306,12 @@ orc_x86_insn_output_asm (OrcCompiler *p, OrcX86Insn *xinsn) int is_sse; if (xinsn->opcode->type == ORC_X86_INSN_TYPE_ALIGN) { - if (xinsn->size > 0) ORC_ASM_CODE(p,".p2align %d\n", xinsn->size); + if (xinsn->size > 0) + ORC_ASM_CODE (p, ".p2align %d\n", xinsn->size); return; } if (xinsn->opcode->type == ORC_X86_INSN_TYPE_LABEL) { - ORC_ASM_CODE(p,"%d:\n", xinsn->label); + ORC_ASM_CODE (p, "%d:\n", xinsn->label); return; } @@ -347,11 +348,11 @@ orc_x86_insn_output_asm (OrcCompiler *p, OrcX86Insn *xinsn) case ORC_X86_INSN_TYPE_IMM32_REGM: case ORC_X86_INSN_TYPE_IMM32_REGM_MOV: case ORC_X86_INSN_TYPE_IMM32_A: - sprintf(imm_str, "$%d, ", xinsn->imm); + sprintf (imm_str, "$%d, ", xinsn->imm); break; default: - ORC_ERROR("%d", xinsn->opcode->type); - ORC_ASSERT(0); + ORC_ERROR ("%d", xinsn->opcode->type); + ORC_ASSERT (0); break; } @@ -360,43 +361,41 @@ orc_x86_insn_output_asm (OrcCompiler *p, OrcX86Insn *xinsn) case ORC_X86_INSN_TYPE_SSEM_SSE: case ORC_X86_INSN_TYPE_IMM8_MMXM_MMX: if (xinsn->type == ORC_X86_RM_REG) { - sprintf(op1_str, "%%%s, ", + sprintf (op1_str, "%%%s, ", orc_x86_get_regname_mmxsse (xinsn->src, is_sse)); } else if (xinsn->type == ORC_X86_RM_MEMOFFSET) { - sprintf(op1_str, "%d(%%%s), ", xinsn->offset, + sprintf (op1_str, "%d(%%%s), ", xinsn->offset, orc_x86_get_regname_ptr (p, xinsn->src)); } else if (xinsn->type == ORC_X86_RM_MEMINDEX) { - sprintf(op1_str, "%d(%%%s,%%%s,%d), ", xinsn->offset, + sprintf (op1_str, "%d(%%%s,%%%s,%d), ", xinsn->offset, orc_x86_get_regname_ptr (p, xinsn->src), - orc_x86_get_regname_ptr (p, xinsn->index_reg), - 1<<xinsn->shift); + orc_x86_get_regname_ptr (p, xinsn->index_reg), 1 << xinsn->shift); } else { - ORC_ASSERT(0); + ORC_ASSERT (0); } break; - case ORC_X86_INSN_TYPE_MMXM_MMX_REV: /* FIXME misnamed */ + case ORC_X86_INSN_TYPE_MMXM_MMX_REV: /* FIXME misnamed */ case ORC_X86_INSN_TYPE_SSEM_SSE_REV: case ORC_X86_INSN_TYPE_MMX_REGM_REV: case ORC_X86_INSN_TYPE_IMM8_MMX_REG_REV: - sprintf(op1_str, "%%%s, ", - orc_x86_get_regname_mmxsse (xinsn->src, is_sse)); + sprintf (op1_str, "%%%s, ", + orc_x86_get_regname_mmxsse (xinsn->src, is_sse)); break; case ORC_X86_INSN_TYPE_REGM_MMX: case ORC_X86_INSN_TYPE_REGM_REG: case ORC_X86_INSN_TYPE_IMM8_REGM_MMX: if (xinsn->type == ORC_X86_RM_REG) { - sprintf(op1_str, "%%%s, ", orc_x86_get_regname_size (xinsn->src, - xinsn->size)); + sprintf (op1_str, "%%%s, ", orc_x86_get_regname_size (xinsn->src, + xinsn->size)); } else if (xinsn->type == ORC_X86_RM_MEMOFFSET) { - sprintf(op1_str, "%d(%%%s), ", xinsn->offset, + sprintf (op1_str, "%d(%%%s), ", xinsn->offset, orc_x86_get_regname_ptr (p, xinsn->src)); } else if (xinsn->type == ORC_X86_RM_MEMINDEX) { - sprintf(op1_str, "%d(%%%s,%%%s,%d), ", xinsn->offset, + sprintf (op1_str, "%d(%%%s,%%%s,%d), ", xinsn->offset, orc_x86_get_regname_ptr (p, xinsn->src), - orc_x86_get_regname_ptr (p, xinsn->index_reg), - 1<<xinsn->shift); + orc_x86_get_regname_ptr (p, xinsn->index_reg), 1 << xinsn->shift); } else { - ORC_ASSERT(0); + ORC_ASSERT (0); } break; case ORC_X86_INSN_TYPE_MEM: @@ -414,17 +413,17 @@ orc_x86_insn_output_asm (OrcCompiler *p, OrcX86Insn *xinsn) op1_str[0] = 0; break; case ORC_X86_INSN_TYPE_REG_REGM: - sprintf(op1_str, "%%%s, ", orc_x86_get_regname (xinsn->src)); + sprintf (op1_str, "%%%s, ", orc_x86_get_regname (xinsn->src)); break; case ORC_X86_INSN_TYPE_REG8_REGM: - sprintf(op1_str, "%%%s, ", orc_x86_get_regname_8 (xinsn->src)); + sprintf (op1_str, "%%%s, ", orc_x86_get_regname_8 (xinsn->src)); break; case ORC_X86_INSN_TYPE_REG16_REGM: - sprintf(op1_str, "%%%s, ", orc_x86_get_regname_16 (xinsn->src)); + sprintf (op1_str, "%%%s, ", orc_x86_get_regname_16 (xinsn->src)); break; default: - ORC_ERROR("%d", xinsn->opcode->type); - ORC_ASSERT(0); + ORC_ERROR ("%d", xinsn->opcode->type); + ORC_ASSERT (0); break; } @@ -435,24 +434,23 @@ orc_x86_insn_output_asm (OrcCompiler *p, OrcX86Insn *xinsn) case ORC_X86_INSN_TYPE_IMM8_REGM_MMX: case ORC_X86_INSN_TYPE_REGM_MMX: case ORC_X86_INSN_TYPE_IMM8_MMX_SHIFT: - sprintf(op2_str, "%%%s", - orc_x86_get_regname_mmxsse (xinsn->dest, is_sse)); + sprintf (op2_str, "%%%s", + orc_x86_get_regname_mmxsse (xinsn->dest, is_sse)); break; case ORC_X86_INSN_TYPE_MMXM_MMX_REV: case ORC_X86_INSN_TYPE_SSEM_SSE_REV: if (xinsn->type == ORC_X86_RM_REG) { - sprintf(op2_str, "%%%s", + sprintf (op2_str, "%%%s", orc_x86_get_regname_mmxsse (xinsn->dest, is_sse)); } else if (xinsn->type == ORC_X86_RM_MEMOFFSET) { - sprintf(op2_str, "%d(%%%s)", xinsn->offset, + sprintf (op2_str, "%d(%%%s)", xinsn->offset, orc_x86_get_regname_ptr (p, xinsn->dest)); } else if (xinsn->type == ORC_X86_RM_MEMINDEX) { - sprintf(op1_str, "%d(%%%s,%%%s,%d), ", xinsn->offset, + sprintf (op1_str, "%d(%%%s,%%%s,%d), ", xinsn->offset, orc_x86_get_regname_ptr (p, xinsn->dest), - orc_x86_get_regname_ptr (p, xinsn->index_reg), - 1<<xinsn->shift); + orc_x86_get_regname_ptr (p, xinsn->index_reg), 1 << xinsn->shift); } else { - ORC_ASSERT(0); + ORC_ASSERT (0); } break; case ORC_X86_INSN_TYPE_MMX_REGM_REV: @@ -465,40 +463,39 @@ orc_x86_insn_output_asm (OrcCompiler *p, OrcX86Insn *xinsn) case ORC_X86_INSN_TYPE_REG_REGM: case ORC_X86_INSN_TYPE_IMM8_MMX_REG_REV: if (xinsn->type == ORC_X86_RM_REG) { - sprintf(op2_str, "%%%s", orc_x86_get_regname (xinsn->dest)); + sprintf (op2_str, "%%%s", orc_x86_get_regname (xinsn->dest)); } else if (xinsn->type == ORC_X86_RM_MEMOFFSET) { - sprintf(op2_str, "%d(%%%s)", xinsn->offset, + sprintf (op2_str, "%d(%%%s)", xinsn->offset, orc_x86_get_regname_ptr (p, xinsn->dest)); } else if (xinsn->type == ORC_X86_RM_MEMINDEX) { - sprintf(op1_str, "%d(%%%s,%%%s,%d), ", xinsn->offset, + sprintf (op1_str, "%d(%%%s,%%%s,%d), ", xinsn->offset, orc_x86_get_regname_ptr (p, xinsn->dest), - orc_x86_get_regname_ptr (p, xinsn->index_reg), - 1<<xinsn->shift); + orc_x86_get_regname_ptr (p, xinsn->index_reg), 1 << xinsn->shift); } else { - ORC_ASSERT(0); + ORC_ASSERT (0); } break; case ORC_X86_INSN_TYPE_REGM_REG: case ORC_X86_INSN_TYPE_STACK: - sprintf(op2_str, "%%%s", orc_x86_get_regname_size (xinsn->dest, - xinsn->size)); + sprintf (op2_str, "%%%s", orc_x86_get_regname_size (xinsn->dest, + xinsn->size)); break; case ORC_X86_INSN_TYPE_MEM: if (xinsn->type == ORC_X86_RM_REG) { - ORC_ERROR("register operand on memory instruction"); - sprintf(op2_str, "ERROR"); + ORC_ERROR ("register operand on memory instruction"); + sprintf (op2_str, "ERROR"); } else if (xinsn->type == ORC_X86_RM_MEMOFFSET) { - /* FIXME: this uses xinsn->src */ - sprintf(op2_str, "%d(%%%s)", xinsn->offset, + /* FIXME: this uses xinsn->src */ + sprintf (op2_str, "%d(%%%s)", xinsn->offset, orc_x86_get_regname_ptr (p, xinsn->src)); } else { - ORC_ASSERT(0); + ORC_ASSERT (0); } break; case ORC_X86_INSN_TYPE_BRANCH: sprintf (op2_str, "%d%c", xinsn->label, (p->labels_int[xinsn->label] < - xinsn - ((OrcX86Insn *)p->output_insns)) ? 'b' : 'f'); + xinsn - ((OrcX86Insn *) p->output_insns)) ? 'b' : 'f'); break; case ORC_X86_INSN_TYPE_LABEL: case ORC_X86_INSN_TYPE_ALIGN: @@ -506,63 +503,93 @@ orc_x86_insn_output_asm (OrcCompiler *p, OrcX86Insn *xinsn) op2_str[0] = 0; break; case ORC_X86_INSN_TYPE_IMM32_A: - sprintf(op2_str, "%%%s", orc_x86_get_regname_size (X86_EAX, xinsn->size)); + sprintf (op2_str, "%%%s", orc_x86_get_regname_size (X86_EAX, + xinsn->size)); break; default: - ORC_ERROR("%d", xinsn->opcode->type); - ORC_ASSERT(0); + ORC_ERROR ("%d", xinsn->opcode->type); + ORC_ASSERT (0); break; } - ORC_ASM_CODE(p," %s %s%s%s\n", xinsn->opcode->name, + ORC_ASM_CODE (p, " %s %s%s%s\n", xinsn->opcode->name, imm_str, op1_str, op2_str); } orc_uint8 nop_codes[][16] = { - { 0 /* MSVC wants something here */ }, - { 0x90 }, - { 0x66, 0x90 }, /* xchg %ax,%ax */ + {0 /* MSVC wants something here */ } + , + {0x90} + , + {0x66, 0x90} + , /* xchg %ax,%ax */ #if 0 - { 0x0f, 0x1f, 0x00 }, /* nopl (%rax) */ - { 0x0f, 0x1f, 0x40, 0x00 }, /* nopl 0x0(%rax) */ - { 0x0f, 0x1f, 0x44, 0x00, 0x00 }, /* nopl 0x0(%rax,%rax,1) */ - { 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00 }, /* nopw 0x0(%rax,%rax,1) */ - { 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00 }, /* nopl 0x0(%rax) */ - { 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* nopl 0x0(%rax,%rax,1) */ - { 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* nopw 0x0(%rax,%rax,1) */ + {0x0f, 0x1f, 0x00} + , /* nopl (%rax) */ + {0x0f, 0x1f, 0x40, 0x00} + , /* nopl 0x0(%rax) */ + {0x0f, 0x1f, 0x44, 0x00, 0x00} + , /* nopl 0x0(%rax,%rax,1) */ + {0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00} + , /* nopw 0x0(%rax,%rax,1) */ + {0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00} + , /* nopl 0x0(%rax) */ + {0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00} + , /* nopl 0x0(%rax,%rax,1) */ + {0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00} + , /* nopw 0x0(%rax,%rax,1) */ /* Forms of nopw %cs:0x0(%rax,%rax,1) */ - { 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x66, 0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x66, 0x66, 0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, - 0x00 }, - { 0x66, 0x66, 0x66, 0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, - 0x00, 0x00 }, - { 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, - 0x00, 0x00, 0x00 }, + {0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00} + , + {0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00} + , + {0x66, 0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00} + , + {0x66, 0x66, 0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, + 0x00} + , + {0x66, 0x66, 0x66, 0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, + 0x00, 0x00} + , + {0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, + 0x00, 0x00, 0x00} + , #else - { 0x90, 0x90, 0x90 }, - { 0x90, 0x90, 0x90, 0x90 }, - { 0x90, 0x90, 0x90, 0x90, 0x90 }, - { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }, - { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }, - { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }, - { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }, - { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }, - { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }, - { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }, - { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, - 0x90, }, - { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, - 0x90, 0x90, }, - { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, - 0x90, 0x90, 0x90, }, + {0x90, 0x90, 0x90} + , + {0x90, 0x90, 0x90, 0x90} + , + {0x90, 0x90, 0x90, 0x90, 0x90} + , + {0x90, 0x90, 0x90, 0x90, 0x90, 0x90} + , + {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90} + , + {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90} + , + {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90} + , + {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90} + , + {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90} + , + {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90} + , + {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, + 0x90,} + , + {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, + 0x90, 0x90,} + , + {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, + 0x90, 0x90, 0x90,} + , #endif }; void -orc_x86_insn_output_opcode (OrcCompiler *p, OrcX86Insn *xinsn) +orc_x86_insn_output_opcode (OrcCompiler * p, OrcX86Insn * xinsn) { int is_sse; @@ -585,7 +612,8 @@ orc_x86_insn_output_opcode (OrcCompiler *p, OrcX86Insn *xinsn) case ORC_X86_INSN_TYPE_IMM32_REGM: case ORC_X86_INSN_TYPE_REG8_REGM: case ORC_X86_INSN_TYPE_REG16_REGM: - output_opcode (p, xinsn->opcode, xinsn->size, xinsn->dest, xinsn->src, FALSE); + output_opcode (p, xinsn->opcode, xinsn->size, xinsn->dest, xinsn->src, + FALSE); break; case ORC_X86_INSN_TYPE_IMM8_MMXM_MMX: case ORC_X86_INSN_TYPE_MMXM_MMX: @@ -598,19 +626,20 @@ orc_x86_insn_output_opcode (OrcCompiler *p, OrcX86Insn *xinsn) is_sse); break; case ORC_X86_INSN_TYPE_IMM8_MMX_REG_REV: - output_opcode (p, xinsn->opcode, 4, xinsn->dest, xinsn->src, - is_sse); + output_opcode (p, xinsn->opcode, 4, xinsn->dest, xinsn->src, is_sse); break; case ORC_X86_INSN_TYPE_MEM: case ORC_X86_INSN_TYPE_REGM_REG: - output_opcode (p, xinsn->opcode, xinsn->size, xinsn->src, xinsn->dest, FALSE); + output_opcode (p, xinsn->opcode, xinsn->size, xinsn->src, xinsn->dest, + FALSE); break; case ORC_X86_INSN_TYPE_REGM: - output_opcode (p, xinsn->opcode, xinsn->size, xinsn->src, xinsn->dest, FALSE); + output_opcode (p, xinsn->opcode, xinsn->size, xinsn->src, xinsn->dest, + FALSE); break; case ORC_X86_INSN_TYPE_IMM32_REGM_MOV: orc_x86_emit_rex (p, xinsn->size, 0, 0, xinsn->dest); - *p->codeptr++ = xinsn->opcode->code + (xinsn->dest&7); + *p->codeptr++ = xinsn->opcode->code + (xinsn->dest & 7); break; case ORC_X86_INSN_TYPE_NONE: output_opcode (p, xinsn->opcode, 4, 0, 0, FALSE); @@ -619,28 +648,28 @@ orc_x86_insn_output_opcode (OrcCompiler *p, OrcX86Insn *xinsn) output_opcode (p, xinsn->opcode, xinsn->size, 0, 0, FALSE); break; case ORC_X86_INSN_TYPE_ALIGN: - { - int diff; - int i; - diff = (p->code - p->codeptr)&((1<<xinsn->size) - 1); - for(i=0;i<diff;i++){ - *p->codeptr++ = nop_codes[diff][i]; - } + { + int diff; + int i; + diff = (p->code - p->codeptr) & ((1 << xinsn->size) - 1); + for (i = 0; i < diff; i++) { + *p->codeptr++ = nop_codes[diff][i]; } + } break; case ORC_X86_INSN_TYPE_LABEL: case ORC_X86_INSN_TYPE_BRANCH: case ORC_X86_INSN_TYPE_STACK: break; default: - ORC_ERROR("%d", xinsn->opcode->type); - ORC_ASSERT(0); + ORC_ERROR ("%d", xinsn->opcode->type); + ORC_ASSERT (0); break; } } void -orc_x86_insn_output_modrm (OrcCompiler *p, OrcX86Insn *xinsn) +orc_x86_insn_output_modrm (OrcCompiler * p, OrcX86Insn * xinsn) { switch (xinsn->opcode->type) { case ORC_X86_INSN_TYPE_REGM_REG: @@ -657,7 +686,7 @@ orc_x86_insn_output_modrm (OrcCompiler *p, OrcX86Insn *xinsn) orc_x86_emit_modrm_memindex2 (p, xinsn->offset, xinsn->src, xinsn->index_reg, xinsn->shift, xinsn->dest); } else { - ORC_ASSERT(0); + ORC_ASSERT (0); } break; case ORC_X86_INSN_TYPE_REG_REGM: @@ -676,7 +705,7 @@ orc_x86_insn_output_modrm (OrcCompiler *p, OrcX86Insn *xinsn) orc_x86_emit_modrm_memindex2 (p, xinsn->offset, xinsn->dest, xinsn->index_reg, xinsn->shift, xinsn->src); } else { - ORC_ASSERT(0); + ORC_ASSERT (0); } break; case ORC_X86_INSN_TYPE_MEM: @@ -689,7 +718,7 @@ orc_x86_insn_output_modrm (OrcCompiler *p, OrcX86Insn *xinsn) orc_x86_emit_modrm_memindex2 (p, xinsn->offset, xinsn->src, xinsn->index_reg, xinsn->shift, xinsn->opcode->code2); } else { - ORC_ASSERT(0); + ORC_ASSERT (0); } break; case ORC_X86_INSN_TYPE_IMM32_REGM_MOV: @@ -710,7 +739,7 @@ orc_x86_insn_output_modrm (OrcCompiler *p, OrcX86Insn *xinsn) orc_x86_emit_modrm_memindex2 (p, xinsn->offset, xinsn->dest, xinsn->index_reg, xinsn->shift, xinsn->opcode->code2); } else { - ORC_ASSERT(0); + ORC_ASSERT (0); } break; case ORC_X86_INSN_TYPE_SSEM_SSE: @@ -723,12 +752,12 @@ orc_x86_insn_output_modrm (OrcCompiler *p, OrcX86Insn *xinsn) orc_x86_emit_modrm_memindex2 (p, xinsn->offset, xinsn->src, xinsn->index_reg, xinsn->shift, xinsn->dest); } else { - ORC_ASSERT(0); + ORC_ASSERT (0); } *p->codeptr++ = xinsn->opcode->code2; break; case ORC_X86_INSN_TYPE_STACK: - *p->codeptr++ = xinsn->opcode->code + (xinsn->dest&0x7); + *p->codeptr++ = xinsn->opcode->code + (xinsn->dest & 0x7); break; case ORC_X86_INSN_TYPE_BRANCH: if (xinsn->size == 4) { @@ -757,14 +786,14 @@ orc_x86_insn_output_modrm (OrcCompiler *p, OrcX86Insn *xinsn) x86_add_label (p, p->codeptr, xinsn->label); break; default: - ORC_ERROR("%d", xinsn->opcode->type); - ORC_ASSERT(0); + ORC_ERROR ("%d", xinsn->opcode->type); + ORC_ASSERT (0); break; } } void -orc_x86_insn_output_immediate (OrcCompiler *p, OrcX86Insn *xinsn) +orc_x86_insn_output_immediate (OrcCompiler * p, OrcX86Insn * xinsn) { switch (xinsn->opcode->type) { case ORC_X86_INSN_TYPE_REGM_REG: @@ -787,10 +816,10 @@ orc_x86_insn_output_immediate (OrcCompiler *p, OrcX86Insn *xinsn) case ORC_X86_INSN_TYPE_IMM32_REGM_MOV: case ORC_X86_INSN_TYPE_IMM32_REGM: case ORC_X86_INSN_TYPE_IMM32_A: - *p->codeptr++ = xinsn->imm&0xff; - *p->codeptr++ = (xinsn->imm>>8)&0xff; - *p->codeptr++ = (xinsn->imm>>16)&0xff; - *p->codeptr++ = (xinsn->imm>>24)&0xff; + *p->codeptr++ = xinsn->imm & 0xff; + *p->codeptr++ = (xinsn->imm >> 8) & 0xff; + *p->codeptr++ = (xinsn->imm >> 16) & 0xff; + *p->codeptr++ = (xinsn->imm >> 24) & 0xff; break; case ORC_X86_INSN_TYPE_SSEM_SSE: case ORC_X86_INSN_TYPE_STACK: @@ -802,30 +831,30 @@ orc_x86_insn_output_immediate (OrcCompiler *p, OrcX86Insn *xinsn) case ORC_X86_INSN_TYPE_NONE: break; default: - ORC_ERROR("%d", xinsn->opcode->type); - ORC_ASSERT(0); + ORC_ERROR ("%d", xinsn->opcode->type); + ORC_ASSERT (0); break; } } OrcX86Insn * -orc_x86_get_output_insn (OrcCompiler *p) +orc_x86_get_output_insn (OrcCompiler * p) { OrcX86Insn *xinsn; if (p->n_output_insns >= p->n_output_insns_alloc) { p->n_output_insns_alloc += 10; p->output_insns = realloc (p->output_insns, - sizeof(OrcX86Insn) * p->n_output_insns_alloc); + sizeof (OrcX86Insn) * p->n_output_insns_alloc); } - xinsn = ((OrcX86Insn *)p->output_insns) + p->n_output_insns; - memset (xinsn, 0, sizeof(OrcX86Insn)); + xinsn = ((OrcX86Insn *) p->output_insns) + p->n_output_insns; + memset (xinsn, 0, sizeof (OrcX86Insn)); p->n_output_insns++; return xinsn; } void -orc_x86_recalc_offsets (OrcCompiler *p) +orc_x86_recalc_offsets (OrcCompiler * p) { OrcX86Insn *xinsn; int i; @@ -833,10 +862,10 @@ orc_x86_recalc_offsets (OrcCompiler *p) minptr = p->code; p->codeptr = p->code; - for(i=0;i<p->n_output_insns;i++){ + for (i = 0; i < p->n_output_insns; i++) { unsigned char *ptr; - xinsn = ((OrcX86Insn *)p->output_insns) + i; + xinsn = ((OrcX86Insn *) p->output_insns) + i; xinsn->code_offset = p->codeptr - p->code; @@ -847,12 +876,13 @@ orc_x86_recalc_offsets (OrcCompiler *p) if (xinsn->opcode->type == ORC_X86_INSN_TYPE_ALIGN) { if (xinsn->size > 0) { - minptr += ((p->code - minptr)&((1<<xinsn->size) - 1)); + minptr += ((p->code - minptr) & ((1 << xinsn->size) - 1)); } } else { minptr += p->codeptr - ptr; if (xinsn->opcode->type == ORC_X86_INSN_TYPE_BRANCH) { - if (xinsn->size == 4) minptr -= 4; + if (xinsn->size == 4) + minptr -= 4; } } @@ -863,7 +893,7 @@ orc_x86_recalc_offsets (OrcCompiler *p) } void -orc_x86_calculate_offsets (OrcCompiler *p) +orc_x86_calculate_offsets (OrcCompiler * p) { OrcX86Insn *xinsn; int i; @@ -871,25 +901,25 @@ orc_x86_calculate_offsets (OrcCompiler *p) orc_x86_recalc_offsets (p); - for(j=0;j<3;j++){ + for (j = 0; j < 3; j++) { int change = FALSE; - for(i=0;i<p->n_output_insns;i++){ + for (i = 0; i < p->n_output_insns; i++) { OrcX86Insn *dinsn; int diff; - xinsn = ((OrcX86Insn *)p->output_insns) + i; + xinsn = ((OrcX86Insn *) p->output_insns) + i; if (xinsn->opcode->type != ORC_X86_INSN_TYPE_BRANCH) { continue; } - dinsn = ((OrcX86Insn *)p->output_insns) + p->labels_int[xinsn->label]; + dinsn = ((OrcX86Insn *) p->output_insns) + p->labels_int[xinsn->label]; if (xinsn->size == 1) { diff = dinsn->code_offset - (xinsn->code_offset + 2); if (diff < -128 || diff > 127) { xinsn->size = 4; - ORC_DEBUG("%d: relaxing at %d,%04x diff %d", + ORC_DEBUG ("%d: relaxing at %d,%04x diff %d", j, i, xinsn->code_offset, diff); change = TRUE; } else { @@ -897,7 +927,7 @@ orc_x86_calculate_offsets (OrcCompiler *p) } else { diff = dinsn->code_offset - (xinsn->code_offset + 2); if (diff >= -128 && diff <= 127) { - ORC_DEBUG("%d: unrelaxing at %d,%04x diff %d", + ORC_DEBUG ("%d: unrelaxing at %d,%04x diff %d", j, i, xinsn->code_offset, diff); xinsn->size = 1; change = TRUE; @@ -905,20 +935,21 @@ orc_x86_calculate_offsets (OrcCompiler *p) } } - if (!change) break; + if (!change) + break; orc_x86_recalc_offsets (p); } } void -orc_x86_output_insns (OrcCompiler *p) +orc_x86_output_insns (OrcCompiler * p) { OrcX86Insn *xinsn; int i; - for(i=0;i<p->n_output_insns;i++){ - xinsn = ((OrcX86Insn *)p->output_insns) + i; + for (i = 0; i < p->n_output_insns; i++) { + xinsn = ((OrcX86Insn *) p->output_insns) + i; orc_x86_insn_output_asm (p, xinsn); @@ -929,7 +960,8 @@ orc_x86_output_insns (OrcCompiler *p) } void -orc_x86_emit_cpuinsn_size (OrcCompiler *p, int index, int size, int src, int dest) +orc_x86_emit_cpuinsn_size (OrcCompiler * p, int index, int size, int src, + int dest) { OrcX86Insn *xinsn = orc_x86_get_output_insn (p); const OrcSysOpcode *opcode = orc_x86_opcodes + index; @@ -943,7 +975,8 @@ orc_x86_emit_cpuinsn_size (OrcCompiler *p, int index, int size, int src, int des } void -orc_x86_emit_cpuinsn_imm (OrcCompiler *p, int index, int imm, int src, int dest) +orc_x86_emit_cpuinsn_imm (OrcCompiler * p, int index, int imm, int src, + int dest) { OrcX86Insn *xinsn = orc_x86_get_output_insn (p); const OrcSysOpcode *opcode = orc_x86_opcodes + index; @@ -958,7 +991,7 @@ orc_x86_emit_cpuinsn_imm (OrcCompiler *p, int index, int imm, int src, int dest) } void -orc_x86_emit_cpuinsn_load_memoffset (OrcCompiler *p, int index, int size, +orc_x86_emit_cpuinsn_load_memoffset (OrcCompiler * p, int index, int size, int imm, int offset, int src, int dest) { OrcX86Insn *xinsn = orc_x86_get_output_insn (p); @@ -975,7 +1008,7 @@ orc_x86_emit_cpuinsn_load_memoffset (OrcCompiler *p, int index, int size, } void -orc_x86_emit_cpuinsn_store_memoffset (OrcCompiler *p, int index, int size, +orc_x86_emit_cpuinsn_store_memoffset (OrcCompiler * p, int index, int size, int imm, int offset, int src, int dest) { OrcX86Insn *xinsn = orc_x86_get_output_insn (p); @@ -992,7 +1025,7 @@ orc_x86_emit_cpuinsn_store_memoffset (OrcCompiler *p, int index, int size, } void -orc_x86_emit_cpuinsn_load_memindex (OrcCompiler *p, int index, int size, +orc_x86_emit_cpuinsn_load_memindex (OrcCompiler * p, int index, int size, int imm, int offset, int src, int src_index, int shift, int dest) { OrcX86Insn *xinsn = orc_x86_get_output_insn (p); @@ -1011,7 +1044,7 @@ orc_x86_emit_cpuinsn_load_memindex (OrcCompiler *p, int index, int size, } void -orc_x86_emit_cpuinsn_imm_reg (OrcCompiler *p, int index, int size, int imm, +orc_x86_emit_cpuinsn_imm_reg (OrcCompiler * p, int index, int size, int imm, int dest) { OrcX86Insn *xinsn = orc_x86_get_output_insn (p); @@ -1027,7 +1060,7 @@ orc_x86_emit_cpuinsn_imm_reg (OrcCompiler *p, int index, int size, int imm, } void -orc_x86_emit_cpuinsn_imm_memoffset (OrcCompiler *p, int index, int size, +orc_x86_emit_cpuinsn_imm_memoffset (OrcCompiler * p, int index, int size, int imm, int offset, int dest) { OrcX86Insn *xinsn = orc_x86_get_output_insn (p); @@ -1044,7 +1077,7 @@ orc_x86_emit_cpuinsn_imm_memoffset (OrcCompiler *p, int index, int size, } void -orc_x86_emit_cpuinsn_reg_memoffset (OrcCompiler *p, int index, int src, +orc_x86_emit_cpuinsn_reg_memoffset (OrcCompiler * p, int index, int src, int offset, int dest) { OrcX86Insn *xinsn = orc_x86_get_output_insn (p); @@ -1061,7 +1094,7 @@ orc_x86_emit_cpuinsn_reg_memoffset (OrcCompiler *p, int index, int src, } void -orc_x86_emit_cpuinsn_reg_memoffset_8 (OrcCompiler *p, int index, int src, +orc_x86_emit_cpuinsn_reg_memoffset_8 (OrcCompiler * p, int index, int src, int offset, int dest) { OrcX86Insn *xinsn = orc_x86_get_output_insn (p); @@ -1078,7 +1111,7 @@ orc_x86_emit_cpuinsn_reg_memoffset_8 (OrcCompiler *p, int index, int src, } void -orc_x86_emit_cpuinsn_memoffset_reg (OrcCompiler *p, int index, int size, +orc_x86_emit_cpuinsn_memoffset_reg (OrcCompiler * p, int index, int size, int offset, int src, int dest) { OrcX86Insn *xinsn = orc_x86_get_output_insn (p); @@ -1094,7 +1127,7 @@ orc_x86_emit_cpuinsn_memoffset_reg (OrcCompiler *p, int index, int size, } void -orc_x86_emit_cpuinsn_branch (OrcCompiler *p, int index, int label) +orc_x86_emit_cpuinsn_branch (OrcCompiler * p, int index, int label) { OrcX86Insn *xinsn = orc_x86_get_output_insn (p); const OrcSysOpcode *opcode = orc_x86_opcodes + index; @@ -1106,7 +1139,7 @@ orc_x86_emit_cpuinsn_branch (OrcCompiler *p, int index, int label) } void -orc_x86_emit_cpuinsn_align (OrcCompiler *p, int index, int align_shift) +orc_x86_emit_cpuinsn_align (OrcCompiler * p, int index, int align_shift) { OrcX86Insn *xinsn = orc_x86_get_output_insn (p); const OrcSysOpcode *opcode = orc_x86_opcodes + index; @@ -1117,7 +1150,7 @@ orc_x86_emit_cpuinsn_align (OrcCompiler *p, int index, int align_shift) } void -orc_x86_emit_cpuinsn_label (OrcCompiler *p, int index, int label) +orc_x86_emit_cpuinsn_label (OrcCompiler * p, int index, int label) { OrcX86Insn *xinsn = orc_x86_get_output_insn (p); const OrcSysOpcode *opcode = orc_x86_opcodes + index; @@ -1129,7 +1162,7 @@ orc_x86_emit_cpuinsn_label (OrcCompiler *p, int index, int label) } void -orc_x86_emit_cpuinsn_none (OrcCompiler *p, int index) +orc_x86_emit_cpuinsn_none (OrcCompiler * p, int index) { OrcX86Insn *xinsn = orc_x86_get_output_insn (p); const OrcSysOpcode *opcode = orc_x86_opcodes + index; @@ -1141,7 +1174,7 @@ orc_x86_emit_cpuinsn_none (OrcCompiler *p, int index) } void -orc_x86_emit_cpuinsn_memoffset (OrcCompiler *p, int index, int size, +orc_x86_emit_cpuinsn_memoffset (OrcCompiler * p, int index, int size, int offset, int srcdest) { OrcX86Insn *xinsn = orc_x86_get_output_insn (p); @@ -1155,4 +1188,3 @@ orc_x86_emit_cpuinsn_memoffset (OrcCompiler *p, int index, int size, xinsn->offset = offset; xinsn->size = size; } - diff --git a/testsuite/bytecode_parse.c b/testsuite/bytecode_parse.c index fb1e587..43612af 100644 --- a/testsuite/bytecode_parse.c +++ b/testsuite/bytecode_parse.c @@ -7,10 +7,10 @@ #include <stdio.h> #include <stdlib.h> -static char * read_file (const char *filename); -void output_code (OrcProgram *p, FILE *output); -void output_code_header (OrcProgram *p, FILE *output); -void output_code_test (OrcProgram *p, FILE *output); +static char *read_file (const char *filename); +void output_code (OrcProgram * p, FILE * output); +void output_code_header (OrcProgram * p, FILE * output); +void output_code_test (OrcProgram * p, FILE * output); int error = FALSE; @@ -38,25 +38,26 @@ main (int argc, char *argv[]) } code = read_file (filename); if (!code) { - printf("compile_parse_test <file.orc>\n"); - exit(1); + printf ("compile_parse_test <file.orc>\n"); + exit (1); } n = orc_parse (code, &programs); - for(i=0;i<n;i++){ + for (i = 0; i < n; i++) { OrcBytecode *bytecode; - printf("%s:\n", programs[i]->name); + printf ("%s:\n", programs[i]->name); bytecode = orc_bytecode_from_program (programs[i]); - for(j=0;j<bytecode->length;j++) { - printf("%d, ", bytecode->bytecode[j]); + for (j = 0; j < bytecode->length; j++) { + printf ("%d, ", bytecode->bytecode[j]); } - printf("\n"); + printf ("\n"); } - if (error) return 1; + if (error) + return 1; return 0; } @@ -70,31 +71,38 @@ read_file (const char *filename) int ret; file = fopen (filename, "r"); - if (file == NULL) return NULL; + if (file == NULL) + return NULL; ret = fseek (file, 0, SEEK_END); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; size = ftell (file); - if (size < 0) goto bail; + if (size < 0) + goto bail; ret = fseek (file, 0, SEEK_SET); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents = malloc (size + 1); - if (contents == NULL) goto bail; + if (contents == NULL) + goto bail; ret = fread (contents, size, 1, file); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents[size] = 0; return contents; bail: /* something failed */ - if (file) fclose (file); - if (contents) free (contents); + if (file) + fclose (file); + if (contents) + free (contents); return NULL; } - diff --git a/testsuite/compile_opcodes_float.c b/testsuite/compile_opcodes_float.c index 77b9127..72e8c89 100644 --- a/testsuite/compile_opcodes_float.c +++ b/testsuite/compile_opcodes_float.c @@ -11,9 +11,9 @@ int error = FALSE; -void test_opcode (OrcStaticOpcode *opcode); -void test_opcode_const (OrcStaticOpcode *opcode); -void test_opcode_param (OrcStaticOpcode *opcode); +void test_opcode (OrcStaticOpcode * opcode); +void test_opcode_const (OrcStaticOpcode * opcode); +void test_opcode_param (OrcStaticOpcode * opcode); int main (int argc, char *argv[]) @@ -21,56 +21,55 @@ main (int argc, char *argv[]) int i; OrcOpcodeSet *opcode_set; - orc_init(); - orc_float_init(); - orc_test_init(); + orc_init (); + orc_float_init (); + orc_test_init (); opcode_set = orc_opcode_set_get ("float"); - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s %d,%d,%d %p */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s %d,%d,%d %p */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1], - opcode_set->opcodes[i].emulate); + opcode_set->opcodes[i].src_size[1], opcode_set->opcodes[i].emulate); test_opcode (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s const %d,%d,%d %p */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s const %d,%d,%d %p */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1], - opcode_set->opcodes[i].emulate); + opcode_set->opcodes[i].src_size[1], opcode_set->opcodes[i].emulate); test_opcode_const (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s param %d,%d,%d %p */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s param %d,%d,%d %p */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1], - opcode_set->opcodes[i].emulate); + opcode_set->opcodes[i].src_size[1], opcode_set->opcodes[i].emulate); test_opcode_param (opcode_set->opcodes + i); } - if (error) return 1; + if (error) + return 1; return 0; } void -test_opcode (OrcStaticOpcode *opcode) +test_opcode (OrcStaticOpcode * opcode) { OrcProgram *p; OrcTestResult ret; p = orc_test_get_program_for_opcode (opcode); - if (!p) return; + if (!p) + return; ret = orc_test_gcc_compile (p); if (ret == ORC_TEST_FAILED) { - printf("%s", orc_program_get_asm_code (p)); + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } @@ -79,17 +78,18 @@ test_opcode (OrcStaticOpcode *opcode) } void -test_opcode_const (OrcStaticOpcode *opcode) +test_opcode_const (OrcStaticOpcode * opcode) { OrcProgram *p; OrcTestResult ret; p = orc_test_get_program_for_opcode_const (opcode); - if (!p) return; + if (!p) + return; ret = orc_test_gcc_compile (p); if (ret == ORC_TEST_FAILED) { - printf("%s", orc_program_get_asm_code (p)); + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } @@ -98,21 +98,21 @@ test_opcode_const (OrcStaticOpcode *opcode) } void -test_opcode_param (OrcStaticOpcode *opcode) +test_opcode_param (OrcStaticOpcode * opcode) { OrcProgram *p; OrcTestResult ret; p = orc_test_get_program_for_opcode_param (opcode); - if (!p) return; + if (!p) + return; ret = orc_test_gcc_compile (p); if (ret == ORC_TEST_FAILED) { - printf("%s", orc_program_get_asm_code (p)); + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } orc_program_free (p); } - diff --git a/testsuite/compile_opcodes_float_c.c b/testsuite/compile_opcodes_float_c.c index f206cc0..3536336 100644 --- a/testsuite/compile_opcodes_float_c.c +++ b/testsuite/compile_opcodes_float_c.c @@ -11,9 +11,9 @@ int error = FALSE; int verbose = FALSE; -void test_opcode (OrcStaticOpcode *opcode); -void test_opcode_const (OrcStaticOpcode *opcode); -void test_opcode_param (OrcStaticOpcode *opcode); +void test_opcode (OrcStaticOpcode * opcode); +void test_opcode_const (OrcStaticOpcode * opcode); +void test_opcode_param (OrcStaticOpcode * opcode); int main (int argc, char *argv[]) @@ -21,43 +21,44 @@ main (int argc, char *argv[]) int i; OrcOpcodeSet *opcode_set; - orc_init(); - orc_float_init(); - orc_test_init(); + orc_init (); + orc_float_init (); + orc_test_init (); opcode_set = orc_opcode_set_get ("float"); - for(i=0;i<opcode_set->n_opcodes;i++){ - if (verbose) printf("/* %s %d,%d,%d %p */\n", - opcode_set->opcodes[i].name, - opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1], - opcode_set->opcodes[i].emulate); + for (i = 0; i < opcode_set->n_opcodes; i++) { + if (verbose) + printf ("/* %s %d,%d,%d %p */\n", + opcode_set->opcodes[i].name, + opcode_set->opcodes[i].dest_size[0], + opcode_set->opcodes[i].src_size[0], + opcode_set->opcodes[i].src_size[1], opcode_set->opcodes[i].emulate); test_opcode (opcode_set->opcodes + i); } if (error) { - printf("test failed\n"); + printf ("test failed\n"); return 1; } else { - printf("test passed\n"); + printf ("test passed\n"); return 0; } } void -test_opcode (OrcStaticOpcode *opcode) +test_opcode (OrcStaticOpcode * opcode) { OrcProgram *p; OrcCompileResult result; p = orc_test_get_program_for_opcode (opcode); - if (!p) return; + if (!p) + return; - result = orc_program_compile_for_target (p, orc_target_get_by_name("c")); - if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL(result)) { - printf("%s", orc_program_get_asm_code (p)); + result = orc_program_compile_for_target (p, orc_target_get_by_name ("c")); + if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL (result)) { + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } @@ -66,17 +67,18 @@ test_opcode (OrcStaticOpcode *opcode) } void -test_opcode_const (OrcStaticOpcode *opcode) +test_opcode_const (OrcStaticOpcode * opcode) { OrcProgram *p; OrcCompileResult result; p = orc_test_get_program_for_opcode_const (opcode); - if (!p) return; + if (!p) + return; - result = orc_program_compile_for_target (p, orc_target_get_by_name("c")); - if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL(result)) { - printf("%s", orc_program_get_asm_code (p)); + result = orc_program_compile_for_target (p, orc_target_get_by_name ("c")); + if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL (result)) { + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } @@ -85,24 +87,21 @@ test_opcode_const (OrcStaticOpcode *opcode) } void -test_opcode_param (OrcStaticOpcode *opcode) +test_opcode_param (OrcStaticOpcode * opcode) { OrcProgram *p; OrcCompileResult result; p = orc_test_get_program_for_opcode_param (opcode); - if (!p) return; + if (!p) + return; - result = orc_program_compile_for_target (p, orc_target_get_by_name("c")); - if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL(result)) { - printf("%s", orc_program_get_asm_code (p)); + result = orc_program_compile_for_target (p, orc_target_get_by_name ("c")); + if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL (result)) { + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } orc_program_free (p); } - - - - diff --git a/testsuite/compile_opcodes_float_neon.c b/testsuite/compile_opcodes_float_neon.c index 60b27fb..5a820da 100644 --- a/testsuite/compile_opcodes_float_neon.c +++ b/testsuite/compile_opcodes_float_neon.c @@ -11,9 +11,9 @@ int error = FALSE; -void test_opcode (OrcStaticOpcode *opcode); -void test_opcode_const (OrcStaticOpcode *opcode); -void test_opcode_param (OrcStaticOpcode *opcode); +void test_opcode (OrcStaticOpcode * opcode); +void test_opcode_const (OrcStaticOpcode * opcode); +void test_opcode_param (OrcStaticOpcode * opcode); int main (int argc, char *argv[]) @@ -21,56 +21,55 @@ main (int argc, char *argv[]) int i; OrcOpcodeSet *opcode_set; - orc_init(); - orc_float_init(); - orc_test_init(); + orc_init (); + orc_float_init (); + orc_test_init (); opcode_set = orc_opcode_set_get ("float"); - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s %d,%d,%d %p */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s %d,%d,%d %p */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1], - opcode_set->opcodes[i].emulate); + opcode_set->opcodes[i].src_size[1], opcode_set->opcodes[i].emulate); test_opcode (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s const %d,%d,%d %p */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s const %d,%d,%d %p */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1], - opcode_set->opcodes[i].emulate); + opcode_set->opcodes[i].src_size[1], opcode_set->opcodes[i].emulate); test_opcode_const (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s param %d,%d,%d %p */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s param %d,%d,%d %p */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1], - opcode_set->opcodes[i].emulate); + opcode_set->opcodes[i].src_size[1], opcode_set->opcodes[i].emulate); test_opcode_param (opcode_set->opcodes + i); } - if (error) return 1; + if (error) + return 1; return 0; } void -test_opcode (OrcStaticOpcode *opcode) +test_opcode (OrcStaticOpcode * opcode) { OrcProgram *p; OrcTestResult ret; p = orc_test_get_program_for_opcode (opcode); - if (!p) return; + if (!p) + return; ret = orc_test_gcc_compile_neon (p); if (ret == ORC_TEST_FAILED) { - printf("%s", orc_program_get_asm_code (p)); + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } @@ -79,17 +78,18 @@ test_opcode (OrcStaticOpcode *opcode) } void -test_opcode_const (OrcStaticOpcode *opcode) +test_opcode_const (OrcStaticOpcode * opcode) { OrcProgram *p; OrcTestResult ret; p = orc_test_get_program_for_opcode_const (opcode); - if (!p) return; + if (!p) + return; ret = orc_test_gcc_compile_neon (p); if (ret == ORC_TEST_FAILED) { - printf("%s", orc_program_get_asm_code (p)); + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } @@ -98,21 +98,21 @@ test_opcode_const (OrcStaticOpcode *opcode) } void -test_opcode_param (OrcStaticOpcode *opcode) +test_opcode_param (OrcStaticOpcode * opcode) { OrcProgram *p; OrcTestResult ret; p = orc_test_get_program_for_opcode_param (opcode); - if (!p) return; + if (!p) + return; ret = orc_test_gcc_compile_neon (p); if (ret == ORC_TEST_FAILED) { - printf("%s", orc_program_get_asm_code (p)); + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } orc_program_free (p); } - diff --git a/testsuite/compile_opcodes_pixel_neon.c b/testsuite/compile_opcodes_pixel_neon.c index e37eca5..456f62b 100644 --- a/testsuite/compile_opcodes_pixel_neon.c +++ b/testsuite/compile_opcodes_pixel_neon.c @@ -11,9 +11,9 @@ int error = FALSE; -void test_opcode (OrcStaticOpcode *opcode); -void test_opcode_const (OrcStaticOpcode *opcode); -void test_opcode_param (OrcStaticOpcode *opcode); +void test_opcode (OrcStaticOpcode * opcode); +void test_opcode_const (OrcStaticOpcode * opcode); +void test_opcode_param (OrcStaticOpcode * opcode); int main (int argc, char *argv[]) @@ -21,56 +21,55 @@ main (int argc, char *argv[]) int i; OrcOpcodeSet *opcode_set; - orc_init(); - orc_pixel_init(); - orc_test_init(); + orc_init (); + orc_pixel_init (); + orc_test_init (); opcode_set = orc_opcode_set_get ("pixel"); - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s %d,%d,%d %p */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s %d,%d,%d %p */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1], - opcode_set->opcodes[i].emulate); + opcode_set->opcodes[i].src_size[1], opcode_set->opcodes[i].emulate); test_opcode (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s const %d,%d,%d %p */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s const %d,%d,%d %p */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1], - opcode_set->opcodes[i].emulate); + opcode_set->opcodes[i].src_size[1], opcode_set->opcodes[i].emulate); test_opcode_const (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s param %d,%d,%d %p */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s param %d,%d,%d %p */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1], - opcode_set->opcodes[i].emulate); + opcode_set->opcodes[i].src_size[1], opcode_set->opcodes[i].emulate); test_opcode_param (opcode_set->opcodes + i); } - if (error) return 1; + if (error) + return 1; return 0; } void -test_opcode (OrcStaticOpcode *opcode) +test_opcode (OrcStaticOpcode * opcode) { OrcProgram *p; OrcTestResult ret; p = orc_test_get_program_for_opcode (opcode); - if (!p) return; + if (!p) + return; ret = orc_test_gcc_compile_neon (p); if (ret == ORC_TEST_FAILED) { - printf("%s", orc_program_get_asm_code (p)); + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } @@ -79,17 +78,18 @@ test_opcode (OrcStaticOpcode *opcode) } void -test_opcode_const (OrcStaticOpcode *opcode) +test_opcode_const (OrcStaticOpcode * opcode) { OrcProgram *p; OrcTestResult ret; p = orc_test_get_program_for_opcode_const (opcode); - if (!p) return; + if (!p) + return; ret = orc_test_gcc_compile_neon (p); if (ret == ORC_TEST_FAILED) { - printf("%s", orc_program_get_asm_code (p)); + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } @@ -98,21 +98,21 @@ test_opcode_const (OrcStaticOpcode *opcode) } void -test_opcode_param (OrcStaticOpcode *opcode) +test_opcode_param (OrcStaticOpcode * opcode) { OrcProgram *p; OrcTestResult ret; p = orc_test_get_program_for_opcode_param (opcode); - if (!p) return; + if (!p) + return; ret = orc_test_gcc_compile_neon (p); if (ret == ORC_TEST_FAILED) { - printf("%s", orc_program_get_asm_code (p)); + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } orc_program_free (p); } - diff --git a/testsuite/compile_opcodes_sys.c b/testsuite/compile_opcodes_sys.c index 8390938..82d5db9 100644 --- a/testsuite/compile_opcodes_sys.c +++ b/testsuite/compile_opcodes_sys.c @@ -12,9 +12,9 @@ int error = FALSE; -void test_opcode (OrcStaticOpcode *opcode); -void test_opcode_const (OrcStaticOpcode *opcode); -void test_opcode_param (OrcStaticOpcode *opcode); +void test_opcode (OrcStaticOpcode * opcode); +void test_opcode_const (OrcStaticOpcode * opcode); +void test_opcode_param (OrcStaticOpcode * opcode); int main (int argc, char *argv[]) @@ -22,41 +22,43 @@ main (int argc, char *argv[]) int i; OrcOpcodeSet *opcode_set; - srand(time(NULL)); - orc_init(); - orc_test_init(); + srand (time (NULL)); + orc_init (); + orc_test_init (); opcode_set = orc_opcode_set_get ("sys"); - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("%s:\n", opcode_set->opcodes[i].name); + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("%s:\n", opcode_set->opcodes[i].name); test_opcode (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("%s_const:\n", opcode_set->opcodes[i].name); + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("%s_const:\n", opcode_set->opcodes[i].name); test_opcode_const (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("%s_param:\n", opcode_set->opcodes[i].name); + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("%s_param:\n", opcode_set->opcodes[i].name); test_opcode_param (opcode_set->opcodes + i); } - if (error) return 1; + if (error) + return 1; return 0; } void -test_opcode (OrcStaticOpcode *opcode) +test_opcode (OrcStaticOpcode * opcode) { OrcProgram *p; OrcTestResult ret; p = orc_test_get_program_for_opcode (opcode); - if (!p) return; + if (!p) + return; ret = orc_test_gcc_compile (p); if (ret == ORC_TEST_FAILED) { - printf("%s", orc_program_get_asm_code (p)); + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } @@ -65,17 +67,18 @@ test_opcode (OrcStaticOpcode *opcode) } void -test_opcode_const (OrcStaticOpcode *opcode) +test_opcode_const (OrcStaticOpcode * opcode) { OrcProgram *p; OrcTestResult ret; p = orc_test_get_program_for_opcode_const (opcode); - if (!p) return; + if (!p) + return; ret = orc_test_gcc_compile (p); if (ret == ORC_TEST_FAILED) { - printf("%s", orc_program_get_asm_code (p)); + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } @@ -84,21 +87,21 @@ test_opcode_const (OrcStaticOpcode *opcode) } void -test_opcode_param (OrcStaticOpcode *opcode) +test_opcode_param (OrcStaticOpcode * opcode) { OrcProgram *p; OrcTestResult ret; p = orc_test_get_program_for_opcode_param (opcode); - if (!p) return; + if (!p) + return; ret = orc_test_gcc_compile (p); if (ret == ORC_TEST_FAILED) { - printf("%s", orc_program_get_asm_code (p)); + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } orc_program_free (p); } - diff --git a/testsuite/compile_opcodes_sys_c.c b/testsuite/compile_opcodes_sys_c.c index 8f88235..97972b8 100644 --- a/testsuite/compile_opcodes_sys_c.c +++ b/testsuite/compile_opcodes_sys_c.c @@ -11,9 +11,9 @@ int error = FALSE; int verbose = FALSE; -void test_opcode (OrcStaticOpcode *opcode); -void test_opcode_const (OrcStaticOpcode *opcode); -void test_opcode_param (OrcStaticOpcode *opcode); +void test_opcode (OrcStaticOpcode * opcode); +void test_opcode_const (OrcStaticOpcode * opcode); +void test_opcode_param (OrcStaticOpcode * opcode); int main (int argc, char *argv[]) @@ -21,46 +21,48 @@ main (int argc, char *argv[]) int i; OrcOpcodeSet *opcode_set; - orc_init(); - orc_test_init(); + orc_init (); + orc_test_init (); opcode_set = orc_opcode_set_get ("sys"); - for(i=0;i<opcode_set->n_opcodes;i++){ - if (verbose) printf("/* %s %d,%d,%d */\n", - opcode_set->opcodes[i].name, - opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1]); + for (i = 0; i < opcode_set->n_opcodes; i++) { + if (verbose) + printf ("/* %s %d,%d,%d */\n", + opcode_set->opcodes[i].name, + opcode_set->opcodes[i].dest_size[0], + opcode_set->opcodes[i].src_size[0], + opcode_set->opcodes[i].src_size[1]); test_opcode (opcode_set->opcodes + i); } if (error) { - printf("test failed\n"); + printf ("test failed\n"); return 1; } else { - printf("test passed\n"); + printf ("test passed\n"); return 0; } } void -test_opcode (OrcStaticOpcode *opcode) +test_opcode (OrcStaticOpcode * opcode) { OrcProgram *p; OrcCompileResult result; const char *s; p = orc_test_get_program_for_opcode (opcode); - if (!p) return; + if (!p) + return; - result = orc_program_compile_for_target (p, orc_target_get_by_name("c")); - if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL(result)) { + result = orc_program_compile_for_target (p, orc_target_get_by_name ("c")); + if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL (result)) { s = orc_program_get_asm_code (p); if (s != NULL) { - printf("%s\n", s); + printf ("%s\n", s); } else { - printf("no code\n"); + printf ("no code\n"); } error = TRUE; return; @@ -70,22 +72,23 @@ test_opcode (OrcStaticOpcode *opcode) } void -test_opcode_const (OrcStaticOpcode *opcode) +test_opcode_const (OrcStaticOpcode * opcode) { OrcProgram *p; OrcCompileResult result; const char *s; p = orc_test_get_program_for_opcode_const (opcode); - if (!p) return; + if (!p) + return; - result = orc_program_compile_for_target (p, orc_target_get_by_name("c")); - if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL(result)) { + result = orc_program_compile_for_target (p, orc_target_get_by_name ("c")); + if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL (result)) { s = orc_program_get_asm_code (p); if (s != NULL) { - printf("%s\n", s); + printf ("%s\n", s); } else { - printf("no code\n"); + printf ("no code\n"); } error = TRUE; return; @@ -95,22 +98,23 @@ test_opcode_const (OrcStaticOpcode *opcode) } void -test_opcode_param (OrcStaticOpcode *opcode) +test_opcode_param (OrcStaticOpcode * opcode) { OrcProgram *p; OrcCompileResult result; const char *s; p = orc_test_get_program_for_opcode_param (opcode); - if (!p) return; + if (!p) + return; - result = orc_program_compile_for_target (p, orc_target_get_by_name("c")); - if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL(result)) { + result = orc_program_compile_for_target (p, orc_target_get_by_name ("c")); + if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL (result)) { s = orc_program_get_asm_code (p); if (s != NULL) { - printf("%s\n", s); + printf ("%s\n", s); } else { - printf("no code\n"); + printf ("no code\n"); } error = TRUE; return; @@ -118,7 +122,3 @@ test_opcode_param (OrcStaticOpcode *opcode) orc_program_free (p); } - - - - diff --git a/testsuite/compile_opcodes_sys_c64x.c b/testsuite/compile_opcodes_sys_c64x.c index 0e64a52..446c70c 100644 --- a/testsuite/compile_opcodes_sys_c64x.c +++ b/testsuite/compile_opcodes_sys_c64x.c @@ -10,9 +10,9 @@ int error = FALSE; -void test_opcode (OrcStaticOpcode *opcode); -void test_opcode_const (OrcStaticOpcode *opcode); -void test_opcode_param (OrcStaticOpcode *opcode); +void test_opcode (OrcStaticOpcode * opcode); +void test_opcode_const (OrcStaticOpcode * opcode); +void test_opcode_param (OrcStaticOpcode * opcode); int main (int argc, char *argv[]) @@ -20,53 +20,52 @@ main (int argc, char *argv[]) int i; OrcOpcodeSet *opcode_set; - orc_init(); - orc_test_init(); + orc_init (); + orc_test_init (); opcode_set = orc_opcode_set_get ("sys"); - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s %d,%d,%d */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s %d,%d,%d */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1]); + opcode_set->opcodes[i].src_size[0], opcode_set->opcodes[i].src_size[1]); test_opcode (opcode_set->opcodes + i); exit (0); } - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s const %d,%d,%d */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s const %d,%d,%d */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1]); + opcode_set->opcodes[i].src_size[0], opcode_set->opcodes[i].src_size[1]); test_opcode_const (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s param %d,%d,%d */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s param %d,%d,%d */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1]); + opcode_set->opcodes[i].src_size[0], opcode_set->opcodes[i].src_size[1]); test_opcode_param (opcode_set->opcodes + i); } - if (error) return 1; + if (error) + return 1; return 0; } void -test_opcode (OrcStaticOpcode *opcode) +test_opcode (OrcStaticOpcode * opcode) { OrcProgram *p; OrcTestResult ret; p = orc_test_get_program_for_opcode (opcode); - if (!p) return; + if (!p) + return; ret = orc_test_gcc_compile_c64x (p); if (ret == ORC_TEST_FAILED) { - printf("%s", orc_program_get_asm_code (p)); + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } @@ -75,17 +74,18 @@ test_opcode (OrcStaticOpcode *opcode) } void -test_opcode_const (OrcStaticOpcode *opcode) +test_opcode_const (OrcStaticOpcode * opcode) { OrcProgram *p; OrcTestResult ret; p = orc_test_get_program_for_opcode_const (opcode); - if (!p) return; + if (!p) + return; ret = orc_test_gcc_compile_c64x (p); if (ret == ORC_TEST_FAILED) { - printf("%s", orc_program_get_asm_code (p)); + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } @@ -94,21 +94,21 @@ test_opcode_const (OrcStaticOpcode *opcode) } void -test_opcode_param (OrcStaticOpcode *opcode) +test_opcode_param (OrcStaticOpcode * opcode) { OrcProgram *p; OrcTestResult ret; p = orc_test_get_program_for_opcode_param (opcode); - if (!p) return; + if (!p) + return; ret = orc_test_gcc_compile_c64x (p); if (ret == ORC_TEST_FAILED) { - printf("%s", orc_program_get_asm_code (p)); + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } orc_program_free (p); } - diff --git a/testsuite/compile_opcodes_sys_neon.c b/testsuite/compile_opcodes_sys_neon.c index 16e92a7..59dc1cd 100644 --- a/testsuite/compile_opcodes_sys_neon.c +++ b/testsuite/compile_opcodes_sys_neon.c @@ -10,9 +10,9 @@ int error = FALSE; -void test_opcode (OrcStaticOpcode *opcode); -void test_opcode_const (OrcStaticOpcode *opcode); -void test_opcode_param (OrcStaticOpcode *opcode); +void test_opcode (OrcStaticOpcode * opcode); +void test_opcode_const (OrcStaticOpcode * opcode); +void test_opcode_param (OrcStaticOpcode * opcode); int main (int argc, char *argv[]) @@ -20,52 +20,51 @@ main (int argc, char *argv[]) int i; OrcOpcodeSet *opcode_set; - orc_init(); - orc_test_init(); + orc_init (); + orc_test_init (); opcode_set = orc_opcode_set_get ("sys"); - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s %d,%d,%d */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s %d,%d,%d */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1]); + opcode_set->opcodes[i].src_size[0], opcode_set->opcodes[i].src_size[1]); test_opcode (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s const %d,%d,%d */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s const %d,%d,%d */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1]); + opcode_set->opcodes[i].src_size[0], opcode_set->opcodes[i].src_size[1]); test_opcode_const (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s param %d,%d,%d */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s param %d,%d,%d */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1]); + opcode_set->opcodes[i].src_size[0], opcode_set->opcodes[i].src_size[1]); test_opcode_param (opcode_set->opcodes + i); } - if (error) return 1; + if (error) + return 1; return 0; } void -test_opcode (OrcStaticOpcode *opcode) +test_opcode (OrcStaticOpcode * opcode) { OrcProgram *p; OrcTestResult ret; p = orc_test_get_program_for_opcode (opcode); - if (!p) return; + if (!p) + return; ret = orc_test_gcc_compile_neon (p); if (ret == ORC_TEST_FAILED) { - printf("%s", orc_program_get_asm_code (p)); + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } @@ -74,17 +73,18 @@ test_opcode (OrcStaticOpcode *opcode) } void -test_opcode_const (OrcStaticOpcode *opcode) +test_opcode_const (OrcStaticOpcode * opcode) { OrcProgram *p; OrcTestResult ret; p = orc_test_get_program_for_opcode_const (opcode); - if (!p) return; + if (!p) + return; ret = orc_test_gcc_compile_neon (p); if (ret == ORC_TEST_FAILED) { - printf("%s", orc_program_get_asm_code (p)); + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } @@ -93,21 +93,21 @@ test_opcode_const (OrcStaticOpcode *opcode) } void -test_opcode_param (OrcStaticOpcode *opcode) +test_opcode_param (OrcStaticOpcode * opcode) { OrcProgram *p; OrcTestResult ret; p = orc_test_get_program_for_opcode_param (opcode); - if (!p) return; + if (!p) + return; ret = orc_test_gcc_compile_neon (p); if (ret == ORC_TEST_FAILED) { - printf("%s", orc_program_get_asm_code (p)); + printf ("%s", orc_program_get_asm_code (p)); error = TRUE; return; } orc_program_free (p); } - diff --git a/testsuite/compile_parse.c b/testsuite/compile_parse.c index 59b144f..4318274 100644 --- a/testsuite/compile_parse.c +++ b/testsuite/compile_parse.c @@ -6,10 +6,10 @@ #include <stdio.h> #include <stdlib.h> -static char * read_file (const char *filename); -void output_code (OrcProgram *p, FILE *output); -void output_code_header (OrcProgram *p, FILE *output); -void output_code_test (OrcProgram *p, FILE *output); +static char *read_file (const char *filename); +void output_code (OrcProgram * p, FILE * output); +void output_code_header (OrcProgram * p, FILE * output); +void output_code_test (OrcProgram * p, FILE * output); int error = FALSE; @@ -36,23 +36,24 @@ main (int argc, char *argv[]) } code = read_file (filename); if (!code) { - printf("compile_parse_test <file.orc>\n"); - exit(1); + printf ("compile_parse_test <file.orc>\n"); + exit (1); } n = orc_parse (code, &programs); - for(i=0;i<n;i++){ + for (i = 0; i < n; i++) { OrcTestResult ret; - printf("%s:\n", programs[i]->name); + printf ("%s:\n", programs[i]->name); ret = orc_test_gcc_compile (programs[i]); if (ret == ORC_TEST_FAILED) { error = TRUE; } } - if (error) return 1; + if (error) + return 1; return 0; } @@ -66,31 +67,38 @@ read_file (const char *filename) int ret; file = fopen (filename, "r"); - if (file == NULL) return NULL; + if (file == NULL) + return NULL; ret = fseek (file, 0, SEEK_END); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; size = ftell (file); - if (size < 0) goto bail; + if (size < 0) + goto bail; ret = fseek (file, 0, SEEK_SET); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents = malloc (size + 1); - if (contents == NULL) goto bail; + if (contents == NULL) + goto bail; ret = fread (contents, size, 1, file); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents[size] = 0; return contents; bail: /* something failed */ - if (file) fclose (file); - if (contents) free (contents); + if (file) + fclose (file); + if (contents) + free (contents); return NULL; } - diff --git a/testsuite/compile_parse_c.c b/testsuite/compile_parse_c.c index 8862003..e90a31a 100644 --- a/testsuite/compile_parse_c.c +++ b/testsuite/compile_parse_c.c @@ -6,10 +6,10 @@ #include <stdio.h> #include <stdlib.h> -static char * read_file (const char *filename); -void output_code (OrcProgram *p, FILE *output); -void output_code_header (OrcProgram *p, FILE *output); -void output_code_test (OrcProgram *p, FILE *output); +static char *read_file (const char *filename); +void output_code (OrcProgram * p, FILE * output); +void output_code_header (OrcProgram * p, FILE * output); +void output_code_test (OrcProgram * p, FILE * output); int error = FALSE; @@ -30,23 +30,24 @@ main (int argc, char *argv[]) } code = read_file (filename); if (!code) { - printf("compile_parse_test <file.orc>\n"); - exit(1); + printf ("compile_parse_test <file.orc>\n"); + exit (1); } n = orc_parse (code, &programs); - for(i=0;i<n;i++){ + for (i = 0; i < n; i++) { OrcTestResult ret; - printf("%s:\n", programs[i]->name); + printf ("%s:\n", programs[i]->name); ret = orc_test_gcc_compile (programs[i]); if (ret == ORC_TEST_FAILED) { error = TRUE; } } - if (error) return 1; + if (error) + return 1; return 0; } @@ -60,31 +61,38 @@ read_file (const char *filename) int ret; file = fopen (filename, "r"); - if (file == NULL) return NULL; + if (file == NULL) + return NULL; ret = fseek (file, 0, SEEK_END); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; size = ftell (file); - if (size < 0) goto bail; + if (size < 0) + goto bail; ret = fseek (file, 0, SEEK_SET); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents = malloc (size + 1); - if (contents == NULL) goto bail; + if (contents == NULL) + goto bail; ret = fread (contents, size, 1, file); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents[size] = 0; return contents; bail: /* something failed */ - if (file) fclose (file); - if (contents) free (contents); + if (file) + fclose (file); + if (contents) + free (contents); return NULL; } - diff --git a/testsuite/compile_parse_neon.c b/testsuite/compile_parse_neon.c index 730a6e6..ed323e3 100644 --- a/testsuite/compile_parse_neon.c +++ b/testsuite/compile_parse_neon.c @@ -6,10 +6,10 @@ #include <stdio.h> #include <stdlib.h> -static char * read_file (const char *filename); -void output_code (OrcProgram *p, FILE *output); -void output_code_header (OrcProgram *p, FILE *output); -void output_code_test (OrcProgram *p, FILE *output); +static char *read_file (const char *filename); +void output_code (OrcProgram * p, FILE * output); +void output_code_header (OrcProgram * p, FILE * output); +void output_code_test (OrcProgram * p, FILE * output); int error = FALSE; @@ -36,23 +36,24 @@ main (int argc, char *argv[]) } code = read_file (filename); if (!code) { - printf("compile_parse_test <file.orc>\n"); - exit(1); + printf ("compile_parse_test <file.orc>\n"); + exit (1); } n = orc_parse (code, &programs); - for(i=0;i<n;i++){ + for (i = 0; i < n; i++) { OrcTestResult ret; - printf("%s:\n", programs[i]->name); + printf ("%s:\n", programs[i]->name); ret = orc_test_gcc_compile_neon (programs[i]); if (ret == ORC_TEST_FAILED) { error = TRUE; } } - if (error) return 1; + if (error) + return 1; return 0; } @@ -66,31 +67,38 @@ read_file (const char *filename) int ret; file = fopen (filename, "r"); - if (file == NULL) return NULL; + if (file == NULL) + return NULL; ret = fseek (file, 0, SEEK_END); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; size = ftell (file); - if (size < 0) goto bail; + if (size < 0) + goto bail; ret = fseek (file, 0, SEEK_SET); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents = malloc (size + 1); - if (contents == NULL) goto bail; + if (contents == NULL) + goto bail; ret = fread (contents, size, 1, file); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents[size] = 0; return contents; bail: /* something failed */ - if (file) fclose (file); - if (contents) free (contents); + if (file) + fclose (file); + if (contents) + free (contents); return NULL; } - diff --git a/testsuite/exec_opcodes_float.c b/testsuite/exec_opcodes_float.c index bd2eefa..7a0597f 100644 --- a/testsuite/exec_opcodes_float.c +++ b/testsuite/exec_opcodes_float.c @@ -10,10 +10,10 @@ int error = FALSE; -void test_opcode_src (OrcStaticOpcode *opcode); -void test_opcode_const (OrcStaticOpcode *opcode); -void test_opcode_param (OrcStaticOpcode *opcode); -void test_opcode_inplace (OrcStaticOpcode *opcode); +void test_opcode_src (OrcStaticOpcode * opcode); +void test_opcode_const (OrcStaticOpcode * opcode); +void test_opcode_param (OrcStaticOpcode * opcode); +void test_opcode_inplace (OrcStaticOpcode * opcode); int main (int argc, char *argv[]) @@ -21,51 +21,48 @@ main (int argc, char *argv[]) int i; OrcOpcodeSet *opcode_set; - orc_float_init(); - orc_test_init(); - orc_init(); + orc_float_init (); + orc_test_init (); + orc_init (); opcode_set = orc_opcode_set_get ("float"); - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s src %d,%d,%d */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s src %d,%d,%d */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1]); + opcode_set->opcodes[i].src_size[0], opcode_set->opcodes[i].src_size[1]); test_opcode_src (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s const %d,%d,%d */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s const %d,%d,%d */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1]); + opcode_set->opcodes[i].src_size[0], opcode_set->opcodes[i].src_size[1]); test_opcode_const (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s param %d,%d,%d */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s param %d,%d,%d */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1]); + opcode_set->opcodes[i].src_size[0], opcode_set->opcodes[i].src_size[1]); test_opcode_param (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("/* %s inplace %d,%d,%d */\n", + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("/* %s inplace %d,%d,%d */\n", opcode_set->opcodes[i].name, opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1]); + opcode_set->opcodes[i].src_size[0], opcode_set->opcodes[i].src_size[1]); test_opcode_inplace (opcode_set->opcodes + i); } - if (error) return 1; + if (error) + return 1; return 0; } void -test_opcode_src (OrcStaticOpcode *opcode) +test_opcode_src (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; @@ -78,7 +75,7 @@ test_opcode_src (OrcStaticOpcode *opcode) opcode->src_size[1]); } - sprintf(s, "test_s_%s", opcode->name); + sprintf (s, "test_s_%s", opcode->name); orc_program_set_name (p, s); orc_program_append_str (p, opcode->name, "d1", "s1", "s2"); @@ -92,7 +89,7 @@ test_opcode_src (OrcStaticOpcode *opcode) } void -test_opcode_const (OrcStaticOpcode *opcode) +test_opcode_const (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; @@ -104,7 +101,7 @@ test_opcode_const (OrcStaticOpcode *opcode) p = orc_program_new_ds (opcode->dest_size[0], opcode->src_size[0]); orc_program_add_constant (p, opcode->src_size[1], 1, "c1"); - sprintf(s, "test_c_%s", opcode->name); + sprintf (s, "test_c_%s", opcode->name); orc_program_set_name (p, s); orc_program_append_str (p, opcode->name, "d1", "s1", "c1"); @@ -118,7 +115,7 @@ test_opcode_const (OrcStaticOpcode *opcode) } void -test_opcode_param (OrcStaticOpcode *opcode) +test_opcode_param (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; @@ -130,7 +127,7 @@ test_opcode_param (OrcStaticOpcode *opcode) p = orc_program_new_ds (opcode->dest_size[0], opcode->src_size[0]); orc_program_add_parameter (p, opcode->src_size[1], "p1"); - sprintf(s, "test_c_%s", opcode->name); + sprintf (s, "test_c_%s", opcode->name); orc_program_set_name (p, s); orc_program_append_str (p, opcode->name, "d1", "s1", "p1"); @@ -144,13 +141,14 @@ test_opcode_param (OrcStaticOpcode *opcode) } void -test_opcode_inplace (OrcStaticOpcode *opcode) +test_opcode_inplace (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; int ret; - if (opcode->dest_size[0] != opcode->src_size[0]) return; + if (opcode->dest_size[0] != opcode->src_size[0]) + return; if (opcode->src_size[1] == 0) { p = orc_program_new_ds (opcode->dest_size[0], opcode->src_size[0]); @@ -159,7 +157,7 @@ test_opcode_inplace (OrcStaticOpcode *opcode) opcode->src_size[1]); } - sprintf(s, "test_inplace_%s", opcode->name); + sprintf (s, "test_inplace_%s", opcode->name); orc_program_set_name (p, s); orc_program_append_str (p, opcode->name, "d1", "d1", "s2"); @@ -171,4 +169,3 @@ test_opcode_inplace (OrcStaticOpcode *opcode) orc_program_free (p); } - diff --git a/testsuite/exec_opcodes_sys.c b/testsuite/exec_opcodes_sys.c index 0a8dec7..c9a8972 100644 --- a/testsuite/exec_opcodes_sys.c +++ b/testsuite/exec_opcodes_sys.c @@ -10,13 +10,13 @@ int error = FALSE; int verbose = FALSE; -void test_opcode_src (OrcStaticOpcode *opcode); -void test_opcode_const (OrcStaticOpcode *opcode); -void test_opcode_param (OrcStaticOpcode *opcode); -void test_opcode_inplace (OrcStaticOpcode *opcode); -void test_opcode_src_2d (OrcStaticOpcode *opcode); -void test_opcode_src_const_n (OrcStaticOpcode *opcode); -void test_opcode_src_const_n_2d (OrcStaticOpcode *opcode); +void test_opcode_src (OrcStaticOpcode * opcode); +void test_opcode_const (OrcStaticOpcode * opcode); +void test_opcode_param (OrcStaticOpcode * opcode); +void test_opcode_inplace (OrcStaticOpcode * opcode); +void test_opcode_src_2d (OrcStaticOpcode * opcode); +void test_opcode_src_const_n (OrcStaticOpcode * opcode); +void test_opcode_src_const_n_2d (OrcStaticOpcode * opcode); int main (int argc, char *argv[]) @@ -24,75 +24,83 @@ main (int argc, char *argv[]) int i; OrcOpcodeSet *opcode_set; - orc_test_init(); - orc_init(); + orc_test_init (); + orc_init (); opcode_set = orc_opcode_set_get ("sys"); - for(i=0;i<opcode_set->n_opcodes;i++){ - if (verbose) printf("%s src %d,%d,%d,%d\n", - opcode_set->opcodes[i].name, - opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].dest_size[1], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1]); + for (i = 0; i < opcode_set->n_opcodes; i++) { + if (verbose) + printf ("%s src %d,%d,%d,%d\n", + opcode_set->opcodes[i].name, + opcode_set->opcodes[i].dest_size[0], + opcode_set->opcodes[i].dest_size[1], + opcode_set->opcodes[i].src_size[0], + opcode_set->opcodes[i].src_size[1]); test_opcode_src (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - if (verbose) printf("%s const %d,%d,%d\n", - opcode_set->opcodes[i].name, - opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1]); + for (i = 0; i < opcode_set->n_opcodes; i++) { + if (verbose) + printf ("%s const %d,%d,%d\n", + opcode_set->opcodes[i].name, + opcode_set->opcodes[i].dest_size[0], + opcode_set->opcodes[i].src_size[0], + opcode_set->opcodes[i].src_size[1]); test_opcode_const (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - if (verbose) printf("%s param %d,%d,%d\n", - opcode_set->opcodes[i].name, - opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1]); + for (i = 0; i < opcode_set->n_opcodes; i++) { + if (verbose) + printf ("%s param %d,%d,%d\n", + opcode_set->opcodes[i].name, + opcode_set->opcodes[i].dest_size[0], + opcode_set->opcodes[i].src_size[0], + opcode_set->opcodes[i].src_size[1]); test_opcode_param (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - if (verbose) printf("%s inplace %d,%d,%d\n", - opcode_set->opcodes[i].name, - opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1]); + for (i = 0; i < opcode_set->n_opcodes; i++) { + if (verbose) + printf ("%s inplace %d,%d,%d\n", + opcode_set->opcodes[i].name, + opcode_set->opcodes[i].dest_size[0], + opcode_set->opcodes[i].src_size[0], + opcode_set->opcodes[i].src_size[1]); test_opcode_inplace (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - if (verbose) printf("%s src 2d %d,%d,%d\n", - opcode_set->opcodes[i].name, - opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1]); + for (i = 0; i < opcode_set->n_opcodes; i++) { + if (verbose) + printf ("%s src 2d %d,%d,%d\n", + opcode_set->opcodes[i].name, + opcode_set->opcodes[i].dest_size[0], + opcode_set->opcodes[i].src_size[0], + opcode_set->opcodes[i].src_size[1]); test_opcode_src_2d (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - if (verbose) printf("%s src const n %d,%d,%d\n", - opcode_set->opcodes[i].name, - opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1]); + for (i = 0; i < opcode_set->n_opcodes; i++) { + if (verbose) + printf ("%s src const n %d,%d,%d\n", + opcode_set->opcodes[i].name, + opcode_set->opcodes[i].dest_size[0], + opcode_set->opcodes[i].src_size[0], + opcode_set->opcodes[i].src_size[1]); test_opcode_src_const_n (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ - if (verbose) printf("%s src const n 2d %d,%d,%d\n", - opcode_set->opcodes[i].name, - opcode_set->opcodes[i].dest_size[0], - opcode_set->opcodes[i].src_size[0], - opcode_set->opcodes[i].src_size[1]); + for (i = 0; i < opcode_set->n_opcodes; i++) { + if (verbose) + printf ("%s src const n 2d %d,%d,%d\n", + opcode_set->opcodes[i].name, + opcode_set->opcodes[i].dest_size[0], + opcode_set->opcodes[i].src_size[0], + opcode_set->opcodes[i].src_size[1]); test_opcode_src_const_n_2d (opcode_set->opcodes + i); } - if (error) return 1; + if (error) + return 1; return 0; } void -test_opcode_src (OrcStaticOpcode *opcode) +test_opcode_src (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; @@ -122,7 +130,7 @@ test_opcode_src (OrcStaticOpcode *opcode) flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_s_%s", opcode->name); + sprintf (s, "test_s_%s", opcode->name); orc_program_set_name (p, s); if (opcode->dest_size[1] != 0) { @@ -133,7 +141,7 @@ test_opcode_src (OrcStaticOpcode *opcode) ret = orc_test_compare_output_full (p, flags); if (!ret) { - printf("test failed\n"); + printf ("test failed\n"); error = TRUE; } @@ -141,7 +149,7 @@ test_opcode_src (OrcStaticOpcode *opcode) } void -test_opcode_const (OrcStaticOpcode *opcode) +test_opcode_const (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; @@ -156,22 +164,19 @@ test_opcode_const (OrcStaticOpcode *opcode) p = orc_program_new (); if (opcode->flags & ORC_STATIC_OPCODE_ACCUMULATOR) { args[n_args++] = - orc_program_add_accumulator (p, opcode->dest_size[0], "d1"); + orc_program_add_accumulator (p, opcode->dest_size[0], "d1"); } else { args[n_args++] = - orc_program_add_destination (p, opcode->dest_size[0], "d1"); + orc_program_add_destination (p, opcode->dest_size[0], "d1"); } if (opcode->dest_size[1] != 0) { args[n_args++] = - orc_program_add_destination (p, opcode->dest_size[1], "d2"); + orc_program_add_destination (p, opcode->dest_size[1], "d2"); } - args[n_args++] = - orc_program_add_source (p, opcode->src_size[0], "s1"); - args[n_args++] = - orc_program_add_constant (p, opcode->src_size[1], 1, "c1"); + args[n_args++] = orc_program_add_source (p, opcode->src_size[0], "s1"); + args[n_args++] = orc_program_add_constant (p, opcode->src_size[1], 1, "c1"); if (opcode->src_size[2]) { - args[n_args++] = - orc_program_add_constant (p, opcode->src_size[2], 1, "c2"); + args[n_args++] = orc_program_add_constant (p, opcode->src_size[2], 1, "c2"); } if ((opcode->flags & ORC_STATIC_OPCODE_FLOAT_SRC) || @@ -179,15 +184,14 @@ test_opcode_const (OrcStaticOpcode *opcode) flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_const_%s", opcode->name); + sprintf (s, "test_const_%s", opcode->name); orc_program_set_name (p, s); - orc_program_append_2 (p, opcode->name, 0, args[0], args[1], - args[2], args[3]); + orc_program_append_2 (p, opcode->name, 0, args[0], args[1], args[2], args[3]); ret = orc_test_compare_output_full (p, flags); if (!ret) { - printf("test failed\n"); + printf ("test failed\n"); error = TRUE; } @@ -195,7 +199,7 @@ test_opcode_const (OrcStaticOpcode *opcode) } void -test_opcode_param (OrcStaticOpcode *opcode) +test_opcode_param (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; @@ -210,22 +214,19 @@ test_opcode_param (OrcStaticOpcode *opcode) p = orc_program_new (); if (opcode->flags & ORC_STATIC_OPCODE_ACCUMULATOR) { args[n_args++] = - orc_program_add_accumulator (p, opcode->dest_size[0], "d1"); + orc_program_add_accumulator (p, opcode->dest_size[0], "d1"); } else { args[n_args++] = - orc_program_add_destination (p, opcode->dest_size[0], "d1"); + orc_program_add_destination (p, opcode->dest_size[0], "d1"); } if (opcode->dest_size[1] != 0) { args[n_args++] = - orc_program_add_destination (p, opcode->dest_size[1], "d2"); + orc_program_add_destination (p, opcode->dest_size[1], "d2"); } - args[n_args++] = - orc_program_add_source (p, opcode->src_size[0], "s1"); - args[n_args++] = - orc_program_add_parameter (p, opcode->src_size[1], "p1"); + args[n_args++] = orc_program_add_source (p, opcode->src_size[0], "s1"); + args[n_args++] = orc_program_add_parameter (p, opcode->src_size[1], "p1"); if (opcode->src_size[2]) { - args[n_args++] = - orc_program_add_parameter (p, opcode->src_size[2], "p2"); + args[n_args++] = orc_program_add_parameter (p, opcode->src_size[2], "p2"); } if ((opcode->flags & ORC_STATIC_OPCODE_FLOAT_SRC) || @@ -233,15 +234,14 @@ test_opcode_param (OrcStaticOpcode *opcode) flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_p_%s", opcode->name); + sprintf (s, "test_p_%s", opcode->name); orc_program_set_name (p, s); - orc_program_append_2 (p, opcode->name, 0, args[0], args[1], - args[2], args[3]); + orc_program_append_2 (p, opcode->name, 0, args[0], args[1], args[2], args[3]); ret = orc_test_compare_output_full (p, flags); if (!ret) { - printf("test failed\n"); + printf ("test failed\n"); error = TRUE; } @@ -249,14 +249,15 @@ test_opcode_param (OrcStaticOpcode *opcode) } void -test_opcode_inplace (OrcStaticOpcode *opcode) +test_opcode_inplace (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; int ret; int flags = 0; - if (opcode->dest_size[0] != opcode->src_size[0]) return; + if (opcode->dest_size[0] != opcode->src_size[0]) + return; if (opcode->flags & ORC_STATIC_OPCODE_SCALAR || opcode->flags & ORC_STATIC_OPCODE_ACCUMULATOR) { @@ -277,14 +278,14 @@ test_opcode_inplace (OrcStaticOpcode *opcode) flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_inplace_%s", opcode->name); + sprintf (s, "test_inplace_%s", opcode->name); orc_program_set_name (p, s); orc_program_append_str (p, opcode->name, "d1", "d1", "s2"); ret = orc_test_compare_output_full (p, flags); if (!ret) { - printf("test failed\n"); + printf ("test failed\n"); error = TRUE; } @@ -292,7 +293,7 @@ test_opcode_inplace (OrcStaticOpcode *opcode) } void -test_opcode_src_2d (OrcStaticOpcode *opcode) +test_opcode_src_2d (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; @@ -322,7 +323,7 @@ test_opcode_src_2d (OrcStaticOpcode *opcode) flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_s_%s", opcode->name); + sprintf (s, "test_s_%s", opcode->name); orc_program_set_name (p, s); orc_program_set_2d (p); @@ -334,7 +335,7 @@ test_opcode_src_2d (OrcStaticOpcode *opcode) ret = orc_test_compare_output_full (p, flags); if (!ret) { - printf("test failed\n"); + printf ("test failed\n"); error = TRUE; } @@ -342,7 +343,7 @@ test_opcode_src_2d (OrcStaticOpcode *opcode) } void -test_opcode_src_const_n (OrcStaticOpcode *opcode) +test_opcode_src_const_n (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; @@ -372,7 +373,7 @@ test_opcode_src_const_n (OrcStaticOpcode *opcode) flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_s_%s", opcode->name); + sprintf (s, "test_s_%s", opcode->name); orc_program_set_name (p, s); orc_program_set_constant_n (p, 8); @@ -384,7 +385,7 @@ test_opcode_src_const_n (OrcStaticOpcode *opcode) ret = orc_test_compare_output_full (p, flags); if (!ret) { - printf("test failed\n"); + printf ("test failed\n"); error = TRUE; } @@ -392,7 +393,7 @@ test_opcode_src_const_n (OrcStaticOpcode *opcode) } void -test_opcode_src_const_n_2d (OrcStaticOpcode *opcode) +test_opcode_src_const_n_2d (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; @@ -422,7 +423,7 @@ test_opcode_src_const_n_2d (OrcStaticOpcode *opcode) flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_s_%s", opcode->name); + sprintf (s, "test_s_%s", opcode->name); orc_program_set_name (p, s); orc_program_set_2d (p); orc_program_set_constant_n (p, 8); @@ -435,10 +436,9 @@ test_opcode_src_const_n_2d (OrcStaticOpcode *opcode) ret = orc_test_compare_output_full (p, flags); if (!ret) { - printf("test failed\n"); + printf ("test failed\n"); error = TRUE; } orc_program_free (p); } - diff --git a/testsuite/exec_parse.c b/testsuite/exec_parse.c index 17ee569..6b9aa36 100644 --- a/testsuite/exec_parse.c +++ b/testsuite/exec_parse.c @@ -6,10 +6,10 @@ #include <stdio.h> #include <stdlib.h> -static char * read_file (const char *filename); -void output_code (OrcProgram *p, FILE *output); -void output_code_header (OrcProgram *p, FILE *output); -void output_code_test (OrcProgram *p, FILE *output); +static char *read_file (const char *filename); +void output_code (OrcProgram * p, FILE * output); +void output_code_header (OrcProgram * p, FILE * output); +void output_code_test (OrcProgram * p, FILE * output); int verbose = FALSE; int error = FALSE; @@ -37,18 +37,20 @@ main (int argc, char *argv[]) } code = read_file (filename); if (!code) { - printf("perf_parse <file.orc>\n"); - exit(1); + printf ("perf_parse <file.orc>\n"); + exit (1); } n = orc_parse (code, &programs); - for(i=0;i<n;i++){ - if (verbose) printf("%s\n", programs[i]->name); + for (i = 0; i < n; i++) { + if (verbose) + printf ("%s\n", programs[i]->name); orc_test_compare_output_full (programs[i], 0); } - if (error) return 1; + if (error) + return 1; return 0; } @@ -62,31 +64,38 @@ read_file (const char *filename) int ret; file = fopen (filename, "r"); - if (file == NULL) return NULL; + if (file == NULL) + return NULL; ret = fseek (file, 0, SEEK_END); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; size = ftell (file); - if (size < 0) goto bail; + if (size < 0) + goto bail; ret = fseek (file, 0, SEEK_SET); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents = malloc (size + 1); - if (contents == NULL) goto bail; + if (contents == NULL) + goto bail; ret = fread (contents, size, 1, file); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents[size] = 0; return contents; bail: /* something failed */ - if (file) fclose (file); - if (contents) free (contents); + if (file) + fclose (file); + if (contents) + free (contents); return NULL; } - diff --git a/testsuite/generate_opcodes_sys.c b/testsuite/generate_opcodes_sys.c index 2de7e81..7153518 100644 --- a/testsuite/generate_opcodes_sys.c +++ b/testsuite/generate_opcodes_sys.c @@ -10,9 +10,9 @@ int error = FALSE; -void test_opcode (OrcStaticOpcode *opcode); -void test_opcode_const (OrcStaticOpcode *opcode); -void test_opcode_param (OrcStaticOpcode *opcode); +void test_opcode (OrcStaticOpcode * opcode); +void test_opcode_const (OrcStaticOpcode * opcode); +void test_opcode_param (OrcStaticOpcode * opcode); int main (int argc, char *argv[]) @@ -22,81 +22,81 @@ main (int argc, char *argv[]) OrcStaticOpcode *opcode; const char *d1; - orc_init(); - orc_test_init(); + orc_init (); + orc_test_init (); opcode_set = orc_opcode_set_get ("sys"); - for(i=0;i<opcode_set->n_opcodes;i++){ + for (i = 0; i < opcode_set->n_opcodes; i++) { opcode = opcode_set->opcodes + i; - printf(".function emulate_%s\n", opcode->name); + printf (".function emulate_%s\n", opcode->name); if (opcode->flags & ORC_STATIC_OPCODE_ACCUMULATOR) { - printf(".accumulator %d a1\n", opcode->dest_size[0]); + printf (".accumulator %d a1\n", opcode->dest_size[0]); d1 = "a1"; } else { - printf(".dest %d d1\n", opcode->dest_size[0]); + printf (".dest %d d1\n", opcode->dest_size[0]); d1 = "d1"; } if (opcode->dest_size[1]) { - printf(".dest %d d2\n", opcode->dest_size[1]); + printf (".dest %d d2\n", opcode->dest_size[1]); } - printf(".source %d s1\n", opcode->src_size[0]); + printf (".source %d s1\n", opcode->src_size[0]); if (opcode->src_size[1]) { if (opcode->flags & ORC_STATIC_OPCODE_SCALAR) { - printf(".param %d s2\n", opcode->src_size[1]); + printf (".param %d s2\n", opcode->src_size[1]); } else { - printf(".source %d s2\n", opcode->src_size[1]); + printf (".source %d s2\n", opcode->src_size[1]); } } - printf("\n"); + printf ("\n"); if (opcode->src_size[1]) { - printf("%s %s, s1, s2\n", opcode->name, d1); + printf ("%s %s, s1, s2\n", opcode->name, d1); } else { if (opcode->dest_size[1]) { - printf("%s %s, d2, s1\n", opcode->name, d1); + printf ("%s %s, d2, s1\n", opcode->name, d1); } else { - printf("%s %s, s1\n", opcode->name, d1); + printf ("%s %s, s1\n", opcode->name, d1); } } - printf("\n"); - printf("\n"); + printf ("\n"); + printf ("\n"); - printf(".function emulate_n16_%s\n", opcode->name); - printf(".n 16\n"); + printf (".function emulate_n16_%s\n", opcode->name); + printf (".n 16\n"); if (opcode->flags & ORC_STATIC_OPCODE_ACCUMULATOR) { - printf(".accumulator %d a1\n", opcode->dest_size[0]); + printf (".accumulator %d a1\n", opcode->dest_size[0]); d1 = "a1"; } else { - printf(".dest %d d1\n", opcode->dest_size[0]); + printf (".dest %d d1\n", opcode->dest_size[0]); d1 = "d1"; } if (opcode->dest_size[1]) { - printf(".dest %d d2\n", opcode->dest_size[1]); + printf (".dest %d d2\n", opcode->dest_size[1]); } - printf(".source %d s1\n", opcode->src_size[0]); + printf (".source %d s1\n", opcode->src_size[0]); if (opcode->src_size[1]) { if (opcode->flags & ORC_STATIC_OPCODE_SCALAR) { - printf(".param %d s2\n", opcode->src_size[1]); + printf (".param %d s2\n", opcode->src_size[1]); } else { - printf(".source %d s2\n", opcode->src_size[1]); + printf (".source %d s2\n", opcode->src_size[1]); } } - printf("\n"); + printf ("\n"); if (opcode->src_size[1]) { - printf("%s %s, s1, s2\n", opcode->name, d1); + printf ("%s %s, s1, s2\n", opcode->name, d1); } else { if (opcode->dest_size[1]) { - printf("%s %s, d2, s1\n", opcode->name, d1); + printf ("%s %s, d2, s1\n", opcode->name, d1); } else { - printf("%s %s, s1\n", opcode->name, d1); + printf ("%s %s, s1\n", opcode->name, d1); } } - printf("\n"); - printf("\n"); + printf ("\n"); + printf ("\n"); } - if (error) return 1; + if (error) + return 1; return 0; } - diff --git a/testsuite/generate_xml_table.c b/testsuite/generate_xml_table.c index fb7fb0c..0308f15 100644 --- a/testsuite/generate_xml_table.c +++ b/testsuite/generate_xml_table.c @@ -10,7 +10,7 @@ int error = FALSE; -char * test_opcode (OrcStaticOpcode *opcode, OrcTarget *target, +char *test_opcode (OrcStaticOpcode * opcode, OrcTarget * target, unsigned int target_flags); int @@ -23,66 +23,57 @@ main (int argc, char *argv[]) unsigned int target_flags[10]; int n_targets; - orc_init(); - orc_test_init(); + orc_init (); + orc_test_init (); - targets[0] = orc_target_get_by_name("sse"); - target_flags[0] = orc_target_get_default_flags(targets[0]); + targets[0] = orc_target_get_by_name ("sse"); + target_flags[0] = orc_target_get_default_flags (targets[0]); - targets[1] = orc_target_get_by_name("mmx"); - target_flags[1] = orc_target_get_default_flags(targets[1]); + targets[1] = orc_target_get_by_name ("mmx"); + target_flags[1] = orc_target_get_default_flags (targets[1]); - targets[2] = orc_target_get_by_name("altivec"); - target_flags[2] = orc_target_get_default_flags(targets[2]); + targets[2] = orc_target_get_by_name ("altivec"); + target_flags[2] = orc_target_get_default_flags (targets[2]); - targets[3] = orc_target_get_by_name("arm"); - target_flags[3] = orc_target_get_default_flags(targets[3]); + targets[3] = orc_target_get_by_name ("arm"); + target_flags[3] = orc_target_get_default_flags (targets[3]); - targets[4] = orc_target_get_by_name("neon"); - target_flags[4] = orc_target_get_default_flags(targets[4]); + targets[4] = orc_target_get_by_name ("neon"); + target_flags[4] = orc_target_get_default_flags (targets[4]); - targets[5] = orc_target_get_by_name("c64x-c"); - target_flags[5] = orc_target_get_default_flags(targets[5]); + targets[5] = orc_target_get_by_name ("c64x-c"); + target_flags[5] = orc_target_get_default_flags (targets[5]); - n_targets=6; - - printf( -"<table frame=\"all\" id=\"table-basictypes\" xreflabel=\"Table of Opcode Rule Coverage\">\n" -"<title>Table of Opcode Rule Coverage</title>\n" -"<tgroup cols=\"%d\" align=\"left\" colsep=\"1\" rowsep=\"1\">\n" -"<thead>\n" -"<row>\n" -"<entry>opcode name</entry>\n", n_targets+1); - for(j=0;j<n_targets;j++){ - printf("<entry>%s</entry>\n", - orc_target_get_name(targets[j])); - } - printf( -"</row>\n" -"</thead>\n" -"<tbody valign=\"top\">\n"); + n_targets = 6; + + printf + ("<table frame=\"all\" id=\"table-basictypes\" xreflabel=\"Table of Opcode Rule Coverage\">\n" + "<title>Table of Opcode Rule Coverage</title>\n" + "<tgroup cols=\"%d\" align=\"left\" colsep=\"1\" rowsep=\"1\">\n" + "<thead>\n" "<row>\n" "<entry>opcode name</entry>\n", n_targets + 1); + for (j = 0; j < n_targets; j++) { + printf ("<entry>%s</entry>\n", orc_target_get_name (targets[j])); + } + printf ("</row>\n" "</thead>\n" "<tbody valign=\"top\">\n"); opcode_set = orc_opcode_set_get ("sys"); - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("<row>\n"); - printf("<entry>%s</entry>\n", opcode_set->opcodes[i].name); - for(j=0;j<n_targets;j++){ - printf("<entry>%s</entry>\n", - test_opcode (opcode_set->opcodes + i, targets[j], target_flags[j])); + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("<row>\n"); + printf ("<entry>%s</entry>\n", opcode_set->opcodes[i].name); + for (j = 0; j < n_targets; j++) { + printf ("<entry>%s</entry>\n", + test_opcode (opcode_set->opcodes + i, targets[j], target_flags[j])); } - printf("</row>\n"); + printf ("</row>\n"); } - printf( -"</tbody>\n" -"</tgroup>\n" -"</table>\n"); + printf ("</tbody>\n" "</tgroup>\n" "</table>\n"); return 0; } char * -test_opcode (OrcStaticOpcode *opcode, OrcTarget *target, +test_opcode (OrcStaticOpcode * opcode, OrcTarget * target, unsigned int target_flags) { OrcProgram *p; @@ -93,7 +84,7 @@ test_opcode (OrcStaticOpcode *opcode, OrcTarget *target, ret = orc_program_compile_full (p, target, target_flags); orc_program_free (p); - if (ORC_COMPILE_RESULT_IS_SUCCESSFUL(ret)) { + if (ORC_COMPILE_RESULT_IS_SUCCESSFUL (ret)) { return "yes"; } } @@ -103,11 +94,10 @@ test_opcode (OrcStaticOpcode *opcode, OrcTarget *target, ret = orc_program_compile_full (p, target, target_flags); orc_program_free (p); - if (ORC_COMPILE_RESULT_IS_SUCCESSFUL(ret)) { + if (ORC_COMPILE_RESULT_IS_SUCCESSFUL (ret)) { return "yes"; } } return "no"; } - diff --git a/testsuite/generate_xml_table2.c b/testsuite/generate_xml_table2.c index 3d978c3..3e00aca 100644 --- a/testsuite/generate_xml_table2.c +++ b/testsuite/generate_xml_table2.c @@ -11,8 +11,8 @@ int error = FALSE; -char * get_desc (OrcStaticOpcode *opcode); -char * get_code (OrcStaticOpcode *opcode); +char *get_desc (OrcStaticOpcode * opcode); +char *get_code (OrcStaticOpcode * opcode); int main (int argc, char *argv[]) @@ -20,233 +20,226 @@ main (int argc, char *argv[]) int i; OrcOpcodeSet *opcode_set; - orc_init(); - orc_test_init(); - - printf( -"<table frame=\"all\" id=\"table-basictypes\" xreflabel=\"Table of Opcodes\">\n" -"<title>Table of Opcodes</title>\n" -"<tgroup cols=\"3\" align=\"left\" colsep=\"1\" rowsep=\"1\">\n" -"<thead>\n" -"<row>\n" -"<entry>opcode</entry>\n" -"<entry>destination size</entry>\n" -"<entry>source 1 size</entry>\n" -"<entry>source 2 size</entry>\n" -"<entry>description</entry>\n" -"<entry>pseudo code</entry>\n" -"</row>\n" -"</thead>\n" -"<tbody valign=\"top\">\n"); + orc_init (); + orc_test_init (); + + printf + ("<table frame=\"all\" id=\"table-basictypes\" xreflabel=\"Table of Opcodes\">\n" + "<title>Table of Opcodes</title>\n" + "<tgroup cols=\"3\" align=\"left\" colsep=\"1\" rowsep=\"1\">\n" + "<thead>\n" "<row>\n" "<entry>opcode</entry>\n" + "<entry>destination size</entry>\n" "<entry>source 1 size</entry>\n" + "<entry>source 2 size</entry>\n" "<entry>description</entry>\n" + "<entry>pseudo code</entry>\n" "</row>\n" "</thead>\n" + "<tbody valign=\"top\">\n"); opcode_set = orc_opcode_set_get ("sys"); - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("<row>\n"); - printf("<entry>%s</entry>\n", opcode_set->opcodes[i].name); - printf("<entry>%d</entry>\n", opcode_set->opcodes[i].dest_size[0]); - printf("<entry>%d</entry>\n", opcode_set->opcodes[i].src_size[0]); + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("<row>\n"); + printf ("<entry>%s</entry>\n", opcode_set->opcodes[i].name); + printf ("<entry>%d</entry>\n", opcode_set->opcodes[i].dest_size[0]); + printf ("<entry>%d</entry>\n", opcode_set->opcodes[i].src_size[0]); if (opcode_set->opcodes[i].src_size[1]) { - printf("<entry>%d%s</entry>\n", opcode_set->opcodes[i].src_size[1], + printf ("<entry>%d%s</entry>\n", opcode_set->opcodes[i].src_size[1], (opcode_set->opcodes[i].flags & ORC_STATIC_OPCODE_SCALAR) ? "S" : ""); } else { - printf("<entry></entry>\n"); + printf ("<entry></entry>\n"); } - printf("<entry>%s</entry>\n", get_desc(&opcode_set->opcodes[i])); - printf("<entry>%s</entry>\n", get_code(&opcode_set->opcodes[i])); - printf("</row>\n"); + printf ("<entry>%s</entry>\n", get_desc (&opcode_set->opcodes[i])); + printf ("<entry>%s</entry>\n", get_code (&opcode_set->opcodes[i])); + printf ("</row>\n"); } - printf( -"</tbody>\n" -"</tgroup>\n" -"</table>\n"); + printf ("</tbody>\n" "</tgroup>\n" "</table>\n"); return 0; } -struct a { +struct a +{ char *name; char *code; char *desc; }; struct a ops[] = { - { "absb", "(a < 0) ? -a : a", "absolute value" }, - { "addb", "a + b", "add" }, - { "addssb", "clamp(a + b)", "add with signed saturate" }, - { "addusb", "clamp(a + b)", "add with unsigned saturate" }, - { "andb", "a & b", "bitwise AND" }, - { "andnb", "a & (~b)", "bitwise AND NOT" }, - { "avgsb", "(a + b + 1)>>1", "signed average" }, - { "avgub", "(a + b + 1)>>1", "unsigned average" }, - { "cmpeqb", "(a == b) ? (~0) : 0", "compare equal" }, - { "cmpgtsb", "(a > b) ? (~0) : 0", "compare greater than" }, - { "copyb", "a", "copy" }, - { "maxsb", "(a > b) ? a : b", "signed maximum" }, - { "maxub", "(a > b) ? a : b", "unsigned maximum" }, - { "minsb", "(a < b) ? a : b", "signed minimum" }, - { "minub", "(a < b) ? a : b", "unsigned minimum" }, - { "mullb", "a * b", "low bits of multiply" }, - { "mulhsb", "(a * b) >> 8", "high bits of signed multiply" }, - { "mulhub", "(a * b) >> 8", "high bits of unsigned multiply" }, - { "orb", "a | b", "bitwise or" }, - { "shlb", "a << b", "shift left" }, - { "shrsb", "a >> b", "signed shift right" }, - { "shrub", "a >> b", "unsigned shift right" }, - { "signb", "sign(a)", "sign" }, - { "subb", "a - b", "subtract" }, - { "subssb", "clamp(a - b)", "subtract with signed saturate" }, - { "subusb", "clamp(a - b)", "subtract with unsigned saturate" }, - { "xorb", "a ^ b", "bitwise XOR" }, + {"absb", "(a < 0) ? -a : a", "absolute value"}, + {"addb", "a + b", "add"}, + {"addssb", "clamp(a + b)", "add with signed saturate"}, + {"addusb", "clamp(a + b)", "add with unsigned saturate"}, + {"andb", "a & b", "bitwise AND"}, + {"andnb", "a & (~b)", "bitwise AND NOT"}, + {"avgsb", "(a + b + 1)>>1", "signed average"}, + {"avgub", "(a + b + 1)>>1", "unsigned average"}, + {"cmpeqb", "(a == b) ? (~0) : 0", "compare equal"}, + {"cmpgtsb", "(a > b) ? (~0) : 0", "compare greater than"}, + {"copyb", "a", "copy"}, + {"maxsb", "(a > b) ? a : b", "signed maximum"}, + {"maxub", "(a > b) ? a : b", "unsigned maximum"}, + {"minsb", "(a < b) ? a : b", "signed minimum"}, + {"minub", "(a < b) ? a : b", "unsigned minimum"}, + {"mullb", "a * b", "low bits of multiply"}, + {"mulhsb", "(a * b) >> 8", "high bits of signed multiply"}, + {"mulhub", "(a * b) >> 8", "high bits of unsigned multiply"}, + {"orb", "a | b", "bitwise or"}, + {"shlb", "a << b", "shift left"}, + {"shrsb", "a >> b", "signed shift right"}, + {"shrub", "a >> b", "unsigned shift right"}, + {"signb", "sign(a)", "sign"}, + {"subb", "a - b", "subtract"}, + {"subssb", "clamp(a - b)", "subtract with signed saturate"}, + {"subusb", "clamp(a - b)", "subtract with unsigned saturate"}, + {"xorb", "a ^ b", "bitwise XOR"}, - { "absw", "(a < 0) ? -a : a", "absolute value" }, - { "addw", "a + b", "add" }, - { "addssw", "clamp(a + b)", "add with signed saturate" }, - { "addusw", "clamp(a + b)", "add with unsigned saturate" }, - { "andw", "a & b", "bitwise AND" }, - { "andnw", "a & (~b)", "bitwise AND NOT" }, - { "avgsw", "(a + b + 1)>>1", "signed average" }, - { "avguw", "(a + b + 1)>>1", "unsigned average" }, - { "cmpeqw", "(a == b) ? (~0) : 0", "compare equal" }, - { "cmpgtsw", "(a > b) ? (~0) : 0", "compare greater than" }, - { "copyw", "a", "copy" }, - { "maxsw", "(a > b) ? a : b", "signed maximum" }, - { "maxuw", "(a > b) ? a : b", "unsigned maximum" }, - { "minsw", "(a < b) ? a : b", "signed minimum" }, - { "minuw", "(a < b) ? a : b", "unsigned minimum" }, - { "mullw", "a * b", "low bits of multiply" }, - { "mulhsw", "(a * b) >> 8", "high bits of signed multiply" }, - { "mulhuw", "(a * b) >> 8", "high bits of unsigned multiply" }, - { "orw", "a | b", "bitwise or" }, - { "shlw", "a << b", "shift left" }, - { "shrsw", "a >> b", "signed shift right" }, - { "shruw", "a >> b", "unsigned shift right" }, - { "signw", "sign(a)", "sign" }, - { "subw", "a - b", "subtract" }, - { "subssw", "clamp(a - b)", "subtract with signed saturate" }, - { "subusw", "clamp(a - b)", "subtract with unsigned saturate" }, - { "xorw", "a ^ b", "bitwise XOR" }, + {"absw", "(a < 0) ? -a : a", "absolute value"}, + {"addw", "a + b", "add"}, + {"addssw", "clamp(a + b)", "add with signed saturate"}, + {"addusw", "clamp(a + b)", "add with unsigned saturate"}, + {"andw", "a & b", "bitwise AND"}, + {"andnw", "a & (~b)", "bitwise AND NOT"}, + {"avgsw", "(a + b + 1)>>1", "signed average"}, + {"avguw", "(a + b + 1)>>1", "unsigned average"}, + {"cmpeqw", "(a == b) ? (~0) : 0", "compare equal"}, + {"cmpgtsw", "(a > b) ? (~0) : 0", "compare greater than"}, + {"copyw", "a", "copy"}, + {"maxsw", "(a > b) ? a : b", "signed maximum"}, + {"maxuw", "(a > b) ? a : b", "unsigned maximum"}, + {"minsw", "(a < b) ? a : b", "signed minimum"}, + {"minuw", "(a < b) ? a : b", "unsigned minimum"}, + {"mullw", "a * b", "low bits of multiply"}, + {"mulhsw", "(a * b) >> 8", "high bits of signed multiply"}, + {"mulhuw", "(a * b) >> 8", "high bits of unsigned multiply"}, + {"orw", "a | b", "bitwise or"}, + {"shlw", "a << b", "shift left"}, + {"shrsw", "a >> b", "signed shift right"}, + {"shruw", "a >> b", "unsigned shift right"}, + {"signw", "sign(a)", "sign"}, + {"subw", "a - b", "subtract"}, + {"subssw", "clamp(a - b)", "subtract with signed saturate"}, + {"subusw", "clamp(a - b)", "subtract with unsigned saturate"}, + {"xorw", "a ^ b", "bitwise XOR"}, - { "absl", "(a < 0) ? -a : a", "absolute value" }, - { "addl", "a + b", "add" }, - { "addssl", "clamp(a + b)", "add with signed saturate" }, - { "addusl", "clamp(a + b)", "add with unsigned saturate" }, - { "andl", "a & b", "bitwise AND" }, - { "andnl", "a & (~b)", "bitwise AND NOT" }, - { "avgsl", "(a + b + 1)>>1", "signed average" }, - { "avgul", "(a + b + 1)>>1", "unsigned average" }, - { "cmpeql", "(a == b) ? (~0) : 0", "compare equal" }, - { "cmpgtsl", "(a > b) ? (~0) : 0", "compare greater than" }, - { "copyl", "a", "copy" }, - { "maxsl", "(a > b) ? a : b", "signed maximum" }, - { "maxul", "(a > b) ? a : b", "unsigned maximum" }, - { "minsl", "(a < b) ? a : b", "signed minimum" }, - { "minul", "(a < b) ? a : b", "unsigned minimum" }, - { "mulll", "a * b", "low bits of multiply" }, - { "mulhsl", "(a * b) >> 16", "high bits of signed multiply" }, - { "mulhul", "(a * b) >> 16", "high bits of unsigned multiply" }, - { "orl", "a | b", "bitwise or" }, - { "shll", "a << b", "shift left" }, - { "shrsl", "a >> b", "signed shift right" }, - { "shrul", "a >> b", "unsigned shift right" }, - { "signl", "sign(a)", "sign" }, - { "subl", "a - b", "subtract" }, - { "subssl", "clamp(a - b)", "subtract with signed saturate" }, - { "subusl", "clamp(a - b)", "subtract with unsigned saturate" }, - { "xorl", "a ^ b", "bitwise XOR" }, + {"absl", "(a < 0) ? -a : a", "absolute value"}, + {"addl", "a + b", "add"}, + {"addssl", "clamp(a + b)", "add with signed saturate"}, + {"addusl", "clamp(a + b)", "add with unsigned saturate"}, + {"andl", "a & b", "bitwise AND"}, + {"andnl", "a & (~b)", "bitwise AND NOT"}, + {"avgsl", "(a + b + 1)>>1", "signed average"}, + {"avgul", "(a + b + 1)>>1", "unsigned average"}, + {"cmpeql", "(a == b) ? (~0) : 0", "compare equal"}, + {"cmpgtsl", "(a > b) ? (~0) : 0", "compare greater than"}, + {"copyl", "a", "copy"}, + {"maxsl", "(a > b) ? a : b", "signed maximum"}, + {"maxul", "(a > b) ? a : b", "unsigned maximum"}, + {"minsl", "(a < b) ? a : b", "signed minimum"}, + {"minul", "(a < b) ? a : b", "unsigned minimum"}, + {"mulll", "a * b", "low bits of multiply"}, + {"mulhsl", "(a * b) >> 16", "high bits of signed multiply"}, + {"mulhul", "(a * b) >> 16", "high bits of unsigned multiply"}, + {"orl", "a | b", "bitwise or"}, + {"shll", "a << b", "shift left"}, + {"shrsl", "a >> b", "signed shift right"}, + {"shrul", "a >> b", "unsigned shift right"}, + {"signl", "sign(a)", "sign"}, + {"subl", "a - b", "subtract"}, + {"subssl", "clamp(a - b)", "subtract with signed saturate"}, + {"subusl", "clamp(a - b)", "subtract with unsigned saturate"}, + {"xorl", "a ^ b", "bitwise XOR"}, - { "convsbw", "a", "convert signed" }, - { "convubw", "a", "convert unsigned" }, - { "convswl", "a", "convert signed" }, - { "convuwl", "a", "convert unsigned" }, - { "convwb", "a", "convert" }, - { "convssswb", "clamp(a)", "convert signed to signed with saturation" }, - { "convsuswb", "clamp(a)", "convert signed to unsigned with saturation" }, - { "convusswb", "clamp(a)", "convert unsigned to signed with saturation" }, - { "convuuswb", "clamp(a)", "convert unsigned to unsigned with saturation" }, - { "convlw", "a", "convert" }, - { "convssslw", "clamp(a)", "convert signed to signed with saturation" }, - { "convsuslw", "clamp(a)", "convert signed to unsigned with saturation" }, - { "convusslw", "clamp(a)", "convert unsigned to signed with saturation" }, - { "convuuslw", "clamp(a)", "convert unsigned to unsigned with saturation" }, - { "mulsbw", "a * b", "multiply signed" }, - { "mulubw", "a * b", "multiply unsigned" }, - { "mulswl", "a * b", "multiply signed" }, - { "muluwl", "a * b", "multiply unsigned" }, - { "mergewl", "special", "merge halves" }, - { "mergebw", "special", "merge halves" }, - { "select0wb", "special", "select first half" }, - { "select1wb", "special", "select second half" }, - { "select0lw", "special", "select first half" }, - { "select1lw", "special", "select second half" }, - { "swapw", "special", "endianness swap" }, - { "swapl", "special", "endianness swap" }, + {"convsbw", "a", "convert signed"}, + {"convubw", "a", "convert unsigned"}, + {"convswl", "a", "convert signed"}, + {"convuwl", "a", "convert unsigned"}, + {"convwb", "a", "convert"}, + {"convssswb", "clamp(a)", "convert signed to signed with saturation"}, + {"convsuswb", "clamp(a)", "convert signed to unsigned with saturation"}, + {"convusswb", "clamp(a)", "convert unsigned to signed with saturation"}, + {"convuuswb", "clamp(a)", "convert unsigned to unsigned with saturation"}, + {"convlw", "a", "convert"}, + {"convssslw", "clamp(a)", "convert signed to signed with saturation"}, + {"convsuslw", "clamp(a)", "convert signed to unsigned with saturation"}, + {"convusslw", "clamp(a)", "convert unsigned to signed with saturation"}, + {"convuuslw", "clamp(a)", "convert unsigned to unsigned with saturation"}, + {"mulsbw", "a * b", "multiply signed"}, + {"mulubw", "a * b", "multiply unsigned"}, + {"mulswl", "a * b", "multiply signed"}, + {"muluwl", "a * b", "multiply unsigned"}, + {"mergewl", "special", "merge halves"}, + {"mergebw", "special", "merge halves"}, + {"select0wb", "special", "select first half"}, + {"select1wb", "special", "select second half"}, + {"select0lw", "special", "select first half"}, + {"select1lw", "special", "select second half"}, + {"swapw", "special", "endianness swap"}, + {"swapl", "special", "endianness swap"}, - { "accw", "+= a", "accumulate" }, - { "accl", "+= a", "accumulate" }, - { "accsadubl", "+= abs(a - b)", "accumulate absolute difference" }, + {"accw", "+= a", "accumulate"}, + {"accl", "+= a", "accumulate"}, + {"accsadubl", "+= abs(a - b)", "accumulate absolute difference"}, - { "splitlw" , "special", "split first/second words" }, - { "splitwb" , "special", "split first/second bytes" }, - { "addf", "a + b", "add" }, - { "subf", "a - b", "subtract" }, - { "mulf", "a * b", "multiply" }, - { "divf", "a / b", "divide" }, - { "sqrtf", "sqrt(a)", "square root" }, - { "maxf", "max(a,b)", "maximum" }, - { "minf", "min(a,b)", "minimum" }, - { "cmpeqf", "(a == b) ? (~0) : 0", "compare equal" }, - { "cmpltf", "(a == b) ? (~0) : 0", "compare less than" }, - { "cmplef", "(a == b) ? (~0) : 0", "compare less than or equal" }, - { "convfl", "a", "convert float point to integer" }, - { "convlf", "a", "convert integer to floating point" }, + {"splitlw", "special", "split first/second words"}, + {"splitwb", "special", "split first/second bytes"}, + {"addf", "a + b", "add"}, + {"subf", "a - b", "subtract"}, + {"mulf", "a * b", "multiply"}, + {"divf", "a / b", "divide"}, + {"sqrtf", "sqrt(a)", "square root"}, + {"maxf", "max(a,b)", "maximum"}, + {"minf", "min(a,b)", "minimum"}, + {"cmpeqf", "(a == b) ? (~0) : 0", "compare equal"}, + {"cmpltf", "(a == b) ? (~0) : 0", "compare less than"}, + {"cmplef", "(a == b) ? (~0) : 0", "compare less than or equal"}, + {"convfl", "a", "convert float point to integer"}, + {"convlf", "a", "convert integer to floating point"}, - { "loadb", "array[i]", "load from memory" }, - { "loadw", "array[i]", "load from memory" }, - { "loadl", "array[i]", "load from memory" }, - { "loadq", "array[i]", "load from memory" }, - { "storeb", "special", "store to memory" }, - { "storew", "special", "store to memory" }, - { "storel", "special", "store to memory" }, - { "storeq", "special", "store to memory" }, - { "loadoffb", "array[i+offset]", "load from memory with offset" }, - { "loadoffw", "array[i+offset]", "load from memory with offset" }, - { "loadoffl", "array[i+offset]", "load from memory with offset" }, - { "loadoffq", "array[i+offset]", "load from memory with offset" }, - { "loadpb", "scalar", "load parameter or constant" }, - { "loadpw", "scalar", "load parameter or constant" }, - { "loadpl", "scalar", "load parameter or constant" }, - { "loadpq", "scalar", "load parameter or constant" }, - { "loadupdb", "array[i>>1]", "load upsampled duplicate" }, - { "loadupib", "(array[i>>1] + array[(i+1)>>1] + 1)>>1", - "load upsampled interpolate" }, - { "ldresnearb", "array[(b+c*i)>>8]", "load, nearest neighbor resampled" }, - { "ldreslinb", "special", "load, bilinear resampled" }, - { "ldresnearl", "array[(b+c*i)>>8]", "load, nearest neighbor resampled" }, - { "ldreslinl", "special", "load, bilinear resampled" }, - { "div255w", "a/255", "divide by 255" }, - { "divluw", "clamp(a/(b & 255),0,255)", "saturated unsigned divide 16-bit by 8-bit" }, - { "splatw3q", "special", "duplicates high 16-bits to lower 48 bits" }, - { "splatbw", "special", "duplicates 8 bits to both halfs of 16 bits" }, - { "splatbl", "special", "duplicates 8 bits to all parts of 32 bits" }, - { "convql", "a", "convert" }, - { "convslq", "a", "signed convert" }, - { "convulq", "a", "unsigned convert" }, - { "convhwb", "a>>8", "shift and convert" }, - { "convhlw", "a>>16", "shift and convert" }, - { "convsssql", "clamp(a)", "convert signed to signed with saturation" }, - { "convsusql", "clamp(a)", "convert signed to unsigned with saturation" }, - { "convussql", "clamp(a)", "convert unsigned to signed with saturation" }, - { "convuusql", "clamp(a)", "convert unsigned to unsigned with saturation" }, + {"loadb", "array[i]", "load from memory"}, + {"loadw", "array[i]", "load from memory"}, + {"loadl", "array[i]", "load from memory"}, + {"loadq", "array[i]", "load from memory"}, + {"storeb", "special", "store to memory"}, + {"storew", "special", "store to memory"}, + {"storel", "special", "store to memory"}, + {"storeq", "special", "store to memory"}, + {"loadoffb", "array[i+offset]", "load from memory with offset"}, + {"loadoffw", "array[i+offset]", "load from memory with offset"}, + {"loadoffl", "array[i+offset]", "load from memory with offset"}, + {"loadoffq", "array[i+offset]", "load from memory with offset"}, + {"loadpb", "scalar", "load parameter or constant"}, + {"loadpw", "scalar", "load parameter or constant"}, + {"loadpl", "scalar", "load parameter or constant"}, + {"loadpq", "scalar", "load parameter or constant"}, + {"loadupdb", "array[i>>1]", "load upsampled duplicate"}, + {"loadupib", "(array[i>>1] + array[(i+1)>>1] + 1)>>1", + "load upsampled interpolate"}, + {"ldresnearb", "array[(b+c*i)>>8]", "load, nearest neighbor resampled"}, + {"ldreslinb", "special", "load, bilinear resampled"}, + {"ldresnearl", "array[(b+c*i)>>8]", "load, nearest neighbor resampled"}, + {"ldreslinl", "special", "load, bilinear resampled"}, + {"div255w", "a/255", "divide by 255"}, + {"divluw", "clamp(a/(b & 255),0,255)", + "saturated unsigned divide 16-bit by 8-bit"}, + {"splatw3q", "special", "duplicates high 16-bits to lower 48 bits"}, + {"splatbw", "special", "duplicates 8 bits to both halfs of 16 bits"}, + {"splatbl", "special", "duplicates 8 bits to all parts of 32 bits"}, + {"convql", "a", "convert"}, + {"convslq", "a", "signed convert"}, + {"convulq", "a", "unsigned convert"}, + {"convhwb", "a>>8", "shift and convert"}, + {"convhlw", "a>>16", "shift and convert"}, + {"convsssql", "clamp(a)", "convert signed to signed with saturation"}, + {"convsusql", "clamp(a)", "convert signed to unsigned with saturation"}, + {"convussql", "clamp(a)", "convert unsigned to signed with saturation"}, + {"convuusql", "clamp(a)", "convert unsigned to unsigned with saturation"}, }; char * -get_desc (OrcStaticOpcode *opcode) +get_desc (OrcStaticOpcode * opcode) { int i; - for(i=0;i<sizeof(ops)/sizeof(ops[0]);i++){ + for (i = 0; i < sizeof (ops) / sizeof (ops[0]); i++) { if (strcmp (opcode->name, ops[i].name) == 0) { return ops[i].desc; } @@ -255,14 +248,13 @@ get_desc (OrcStaticOpcode *opcode) } char * -get_code (OrcStaticOpcode *opcode) +get_code (OrcStaticOpcode * opcode) { int i; - for(i=0;i<sizeof(ops)/sizeof(ops[0]);i++){ + for (i = 0; i < sizeof (ops) / sizeof (ops[0]); i++) { if (strcmp (opcode->name, ops[i].name) == 0) { return ops[i].code; } } return ""; } - diff --git a/testsuite/memcpy_speed.c b/testsuite/memcpy_speed.c index 3ac48da..80ab30f 100644 --- a/testsuite/memcpy_speed.c +++ b/testsuite/memcpy_speed.c @@ -23,13 +23,13 @@ touch (unsigned char *ptr, int n) { static int sum; int i; - for(i=0;i<n;i++){ + for (i = 0; i < n; i++) { sum += ptr[i]; } } int -main(int argc, char *argv[]) +main (int argc, char *argv[]) { char *s, *d; orc_uint8 *src, *dest; @@ -38,7 +38,7 @@ main(int argc, char *argv[]) double ave, std; double ave_libc, std_libc; double null; - int i,j; + int i, j; double cpufreq; int unalign; OrcProgram *p; @@ -58,18 +58,18 @@ main(int argc, char *argv[]) unalign = 0; } - s = malloc(1024*1024*64+1024); - d = malloc(1024*1024*64+1024); - src = ORC_PTR_OFFSET(ALIGN(s,128),unalign); - dest = ALIGN(d,128); + s = malloc (1024 * 1024 * 64 + 1024); + d = malloc (1024 * 1024 * 64 + 1024); + src = ORC_PTR_OFFSET (ALIGN (s, 128), unalign); + dest = ALIGN (d, 128); orc_profile_init (&prof); - for(j=0;j<10;j++){ - orc_profile_start(&prof); - orc_profile_stop(&prof); + for (j = 0; j < 10; j++) { + orc_profile_start (&prof); + orc_profile_stop (&prof); } orc_profile_get_ave_std (&prof, &null, &std); - + { OrcCompileResult result; @@ -88,7 +88,7 @@ main(int argc, char *argv[]) fprintf (stderr, "Failed to compile orc_memcpy\n"); return -1; } - + code = orc_program_take_code (p); } @@ -97,19 +97,19 @@ main(int argc, char *argv[]) #endif orc_get_data_cache_sizes (&level1, &level2, &level3); if (level3 > 0) { - max = (log(level3)/M_LN2 - 6.0) * 10 + 20; + max = (log (level3) / M_LN2 - 6.0) * 10 + 20; } else if (level2 > 0) { - max = (log(level2)/M_LN2 - 6.0) * 10 + 20; + max = (log (level2) / M_LN2 - 6.0) * 10 + 20; } else { max = 140; } - for(i=0;i<max;i++){ - double x = i*0.1 + 6.0; - int size = pow(2.0, x); + for (i = 0; i < max; i++) { + double x = i * 0.1 + 6.0; + int size = pow (2.0, x); if (flush_cache) { - touch (src, (1<<18)); + touch (src, (1 << 18)); } if (hot_src) { touch (src, size); @@ -119,22 +119,22 @@ main(int argc, char *argv[]) } orc_profile_init (&prof); - for(j=0;j<10;j++){ + for (j = 0; j < 10; j++) { OrcExecutor _ex, *ex = &_ex; void (*func) (OrcExecutor *); - orc_profile_start(&prof); + orc_profile_start (&prof); //orc_memcpy (dest, src, size); ex->n = size; ex->arrays[ORC_VAR_D1] = dest; - ex->arrays[ORC_VAR_S1] = (void *)src; + ex->arrays[ORC_VAR_S1] = (void *) src; func = code->exec; func (ex); - orc_profile_stop(&prof); + orc_profile_stop (&prof); if (flush_cache) { - touch (src, (1<<18)); + touch (src, (1 << 18)); } if (hot_src) { touch (src, size); @@ -145,12 +145,12 @@ main(int argc, char *argv[]) } orc_profile_init (&prof_libc); - for(j=0;j<10;j++){ - orc_profile_start(&prof_libc); + for (j = 0; j < 10; j++) { + orc_profile_start (&prof_libc); memcpy (dest, src, size); - orc_profile_stop(&prof_libc); + orc_profile_stop (&prof_libc); if (flush_cache) { - touch (src, (1<<18)); + touch (src, (1 << 18)); } if (hot_src) { touch (src, size); @@ -169,8 +169,8 @@ main(int argc, char *argv[]) //printf("%d: %10.4g %10.4g %10.4g %10.4g (libc %10.4g)\n", i, ave, std, // ave/(1<<i), cpufreq/(ave/(1<<i)), // cpufreq/(ave_libc/(1<<i))); - printf("%g %10.4g %10.4g\n", x, - cpufreq/(ave/size), cpufreq/(ave_libc/size)); + printf ("%g %10.4g %10.4g\n", x, + cpufreq / (ave / size), cpufreq / (ave_libc / size)); //printf("%g %10.4g %10.4g\n", x, // 32*(ave/(size)), 32*(ave_libc/(size))); fflush (stdout); @@ -178,4 +178,3 @@ main(int argc, char *argv[]) return 0; } - diff --git a/testsuite/perf_opcodes_sys.c b/testsuite/perf_opcodes_sys.c index d077289..e89770f 100644 --- a/testsuite/perf_opcodes_sys.c +++ b/testsuite/perf_opcodes_sys.c @@ -9,7 +9,7 @@ int error = FALSE; -void test_opcode_src (OrcStaticOpcode *opcode); +void test_opcode_src (OrcStaticOpcode * opcode); int main (int argc, char *argv[]) @@ -17,30 +17,30 @@ main (int argc, char *argv[]) int i; OrcOpcodeSet *opcode_set; - orc_test_init(); - orc_init(); + orc_test_init (); + orc_init (); opcode_set = orc_opcode_set_get ("sys"); - for(i=0;i<opcode_set->n_opcodes;i++){ - printf("opcode_%-20s ", opcode_set->opcodes[i].name); + for (i = 0; i < opcode_set->n_opcodes; i++) { + printf ("opcode_%-20s ", opcode_set->opcodes[i].name); test_opcode_src (opcode_set->opcodes + i); } - if (error) return 1; + if (error) + return 1; return 0; } void -test_opcode_src (OrcStaticOpcode *opcode) +test_opcode_src (OrcStaticOpcode * opcode) { OrcProgram *p; int flags = 0; p = orc_test_get_program_for_opcode (opcode); - printf("%g\n", orc_test_performance_full (p, flags, NULL)); + printf ("%g\n", orc_test_performance_full (p, flags, NULL)); orc_program_free (p); } - diff --git a/testsuite/perf_opcodes_sys_compare.c b/testsuite/perf_opcodes_sys_compare.c index 1fdf76f..59dbd9b 100644 --- a/testsuite/perf_opcodes_sys_compare.c +++ b/testsuite/perf_opcodes_sys_compare.c @@ -9,7 +9,7 @@ int error = FALSE; -void test_opcode_src (OrcStaticOpcode *opcode); +void test_opcode_src (OrcStaticOpcode * opcode); int main (int argc, char *argv[]) @@ -17,22 +17,23 @@ main (int argc, char *argv[]) int i; OrcOpcodeSet *opcode_set; - orc_test_init(); - orc_init(); + orc_test_init (); + orc_init (); opcode_set = orc_opcode_set_get ("sys"); - for(i=0;i<opcode_set->n_opcodes;i++){ + for (i = 0; i < opcode_set->n_opcodes; i++) { //printf("opcode_%-20s ", opcode_set->opcodes[i].name); test_opcode_src (opcode_set->opcodes + i); } - if (error) return 1; + if (error) + return 1; return 0; } void -test_opcode_src (OrcStaticOpcode *opcode) +test_opcode_src (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; @@ -62,7 +63,7 @@ test_opcode_src (OrcStaticOpcode *opcode) flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_s_%s ", opcode->name); + sprintf (s, "test_s_%s ", opcode->name); orc_program_set_name (p, s); if (opcode->dest_size[1] != 0) { @@ -74,8 +75,7 @@ test_opcode_src (OrcStaticOpcode *opcode) perf_mmx = orc_test_performance_full (p, flags, "mmx"); perf_sse = orc_test_performance_full (p, flags, "sse"); - printf("%g %g\n", perf_mmx, perf_sse); + printf ("%g %g\n", perf_mmx, perf_sse); orc_program_free (p); } - diff --git a/testsuite/perf_parse.c b/testsuite/perf_parse.c index 731c142..d4e5990 100644 --- a/testsuite/perf_parse.c +++ b/testsuite/perf_parse.c @@ -6,10 +6,10 @@ #include <stdio.h> #include <stdlib.h> -static char * read_file (const char *filename); -void output_code (OrcProgram *p, FILE *output); -void output_code_header (OrcProgram *p, FILE *output); -void output_code_test (OrcProgram *p, FILE *output); +static char *read_file (const char *filename); +void output_code (OrcProgram * p, FILE * output); +void output_code_header (OrcProgram * p, FILE * output); +void output_code_test (OrcProgram * p, FILE * output); int error = FALSE; @@ -36,18 +36,19 @@ main (int argc, char *argv[]) } code = read_file (filename); if (!code) { - printf("perf_parse <file.orc>\n"); - exit(1); + printf ("perf_parse <file.orc>\n"); + exit (1); } n = orc_parse (code, &programs); - for(i=0;i<n;i++){ - printf("%-30s %g\n", programs[i]->name, + for (i = 0; i < n; i++) { + printf ("%-30s %g\n", programs[i]->name, orc_test_performance_full (programs[i], 0, NULL)); } - if (error) return 1; + if (error) + return 1; return 0; } @@ -61,31 +62,38 @@ read_file (const char *filename) int ret; file = fopen (filename, "r"); - if (file == NULL) return NULL; + if (file == NULL) + return NULL; ret = fseek (file, 0, SEEK_END); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; size = ftell (file); - if (size < 0) goto bail; + if (size < 0) + goto bail; ret = fseek (file, 0, SEEK_SET); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents = malloc (size + 1); - if (contents == NULL) goto bail; + if (contents == NULL) + goto bail; ret = fread (contents, size, 1, file); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents[size] = 0; return contents; bail: /* something failed */ - if (file) fclose (file); - if (contents) free (contents); + if (file) + fclose (file); + if (contents) + free (contents); return NULL; } - diff --git a/testsuite/perf_parse_compare.c b/testsuite/perf_parse_compare.c index c0d4d76..b1af503 100644 --- a/testsuite/perf_parse_compare.c +++ b/testsuite/perf_parse_compare.c @@ -6,10 +6,10 @@ #include <stdio.h> #include <stdlib.h> -static char * read_file (const char *filename); -void output_code (OrcProgram *p, FILE *output); -void output_code_header (OrcProgram *p, FILE *output); -void output_code_test (OrcProgram *p, FILE *output); +static char *read_file (const char *filename); +void output_code (OrcProgram * p, FILE * output); +void output_code_header (OrcProgram * p, FILE * output); +void output_code_test (OrcProgram * p, FILE * output); int error = FALSE; @@ -36,21 +36,22 @@ main (int argc, char *argv[]) } code = read_file (filename); if (!code) { - printf("perf_parse <file.orc>\n"); - exit(1); + printf ("perf_parse <file.orc>\n"); + exit (1); } n = orc_parse (code, &programs); - for(i=0;i<n;i++){ + for (i = 0; i < n; i++) { double perf_mmx; double perf_sse; perf_mmx = orc_test_performance_full (programs[i], 0, "mmx"); perf_sse = orc_test_performance_full (programs[i], 0, "sse"); - printf("%g %g\n", perf_mmx, perf_sse); + printf ("%g %g\n", perf_mmx, perf_sse); } - if (error) return 1; + if (error) + return 1; return 0; } @@ -64,31 +65,38 @@ read_file (const char *filename) int ret; file = fopen (filename, "r"); - if (file == NULL) return NULL; + if (file == NULL) + return NULL; ret = fseek (file, 0, SEEK_END); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; size = ftell (file); - if (size < 0) goto bail; + if (size < 0) + goto bail; ret = fseek (file, 0, SEEK_SET); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents = malloc (size + 1); - if (contents == NULL) goto bail; + if (contents == NULL) + goto bail; ret = fread (contents, size, 1, file); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents[size] = 0; return contents; bail: /* something failed */ - if (file) fclose (file); - if (contents) free (contents); + if (file) + fclose (file); + if (contents) + free (contents); return NULL; } - diff --git a/testsuite/show_parse.c b/testsuite/show_parse.c index 931ed9b..dd1c718 100644 --- a/testsuite/show_parse.c +++ b/testsuite/show_parse.c @@ -15,16 +15,17 @@ #define isnan(x) _isnan(x) #endif -static char * read_file (const char *filename); -void output_code (OrcProgram *p, FILE *output); -void output_code_header (OrcProgram *p, FILE *output); -void output_code_test (OrcProgram *p, FILE *output); +static char *read_file (const char *filename); +void output_code (OrcProgram * p, FILE * output); +void output_code_header (OrcProgram * p, FILE * output); +void output_code_test (OrcProgram * p, FILE * output); -void show (OrcProgram *p); +void show (OrcProgram * p); int error = FALSE; -enum { +enum +{ FORMAT_SIGNED, FORMAT_UNSIGNED, FORMAT_HEX, @@ -46,18 +47,18 @@ main (int argc, char *argv[]) orc_init (); orc_test_init (); - for(i=1;i<argc;i++){ - if (strcmp("-x", argv[i]) == 0) { + for (i = 1; i < argc; i++) { + if (strcmp ("-x", argv[i]) == 0) { format = FORMAT_HEX; - } else if (strcmp("-s", argv[i]) == 0) { + } else if (strcmp ("-s", argv[i]) == 0) { format = FORMAT_SIGNED; - } else if (strcmp("-u", argv[i]) == 0) { + } else if (strcmp ("-u", argv[i]) == 0) { format = FORMAT_UNSIGNED; - } else if (strcmp("-f", argv[i]) == 0) { + } else if (strcmp ("-f", argv[i]) == 0) { format = FORMAT_FLOAT; - } else if (strcmp("-n", argv[i]) == 0) { + } else if (strcmp ("-n", argv[i]) == 0) { if (i + 1 < argc) { - array_n = strtol (argv[i+1], NULL, 0); + array_n = strtol (argv[i + 1], NULL, 0); i++; } } else { @@ -79,20 +80,21 @@ main (int argc, char *argv[]) opcode = orc_opcode_find_by_name (filename); if (opcode) { - programs = malloc(sizeof(void *)); + programs = malloc (sizeof (void *)); programs[0] = orc_test_get_program_for_opcode (opcode); n = 1; } else { - printf("show_parse [-fsux] (<file.orc>|opcode)\n"); - exit(1); + printf ("show_parse [-fsux] (<file.orc>|opcode)\n"); + exit (1); } } - for(i=0;i<n;i++){ + for (i = 0; i < n; i++) { show (programs[i]); } - if (error) return 1; + if (error) + return 1; return 0; } @@ -106,137 +108,145 @@ read_file (const char *filename) int ret; file = fopen (filename, "r"); - if (file == NULL) return NULL; + if (file == NULL) + return NULL; ret = fseek (file, 0, SEEK_END); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; size = ftell (file); - if (size < 0) goto bail; + if (size < 0) + goto bail; ret = fseek (file, 0, SEEK_SET); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents = malloc (size + 1); - if (contents == NULL) goto bail; + if (contents == NULL) + goto bail; ret = fread (contents, size, 1, file); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents[size] = 0; return contents; bail: /* something failed */ - if (file) fclose (file); - if (contents) free (contents); + if (file) + fclose (file); + if (contents) + free (contents); return NULL; } int -print_array_val_signed (OrcArray *array, int i, int j) +print_array_val_signed (OrcArray * array, int i, int j) { void *ptr = ORC_PTR_OFFSET (array->data, - i*array->element_size + j*array->stride); + i * array->element_size + j * array->stride); switch (array->element_size) { case 1: - printf(" %4d", *(orc_int8 *)ptr); - return *(orc_int8 *)ptr; + printf (" %4d", *(orc_int8 *) ptr); + return *(orc_int8 *) ptr; case 2: - printf(" %5d", *(orc_int16 *)ptr); - return *(orc_int16 *)ptr; + printf (" %5d", *(orc_int16 *) ptr); + return *(orc_int16 *) ptr; case 4: - printf(" %10d", *(orc_int32 *)ptr); - return *(orc_int32 *)ptr; + printf (" %10d", *(orc_int32 *) ptr); + return *(orc_int32 *) ptr; case 8: - printf(" 0x%08x%08x", (orc_uint32)((*(orc_uint64 *)ptr)>>32), - (orc_uint32)((*(orc_uint64 *)ptr))); - return *(orc_int64 *)ptr; + printf (" 0x%08x%08x", (orc_uint32) ((*(orc_uint64 *) ptr) >> 32), + (orc_uint32) ((*(orc_uint64 *) ptr))); + return *(orc_int64 *) ptr; default: return -1; } } int -print_array_val_unsigned (OrcArray *array, int i, int j) +print_array_val_unsigned (OrcArray * array, int i, int j) { void *ptr = ORC_PTR_OFFSET (array->data, - i*array->element_size + j*array->stride); + i * array->element_size + j * array->stride); switch (array->element_size) { case 1: - printf(" %4u", *(orc_uint8 *)ptr); - return *(orc_int8 *)ptr; + printf (" %4u", *(orc_uint8 *) ptr); + return *(orc_int8 *) ptr; case 2: - printf(" %5u", *(orc_uint16 *)ptr); - return *(orc_int16 *)ptr; + printf (" %5u", *(orc_uint16 *) ptr); + return *(orc_int16 *) ptr; case 4: - printf(" %10u", *(orc_uint32 *)ptr); - return *(orc_int32 *)ptr; + printf (" %10u", *(orc_uint32 *) ptr); + return *(orc_int32 *) ptr; case 8: - printf(" 0x%08x%08x", (orc_uint32)((*(orc_uint64 *)ptr)>>32), - (orc_uint32)((*(orc_uint64 *)ptr))); - return *(orc_int64 *)ptr; + printf (" 0x%08x%08x", (orc_uint32) ((*(orc_uint64 *) ptr) >> 32), + (orc_uint32) ((*(orc_uint64 *) ptr))); + return *(orc_int64 *) ptr; default: return -1; } } int -print_array_val_hex (OrcArray *array, int i, int j) +print_array_val_hex (OrcArray * array, int i, int j) { void *ptr = ORC_PTR_OFFSET (array->data, - i*array->element_size + j*array->stride); + i * array->element_size + j * array->stride); switch (array->element_size) { case 1: - printf(" %02x", *(orc_uint8 *)ptr); - return *(orc_int8 *)ptr; + printf (" %02x", *(orc_uint8 *) ptr); + return *(orc_int8 *) ptr; case 2: - printf(" %04x", *(orc_uint16 *)ptr); - return *(orc_int16 *)ptr; + printf (" %04x", *(orc_uint16 *) ptr); + return *(orc_int16 *) ptr; case 4: - printf(" %08x", *(orc_uint32 *)ptr); - return *(orc_int32 *)ptr; + printf (" %08x", *(orc_uint32 *) ptr); + return *(orc_int32 *) ptr; case 8: - printf(" 0x%08x%08x", (orc_uint32)((*(orc_uint64 *)ptr)>>32), - (orc_uint32)((*(orc_uint64 *)ptr))); - return *(orc_int64 *)ptr; + printf (" 0x%08x%08x", (orc_uint32) ((*(orc_uint64 *) ptr) >> 32), + (orc_uint32) ((*(orc_uint64 *) ptr))); + return *(orc_int64 *) ptr; default: return -1; } } int -print_array_val_float (OrcArray *array, int i, int j) +print_array_val_float (OrcArray * array, int i, int j) { void *ptr = ORC_PTR_OFFSET (array->data, - i*array->element_size + j*array->stride); + i * array->element_size + j * array->stride); switch (array->element_size) { case 4: - if (isnan(*(float *)ptr)) { - printf(" nan %08x", *(orc_uint32 *)ptr); + if (isnan (*(float *) ptr)) { + printf (" nan %08x", *(orc_uint32 *) ptr); /* This is to get around signaling/non-signaling nans in the output */ - return (*(orc_uint32 *)ptr) & 0xffbfffff; + return (*(orc_uint32 *) ptr) & 0xffbfffff; } else { - printf(" %12.5g", *(float *)ptr); - return *(orc_int32 *)ptr; + printf (" %12.5g", *(float *) ptr); + return *(orc_int32 *) ptr; } case 8: - printf(" %12.5g", *(double *)ptr); - return *(orc_int64 *)ptr; + printf (" %12.5g", *(double *) ptr); + return *(orc_int64 *) ptr; default: - printf(" ERROR"); + printf (" ERROR"); return -1; } } void -show (OrcProgram *program) +show (OrcProgram * program) { OrcCompileResult result; OrcTarget *target; @@ -246,7 +256,7 @@ show (OrcProgram *program) OrcExecutor *ex; OrcArray *dest[4] = { NULL, NULL, NULL, NULL }; OrcArray *src[8] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; - int i,j; + int i, j; OrcRandomContext rand_context = { 0 }; @@ -256,12 +266,12 @@ show (OrcProgram *program) target_flags = orc_target_get_default_flags (target); result = orc_program_compile_full (program, target, target_flags); - if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL(result)) { - printf("%s: compile failed\n", program->name); + if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL (result)) { + printf ("%s: compile failed\n", program->name); return; } - printf("%s:\n", program->name); + printf ("%s:\n", program->name); if (program->constant_n > 0) { n = program->constant_n; @@ -282,14 +292,15 @@ show (OrcProgram *program) } orc_executor_set_m (ex, m); - for(i=0;i<ORC_N_VARIABLES;i++){ - if (program->vars[i].name == NULL) continue; + for (i = 0; i < ORC_N_VARIABLES; i++) { + if (program->vars[i].name == NULL) + continue; if (program->vars[i].vartype == ORC_VAR_TYPE_SRC) { - src[i-ORC_VAR_S1] = orc_array_new (n, m, program->vars[i].size, 0, 0); - orc_array_set_random (src[i-ORC_VAR_S1], &rand_context); + src[i - ORC_VAR_S1] = orc_array_new (n, m, program->vars[i].size, 0, 0); + orc_array_set_random (src[i - ORC_VAR_S1], &rand_context); } else if (program->vars[i].vartype == ORC_VAR_TYPE_DEST) { - dest[i-ORC_VAR_D1] = orc_array_new (n, m, program->vars[i].size, 0, 0); + dest[i - ORC_VAR_D1] = orc_array_new (n, m, program->vars[i].size, 0, 0); orc_array_set_pattern (dest[i], ORC_OOB_VALUE); } else if (program->vars[i].vartype == ORC_VAR_TYPE_PARAM) { switch (program->vars[i].param_type) { @@ -306,89 +317,90 @@ show (OrcProgram *program) orc_executor_set_param_double (ex, i, 2.0); break; default: - ORC_ASSERT(0); + ORC_ASSERT (0); } } } orc_executor_set_n (ex, n); orc_executor_set_m (ex, m); - for(j=0;j<ORC_N_VARIABLES;j++){ + for (j = 0; j < ORC_N_VARIABLES; j++) { if (program->vars[j].vartype == ORC_VAR_TYPE_DEST) { - orc_executor_set_array (ex, j, dest[j-ORC_VAR_D1]->data); - orc_executor_set_stride (ex, j, dest[j-ORC_VAR_D1]->stride); + orc_executor_set_array (ex, j, dest[j - ORC_VAR_D1]->data); + orc_executor_set_stride (ex, j, dest[j - ORC_VAR_D1]->stride); } if (program->vars[j].vartype == ORC_VAR_TYPE_SRC) { - orc_executor_set_array (ex, j, src[j-ORC_VAR_S1]->data); - orc_executor_set_stride (ex, j, src[j-ORC_VAR_S1]->stride); + orc_executor_set_array (ex, j, src[j - ORC_VAR_S1]->data); + orc_executor_set_stride (ex, j, src[j - ORC_VAR_S1]->stride); } } orc_executor_run (ex); { - int i,j; + int i, j; - for(j=0;j<m;j++){ - for(i=0;i<n;i++){ + for (j = 0; j < m; j++) { + for (i = 0; i < n; i++) { int l; - printf("%2d %2d:", i, j); + printf ("%2d %2d:", i, j); - for(l=ORC_VAR_S1;l<ORC_VAR_S1+8;l++){ + for (l = ORC_VAR_S1; l < ORC_VAR_S1 + 8; l++) { if (program->vars[l].size > 0) { switch (format) { case FORMAT_FLOAT: - print_array_val_float (src[l-ORC_VAR_S1], i, j); + print_array_val_float (src[l - ORC_VAR_S1], i, j); break; case FORMAT_HEX: - print_array_val_hex (src[l-ORC_VAR_S1], i, j); + print_array_val_hex (src[l - ORC_VAR_S1], i, j); break; case FORMAT_SIGNED: - print_array_val_signed (src[l-ORC_VAR_S1], i, j); + print_array_val_signed (src[l - ORC_VAR_S1], i, j); break; case FORMAT_UNSIGNED: - print_array_val_unsigned (src[l-ORC_VAR_S1], i, j); + print_array_val_unsigned (src[l - ORC_VAR_S1], i, j); break; } } } - printf(" ->"); - for(l=ORC_VAR_D1;l<ORC_VAR_D1+4;l++){ + printf (" ->"); + for (l = ORC_VAR_D1; l < ORC_VAR_D1 + 4; l++) { if (program->vars[l].size > 0) { switch (format) { case FORMAT_FLOAT: - print_array_val_float (dest[l-ORC_VAR_D1], i, j); + print_array_val_float (dest[l - ORC_VAR_D1], i, j); break; case FORMAT_HEX: - print_array_val_hex (dest[l-ORC_VAR_D1], i, j); + print_array_val_hex (dest[l - ORC_VAR_D1], i, j); break; case FORMAT_SIGNED: - print_array_val_signed (dest[l-ORC_VAR_D1], i, j); + print_array_val_signed (dest[l - ORC_VAR_D1], i, j); break; case FORMAT_UNSIGNED: - print_array_val_unsigned (dest[l-ORC_VAR_D1], i, j); + print_array_val_unsigned (dest[l - ORC_VAR_D1], i, j); break; } } } - printf("\n"); + printf ("\n"); } } } - for(i=0;i<4;i++){ - if (dest[i]) orc_array_free (dest[i]); + for (i = 0; i < 4; i++) { + if (dest[i]) + orc_array_free (dest[i]); } - for(i=0;i<8;i++){ - if (src[i]) orc_array_free (src[i]); + for (i = 0; i < 8; i++) { + if (src[i]) + orc_array_free (src[i]); } orc_executor_free (ex); } - diff --git a/testsuite/test-schro.c b/testsuite/test-schro.c index 148b53d..2409631 100644 --- a/testsuite/test-schro.c +++ b/testsuite/test-schro.c @@ -19,188 +19,188 @@ get_program (int type) OrcProgram *p; switch (type) { - case 0: - p = orc_program_new (); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_constant (p, 2, 2, "c1"); - orc_program_add_constant (p, 2, 2, "c2"); - orc_program_add_temporary (p, 2, "t1"); - - orc_program_append_str (p, "addw", "t1", "s1", "s2"); - orc_program_append_str (p, "addw", "t1", "t1", "c1"); - orc_program_append_str (p, "shrsw", "t1", "t1", "c2"); - orc_program_append_str (p, "addw", "d1", "d1", "t1"); - break; - case 1: - p = orc_program_new (); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_constant (p, 2, 2, "c1"); - orc_program_add_constant (p, 2, 2, "c2"); - orc_program_add_temporary (p, 2, "t1"); - - orc_program_append_str (p, "addw", "t1", "s1", "s2"); - orc_program_append_str (p, "addw", "t1", "t1", "c1"); - orc_program_append_str (p, "shrsw", "t1", "t1", "c2"); - orc_program_append_str (p, "subw", "d1", "d1", "t1"); - break; - case 2: - p = orc_program_new (); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_constant (p, 2, 1, "c1"); - orc_program_add_constant (p, 2, 1, "c2"); - orc_program_add_temporary (p, 2, "t1"); - - orc_program_append_str (p, "addw", "t1", "s1", "s2"); - orc_program_append_str (p, "addw", "t1", "t1", "c1"); - orc_program_append_str (p, "shrsw", "t1", "t1", "c2"); - orc_program_append_str (p, "addw", "d1", "d1", "t1"); - break; - case 3: - p = orc_program_new (); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_constant (p, 2, 1, "c1"); - orc_program_add_constant (p, 2, 1, "c2"); - orc_program_add_temporary (p, 2, "t1"); - - orc_program_append_str (p, "addw", "t1", "s1", "s2"); - orc_program_append_str (p, "addw", "t1", "t1", "c1"); - orc_program_append_str (p, "shrsw", "t1", "t1", "c2"); - orc_program_append_str (p, "subw", "d1", "d1", "t1"); - break; - case 4: - p = orc_program_new_dss (2,2,2); - orc_program_add_constant (p, 2, 1, "c1"); - orc_program_add_temporary (p, 2, "t1"); - - orc_program_append_str (p, "addw", "t1", "s1", "c1"); - orc_program_append_str (p, "shrsw", "d1", "t1", "c1"); - break; - case 5: - p = orc_program_new_dss (2,2,2); - - orc_program_append_str (p, "addw", "d1", "s1", "s2"); - break; - case 6: - p = orc_program_new_ds (2,2); - orc_program_add_constant (p, 2, 1, "c1"); - - orc_program_append_str (p, "shlw", "d1", "s1", "c1"); - break; - case 7: - p = orc_program_new_ds (2,2); - orc_program_add_constant (p, 2, 2, "c1"); - - orc_program_append_str (p, "shlw", "d1", "s1", "c1"); - break; - case 8: - p = orc_program_new_dss (2,2,2); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_parameter (p, 4, "p2"); - orc_program_add_parameter (p, 4, "p3"); - - orc_program_append_str (p, "addw", "t1", "s1", "s2"); - orc_program_append_str (p, "mulswl", "t2", "t1", "p1"); - orc_program_append_str (p, "addl", "t2", "t2", "p2"); - orc_program_append_str (p, "shll", "t2", "t2", "p3"); - orc_program_append_ds_str (p, "convlw", "t1", "t2"); - orc_program_append_str (p, "addw", "d1", "d1", "t1"); - break; - case 9: - p = orc_program_new (); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s20"); - orc_program_add_source (p, 2, "s21"); - orc_program_add_source (p, 2, "s22"); - orc_program_add_source (p, 2, "s23"); - orc_program_add_constant (p, 2, 9, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_parameter (p, 2, "p2"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - - orc_program_append_str (p, "addw", "t1", "s21", "s22"); - orc_program_append_str (p, "mullw", "t1", "t1", "c1"); - orc_program_append_str (p, "addw", "t2", "s20", "s23"); - orc_program_append_str (p, "subw", "t1", "t1", "t2"); - orc_program_append_str (p, "addw", "t1", "t1", "p1"); - orc_program_append_str (p, "shrsw", "t1", "t1", "p2"); - orc_program_append_str (p, "addw", "d1", "d1", "t1"); - break; - case 10: - p = orc_program_new (); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s20"); - orc_program_add_source (p, 2, "s21"); - orc_program_add_source (p, 2, "s22"); - orc_program_add_source (p, 2, "s23"); - orc_program_add_constant (p, 2, 9, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_parameter (p, 2, "p2"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - - orc_program_append_str (p, "addw", "t1", "s21", "s22"); - orc_program_append_str (p, "mullw", "t1", "t1", "c1"); - orc_program_append_str (p, "addw", "t2", "s20", "s23"); - orc_program_append_str (p, "subw", "t1", "t1", "t2"); - orc_program_append_str (p, "addw", "t1", "t1", "p1"); - orc_program_append_str (p, "shrsw", "t1", "t1", "p2"); - orc_program_append_str (p, "subw", "d1", "d1", "t1"); - break; - case 11: - p = orc_program_new_dss (2,2,2); - - orc_program_append_str (p, "subw", "d1", "s1", "s2"); - break; - case 12: - p = orc_program_new_ds (1,1); - orc_program_append_ds_str (p, "copyb", "d1", "s1"); - break; - case 13: - p = orc_program_new_dss (2,2,1); - orc_program_add_temporary (p, 2, "t1"); - - orc_program_append_ds_str (p, "convubw", "t1", "s2"); - orc_program_append_str (p, "addw", "d1", "t1", "s1"); - break; - case 14: - p = orc_program_new_ds (2,1); - - orc_program_append_ds_str (p, "convubw", "d1", "s1"); - break; - case 15: - p = orc_program_new_ds (1,2); - - orc_program_append_ds_str (p, "convsuswb", "d1", "s1"); - break; - case 16: - p = orc_program_new_dss (2,2,1); - orc_program_add_temporary (p, 2, "t1"); - - orc_program_append_ds_str (p, "convubw", "t1", "s2"); - orc_program_append_str (p, "subw", "d1", "s1", "t1"); - break; - case 17: - p = orc_program_new_dss (2,2,2); - orc_program_add_source (p, 1, "s3"); - orc_program_add_temporary (p, 2, "t1"); - - orc_program_append_ds_str (p, "convubw", "t1", "s3"); - orc_program_append_str (p, "mullw", "t1", "t1", "s2"); - orc_program_append_str (p, "addw", "d1", "s1", "t1"); - break; - default: - return NULL; + case 0: + p = orc_program_new (); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_constant (p, 2, 2, "c1"); + orc_program_add_constant (p, 2, 2, "c2"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_str (p, "addw", "t1", "s1", "s2"); + orc_program_append_str (p, "addw", "t1", "t1", "c1"); + orc_program_append_str (p, "shrsw", "t1", "t1", "c2"); + orc_program_append_str (p, "addw", "d1", "d1", "t1"); + break; + case 1: + p = orc_program_new (); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_constant (p, 2, 2, "c1"); + orc_program_add_constant (p, 2, 2, "c2"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_str (p, "addw", "t1", "s1", "s2"); + orc_program_append_str (p, "addw", "t1", "t1", "c1"); + orc_program_append_str (p, "shrsw", "t1", "t1", "c2"); + orc_program_append_str (p, "subw", "d1", "d1", "t1"); + break; + case 2: + p = orc_program_new (); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_constant (p, 2, 1, "c1"); + orc_program_add_constant (p, 2, 1, "c2"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_str (p, "addw", "t1", "s1", "s2"); + orc_program_append_str (p, "addw", "t1", "t1", "c1"); + orc_program_append_str (p, "shrsw", "t1", "t1", "c2"); + orc_program_append_str (p, "addw", "d1", "d1", "t1"); + break; + case 3: + p = orc_program_new (); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_constant (p, 2, 1, "c1"); + orc_program_add_constant (p, 2, 1, "c2"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_str (p, "addw", "t1", "s1", "s2"); + orc_program_append_str (p, "addw", "t1", "t1", "c1"); + orc_program_append_str (p, "shrsw", "t1", "t1", "c2"); + orc_program_append_str (p, "subw", "d1", "d1", "t1"); + break; + case 4: + p = orc_program_new_dss (2, 2, 2); + orc_program_add_constant (p, 2, 1, "c1"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_str (p, "addw", "t1", "s1", "c1"); + orc_program_append_str (p, "shrsw", "d1", "t1", "c1"); + break; + case 5: + p = orc_program_new_dss (2, 2, 2); + + orc_program_append_str (p, "addw", "d1", "s1", "s2"); + break; + case 6: + p = orc_program_new_ds (2, 2); + orc_program_add_constant (p, 2, 1, "c1"); + + orc_program_append_str (p, "shlw", "d1", "s1", "c1"); + break; + case 7: + p = orc_program_new_ds (2, 2); + orc_program_add_constant (p, 2, 2, "c1"); + + orc_program_append_str (p, "shlw", "d1", "s1", "c1"); + break; + case 8: + p = orc_program_new_dss (2, 2, 2); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_parameter (p, 4, "p2"); + orc_program_add_parameter (p, 4, "p3"); + + orc_program_append_str (p, "addw", "t1", "s1", "s2"); + orc_program_append_str (p, "mulswl", "t2", "t1", "p1"); + orc_program_append_str (p, "addl", "t2", "t2", "p2"); + orc_program_append_str (p, "shll", "t2", "t2", "p3"); + orc_program_append_ds_str (p, "convlw", "t1", "t2"); + orc_program_append_str (p, "addw", "d1", "d1", "t1"); + break; + case 9: + p = orc_program_new (); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s20"); + orc_program_add_source (p, 2, "s21"); + orc_program_add_source (p, 2, "s22"); + orc_program_add_source (p, 2, "s23"); + orc_program_add_constant (p, 2, 9, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_parameter (p, 2, "p2"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + + orc_program_append_str (p, "addw", "t1", "s21", "s22"); + orc_program_append_str (p, "mullw", "t1", "t1", "c1"); + orc_program_append_str (p, "addw", "t2", "s20", "s23"); + orc_program_append_str (p, "subw", "t1", "t1", "t2"); + orc_program_append_str (p, "addw", "t1", "t1", "p1"); + orc_program_append_str (p, "shrsw", "t1", "t1", "p2"); + orc_program_append_str (p, "addw", "d1", "d1", "t1"); + break; + case 10: + p = orc_program_new (); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s20"); + orc_program_add_source (p, 2, "s21"); + orc_program_add_source (p, 2, "s22"); + orc_program_add_source (p, 2, "s23"); + orc_program_add_constant (p, 2, 9, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_parameter (p, 2, "p2"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + + orc_program_append_str (p, "addw", "t1", "s21", "s22"); + orc_program_append_str (p, "mullw", "t1", "t1", "c1"); + orc_program_append_str (p, "addw", "t2", "s20", "s23"); + orc_program_append_str (p, "subw", "t1", "t1", "t2"); + orc_program_append_str (p, "addw", "t1", "t1", "p1"); + orc_program_append_str (p, "shrsw", "t1", "t1", "p2"); + orc_program_append_str (p, "subw", "d1", "d1", "t1"); + break; + case 11: + p = orc_program_new_dss (2, 2, 2); + + orc_program_append_str (p, "subw", "d1", "s1", "s2"); + break; + case 12: + p = orc_program_new_ds (1, 1); + orc_program_append_ds_str (p, "copyb", "d1", "s1"); + break; + case 13: + p = orc_program_new_dss (2, 2, 1); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_ds_str (p, "convubw", "t1", "s2"); + orc_program_append_str (p, "addw", "d1", "t1", "s1"); + break; + case 14: + p = orc_program_new_ds (2, 1); + + orc_program_append_ds_str (p, "convubw", "d1", "s1"); + break; + case 15: + p = orc_program_new_ds (1, 2); + + orc_program_append_ds_str (p, "convsuswb", "d1", "s1"); + break; + case 16: + p = orc_program_new_dss (2, 2, 1); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_ds_str (p, "convubw", "t1", "s2"); + orc_program_append_str (p, "subw", "d1", "s1", "t1"); + break; + case 17: + p = orc_program_new_dss (2, 2, 2); + orc_program_add_source (p, 1, "s3"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_ds_str (p, "convubw", "t1", "s3"); + orc_program_append_str (p, "mullw", "t1", "t1", "s2"); + orc_program_append_str (p, "addw", "d1", "s1", "t1"); + break; + default: + return NULL; } return p; @@ -215,9 +215,9 @@ test_program (int type) char s[40]; OrcTestResult ret; - p = get_program(type); + p = get_program (type); - sprintf(s, "test_schro_%d", type); + sprintf (s, "test_schro_%d", type); orc_program_set_name (p, s); ret = orc_test_compare_output (p); @@ -232,15 +232,15 @@ main (int argc, char *argv[]) { int i; - orc_init(); - orc_test_init(); + orc_init (); + orc_test_init (); - for(i=0;i<18;i++){ + for (i = 0; i < 18; i++) { //printf("/* %d */\n", i); test_program (i); } - if (error) return 1; + if (error) + return 1; return 0; } - diff --git a/testsuite/test_accsadubl.c b/testsuite/test_accsadubl.c index 1388045..13277e9 100644 --- a/testsuite/test_accsadubl.c +++ b/testsuite/test_accsadubl.c @@ -10,12 +10,12 @@ int error = FALSE; -void test_opcode (OrcStaticOpcode *opcode); +void test_opcode (OrcStaticOpcode * opcode); orc_uint8 array1[100]; orc_uint8 array2[100]; -int orc_sad_u8 (orc_uint8 *s1, orc_uint8 *s2, int n); +int orc_sad_u8 (orc_uint8 * s1, orc_uint8 * s2, int n); int main (int argc, char *argv[]) @@ -24,33 +24,34 @@ main (int argc, char *argv[]) int n; int sum; - orc_init(); + orc_init (); - for(n=0;n<20;n++){ + for (n = 0; n < 20; n++) { sum = 0; - for(i=0;i<n;i++){ - array1[i] = rand(); - array2[i] = rand(); - sum += abs(array1[i] - array2[i]); + for (i = 0; i < n; i++) { + array1[i] = rand (); + array2[i] = rand (); + sum += abs (array1[i] - array2[i]); } if (sum != orc_sad_u8 (array1, array2, n)) { - for(i=0;i<n;i++){ - printf("%d: %d %d -> %d\n", i, array1[i], array2[i], - abs(array1[i] - array2[i])); + for (i = 0; i < n; i++) { + printf ("%d: %d %d -> %d\n", i, array1[i], array2[i], + abs (array1[i] - array2[i])); } - printf("sum %d %d\n", sum, orc_sad_u8 (array1, array2, n)); + printf ("sum %d %d\n", sum, orc_sad_u8 (array1, array2, n)); error = TRUE; } } - if (error) return 1; + if (error) + return 1; return 0; } int -orc_sad_u8 (orc_uint8 *s1, orc_uint8 *s2, int n) +orc_sad_u8 (orc_uint8 * s1, orc_uint8 * s2, int n) { static OrcProgram *p = NULL; OrcExecutor *ex; @@ -66,10 +67,9 @@ orc_sad_u8 (orc_uint8 *s1, orc_uint8 *s2, int n) orc_program_append_str (p, "accsadubl", "a1", "s1", "s2"); result = orc_program_compile (p); - if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL(result)) { + if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL (result)) { return 0; } - //printf("%s\n", orc_program_get_asm_code (p)); } @@ -87,5 +87,3 @@ orc_sad_u8 (orc_uint8 *s1, orc_uint8 *s2, int n) return sum; } - - diff --git a/tools/orc-bugreport.c b/tools/orc-bugreport.c index 359b3d9..2f939b0 100644 --- a/tools/orc-bugreport.c +++ b/tools/orc-bugreport.c @@ -11,7 +11,7 @@ #include <stdlib.h> #include <string.h> -static char * read_file (const char *filename); +static char *read_file (const char *filename); void test_opcodes (void); @@ -27,67 +27,68 @@ main (int argc, char *argv[]) orc_init (); orc_test_init (); - for(i=1;i<argc;i++){ - if (strcmp(argv[i], "--help") == 0) { - printf("Usage:\n"); - printf(" orc-bugreport [file.orc]\n"); - printf("\n"); - printf("Options:\n"); - printf(" --help Show help options\n"); - printf(" --verbose Increase debugging messages\n"); - printf("\n"); - printf("Environment Variables:\n"); - printf(" ORC_DEBUG=<LEVEL> Set debugging level\n"); - printf(" ORC_CODE=[KEYWORDS,...] Modify code generation\n"); - printf(" General keywords:\n"); - printf(" backup Always use backup function\n"); - printf(" debug Generate debuggable code (useful for backtraces on i386)\n"); - printf(" SSE keywords:\n"); - printf(" -sse2 Disable SSE2\n"); - printf(" -sse3 Disable SSE3\n"); - printf(" -ssse3 Disable SSEE3\n"); - printf(" -sse41 Disable SSE4.1\n"); - printf(" -sse42 Disable SSE4.2\n"); - printf(" -sse4a Disable SSE4a\n"); - printf(" -sse5 Disable SSE5\n"); - printf("\n"); + for (i = 1; i < argc; i++) { + if (strcmp (argv[i], "--help") == 0) { + printf ("Usage:\n"); + printf (" orc-bugreport [file.orc]\n"); + printf ("\n"); + printf ("Options:\n"); + printf (" --help Show help options\n"); + printf (" --verbose Increase debugging messages\n"); + printf ("\n"); + printf ("Environment Variables:\n"); + printf (" ORC_DEBUG=<LEVEL> Set debugging level\n"); + printf (" ORC_CODE=[KEYWORDS,...] Modify code generation\n"); + printf (" General keywords:\n"); + printf (" backup Always use backup function\n"); + printf + (" debug Generate debuggable code (useful for backtraces on i386)\n"); + printf (" SSE keywords:\n"); + printf (" -sse2 Disable SSE2\n"); + printf (" -sse3 Disable SSE3\n"); + printf (" -ssse3 Disable SSEE3\n"); + printf (" -sse41 Disable SSE4.1\n"); + printf (" -sse42 Disable SSE4.2\n"); + printf (" -sse4a Disable SSE4a\n"); + printf (" -sse5 Disable SSE5\n"); + printf ("\n"); exit (0); } filename = argv[i]; } - printf("Orc " VERSION " - integrated testing tool\n"); + printf ("Orc " VERSION " - integrated testing tool\n"); - printf("Active backend: %s\n", - orc_target_get_name(orc_target_get_default())); + printf ("Active backend: %s\n", + orc_target_get_name (orc_target_get_default ())); { int level1, level2, level3; - orc_get_data_cache_sizes(&level1, &level2, &level3); - printf("L1 cache: %d\n", level1); - printf("L2 cache: %d\n", level2); - printf("L3 cache: %d\n", level3); + orc_get_data_cache_sizes (&level1, &level2, &level3); + printf ("L1 cache: %d\n", level1); + printf ("L2 cache: %d\n", level2); + printf ("L3 cache: %d\n", level3); } { int family, model, stepping; orc_get_cpu_family_model_stepping (&family, &model, &stepping); - printf("Family/Model/Stepping: %d/%d/%d\n", family, model, stepping); - printf("CPU name: %s\n", orc_get_cpu_name ()); + printf ("Family/Model/Stepping: %d/%d/%d\n", family, model, stepping); + printf ("CPU name: %s\n", orc_get_cpu_name ()); } { int i; - int flags = orc_target_get_default_flags (orc_target_get_default()); + int flags = orc_target_get_default_flags (orc_target_get_default ()); - printf("Compiler options: "); - for(i=0;i<32;i++){ - if (flags & (1<<i)) { - printf("%s ", orc_target_get_flag_name (orc_target_get_default(), i)); + printf ("Compiler options: "); + for (i = 0; i < 32; i++) { + if (flags & (1 << i)) { + printf ("%s ", orc_target_get_flag_name (orc_target_get_default (), i)); } } - printf("\n"); + printf ("\n"); } if (filename) { @@ -97,30 +98,30 @@ main (int argc, char *argv[]) code = read_file (filename); if (!code) { - printf("orc-bugreport: could not read file %s\n", filename); - exit(1); + printf ("orc-bugreport: could not read file %s\n", filename); + exit (1); } - printf("Parsing %s\n", filename); + printf ("Parsing %s\n", filename); n = orc_parse (code, &programs); - for(i=0;i<n;i++){ + for (i = 0; i < n; i++) { ret = orc_test_compare_output_full (programs[i], 0); if (!ret) { - printf("FAIL: %s\n", programs[i]->name); + printf ("FAIL: %s\n", programs[i]->name); error = TRUE; } } } else { - printf("Opcode test:\n"); - test_opcodes(); + printf ("Opcode test:\n"); + test_opcodes (); } if (error) { - printf("Errors detected. Please send entire output to ds@schleef.org.\n"); + printf ("Errors detected. Please send entire output to ds@schleef.org.\n"); return 1; } else { - printf("No errors detected.\n"); + printf ("No errors detected.\n"); return 0; } } @@ -135,42 +136,50 @@ read_file (const char *filename) int ret; file = fopen (filename, "r"); - if (file == NULL) return NULL; + if (file == NULL) + return NULL; ret = fseek (file, 0, SEEK_END); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; size = ftell (file); - if (size < 0) goto bail; + if (size < 0) + goto bail; ret = fseek (file, 0, SEEK_SET); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents = malloc (size + 1); - if (contents == NULL) goto bail; + if (contents == NULL) + goto bail; ret = fread (contents, size, 1, file); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents[size] = 0; return contents; bail: /* something failed */ - if (file) fclose (file); - if (contents) free (contents); + if (file) + fclose (file); + if (contents) + free (contents); return NULL; } -void test_opcode_src (OrcStaticOpcode *opcode); -void test_opcode_const (OrcStaticOpcode *opcode); -void test_opcode_param (OrcStaticOpcode *opcode); -void test_opcode_inplace (OrcStaticOpcode *opcode); -void test_opcode_src_2d (OrcStaticOpcode *opcode); -void test_opcode_src_const_n (OrcStaticOpcode *opcode); -void test_opcode_src_const_n_2d (OrcStaticOpcode *opcode); +void test_opcode_src (OrcStaticOpcode * opcode); +void test_opcode_const (OrcStaticOpcode * opcode); +void test_opcode_param (OrcStaticOpcode * opcode); +void test_opcode_inplace (OrcStaticOpcode * opcode); +void test_opcode_src_2d (OrcStaticOpcode * opcode); +void test_opcode_src_const_n (OrcStaticOpcode * opcode); +void test_opcode_src_const_n_2d (OrcStaticOpcode * opcode); void test_opcodes (void) @@ -180,31 +189,31 @@ test_opcodes (void) opcode_set = orc_opcode_set_get ("sys"); - for(i=0;i<opcode_set->n_opcodes;i++){ + for (i = 0; i < opcode_set->n_opcodes; i++) { test_opcode_src (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ + for (i = 0; i < opcode_set->n_opcodes; i++) { test_opcode_const (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ + for (i = 0; i < opcode_set->n_opcodes; i++) { test_opcode_param (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ + for (i = 0; i < opcode_set->n_opcodes; i++) { test_opcode_inplace (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ + for (i = 0; i < opcode_set->n_opcodes; i++) { test_opcode_src_2d (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ + for (i = 0; i < opcode_set->n_opcodes; i++) { test_opcode_src_const_n (opcode_set->opcodes + i); } - for(i=0;i<opcode_set->n_opcodes;i++){ + for (i = 0; i < opcode_set->n_opcodes; i++) { test_opcode_src_const_n_2d (opcode_set->opcodes + i); } } void -test_opcode_src (OrcStaticOpcode *opcode) +test_opcode_src (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; @@ -234,7 +243,7 @@ test_opcode_src (OrcStaticOpcode *opcode) flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_s_%s", opcode->name); + sprintf (s, "test_s_%s", opcode->name); orc_program_set_name (p, s); if (opcode->dest_size[1] != 0) { @@ -245,7 +254,7 @@ test_opcode_src (OrcStaticOpcode *opcode) ret = orc_test_compare_output_full (p, flags); if (!ret) { - printf("FAIL: %s src\n", opcode->name); + printf ("FAIL: %s src\n", opcode->name); error = TRUE; } @@ -253,7 +262,7 @@ test_opcode_src (OrcStaticOpcode *opcode) } void -test_opcode_const (OrcStaticOpcode *opcode) +test_opcode_const (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; @@ -269,22 +278,19 @@ test_opcode_const (OrcStaticOpcode *opcode) p = orc_program_new (); if (opcode->flags & ORC_STATIC_OPCODE_ACCUMULATOR) { args[n_args++] = - orc_program_add_accumulator (p, opcode->dest_size[0], "d1"); + orc_program_add_accumulator (p, opcode->dest_size[0], "d1"); } else { args[n_args++] = - orc_program_add_destination (p, opcode->dest_size[0], "d1"); + orc_program_add_destination (p, opcode->dest_size[0], "d1"); } if (opcode->dest_size[1] != 0) { args[n_args++] = - orc_program_add_destination (p, opcode->dest_size[1], "d2"); + orc_program_add_destination (p, opcode->dest_size[1], "d2"); } - args[n_args++] = - orc_program_add_source (p, opcode->src_size[0], "s1"); - args[n_args++] = - orc_program_add_constant (p, opcode->src_size[1], 1, "c1"); + args[n_args++] = orc_program_add_source (p, opcode->src_size[0], "s1"); + args[n_args++] = orc_program_add_constant (p, opcode->src_size[1], 1, "c1"); if (opcode->src_size[2]) { - args[n_args++] = - orc_program_add_constant (p, opcode->src_size[2], 1, "c2"); + args[n_args++] = orc_program_add_constant (p, opcode->src_size[2], 1, "c2"); } if ((opcode->flags & ORC_STATIC_OPCODE_FLOAT_SRC) || @@ -292,15 +298,14 @@ test_opcode_const (OrcStaticOpcode *opcode) flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_const_%s", opcode->name); + sprintf (s, "test_const_%s", opcode->name); orc_program_set_name (p, s); - orc_program_append_2 (p, opcode->name, 0, args[0], args[1], - args[2], args[3]); + orc_program_append_2 (p, opcode->name, 0, args[0], args[1], args[2], args[3]); ret = orc_test_compare_output_full (p, flags); if (!ret) { - printf("FAIL: %s const\n", opcode->name); + printf ("FAIL: %s const\n", opcode->name); error = TRUE; } @@ -308,7 +313,7 @@ test_opcode_const (OrcStaticOpcode *opcode) } void -test_opcode_param (OrcStaticOpcode *opcode) +test_opcode_param (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; @@ -323,22 +328,19 @@ test_opcode_param (OrcStaticOpcode *opcode) p = orc_program_new (); if (opcode->flags & ORC_STATIC_OPCODE_ACCUMULATOR) { args[n_args++] = - orc_program_add_accumulator (p, opcode->dest_size[0], "d1"); + orc_program_add_accumulator (p, opcode->dest_size[0], "d1"); } else { args[n_args++] = - orc_program_add_destination (p, opcode->dest_size[0], "d1"); + orc_program_add_destination (p, opcode->dest_size[0], "d1"); } if (opcode->dest_size[1] != 0) { args[n_args++] = - orc_program_add_destination (p, opcode->dest_size[1], "d2"); + orc_program_add_destination (p, opcode->dest_size[1], "d2"); } - args[n_args++] = - orc_program_add_source (p, opcode->src_size[0], "s1"); - args[n_args++] = - orc_program_add_parameter (p, opcode->src_size[1], "p1"); + args[n_args++] = orc_program_add_source (p, opcode->src_size[0], "s1"); + args[n_args++] = orc_program_add_parameter (p, opcode->src_size[1], "p1"); if (opcode->src_size[2]) { - args[n_args++] = - orc_program_add_parameter (p, opcode->src_size[2], "p2"); + args[n_args++] = orc_program_add_parameter (p, opcode->src_size[2], "p2"); } if ((opcode->flags & ORC_STATIC_OPCODE_FLOAT_SRC) || @@ -346,15 +348,14 @@ test_opcode_param (OrcStaticOpcode *opcode) flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_p_%s", opcode->name); + sprintf (s, "test_p_%s", opcode->name); orc_program_set_name (p, s); - orc_program_append_2 (p, opcode->name, 0, args[0], args[1], - args[2], args[3]); + orc_program_append_2 (p, opcode->name, 0, args[0], args[1], args[2], args[3]); ret = orc_test_compare_output_full (p, flags); if (!ret) { - printf("FAIL: %s param\n", opcode->name); + printf ("FAIL: %s param\n", opcode->name); error = TRUE; } @@ -362,14 +363,15 @@ test_opcode_param (OrcStaticOpcode *opcode) } void -test_opcode_inplace (OrcStaticOpcode *opcode) +test_opcode_inplace (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; int ret; int flags = 0; - if (opcode->dest_size[0] != opcode->src_size[0]) return; + if (opcode->dest_size[0] != opcode->src_size[0]) + return; if (opcode->flags & ORC_STATIC_OPCODE_SCALAR || opcode->flags & ORC_STATIC_OPCODE_ACCUMULATOR) { @@ -390,14 +392,14 @@ test_opcode_inplace (OrcStaticOpcode *opcode) flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_inplace_%s", opcode->name); + sprintf (s, "test_inplace_%s", opcode->name); orc_program_set_name (p, s); orc_program_append_str (p, opcode->name, "d1", "d1", "s2"); ret = orc_test_compare_output_full (p, flags); if (!ret) { - printf("FAIL: %s inplace\n", opcode->name); + printf ("FAIL: %s inplace\n", opcode->name); error = TRUE; } @@ -405,7 +407,7 @@ test_opcode_inplace (OrcStaticOpcode *opcode) } void -test_opcode_src_2d (OrcStaticOpcode *opcode) +test_opcode_src_2d (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; @@ -435,7 +437,7 @@ test_opcode_src_2d (OrcStaticOpcode *opcode) flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_s_%s", opcode->name); + sprintf (s, "test_s_%s", opcode->name); orc_program_set_name (p, s); orc_program_set_2d (p); @@ -447,7 +449,7 @@ test_opcode_src_2d (OrcStaticOpcode *opcode) ret = orc_test_compare_output_full (p, flags); if (!ret) { - printf("FAIL: %s src_2d\n", opcode->name); + printf ("FAIL: %s src_2d\n", opcode->name); error = TRUE; } @@ -455,7 +457,7 @@ test_opcode_src_2d (OrcStaticOpcode *opcode) } void -test_opcode_src_const_n (OrcStaticOpcode *opcode) +test_opcode_src_const_n (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; @@ -485,7 +487,7 @@ test_opcode_src_const_n (OrcStaticOpcode *opcode) flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_s_%s", opcode->name); + sprintf (s, "test_s_%s", opcode->name); orc_program_set_name (p, s); orc_program_set_constant_n (p, 8); @@ -497,7 +499,7 @@ test_opcode_src_const_n (OrcStaticOpcode *opcode) ret = orc_test_compare_output_full (p, flags); if (!ret) { - printf("FAIL: %s src_const_n\n", opcode->name); + printf ("FAIL: %s src_const_n\n", opcode->name); error = TRUE; } @@ -505,7 +507,7 @@ test_opcode_src_const_n (OrcStaticOpcode *opcode) } void -test_opcode_src_const_n_2d (OrcStaticOpcode *opcode) +test_opcode_src_const_n_2d (OrcStaticOpcode * opcode) { OrcProgram *p; char s[40]; @@ -535,7 +537,7 @@ test_opcode_src_const_n_2d (OrcStaticOpcode *opcode) flags = ORC_TEST_FLAGS_FLOAT; } - sprintf(s, "test_s_%s", opcode->name); + sprintf (s, "test_s_%s", opcode->name); orc_program_set_name (p, s); orc_program_set_2d (p); orc_program_set_constant_n (p, 8); @@ -548,10 +550,9 @@ test_opcode_src_const_n_2d (OrcStaticOpcode *opcode) ret = orc_test_compare_output_full (p, flags); if (!ret) { - printf("FAIL: %s src_const_n_2d\n", opcode->name); + printf ("FAIL: %s src_const_n_2d\n", opcode->name); error = TRUE; } orc_program_free (p); } - diff --git a/tools/orcc.c b/tools/orcc.c index ad4968a..fabd285 100644 --- a/tools/orcc.c +++ b/tools/orcc.c @@ -12,18 +12,18 @@ #include <string.h> #include <ctype.h> -static char * read_file (const char *filename); -void output_code (OrcProgram *p, FILE *output); -void output_code_header (OrcProgram *p, FILE *output); -void output_code_test (OrcProgram *p, FILE *output); -void output_code_backup (OrcProgram *p, FILE *output); -void output_code_no_orc (OrcProgram *p, FILE *output); -void output_code_assembly (OrcProgram *p, FILE *output); -void output_code_execute (OrcProgram *p, FILE *output, int is_inline); -void output_program_generation (OrcProgram *p, FILE *output, int is_inline); -void output_init_function (FILE *output); -static char * get_barrier (const char *s); -static const char * my_basename (const char *s); +static char *read_file (const char *filename); +void output_code (OrcProgram * p, FILE * output); +void output_code_header (OrcProgram * p, FILE * output); +void output_code_test (OrcProgram * p, FILE * output); +void output_code_backup (OrcProgram * p, FILE * output); +void output_code_no_orc (OrcProgram * p, FILE * output); +void output_code_assembly (OrcProgram * p, FILE * output); +void output_code_execute (OrcProgram * p, FILE * output, int is_inline); +void output_program_generation (OrcProgram * p, FILE * output, int is_inline); +void output_init_function (FILE * output); +static char *get_barrier (const char *s); +static const char *my_basename (const char *s); int verbose = 0; int error = 0; @@ -48,7 +48,8 @@ char *target = "sse"; } \ } while (0) -enum { +enum +{ MODE_IMPL, MODE_HEADER, MODE_TEST, @@ -56,30 +57,33 @@ enum { }; int mode = MODE_IMPL; -void help (void) +void +help (void) { - printf("Usage:\n"); - printf(" orcc [OPTION...] INPUT_FILE\n"); - printf("\n"); - printf("Help Options:\n"); - printf(" -h, --help Show help options\n"); - printf("\n"); - printf("Application Options:\n"); - printf(" -v, --verbose Output more information\n"); - printf(" -o, --output FILE Write output to FILE\n"); - printf(" --implementation Produce C code implementing functions\n"); - printf(" --header Produce C header for functions\n"); - printf(" --test Produce test code for functions\n"); - printf(" --assembly Produce assembly code for functions\n"); - printf(" --include FILE Add #include <FILE> to code\n"); - printf(" --target TARGET Generate assembly for TARGET\n"); - printf(" --compat VERSION Generate code compatible with Orc version VERSION\n"); - printf(" --inline Generate inline functions in header\n"); - printf(" --no-inline Do not generate inline functions in header\n"); - printf(" --init-function FUNCTION Generate initialization function\n"); - printf(" --lazy-init Do Orc compile at function execution\n"); - printf(" --no-backup Do not generate backup functions\n"); - printf("\n"); + printf ("Usage:\n"); + printf (" orcc [OPTION...] INPUT_FILE\n"); + printf ("\n"); + printf ("Help Options:\n"); + printf (" -h, --help Show help options\n"); + printf ("\n"); + printf ("Application Options:\n"); + printf (" -v, --verbose Output more information\n"); + printf (" -o, --output FILE Write output to FILE\n"); + printf (" --implementation Produce C code implementing functions\n"); + printf (" --header Produce C header for functions\n"); + printf (" --test Produce test code for functions\n"); + printf (" --assembly Produce assembly code for functions\n"); + printf (" --include FILE Add #include <FILE> to code\n"); + printf (" --target TARGET Generate assembly for TARGET\n"); + printf + (" --compat VERSION Generate code compatible with Orc version VERSION\n"); + printf (" --inline Generate inline functions in header\n"); + printf + (" --no-inline Do not generate inline functions in header\n"); + printf (" --init-function FUNCTION Generate initialization function\n"); + printf (" --lazy-init Do Orc compile at function execution\n"); + printf (" --no-backup Do not generate backup functions\n"); + printf ("\n"); exit (0); } @@ -99,89 +103,86 @@ main (int argc, char *argv[]) orc_init (); - for(i=1;i<argc;i++) { - if (strcmp(argv[i], "--header") == 0) { + for (i = 1; i < argc; i++) { + if (strcmp (argv[i], "--header") == 0) { mode = MODE_HEADER; - } else if (strcmp(argv[i], "--implementation") == 0) { + } else if (strcmp (argv[i], "--implementation") == 0) { mode = MODE_IMPL; - } else if (strcmp(argv[i], "--test") == 0) { + } else if (strcmp (argv[i], "--test") == 0) { mode = MODE_TEST; - } else if (strcmp(argv[i], "--assembly") == 0) { + } else if (strcmp (argv[i], "--assembly") == 0) { mode = MODE_ASSEMBLY; - } else if (strcmp(argv[i], "--include") == 0) { - if (i+1 < argc) { - include_file = argv[i+1]; + } else if (strcmp (argv[i], "--include") == 0) { + if (i + 1 < argc) { + include_file = argv[i + 1]; i++; } else { - help(); + help (); } - } else if (strcmp (argv[i], "--output") == 0 || - strcmp(argv[i], "-o") == 0) { - if (i+1 < argc) { - output_file = argv[i+1]; + } else if (strcmp (argv[i], "--output") == 0 || strcmp (argv[i], "-o") == 0) { + if (i + 1 < argc) { + output_file = argv[i + 1]; i++; } else { - help(); + help (); } - } else if (strcmp(argv[i], "--target") == 0 || - strcmp(argv[i], "-t") == 0) { - if (i+1 < argc) { - target = argv[i+1]; + } else if (strcmp (argv[i], "--target") == 0 || strcmp (argv[i], "-t") == 0) { + if (i + 1 < argc) { + target = argv[i + 1]; i++; } else { - help(); + help (); } - } else if (strcmp(argv[i], "--inline") == 0) { + } else if (strcmp (argv[i], "--inline") == 0) { use_inline = TRUE; - } else if (strcmp(argv[i], "--no-inline") == 0) { + } else if (strcmp (argv[i], "--no-inline") == 0) { use_inline = FALSE; - } else if (strcmp(argv[i], "--init-function") == 0) { - if (i+1 < argc) { - init_function = argv[i+1]; + } else if (strcmp (argv[i], "--init-function") == 0) { + if (i + 1 < argc) { + init_function = argv[i + 1]; i++; } else { - help(); + help (); } - } else if (strcmp(argv[i], "--help") == 0 || - strcmp(argv[i], "-h") == 0) { + } else if (strcmp (argv[i], "--help") == 0 || strcmp (argv[i], "-h") == 0) { help (); - } else if (strcmp(argv[i], "--verbose") == 0 || - strcmp(argv[i], "-v") == 0) { + } else if (strcmp (argv[i], "--verbose") == 0 || + strcmp (argv[i], "-v") == 0) { verbose = 1; - } else if (strcmp(argv[i], "--version") == 0) { - printf("Orc Compiler " PACKAGE_VERSION "\n"); + } else if (strcmp (argv[i], "--version") == 0) { + printf ("Orc Compiler " PACKAGE_VERSION "\n"); exit (0); - } else if (strcmp(argv[i], "--compat") == 0) { - if (i+1 < argc) { - compat_version = argv[i+1]; + } else if (strcmp (argv[i], "--compat") == 0) { + if (i + 1 < argc) { + compat_version = argv[i + 1]; i++; } else { - help(); + help (); } - } else if (strcmp(argv[i], "--lazy-init") == 0) { + } else if (strcmp (argv[i], "--lazy-init") == 0) { use_lazy_init = TRUE; - } else if (strcmp(argv[i], "--no-backup") == 0) { + } else if (strcmp (argv[i], "--no-backup") == 0) { use_backup = FALSE; - } else if (strncmp(argv[i], "-", 1) == 0) { - printf("Unknown option: %s\n", argv[i]); + } else if (strncmp (argv[i], "-", 1) == 0) { + printf ("Unknown option: %s\n", argv[i]); exit (1); } else { if (input_file == NULL) { input_file = argv[i]; } else { - printf("More than one input file specified: %s\n", argv[i]); + printf ("More than one input file specified: %s\n", argv[i]); exit (1); } } } if (input_file == NULL) { - printf("No input file specified\n"); + printf ("No input file specified\n"); exit (1); } if (mode == MODE_ASSEMBLY && orc_target_get_by_name (target) == NULL) { - printf("Unknown target \"%s\"\n", target); + printf ("Unknown target \"%s\"\n", target); exit (1); } @@ -192,18 +193,18 @@ main (int argc, char *argv[]) n = sscanf (compat_version, "%d.%d.%d.%d", &major, &minor, µ, &nano); if (n < 3) { - printf("Unknown version \"%s\"\n", compat_version); + printf ("Unknown version \"%s\"\n", compat_version); exit (1); } - compat = ORC_VERSION(major,minor,micro,nano); - if (compat < ORC_VERSION(0,4,5,0)) { - printf("Compatibility version \"%s\" not supported. Minimum 0.4.5\n", + compat = ORC_VERSION (major, minor, micro, nano); + if (compat < ORC_VERSION (0, 4, 5, 0)) { + printf ("Compatibility version \"%s\" not supported. Minimum 0.4.5\n", compat_version); exit (1); } } - if (compat >= ORC_VERSION(0,4,11,1)) { + if (compat >= ORC_VERSION (0, 4, 11, 1)) { use_code = TRUE; } @@ -226,17 +227,17 @@ main (int argc, char *argv[]) code = read_file (input_file); if (!code) { - printf("Could not read input file: %s\n", input_file); - exit(1); + printf ("Could not read input file: %s\n", input_file); + exit (1); } n = orc_parse_full (code, &programs, &log); n_programs = n; - printf("%s", log); + printf ("%s", log); if (programs == NULL) { - printf("no programs\n"); - exit(1); + printf ("no programs\n"); + exit (1); } if (init_function == NULL) { @@ -249,158 +250,162 @@ main (int argc, char *argv[]) output = fopen (output_file, "w"); if (!output) { - printf("Could not write output file: %s\n", output_file); - exit(1); + printf ("Could not write output file: %s\n", output_file); + exit (1); } - fprintf(output, "\n"); - fprintf(output, "/* autogenerated from %s */\n", my_basename(input_file)); - fprintf(output, "\n"); + fprintf (output, "\n"); + fprintf (output, "/* autogenerated from %s */\n", my_basename (input_file)); + fprintf (output, "\n"); if (mode == MODE_IMPL) { - fprintf(output, "#ifdef HAVE_CONFIG_H\n"); - fprintf(output, "#include \"config.h\"\n"); - fprintf(output, "#endif\n"); + fprintf (output, "#ifdef HAVE_CONFIG_H\n"); + fprintf (output, "#include \"config.h\"\n"); + fprintf (output, "#endif\n"); if (include_file) { - fprintf(output, "#include <%s>\n", include_file); + fprintf (output, "#include <%s>\n", include_file); } - fprintf(output, "\n"); - fprintf(output, "%s", orc_target_c_get_typedefs ()); - fprintf(output, "\n"); - fprintf(output, "#ifndef DISABLE_ORC\n"); - fprintf(output, "#include <orc/orc.h>\n"); - fprintf(output, "#endif\n"); - for(i=0;i<n;i++){ + fprintf (output, "\n"); + fprintf (output, "%s", orc_target_c_get_typedefs ()); + fprintf (output, "\n"); + fprintf (output, "#ifndef DISABLE_ORC\n"); + fprintf (output, "#include <orc/orc.h>\n"); + fprintf (output, "#endif\n"); + for (i = 0; i < n; i++) { output_code_header (programs[i], output); } if (init_function) { - fprintf(output, "\n"); - fprintf(output, "void %s (void);\n", init_function); + fprintf (output, "\n"); + fprintf (output, "void %s (void);\n", init_function); } - fprintf(output, "\n"); - fprintf(output, "%s", orc_target_get_asm_preamble ("c")); - fprintf(output, "\n"); - for(i=0;i<n;i++){ + fprintf (output, "\n"); + fprintf (output, "%s", orc_target_get_asm_preamble ("c")); + fprintf (output, "\n"); + for (i = 0; i < n; i++) { output_code (programs[i], output); } - fprintf(output, "\n"); + fprintf (output, "\n"); if (init_function) { output_init_function (output); - fprintf(output, "\n"); + fprintf (output, "\n"); } } else if (mode == MODE_HEADER) { char *barrier = get_barrier (output_file); - fprintf(output, "#ifndef _%s_\n", barrier); - fprintf(output, "#define _%s_\n", barrier); + fprintf (output, "#ifndef _%s_\n", barrier); + fprintf (output, "#define _%s_\n", barrier); free (barrier); - fprintf(output, "\n"); + fprintf (output, "\n"); if (include_file) { - fprintf(output, "#include <%s>\n", include_file); + fprintf (output, "#include <%s>\n", include_file); } - fprintf(output, "\n"); - fprintf(output, "#ifdef __cplusplus\n"); - fprintf(output, "extern \"C\" {\n"); - fprintf(output, "#endif\n"); - fprintf(output, "\n"); + fprintf (output, "\n"); + fprintf (output, "#ifdef __cplusplus\n"); + fprintf (output, "extern \"C\" {\n"); + fprintf (output, "#endif\n"); + fprintf (output, "\n"); if (init_function) { - fprintf(output, "void %s (void);\n", init_function); - fprintf(output, "\n"); + fprintf (output, "void %s (void);\n", init_function); + fprintf (output, "\n"); } - fprintf(output, "\n"); + fprintf (output, "\n"); if (!use_inline) { - fprintf(output, "\n"); - fprintf(output, "%s", orc_target_c_get_typedefs ()); - for(i=0;i<n;i++){ + fprintf (output, "\n"); + fprintf (output, "%s", orc_target_c_get_typedefs ()); + for (i = 0; i < n; i++) { output_code_header (programs[i], output); } } else { - fprintf(output, "\n"); - fprintf(output, "#include <orc/orc.h>\n"); - fprintf(output, "\n"); - for(i=0;i<n;i++){ + fprintf (output, "\n"); + fprintf (output, "#include <orc/orc.h>\n"); + fprintf (output, "\n"); + for (i = 0; i < n; i++) { output_code_execute (programs[i], output, TRUE); } } - fprintf(output, "\n"); - fprintf(output, "#ifdef __cplusplus\n"); - fprintf(output, "}\n"); - fprintf(output, "#endif\n"); - fprintf(output, "\n"); - fprintf(output, "#endif\n"); - fprintf(output, "\n"); + fprintf (output, "\n"); + fprintf (output, "#ifdef __cplusplus\n"); + fprintf (output, "}\n"); + fprintf (output, "#endif\n"); + fprintf (output, "\n"); + fprintf (output, "#endif\n"); + fprintf (output, "\n"); } else if (mode == MODE_TEST) { - fprintf(output, "#include <stdio.h>\n"); - fprintf(output, "#include <string.h>\n"); - fprintf(output, "#include <stdlib.h>\n"); - fprintf(output, "#include <math.h>\n"); + fprintf (output, "#include <stdio.h>\n"); + fprintf (output, "#include <string.h>\n"); + fprintf (output, "#include <stdlib.h>\n"); + fprintf (output, "#include <math.h>\n"); if (include_file) { - fprintf(output, "#include <%s>\n", include_file); + fprintf (output, "#include <%s>\n", include_file); } - fprintf(output, "\n"); - fprintf(output, "%s", orc_target_c_get_typedefs ()); - fprintf(output, "#include <orc/orc.h>\n"); - fprintf(output, "#include <orc-test/orctest.h>\n"); - fprintf(output, "%s", orc_target_get_asm_preamble ("c")); - fprintf(output, "\n"); + fprintf (output, "\n"); + fprintf (output, "%s", orc_target_c_get_typedefs ()); + fprintf (output, "#include <orc/orc.h>\n"); + fprintf (output, "#include <orc-test/orctest.h>\n"); + fprintf (output, "%s", orc_target_get_asm_preamble ("c")); + fprintf (output, "\n"); if (use_backup) { - for(i=0;i<n;i++){ - fprintf(output, "/* %s */\n", programs[i]->name); + for (i = 0; i < n; i++) { + fprintf (output, "/* %s */\n", programs[i]->name); output_code_backup (programs[i], output); } } - fprintf(output, "\n"); - fprintf(output, "static int quiet = 0;\n"); - fprintf(output, "static int benchmark = 0;\n"); - fprintf(output, "\n"); - fprintf(output, "static void help (const char *argv0)\n"); - fprintf(output, "{\n"); - fprintf(output, " printf(\"Usage:\\n\");\n"); - fprintf(output, " printf(\" %%s [OPTION]\\n\", argv0);\n"); - fprintf(output, " printf(\"Help Options:\\n\");\n"); - fprintf(output, " printf(\" -h, --help Show help options\\n\");\n"); - fprintf(output, " printf(\"Application Options:\\n\");\n"); - fprintf(output, " printf(\" -b, --benchmark Run benchmark and show results\\n\");\n"); - fprintf(output, " printf(\" -q, --quiet Don't output anything except on failures\\n\");\n"); - fprintf(output, "\n"); - fprintf(output, " exit(0);\n"); - fprintf(output, "}\n"); - fprintf(output, "\n"); - fprintf(output, "int\n"); - fprintf(output, "main (int argc, char *argv[])\n"); - fprintf(output, "{\n"); - fprintf(output, " int error = FALSE;\n"); - fprintf(output, " int i;\n"); - fprintf(output, "\n"); - fprintf(output, " orc_test_init ();\n"); - fprintf(output, "\n"); - fprintf(output, " for(i=1;i<argc;i++) {\n"); - fprintf(output, " if (strcmp(argv[i], \"--help\") == 0 ||\n"); - fprintf(output, " strcmp(argv[i], \"-h\") == 0) {\n"); - fprintf(output, " help(argv[0]);\n"); - fprintf(output, " } else if (strcmp(argv[i], \"--quiet\") == 0 ||\n"); - fprintf(output, " strcmp(argv[i], \"-q\") == 0) {\n"); - fprintf(output, " quiet = 1;\n"); - fprintf(output, " benchmark = 0;\n"); - fprintf(output, " } else if (strcmp(argv[i], \"--benchmark\") == 0 ||\n"); - fprintf(output, " strcmp(argv[i], \"-b\") == 0) {\n"); - fprintf(output, " benchmark = 1;\n"); - fprintf(output, " quiet = 0;\n"); - fprintf(output, " }\n"); - fprintf(output, " }\n"); - fprintf(output, "\n"); - for(i=0;i<n;i++){ + fprintf (output, "\n"); + fprintf (output, "static int quiet = 0;\n"); + fprintf (output, "static int benchmark = 0;\n"); + fprintf (output, "\n"); + fprintf (output, "static void help (const char *argv0)\n"); + fprintf (output, "{\n"); + fprintf (output, " printf(\"Usage:\\n\");\n"); + fprintf (output, " printf(\" %%s [OPTION]\\n\", argv0);\n"); + fprintf (output, " printf(\"Help Options:\\n\");\n"); + fprintf (output, + " printf(\" -h, --help Show help options\\n\");\n"); + fprintf (output, " printf(\"Application Options:\\n\");\n"); + fprintf (output, + " printf(\" -b, --benchmark Run benchmark and show results\\n\");\n"); + fprintf (output, + " printf(\" -q, --quiet Don't output anything except on failures\\n\");\n"); + fprintf (output, "\n"); + fprintf (output, " exit(0);\n"); + fprintf (output, "}\n"); + fprintf (output, "\n"); + fprintf (output, "int\n"); + fprintf (output, "main (int argc, char *argv[])\n"); + fprintf (output, "{\n"); + fprintf (output, " int error = FALSE;\n"); + fprintf (output, " int i;\n"); + fprintf (output, "\n"); + fprintf (output, " orc_test_init ();\n"); + fprintf (output, "\n"); + fprintf (output, " for(i=1;i<argc;i++) {\n"); + fprintf (output, " if (strcmp(argv[i], \"--help\") == 0 ||\n"); + fprintf (output, " strcmp(argv[i], \"-h\") == 0) {\n"); + fprintf (output, " help(argv[0]);\n"); + fprintf (output, " } else if (strcmp(argv[i], \"--quiet\") == 0 ||\n"); + fprintf (output, " strcmp(argv[i], \"-q\") == 0) {\n"); + fprintf (output, " quiet = 1;\n"); + fprintf (output, " benchmark = 0;\n"); + fprintf (output, + " } else if (strcmp(argv[i], \"--benchmark\") == 0 ||\n"); + fprintf (output, " strcmp(argv[i], \"-b\") == 0) {\n"); + fprintf (output, " benchmark = 1;\n"); + fprintf (output, " quiet = 0;\n"); + fprintf (output, " }\n"); + fprintf (output, " }\n"); + fprintf (output, "\n"); + for (i = 0; i < n; i++) { output_code_test (programs[i], output); } - fprintf(output, "\n"); - fprintf(output, " if (error) {\n"); - fprintf(output, " return 1;\n"); - fprintf(output, " };\n"); - fprintf(output, " return 0;\n"); - fprintf(output, "}\n"); + fprintf (output, "\n"); + fprintf (output, " if (error) {\n"); + fprintf (output, " return 1;\n"); + fprintf (output, " };\n"); + fprintf (output, " return 0;\n"); + fprintf (output, "}\n"); } else if (mode == MODE_ASSEMBLY) { - fprintf(output, "%s", orc_target_get_asm_preamble (target)); - for(i=0;i<n;i++){ + fprintf (output, "%s", orc_target_get_asm_preamble (target)); + for (i = 0; i < n; i++) { output_code_assembly (programs[i], output); } } @@ -409,7 +414,7 @@ main (int argc, char *argv[]) if (error) { remove (output_file); - exit(1); + exit (1); } return 0; @@ -423,11 +428,11 @@ get_barrier (const char *s) int n; int i; - n = strlen(s); + n = strlen (s); barrier = malloc (n + 1); - for(i=0;i<n;i++) { + for (i = 0; i < n; i++) { if (isalnum (s[i])) { - barrier[i] = toupper(s[i]); + barrier[i] = toupper (s[i]); } else { barrier[i] = '_'; } @@ -446,30 +451,38 @@ read_file (const char *filename) int ret; file = fopen (filename, "r"); - if (file == NULL) return NULL; + if (file == NULL) + return NULL; ret = fseek (file, 0, SEEK_END); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; size = ftell (file); - if (size < 0) goto bail; + if (size < 0) + goto bail; ret = fseek (file, 0, SEEK_SET); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents = malloc (size + 1); - if (contents == NULL) goto bail; + if (contents == NULL) + goto bail; ret = fread (contents, size, 1, file); - if (ret < 0) goto bail; + if (ret < 0) + goto bail; contents[size] = 0; return contents; bail: /* something failed */ - if (file) fclose (file); - if (contents) free (contents); + if (file) + fclose (file); + if (contents) + free (contents); return NULL; } @@ -507,193 +520,207 @@ const char *enumnames[] = { "47" }; -static const char *orcify_typename (const char *s) +static const char * +orcify_typename (const char *s) { - if (strcmp (s, "int8_t") == 0) return "orc_int8"; - if (strcmp (s, "int16_t") == 0) return "orc_int16"; - if (strcmp (s, "int32_t") == 0) return "orc_int32"; - if (strcmp (s, "int64_t") == 0) return "orc_int64"; - if (strcmp (s, "uint8_t") == 0) return "orc_uint8"; - if (strcmp (s, "uint16_t") == 0) return "orc_uint16"; - if (strcmp (s, "uint32_t") == 0) return "orc_uint32"; - if (strcmp (s, "uint64_t") == 0) return "orc_uint64"; + if (strcmp (s, "int8_t") == 0) + return "orc_int8"; + if (strcmp (s, "int16_t") == 0) + return "orc_int16"; + if (strcmp (s, "int32_t") == 0) + return "orc_int32"; + if (strcmp (s, "int64_t") == 0) + return "orc_int64"; + if (strcmp (s, "uint8_t") == 0) + return "orc_uint8"; + if (strcmp (s, "uint16_t") == 0) + return "orc_uint16"; + if (strcmp (s, "uint32_t") == 0) + return "orc_uint32"; + if (strcmp (s, "uint64_t") == 0) + return "orc_uint64"; return s; } void -output_prototype (OrcProgram *p, FILE *output) +output_prototype (OrcProgram * p, FILE * output) { OrcVariable *var; int i; int need_comma; - fprintf(output, "%s (", p->name); + fprintf (output, "%s (", p->name); need_comma = FALSE; - for(i=0;i<4;i++){ + for (i = 0; i < 4; i++) { var = &p->vars[ORC_VAR_D1 + i]; if (var->size) { - if (need_comma) fprintf(output, ", "); + if (need_comma) + fprintf (output, ", "); if (var->type_name) { - fprintf(output, "%s * ORC_RESTRICT %s", orcify_typename(var->type_name), - varnames[ORC_VAR_D1 + i]); + fprintf (output, "%s * ORC_RESTRICT %s", + orcify_typename (var->type_name), varnames[ORC_VAR_D1 + i]); } else { - fprintf(output, "orc_uint%d * ORC_RESTRICT %s", var->size*8, + fprintf (output, "orc_uint%d * ORC_RESTRICT %s", var->size * 8, varnames[ORC_VAR_D1 + i]); } if (p->is_2d) { - fprintf(output, ", int %s_stride", varnames[ORC_VAR_D1 + i]); + fprintf (output, ", int %s_stride", varnames[ORC_VAR_D1 + i]); } need_comma = TRUE; } } - for(i=0;i<4;i++){ + for (i = 0; i < 4; i++) { var = &p->vars[ORC_VAR_A1 + i]; if (var->size) { - if (need_comma) fprintf(output, ", "); + if (need_comma) + fprintf (output, ", "); if (var->type_name) { - fprintf(output, "%s * ORC_RESTRICT %s", orcify_typename(var->type_name), - varnames[ORC_VAR_A1 + i]); + fprintf (output, "%s * ORC_RESTRICT %s", + orcify_typename (var->type_name), varnames[ORC_VAR_A1 + i]); } else { - fprintf(output, "orc_uint%d * ORC_RESTRICT %s", var->size*8, + fprintf (output, "orc_uint%d * ORC_RESTRICT %s", var->size * 8, varnames[ORC_VAR_A1 + i]); } need_comma = TRUE; } } - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { var = &p->vars[ORC_VAR_S1 + i]; if (var->size) { - if (need_comma) fprintf(output, ", "); + if (need_comma) + fprintf (output, ", "); if (var->type_name) { - fprintf(output, "const %s * ORC_RESTRICT %s", - orcify_typename(var->type_name), - varnames[ORC_VAR_S1 + i]); + fprintf (output, "const %s * ORC_RESTRICT %s", + orcify_typename (var->type_name), varnames[ORC_VAR_S1 + i]); } else { - fprintf(output, "const orc_uint%d * ORC_RESTRICT %s", var->size*8, + fprintf (output, "const orc_uint%d * ORC_RESTRICT %s", var->size * 8, varnames[ORC_VAR_S1 + i]); } if (p->is_2d) { - fprintf(output, ", int %s_stride", varnames[ORC_VAR_S1 + i]); + fprintf (output, ", int %s_stride", varnames[ORC_VAR_S1 + i]); } need_comma = TRUE; } } - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { var = &p->vars[ORC_VAR_P1 + i]; if (var->size) { - if (need_comma) fprintf(output, ", "); + if (need_comma) + fprintf (output, ", "); switch (var->param_type) { case ORC_PARAM_TYPE_INT: - fprintf(output, "int %s", varnames[ORC_VAR_P1 + i]); + fprintf (output, "int %s", varnames[ORC_VAR_P1 + i]); break; case ORC_PARAM_TYPE_FLOAT: - REQUIRE(0,4,5,1); - fprintf(output, "float %s", varnames[ORC_VAR_P1 + i]); + REQUIRE (0, 4, 5, 1); + fprintf (output, "float %s", varnames[ORC_VAR_P1 + i]); break; case ORC_PARAM_TYPE_INT64: - REQUIRE(0,4,7,1); - fprintf(output, "orc_int64 %s", varnames[ORC_VAR_P1 + i]); + REQUIRE (0, 4, 7, 1); + fprintf (output, "orc_int64 %s", varnames[ORC_VAR_P1 + i]); break; case ORC_PARAM_TYPE_DOUBLE: - REQUIRE(0,4,7,1); - fprintf(output, "double %s", varnames[ORC_VAR_P1 + i]); + REQUIRE (0, 4, 7, 1); + fprintf (output, "double %s", varnames[ORC_VAR_P1 + i]); break; default: - ORC_ASSERT(0); + ORC_ASSERT (0); } need_comma = TRUE; } } if (p->constant_n == 0) { - if (need_comma) fprintf(output, ", "); - fprintf(output, "int n"); + if (need_comma) + fprintf (output, ", "); + fprintf (output, "int n"); need_comma = TRUE; } if (p->is_2d && p->constant_m == 0) { - if (need_comma) fprintf(output, ", "); - fprintf(output, "int m"); + if (need_comma) + fprintf (output, ", "); + fprintf (output, "int m"); } - fprintf(output, ")"); + fprintf (output, ")"); } void -output_code_header (OrcProgram *p, FILE *output) +output_code_header (OrcProgram * p, FILE * output) { - fprintf(output, "void "); + fprintf (output, "void "); output_prototype (p, output); - fprintf(output, ";\n"); + fprintf (output, ";\n"); } void -output_code_backup (OrcProgram *p, FILE *output) +output_code_backup (OrcProgram * p, FILE * output) { - fprintf(output, "static void\n"); - if (compat < ORC_VERSION(0,4,7,1)) { - fprintf(output, "_backup_%s (OrcExecutor * ex)\n", p->name); + fprintf (output, "static void\n"); + if (compat < ORC_VERSION (0, 4, 7, 1)) { + fprintf (output, "_backup_%s (OrcExecutor * ex)\n", p->name); } else { - fprintf(output, "_backup_%s (OrcExecutor * ORC_RESTRICT ex)\n", p->name); + fprintf (output, "_backup_%s (OrcExecutor * ORC_RESTRICT ex)\n", p->name); } - fprintf(output, "{\n"); + fprintf (output, "{\n"); { OrcCompileResult result; - result = orc_program_compile_full (p, orc_target_get_by_name("c"), + result = orc_program_compile_full (p, orc_target_get_by_name ("c"), ORC_TARGET_C_BARE); - if (ORC_COMPILE_RESULT_IS_SUCCESSFUL(result)) { - fprintf(output, "%s\n", orc_program_get_asm_code (p)); + if (ORC_COMPILE_RESULT_IS_SUCCESSFUL (result)) { + fprintf (output, "%s\n", orc_program_get_asm_code (p)); } else { - printf("Failed to compile backup code for '%s'\n", p->name); + printf ("Failed to compile backup code for '%s'\n", p->name); error = TRUE; } } - fprintf(output, "}\n"); - fprintf(output, "\n"); + fprintf (output, "}\n"); + fprintf (output, "\n"); } void -output_code_no_orc (OrcProgram *p, FILE *output) +output_code_no_orc (OrcProgram * p, FILE * output) { - fprintf(output, "void\n"); + fprintf (output, "void\n"); output_prototype (p, output); - fprintf(output, "{\n"); + fprintf (output, "{\n"); { OrcCompileResult result; - result = orc_program_compile_full (p, orc_target_get_by_name("c"), + result = orc_program_compile_full (p, orc_target_get_by_name ("c"), ORC_TARGET_C_BARE | ORC_TARGET_C_NOEXEC); - if (ORC_COMPILE_RESULT_IS_SUCCESSFUL(result)) { - fprintf(output, "%s\n", orc_program_get_asm_code (p)); + if (ORC_COMPILE_RESULT_IS_SUCCESSFUL (result)) { + fprintf (output, "%s\n", orc_program_get_asm_code (p)); } else { - printf("Failed to compile no orc for '%s'\n", p->name); + printf ("Failed to compile no orc for '%s'\n", p->name); error = TRUE; } } - fprintf(output, "}\n"); - fprintf(output, "\n"); + fprintf (output, "}\n"); + fprintf (output, "\n"); } void -output_code (OrcProgram *p, FILE *output) +output_code (OrcProgram * p, FILE * output) { - fprintf(output, "\n"); - fprintf(output, "/* %s */\n", p->name); - fprintf(output, "#ifdef DISABLE_ORC\n"); + fprintf (output, "\n"); + fprintf (output, "/* %s */\n", p->name); + fprintf (output, "#ifdef DISABLE_ORC\n"); output_code_no_orc (p, output); - fprintf(output, "#else\n"); + fprintf (output, "#else\n"); if (use_backup) { output_code_backup (p, output); } output_code_execute (p, output, FALSE); - fprintf(output, "#endif\n"); - fprintf(output, "\n"); + fprintf (output, "#endif\n"); + fprintf (output, "\n"); } void -output_code_execute (OrcProgram *p, FILE *output, int is_inline) +output_code_execute (OrcProgram * p, FILE * output, int is_inline) { OrcVariable *var; int i; @@ -710,353 +737,357 @@ output_code_execute (OrcProgram *p, FILE *output, int is_inline) } } if (use_code) { - fprintf(output, "%sOrcCode *_orc_code_%s;\n", storage, p->name); + fprintf (output, "%sOrcCode *_orc_code_%s;\n", storage, p->name); } else { - fprintf(output, "%sOrcProgram *_orc_program_%s;\n", storage, p->name); + fprintf (output, "%sOrcProgram *_orc_program_%s;\n", storage, p->name); } } if (is_inline) { - fprintf(output, "static inline void\n"); + fprintf (output, "static inline void\n"); } else { - fprintf(output, "void\n"); + fprintf (output, "void\n"); } output_prototype (p, output); - fprintf(output, "\n"); - fprintf(output, "{\n"); - fprintf(output, " OrcExecutor _ex, *ex = &_ex;\n"); + fprintf (output, "\n"); + fprintf (output, "{\n"); + fprintf (output, " OrcExecutor _ex, *ex = &_ex;\n"); if (!use_lazy_init) { if (use_code) { - fprintf(output, " OrcCode *c = _orc_code_%s;\n", p->name); + fprintf (output, " OrcCode *c = _orc_code_%s;\n", p->name); } else { - fprintf(output, " OrcProgram *p = _orc_program_%s;\n", p->name); + fprintf (output, " OrcProgram *p = _orc_program_%s;\n", p->name); } } else { - fprintf(output, " static volatile int p_inited = 0;\n"); + fprintf (output, " static volatile int p_inited = 0;\n"); if (use_code) { - fprintf(output, " static OrcCode *c = 0;\n"); + fprintf (output, " static OrcCode *c = 0;\n"); } else { - fprintf(output, " static OrcProgram *p = 0;\n"); + fprintf (output, " static OrcProgram *p = 0;\n"); } } - fprintf(output, " void (*func) (OrcExecutor *);\n"); - fprintf(output, "\n"); + fprintf (output, " void (*func) (OrcExecutor *);\n"); + fprintf (output, "\n"); if (use_lazy_init) { - fprintf(output, " if (!p_inited) {\n"); - fprintf(output, " orc_once_mutex_lock ();\n"); - fprintf(output, " if (!p_inited) {\n"); + fprintf (output, " if (!p_inited) {\n"); + fprintf (output, " orc_once_mutex_lock ();\n"); + fprintf (output, " if (!p_inited) {\n"); if (use_code) { - fprintf(output, " OrcProgram *p;\n"); + fprintf (output, " OrcProgram *p;\n"); } - fprintf(output, "\n"); + fprintf (output, "\n"); output_program_generation (p, output, is_inline); - fprintf(output, "\n"); - fprintf(output, " orc_program_compile (p);\n"); + fprintf (output, "\n"); + fprintf (output, " orc_program_compile (p);\n"); if (use_code) { - fprintf(output, " c = orc_program_take_code (p);\n"); - fprintf(output, " orc_program_free (p);\n"); + fprintf (output, " c = orc_program_take_code (p);\n"); + fprintf (output, " orc_program_free (p);\n"); } - fprintf(output, " }\n"); - fprintf(output, " p_inited = TRUE;\n"); - fprintf(output, " orc_once_mutex_unlock ();\n"); - fprintf(output, " }\n"); + fprintf (output, " }\n"); + fprintf (output, " p_inited = TRUE;\n"); + fprintf (output, " orc_once_mutex_unlock ();\n"); + fprintf (output, " }\n"); } if (use_code) { - fprintf(output, " ex->arrays[ORC_VAR_A2] = c;\n"); - fprintf(output, " ex->program = 0;\n"); + fprintf (output, " ex->arrays[ORC_VAR_A2] = c;\n"); + fprintf (output, " ex->program = 0;\n"); } else { - fprintf(output, " ex->program = p;\n"); + fprintf (output, " ex->program = p;\n"); } - fprintf(output, "\n"); + fprintf (output, "\n"); if (p->constant_n) { - fprintf(output, " ex->n = %d;\n", p->constant_n); + fprintf (output, " ex->n = %d;\n", p->constant_n); } else { - fprintf(output, " ex->n = n;\n"); + fprintf (output, " ex->n = n;\n"); } if (p->is_2d) { if (p->constant_m) { - fprintf(output, " ORC_EXECUTOR_M(ex) = %d;\n", p->constant_m); + fprintf (output, " ORC_EXECUTOR_M(ex) = %d;\n", p->constant_m); } else { - fprintf(output, " ORC_EXECUTOR_M(ex) = m;\n"); + fprintf (output, " ORC_EXECUTOR_M(ex) = m;\n"); } } - for(i=0;i<4;i++){ + for (i = 0; i < 4; i++) { var = &p->vars[ORC_VAR_D1 + i]; if (var->size) { - fprintf(output, " ex->arrays[%s] = %s;\n", + fprintf (output, " ex->arrays[%s] = %s;\n", enumnames[ORC_VAR_D1 + i], varnames[ORC_VAR_D1 + i]); if (p->is_2d) { - fprintf(output, " ex->params[%s] = %s_stride;\n", + fprintf (output, " ex->params[%s] = %s_stride;\n", enumnames[ORC_VAR_D1 + i], varnames[ORC_VAR_D1 + i]); } } } - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { var = &p->vars[ORC_VAR_S1 + i]; if (var->size) { - fprintf(output, " ex->arrays[%s] = (void *)%s;\n", + fprintf (output, " ex->arrays[%s] = (void *)%s;\n", enumnames[ORC_VAR_S1 + i], varnames[ORC_VAR_S1 + i]); if (p->is_2d) { - fprintf(output, " ex->params[%s] = %s_stride;\n", + fprintf (output, " ex->params[%s] = %s_stride;\n", enumnames[ORC_VAR_S1 + i], varnames[ORC_VAR_S1 + i]); } } } - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { var = &p->vars[ORC_VAR_P1 + i]; if (var->size) { switch (var->param_type) { case ORC_PARAM_TYPE_INT: - fprintf(output, " ex->params[%s] = %s;\n", + fprintf (output, " ex->params[%s] = %s;\n", enumnames[ORC_VAR_P1 + i], varnames[ORC_VAR_P1 + i]); break; case ORC_PARAM_TYPE_FLOAT: - REQUIRE(0,4,5,1); - fprintf(output, " {\n"); - fprintf(output, " orc_union32 tmp;\n"); - fprintf(output, " tmp.f = %s;\n", varnames[ORC_VAR_P1 + i]); - fprintf(output, " ex->params[%s] = tmp.i;\n", + REQUIRE (0, 4, 5, 1); + fprintf (output, " {\n"); + fprintf (output, " orc_union32 tmp;\n"); + fprintf (output, " tmp.f = %s;\n", varnames[ORC_VAR_P1 + i]); + fprintf (output, " ex->params[%s] = tmp.i;\n", enumnames[ORC_VAR_P1 + i]); - fprintf(output, " }\n"); + fprintf (output, " }\n"); break; case ORC_PARAM_TYPE_INT64: - REQUIRE(0,4,7,1); - fprintf(output, " {\n"); - fprintf(output, " orc_union64 tmp;\n"); - fprintf(output, " tmp.i = %s;\n", varnames[ORC_VAR_P1 + i]); - fprintf(output, " ex->params[%s] = tmp.x2[0];\n", + REQUIRE (0, 4, 7, 1); + fprintf (output, " {\n"); + fprintf (output, " orc_union64 tmp;\n"); + fprintf (output, " tmp.i = %s;\n", varnames[ORC_VAR_P1 + i]); + fprintf (output, " ex->params[%s] = tmp.x2[0];\n", enumnames[ORC_VAR_P1 + i]); - fprintf(output, " ex->params[%s] = tmp.x2[1];\n", + fprintf (output, " ex->params[%s] = tmp.x2[1];\n", enumnames[ORC_VAR_T1 + i]); - fprintf(output, " }\n"); + fprintf (output, " }\n"); break; case ORC_PARAM_TYPE_DOUBLE: - REQUIRE(0,4,5,1); - fprintf(output, " {\n"); - fprintf(output, " orc_union64 tmp;\n"); - fprintf(output, " tmp.f = %s;\n", varnames[ORC_VAR_P1 + i]); - fprintf(output, " ex->params[%s] = tmp.x2[0];\n", + REQUIRE (0, 4, 5, 1); + fprintf (output, " {\n"); + fprintf (output, " orc_union64 tmp;\n"); + fprintf (output, " tmp.f = %s;\n", varnames[ORC_VAR_P1 + i]); + fprintf (output, " ex->params[%s] = tmp.x2[0];\n", enumnames[ORC_VAR_P1 + i]); - fprintf(output, " ex->params[%s] = tmp.x2[1];\n", + fprintf (output, " ex->params[%s] = tmp.x2[1];\n", enumnames[ORC_VAR_T1 + i]); - fprintf(output, " }\n"); + fprintf (output, " }\n"); break; default: - ORC_ASSERT(0); + ORC_ASSERT (0); } } } - fprintf(output, "\n"); + fprintf (output, "\n"); if (use_code) { - fprintf(output, " func = c->exec;\n"); + fprintf (output, " func = c->exec;\n"); } else { - fprintf(output, " func = p->code_exec;\n"); + fprintf (output, " func = p->code_exec;\n"); } - fprintf(output, " func (ex);\n"); - for(i=0;i<4;i++){ + fprintf (output, " func (ex);\n"); + for (i = 0; i < 4; i++) { var = &p->vars[ORC_VAR_A1 + i]; if (var->size) { - fprintf(output, " *%s = orc_executor_get_accumulator (ex, %s);\n", + fprintf (output, " *%s = orc_executor_get_accumulator (ex, %s);\n", varnames[ORC_VAR_A1 + i], enumnames[ORC_VAR_A1 + i]); } } - fprintf(output, "}\n"); + fprintf (output, "}\n"); } void -output_program_generation (OrcProgram *p, FILE *output, int is_inline) +output_program_generation (OrcProgram * p, FILE * output, int is_inline) { OrcVariable *var; int i; - if (ORC_VERSION(0,4,16,1) <= compat) { + if (ORC_VERSION (0, 4, 16, 1) <= compat) { OrcBytecode *bytecode; int i; bytecode = orc_bytecode_from_program (p); - fprintf(output, "#if 1\n"); + fprintf (output, "#if 1\n"); //fprintf(output, "#ifdef bytecode\n"); - fprintf(output, " static const orc_uint8 bc[] = {\n"); - for(i=0;i<bytecode->length;i++) { - if ((i&0xf) == 0) { - fprintf(output, " "); + fprintf (output, " static const orc_uint8 bc[] = {\n"); + for (i = 0; i < bytecode->length; i++) { + if ((i & 0xf) == 0) { + fprintf (output, " "); } - fprintf(output, "%d, ", bytecode->bytecode[i]); - if ((i&0xf) == 15) { - fprintf(output, "\n"); + fprintf (output, "%d, ", bytecode->bytecode[i]); + if ((i & 0xf) == 15) { + fprintf (output, "\n"); } } - if ((i&0xf) != 15) { - fprintf(output, "\n"); + if ((i & 0xf) != 15) { + fprintf (output, "\n"); } - fprintf(output, " };\n"); - fprintf(output, " p = orc_program_new_from_static_bytecode (bc);\n"); + fprintf (output, " };\n"); + fprintf (output, " p = orc_program_new_from_static_bytecode (bc);\n"); //fprintf(output, " orc_program_set_name (p, \"%s\");\n", p->name); if (use_backup && !is_inline) { - fprintf(output, " orc_program_set_backup_function (p, _backup_%s);\n", + fprintf (output, " orc_program_set_backup_function (p, _backup_%s);\n", p->name); } - #if 0 /* CHECK */ { - OrcProgram *p2 = orc_program_new_from_static_bytecode (bytecode->bytecode); + OrcProgram *p2 = + orc_program_new_from_static_bytecode (bytecode->bytecode); OrcBytecode *bytecode2 = bytecode2 = orc_bytecode_from_program (p2); - fprintf(output, "#ifdef badbytecode\n"); - fprintf(output, " static const orc_uint8 bc[] = {\n"); - for(i=0;i<bytecode2->length;i++) { - if ((i&0xf) == 0) { - fprintf(output, " "); + fprintf (output, "#ifdef badbytecode\n"); + fprintf (output, " static const orc_uint8 bc[] = {\n"); + for (i = 0; i < bytecode2->length; i++) { + if ((i & 0xf) == 0) { + fprintf (output, " "); } - fprintf(output, "%s%d, ", + fprintf (output, "%s%d, ", (bytecode->bytecode[i] == bytecode2->bytecode[i]) ? "" : "/* */", bytecode2->bytecode[i]); - if ((i&0xf) == 15) { - fprintf(output, "\n"); + if ((i & 0xf) == 15) { + fprintf (output, "\n"); } } - if ((i&0xf) != 15) { - fprintf(output, "\n"); + if ((i & 0xf) != 15) { + fprintf (output, "\n"); } - fprintf(output, " };\n"); - fprintf(output, "#endif\n"); + fprintf (output, " };\n"); + fprintf (output, "#endif\n"); } #endif - fprintf(output, "#else\n"); + fprintf (output, "#else\n"); } - fprintf(output, " p = orc_program_new ();\n"); + fprintf (output, " p = orc_program_new ();\n"); if (p->constant_n != 0) { - fprintf(output, " orc_program_set_constant_n (p, %d);\n", + fprintf (output, " orc_program_set_constant_n (p, %d);\n", p->constant_n); } if (p->n_multiple != 0) { - REQUIRE(0,4,14,1); - fprintf(output, " orc_program_set_n_multiple (p, %d);\n", + REQUIRE (0, 4, 14, 1); + fprintf (output, " orc_program_set_n_multiple (p, %d);\n", p->n_multiple); } if (p->n_minimum != 0) { - REQUIRE(0,4,14,1); - fprintf(output, " orc_program_set_n_minimum (p, %d);\n", + REQUIRE (0, 4, 14, 1); + fprintf (output, " orc_program_set_n_minimum (p, %d);\n", p->n_minimum); } if (p->n_maximum != 0) { - REQUIRE(0,4,14,1); - fprintf(output, " orc_program_set_n_maximum (p, %d);\n", + REQUIRE (0, 4, 14, 1); + fprintf (output, " orc_program_set_n_maximum (p, %d);\n", p->n_maximum); } if (p->is_2d) { - fprintf(output, " orc_program_set_2d (p);\n"); + fprintf (output, " orc_program_set_2d (p);\n"); if (p->constant_m != 0) { - fprintf(output, " orc_program_set_constant_m (p, %d);\n", + fprintf (output, " orc_program_set_constant_m (p, %d);\n", p->constant_m); } } - fprintf(output, " orc_program_set_name (p, \"%s\");\n", p->name); + fprintf (output, " orc_program_set_name (p, \"%s\");\n", p->name); if (use_backup && !is_inline) { - fprintf(output, " orc_program_set_backup_function (p, _backup_%s);\n", + fprintf (output, " orc_program_set_backup_function (p, _backup_%s);\n", p->name); } - for(i=0;i<4;i++){ + for (i = 0; i < 4; i++) { var = &p->vars[ORC_VAR_D1 + i]; if (var->size) { if (var->alignment != var->size) { - REQUIRE(0,4,14,1); - fprintf(output, " orc_program_add_destination_full (p, %d, \"%s\", 0, %d);\n", + REQUIRE (0, 4, 14, 1); + fprintf (output, + " orc_program_add_destination_full (p, %d, \"%s\", 0, %d);\n", var->size, varnames[ORC_VAR_D1 + i], var->alignment); } else { - fprintf(output, " orc_program_add_destination (p, %d, \"%s\");\n", + fprintf (output, " orc_program_add_destination (p, %d, \"%s\");\n", var->size, varnames[ORC_VAR_D1 + i]); } } } - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { var = &p->vars[ORC_VAR_S1 + i]; if (var->size) { if (var->alignment != var->size) { - REQUIRE(0,4,14,1); - fprintf(output, " orc_program_add_source_full (p, %d, \"%s\", 0, %d);\n", - var->size, varnames[ORC_VAR_S1 + i], - var->alignment); + REQUIRE (0, 4, 14, 1); + fprintf (output, + " orc_program_add_source_full (p, %d, \"%s\", 0, %d);\n", + var->size, varnames[ORC_VAR_S1 + i], var->alignment); } else { - fprintf(output, " orc_program_add_source (p, %d, \"%s\");\n", + fprintf (output, " orc_program_add_source (p, %d, \"%s\");\n", var->size, varnames[ORC_VAR_S1 + i]); } } } - for(i=0;i<4;i++){ + for (i = 0; i < 4; i++) { var = &p->vars[ORC_VAR_A1 + i]; if (var->size) { - fprintf(output, " orc_program_add_accumulator (p, %d, \"%s\");\n", + fprintf (output, " orc_program_add_accumulator (p, %d, \"%s\");\n", var->size, varnames[ORC_VAR_A1 + i]); } } - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { var = &p->vars[ORC_VAR_C1 + i]; - if (var->size == 0) continue; + if (var->size == 0) + continue; if (var->size <= 4) { - fprintf(output, " orc_program_add_constant (p, %d, 0x%08x, \"%s\");\n", - var->size, (int)var->value.i, varnames[ORC_VAR_C1 + i]); + fprintf (output, + " orc_program_add_constant (p, %d, 0x%08x, \"%s\");\n", + var->size, (int) var->value.i, varnames[ORC_VAR_C1 + i]); } else if (var->size > 4) { - REQUIRE(0,4,8,1); - fprintf(output, " orc_program_add_constant_int64 (p, %d, 0x%08x%08xULL, \"%s\");\n", - var->size, (orc_uint32)(((orc_uint64)var->value.i)>>32), - (orc_uint32)(var->value.i), varnames[ORC_VAR_C1 + i]); + REQUIRE (0, 4, 8, 1); + fprintf (output, + " orc_program_add_constant_int64 (p, %d, 0x%08x%08xULL, \"%s\");\n", + var->size, (orc_uint32) (((orc_uint64) var->value.i) >> 32), + (orc_uint32) (var->value.i), varnames[ORC_VAR_C1 + i]); } } - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { var = &p->vars[ORC_VAR_P1 + i]; if (var->size) { const char *suffix = NULL; switch (var->param_type) { case ORC_PARAM_TYPE_INT: - suffix=""; + suffix = ""; break; case ORC_PARAM_TYPE_FLOAT: - REQUIRE(0,4,5,1); - suffix="_float"; + REQUIRE (0, 4, 5, 1); + suffix = "_float"; break; case ORC_PARAM_TYPE_INT64: - REQUIRE(0,4,7,1); - suffix="_int64"; + REQUIRE (0, 4, 7, 1); + suffix = "_int64"; break; case ORC_PARAM_TYPE_DOUBLE: - REQUIRE(0,4,7,1); - suffix="_double"; + REQUIRE (0, 4, 7, 1); + suffix = "_double"; break; default: - ORC_ASSERT(0); + ORC_ASSERT (0); } - fprintf(output, " orc_program_add_parameter%s (p, %d, \"%s\");\n", + fprintf (output, " orc_program_add_parameter%s (p, %d, \"%s\");\n", suffix, var->size, varnames[ORC_VAR_P1 + i]); } } - for(i=0;i<16;i++){ + for (i = 0; i < 16; i++) { var = &p->vars[ORC_VAR_T1 + i]; if (var->size) { - fprintf(output, " orc_program_add_temporary (p, %d, \"%s\");\n", + fprintf (output, " orc_program_add_temporary (p, %d, \"%s\");\n", var->size, varnames[ORC_VAR_T1 + i]); } } - fprintf(output, "\n"); + fprintf (output, "\n"); - for(i=0;i<p->n_insns;i++){ + for (i = 0; i < p->n_insns; i++) { OrcInstruction *insn = p->insns + i; - if (compat < ORC_VERSION(0,4,6,1)) { + if (compat < ORC_VERSION (0, 4, 6, 1)) { if (insn->flags) { - REQUIRE(0,4,6,1); + REQUIRE (0, 4, 6, 1); } if (p->vars[insn->src_args[1]].size != 0) { - fprintf(output, " orc_program_append (p, \"%s\", %s, %s, %s);\n", + fprintf (output, " orc_program_append (p, \"%s\", %s, %s, %s);\n", insn->opcode->name, enumnames[insn->dest_args[0]], enumnames[insn->src_args[0]], enumnames[insn->src_args[1]]); } else { - fprintf(output, " orc_program_append_ds (p, \"%s\", %s, %s);\n", + fprintf (output, " orc_program_append_ds (p, \"%s\", %s, %s);\n", insn->opcode->name, enumnames[insn->dest_args[0]], enumnames[insn->src_args[0]]); } @@ -1080,171 +1111,173 @@ output_program_generation (OrcProgram *p, FILE *output, int is_inline) args[n_args++] = insn->src_args[2]; } - fprintf(output, " orc_program_append_2 (p, \"%s\", %d, %s, %s, %s, %s);\n", + fprintf (output, + " orc_program_append_2 (p, \"%s\", %d, %s, %s, %s, %s);\n", insn->opcode->name, insn->flags, enumnames[args[0]], - enumnames[args[1]], enumnames[args[2]], - enumnames[args[3]]); + enumnames[args[1]], enumnames[args[2]], enumnames[args[3]]); } } - if (ORC_VERSION(0,4,16,1) <= compat) { - fprintf(output, "#endif\n"); + if (ORC_VERSION (0, 4, 16, 1) <= compat) { + fprintf (output, "#endif\n"); } } void -output_init_function (FILE *output) +output_init_function (FILE * output) { int i; - fprintf(output, "void\n"); - fprintf(output, "%s (void)\n", init_function); - fprintf(output, "{\n"); + fprintf (output, "void\n"); + fprintf (output, "%s (void)\n", init_function); + fprintf (output, "{\n"); if (!use_lazy_init) { - fprintf(output, "#ifndef DISABLE_ORC\n"); - for(i=0;i<n_programs;i++){ - fprintf(output, " {\n"); - fprintf(output, " /* %s */\n", programs[i]->name); - fprintf(output, " OrcProgram *p;\n"); - fprintf(output, "\n"); + fprintf (output, "#ifndef DISABLE_ORC\n"); + for (i = 0; i < n_programs; i++) { + fprintf (output, " {\n"); + fprintf (output, " /* %s */\n", programs[i]->name); + fprintf (output, " OrcProgram *p;\n"); + fprintf (output, "\n"); output_program_generation (programs[i], output, FALSE); - fprintf(output, "\n"); - fprintf(output, " orc_program_compile (p);\n"); - fprintf(output, "\n"); + fprintf (output, "\n"); + fprintf (output, " orc_program_compile (p);\n"); + fprintf (output, "\n"); if (use_code) { - fprintf(output, " _orc_code_%s = orc_program_take_code (p);\n", + fprintf (output, " _orc_code_%s = orc_program_take_code (p);\n", programs[i]->name); - fprintf(output, " orc_program_free (p);\n"); + fprintf (output, " orc_program_free (p);\n"); } else { - fprintf(output, " _orc_program_%s = p;\n", programs[i]->name); + fprintf (output, " _orc_program_%s = p;\n", programs[i]->name); } - fprintf(output, " }\n"); + fprintf (output, " }\n"); } - fprintf(output, "#endif\n"); + fprintf (output, "#endif\n"); } - fprintf(output, "}\n"); - fprintf(output, "\n"); + fprintf (output, "}\n"); + fprintf (output, "\n"); } void -output_code_test (OrcProgram *p, FILE *output) +output_code_test (OrcProgram * p, FILE * output) { OrcVariable *var; int i; - fprintf(output, " /* %s */\n", p->name); - fprintf(output, " {\n"); - fprintf(output, " OrcProgram *p = NULL;\n"); - fprintf(output, " int ret;\n"); - fprintf(output, "\n"); - fprintf(output, " if (!quiet)"); - fprintf(output, " printf (\"%s:\\n\");\n", p->name); - fprintf(output, " p = orc_program_new ();\n"); + fprintf (output, " /* %s */\n", p->name); + fprintf (output, " {\n"); + fprintf (output, " OrcProgram *p = NULL;\n"); + fprintf (output, " int ret;\n"); + fprintf (output, "\n"); + fprintf (output, " if (!quiet)"); + fprintf (output, " printf (\"%s:\\n\");\n", p->name); + fprintf (output, " p = orc_program_new ();\n"); if (p->constant_n != 0) { - fprintf(output, " orc_program_set_constant_n (p, %d);\n", + fprintf (output, " orc_program_set_constant_n (p, %d);\n", p->constant_n); } if (p->is_2d) { - fprintf(output, " orc_program_set_2d (p);\n"); + fprintf (output, " orc_program_set_2d (p);\n"); if (p->constant_m != 0) { - fprintf(output, " orc_program_set_constant_m (p, %d);\n", + fprintf (output, " orc_program_set_constant_m (p, %d);\n", p->constant_m); } } - fprintf(output, " orc_program_set_name (p, \"%s\");\n", p->name); + fprintf (output, " orc_program_set_name (p, \"%s\");\n", p->name); if (use_backup) { - fprintf(output, " orc_program_set_backup_function (p, _backup_%s);\n", + fprintf (output, " orc_program_set_backup_function (p, _backup_%s);\n", p->name); } - for(i=0;i<4;i++){ + for (i = 0; i < 4; i++) { var = &p->vars[ORC_VAR_D1 + i]; if (var->size) { - fprintf(output, " orc_program_add_destination (p, %d, \"%s\");\n", + fprintf (output, " orc_program_add_destination (p, %d, \"%s\");\n", var->size, varnames[ORC_VAR_D1 + i]); } } - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { var = &p->vars[ORC_VAR_S1 + i]; if (var->size) { - fprintf(output, " orc_program_add_source (p, %d, \"%s\");\n", + fprintf (output, " orc_program_add_source (p, %d, \"%s\");\n", var->size, varnames[ORC_VAR_S1 + i]); } } - for(i=0;i<4;i++){ + for (i = 0; i < 4; i++) { var = &p->vars[ORC_VAR_A1 + i]; if (var->size) { - fprintf(output, " orc_program_add_accumulator (p, %d, \"%s\");\n", + fprintf (output, " orc_program_add_accumulator (p, %d, \"%s\");\n", var->size, varnames[ORC_VAR_A1 + i]); } } - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { var = &p->vars[ORC_VAR_C1 + i]; if (var->size) { if (var->size < 8) { if (var->value.i != 0x80000000) { - fprintf(output, " orc_program_add_constant (p, %d, 0x%08x, \"%s\");\n", - var->size, (int)var->value.i, varnames[ORC_VAR_C1 + i]); + fprintf (output, + " orc_program_add_constant (p, %d, 0x%08x, \"%s\");\n", + var->size, (int) var->value.i, varnames[ORC_VAR_C1 + i]); } else { - fprintf(output, " orc_program_add_constant (p, %d, 0x%08x, \"%s\");\n", - var->size, (int)var->value.i, varnames[ORC_VAR_C1 + i]); + fprintf (output, + " orc_program_add_constant (p, %d, 0x%08x, \"%s\");\n", + var->size, (int) var->value.i, varnames[ORC_VAR_C1 + i]); } } else { - fprintf(output, " orc_program_add_constant_int64 (p, %d, " + fprintf (output, " orc_program_add_constant_int64 (p, %d, " "0x%08x%08xULL, \"%s\");\n", - var->size, (orc_uint32)(((orc_uint64)var->value.i)>>32), - (orc_uint32)(var->value.i), varnames[ORC_VAR_C1 + i]); + var->size, (orc_uint32) (((orc_uint64) var->value.i) >> 32), + (orc_uint32) (var->value.i), varnames[ORC_VAR_C1 + i]); } } } - for(i=0;i<8;i++){ + for (i = 0; i < 8; i++) { var = &p->vars[ORC_VAR_P1 + i]; if (var->size) { const char *suffix = NULL; switch (var->param_type) { case ORC_PARAM_TYPE_INT: - suffix=""; + suffix = ""; break; case ORC_PARAM_TYPE_FLOAT: - REQUIRE(0,4,5,1); - suffix="_float"; + REQUIRE (0, 4, 5, 1); + suffix = "_float"; break; case ORC_PARAM_TYPE_INT64: - REQUIRE(0,4,7,1); - suffix="_int64"; + REQUIRE (0, 4, 7, 1); + suffix = "_int64"; break; case ORC_PARAM_TYPE_DOUBLE: - REQUIRE(0,4,7,1); - suffix="_double"; + REQUIRE (0, 4, 7, 1); + suffix = "_double"; break; default: - ORC_ASSERT(0); + ORC_ASSERT (0); } - fprintf(output, " orc_program_add_parameter%s (p, %d, \"%s\");\n", + fprintf (output, " orc_program_add_parameter%s (p, %d, \"%s\");\n", suffix, var->size, varnames[ORC_VAR_P1 + i]); } } - for(i=0;i<16;i++){ + for (i = 0; i < 16; i++) { var = &p->vars[ORC_VAR_T1 + i]; if (var->size) { - fprintf(output, " orc_program_add_temporary (p, %d, \"%s\");\n", + fprintf (output, " orc_program_add_temporary (p, %d, \"%s\");\n", var->size, varnames[ORC_VAR_T1 + i]); } } - fprintf(output, "\n"); + fprintf (output, "\n"); - for(i=0;i<p->n_insns;i++){ + for (i = 0; i < p->n_insns; i++) { OrcInstruction *insn = p->insns + i; - if (compat < ORC_VERSION(0,4,6,1)) { + if (compat < ORC_VERSION (0, 4, 6, 1)) { if (insn->flags) { - REQUIRE(0,4,6,1); + REQUIRE (0, 4, 6, 1); } if (p->vars[insn->src_args[1]].size != 0) { - fprintf(output, " orc_program_append (p, \"%s\", %s, %s, %s);\n", + fprintf (output, " orc_program_append (p, \"%s\", %s, %s, %s);\n", insn->opcode->name, enumnames[insn->dest_args[0]], enumnames[insn->src_args[0]], enumnames[insn->src_args[1]]); } else { - fprintf(output, " orc_program_append_ds (p, \"%s\", %s, %s);\n", + fprintf (output, " orc_program_append_ds (p, \"%s\", %s, %s);\n", insn->opcode->name, enumnames[insn->dest_args[0]], enumnames[insn->src_args[0]]); } @@ -1268,79 +1301,82 @@ output_code_test (OrcProgram *p, FILE *output) args[n_args++] = insn->src_args[2]; } - fprintf(output, " orc_program_append_2 (p, \"%s\", %d, %s, %s, %s, %s);\n", + fprintf (output, + " orc_program_append_2 (p, \"%s\", %d, %s, %s, %s, %s);\n", insn->opcode->name, insn->flags, enumnames[args[0]], - enumnames[args[1]], enumnames[args[2]], - enumnames[args[3]]); + enumnames[args[1]], enumnames[args[2]], enumnames[args[3]]); } } - fprintf(output, "\n"); - if (compat >= ORC_VERSION(0,4,7,1)) { - fprintf(output, " if (benchmark) {\n"); - fprintf(output, " printf (\" cycles (emulate) : %%g\\n\",\n"); - fprintf(output, " orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));\n"); - fprintf(output, " }\n"); - fprintf(output, "\n"); + fprintf (output, "\n"); + if (compat >= ORC_VERSION (0, 4, 7, 1)) { + fprintf (output, " if (benchmark) {\n"); + fprintf (output, " printf (\" cycles (emulate) : %%g\\n\",\n"); + fprintf (output, + " orc_test_performance_full (p, ORC_TEST_FLAGS_EMULATE, NULL));\n"); + fprintf (output, " }\n"); + fprintf (output, "\n"); } if (use_backup) { - fprintf(output, " ret = orc_test_compare_output_backup (p);\n"); - fprintf(output, " if (!ret) {\n"); - fprintf(output, " error = TRUE;\n"); - fprintf(output, " } else if (!quiet) {\n"); - fprintf(output, " printf (\" backup function : PASSED\\n\");\n"); - fprintf(output, " }\n"); - fprintf(output, "\n"); - if (compat >= ORC_VERSION(0,4,7,1)) { - fprintf(output, " if (benchmark) {\n"); - fprintf(output, " printf (\" cycles (backup) : %%g\\n\",\n"); - fprintf(output, " orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));\n"); - fprintf(output, " }\n"); - fprintf(output, "\n"); + fprintf (output, " ret = orc_test_compare_output_backup (p);\n"); + fprintf (output, " if (!ret) {\n"); + fprintf (output, " error = TRUE;\n"); + fprintf (output, " } else if (!quiet) {\n"); + fprintf (output, + " printf (\" backup function : PASSED\\n\");\n"); + fprintf (output, " }\n"); + fprintf (output, "\n"); + if (compat >= ORC_VERSION (0, 4, 7, 1)) { + fprintf (output, " if (benchmark) {\n"); + fprintf (output, " printf (\" cycles (backup) : %%g\\n\",\n"); + fprintf (output, + " orc_test_performance_full (p, ORC_TEST_FLAGS_BACKUP, NULL));\n"); + fprintf (output, " }\n"); + fprintf (output, "\n"); } } - fprintf(output, " ret = orc_test_compare_output (p);\n"); - fprintf(output, " if (ret == ORC_TEST_INDETERMINATE && !quiet) {\n"); - fprintf(output, " printf (\" compiled function: COMPILE FAILED\\n\");\n"); - fprintf(output, " } else if (!ret) {\n"); - fprintf(output, " error = TRUE;\n"); - fprintf(output, " } else if (!quiet) {\n"); - fprintf(output, " printf (\" compiled function: PASSED\\n\");\n"); - fprintf(output, " }\n"); - fprintf(output, "\n"); - if (compat >= ORC_VERSION(0,4,7,1)) { - fprintf(output, " if (benchmark) {\n"); - fprintf(output, " printf (\" cycles (compiled): %%g\\n\",\n"); - fprintf(output, " orc_test_performance_full (p, 0, NULL));\n"); - fprintf(output, " }\n"); - } - fprintf(output, "\n"); - fprintf(output, " orc_program_free (p);\n"); - fprintf(output, " }\n"); - fprintf(output, "\n"); + fprintf (output, " ret = orc_test_compare_output (p);\n"); + fprintf (output, " if (ret == ORC_TEST_INDETERMINATE && !quiet) {\n"); + fprintf (output, + " printf (\" compiled function: COMPILE FAILED\\n\");\n"); + fprintf (output, " } else if (!ret) {\n"); + fprintf (output, " error = TRUE;\n"); + fprintf (output, " } else if (!quiet) {\n"); + fprintf (output, " printf (\" compiled function: PASSED\\n\");\n"); + fprintf (output, " }\n"); + fprintf (output, "\n"); + if (compat >= ORC_VERSION (0, 4, 7, 1)) { + fprintf (output, " if (benchmark) {\n"); + fprintf (output, " printf (\" cycles (compiled): %%g\\n\",\n"); + fprintf (output, " orc_test_performance_full (p, 0, NULL));\n"); + fprintf (output, " }\n"); + } + fprintf (output, "\n"); + fprintf (output, " orc_program_free (p);\n"); + fprintf (output, " }\n"); + fprintf (output, "\n"); } void -output_code_assembly (OrcProgram *p, FILE *output) +output_code_assembly (OrcProgram * p, FILE * output) { - fprintf(output, "/* %s */\n", p->name); + fprintf (output, "/* %s */\n", p->name); //output_prototype (p, output); { OrcCompileResult result; - OrcTarget *t = orc_target_get_by_name(target); + OrcTarget *t = orc_target_get_by_name (target); - result = orc_program_compile_full (p, t, - orc_target_get_default_flags (t)); - if (ORC_COMPILE_RESULT_IS_SUCCESSFUL(result)) { - fprintf(output, "%s\n", orc_program_get_asm_code (p)); + result = orc_program_compile_full (p, t, orc_target_get_default_flags (t)); + if (ORC_COMPILE_RESULT_IS_SUCCESSFUL (result)) { + fprintf (output, "%s\n", orc_program_get_asm_code (p)); } else { - printf("Failed to compile assembly for '%s'\n", p->name); + printf ("Failed to compile assembly for '%s'\n", p->name); error = TRUE; } } - fprintf(output, "\n"); + fprintf (output, "\n"); } @@ -1352,10 +1388,10 @@ my_basename (const char *s) t = s; while (t[0] != 0) { - if (t[0] == '/') ret = t+1; + if (t[0] == '/') + ret = t + 1; t++; } return ret; } - |