@@ -28,10 +28,24 @@
#include "gen4asm.h"
+static long int gen_level = 5;
+
static const struct option longopts[] = {
+ {"binary", no_argument, 0, 'b'},
+ {"output", required_argument, 0, 'o'},
+ {"gen", required_argument, 0, 'g'},
{ NULL, 0, NULL, 0 }
};
+static void usage(void)
+{
+ fprintf(stderr, "usage: intel-gen4disasm [options] inputfile\n");
+ fprintf(stderr, "OPTIONS:\n");
+ fprintf(stderr, "\t-b, --binary C style binary output\n");
+ fprintf(stderr, "\t-o, --output {outputfile} Specify output file\n");
+ fprintf(stderr, "\t-g, --gen <4|5|6> Specify GPU generation\n");
+}
+
static struct brw_program *
read_program (FILE *input)
{
@@ -93,11 +107,6 @@ read_program_binary (FILE *input)
return program;
}
-static void usage(void)
-{
- fprintf(stderr, "usage: intel-gen4disasm [-o outputfile] [-b] inputfile\n");
-}
-
int main(int argc, char **argv)
{
struct brw_program *program;
@@ -109,7 +118,7 @@ int main(int argc, char **argv)
int o;
struct brw_program_instruction *inst;
- while ((o = getopt_long(argc, argv, "o:b", longopts, NULL)) != -1) {
+ while ((o = getopt_long(argc, argv, "o:bg:", longopts, NULL)) != -1) {
switch (o) {
case 'o':
if (strcmp(optarg, "-") != 0)
@@ -118,6 +127,15 @@ int main(int argc, char **argv)
case 'b':
byte_array_input = 1;
break;
+ case 'g':
+ gen_level = strtol(optarg, NULL, 0);
+
+ if (gen_level < 4 || gen_level > 6) {
+ usage();
+ exit(1);
+ }
+
+ break;
default:
usage();
exit(1);
@@ -153,6 +171,6 @@ int main(int argc, char **argv)
}
for (inst = program->first; inst; inst = inst->next)
- brw_disasm (output, &inst->instruction, 5);
+ brw_disasm (output, &inst->instruction, gen_level);
exit (0);
}
Signed-off-by: Ben Widawsky <ben@bwidawsk.net> --- src/disasm-main.c | 32 +++++++++++++++++++++++++------- 1 files changed, 25 insertions(+), 7 deletions(-)