printf(" orcc [OPTION...] INPUT_FILE\n");
printf("\n");
printf("Help Options:\n");
- printf(" -?, --help Show help options\n");
+ printf(" -h, --help Show help options\n");
printf("\n");
printf("Application Options:\n");
printf(" -v, --verbose Output more information\n");
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++){
output_code_test (programs[i], output);
}
fprintf(output, " OrcProgram *p = NULL;\n");
fprintf(output, " int ret;\n");
fprintf(output, "\n");
- fprintf(output, " printf (\"%s:\\n\");\n", p->name);
+ 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, " ret = orc_test_compare_output_backup (p);\n");
fprintf(output, " if (!ret) {\n");
fprintf(output, " error = TRUE;\n");
- fprintf(output, " } else {\n");
- fprintf(output, " printf (\" backup function passed\\n\");\n");
+ fprintf(output, " } else if (!quiet) {\n");
+ fprintf(output, " printf (\" backup function : PASSED\\n\");\n");
+ fprintf(output, " }\n");
+ fprintf(output, "\n");
+ fprintf(output, " if (benchmark) {\n");
+ fprintf(output, " printf (\" cycles (backup) : \");\n");
+ fprintf(output, " orc_test_performance (p, ORC_TEST_FLAGS_BACKUP);\n");
fprintf(output, " }\n");
fprintf(output, "\n");
fprintf(output, " ret = orc_test_compare_output (p);\n");
- fprintf(output, " if (ret == ORC_TEST_INDETERMINATE) {\n");
- fprintf(output, " printf (\" compilation not possible for the target\\n\");\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 {\n");
- fprintf(output, " printf (\" compiled function passed\\n\");\n");
+ fprintf(output, " } else if (!quiet) {\n");
+ fprintf(output, " printf (\" compiled function: PASSED\\n\");\n");
+ fprintf(output, " }\n");
+ fprintf(output, "\n");
+ fprintf(output, " if (benchmark) {\n");
+ fprintf(output, " printf (\" cycles (compiled): \");\n");
+ fprintf(output, " orc_test_performance (p, 0);\n");
fprintf(output, " }\n");
fprintf(output, "\n");
fprintf(output, " orc_program_free (p);\n");