@@ -87,13 +87,14 @@ def __call__(self, args, ir):
87
87
88
88
89
89
class Run :
90
- def __init__ (self , prefixes , cmd_args , triple ):
90
+ def __init__ (self , prefixes , cmd_args , preprocess_cmd , triple ):
91
91
self .prefixes = prefixes
92
92
self .cmd_args = cmd_args
93
+ self .preprocess_cmd = preprocess_cmd
93
94
self .triple = triple
94
95
95
96
def __getitem__ (self , index ):
96
- return [self .prefixes , self .cmd_args , self .triple ][index ]
97
+ return [self .prefixes , self .cmd_args , self .preprocess_cmd , self . triple ][index ]
97
98
98
99
99
100
def log (msg , verbose = True ):
@@ -117,9 +118,14 @@ def build_run_list(test, run_lines, verbose=False):
117
118
common .warn ("Skipping unparsable RUN line: " + l )
118
119
continue
119
120
120
- commands = [cmd .strip () for cmd in l .split ("|" , 1 )]
121
- llc_cmd = commands [0 ]
122
- filecheck_cmd = commands [1 ] if len (commands ) > 1 else ""
121
+ commands = [cmd .strip () for cmd in l .split ("|" )]
122
+ assert len (commands ) >= 2
123
+ preprocess_cmd = None
124
+ if len (commands ) > 2 :
125
+ preprocess_cmd = " | " .join (commands [:- 2 ])
126
+
127
+ llc_cmd = commands [- 2 ]
128
+ filecheck_cmd = commands [- 1 ]
123
129
common .verify_filecheck_prefixes (filecheck_cmd )
124
130
125
131
if not llc_cmd .startswith ("llc " ):
@@ -145,7 +151,7 @@ def build_run_list(test, run_lines, verbose=False):
145
151
check_prefixes = common .get_check_prefixes (filecheck_cmd )
146
152
all_prefixes += check_prefixes
147
153
148
- run_list .append (Run (check_prefixes , cmd_args , triple ))
154
+ run_list .append (Run (check_prefixes , cmd_args , preprocess_cmd , triple ))
149
155
150
156
# Sort prefixes that are shared between run lines before unshared prefixes.
151
157
# This causes us to prefer printing shared prefixes.
@@ -358,11 +364,21 @@ def update_test_file(args, test, autogenerated_note):
358
364
for run in run_list :
359
365
for prefix in run .prefixes :
360
366
func_dict .update ({prefix : dict ()})
361
- for prefixes , llc_args , triple_in_cmd in run_list :
367
+ for prefixes , llc_args , preprocess_cmd , triple_in_cmd in run_list :
362
368
log ("Extracted LLC cmd: llc {}" .format (llc_args ), args .verbose )
363
369
log ("Extracted FileCheck prefixes: {}" .format (prefixes ), args .verbose )
364
370
365
- raw_tool_output = args .llc_binary (llc_args , test )
371
+ if test .endswith (".mir" ):
372
+ llc_args += " -x mir"
373
+
374
+ #raw_tool_output = args.llc_binary(llc_args, test)
375
+ raw_tool_output = common .invoke_tool (
376
+ "llc" ,
377
+ llc_args ,
378
+ test ,
379
+ preprocess_cmd ,
380
+ verbose = args .verbose
381
+ )
366
382
if not triple_in_cmd and not triple_in_ir :
367
383
common .warn ("No triple found: skipping file" , test_file = test )
368
384
return
0 commit comments