diff mbox

[2/2] intel-gen4asm: take gen<4|5|6> as an argument

Message ID 1304706867-29308-3-git-send-email-ben@bwidawsk.net (mailing list archive)
State New, archived
Headers show

Commit Message

Ben Widawsky May 6, 2011, 6:34 p.m. UTC
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
---
 src/disasm-main.c |   32 +++++++++++++++++++++++++-------
 1 files changed, 25 insertions(+), 7 deletions(-)
diff mbox

Patch

diff --git a/src/disasm-main.c b/src/disasm-main.c
index f41cd75..7b41c71 100644
--- a/src/disasm-main.c
+++ b/src/disasm-main.c
@@ -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);
 }