[PATCH] D44834: [MachineScheduler] Add itinerary to schedcover.py. Make default work in the command line filter
Craig Topper via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 23 10:47:56 PDT 2018
craig.topper created this revision.
craig.topper added reviewers: RKSimon, atrick, jmolloy, javed.absar.
This patch adds itinerary support to the schedcover.py script. I've been trying to use this script to figure out why SSE and AVX instructions are ending up in separate tablegen scheduler classes and sometimes its because we are using different itineraries.
Rather than using None to indicate the default scheduler model, I now use the string "default". I had to hack around the sorting a little to keep "default" at the beginning. But this also makes it so you can specify "default" on the command line to just get the defaults
https://reviews.llvm.org/D44834
Files:
utils/schedcover.py
Index: utils/schedcover.py
===================================================================
--- utils/schedcover.py
+++ utils/schedcover.py
@@ -31,20 +31,26 @@
def display():
global table, models
+ # remove default and itinerary so we can control their sort order to make
+ # them first
+ models.discard("default")
+ models.discard("itinerary")
+
ordered_table = sorted(table.items(), key=operator.itemgetter(0))
- ordered_models = filter(filter_model, sorted(models))
+ ordered_models = ["itinerary", "default"]
+ ordered_models.extend(sorted(models))
+ ordered_models = filter(filter_model, ordered_models)
# print header
sys.stdout.write("instruction")
for model in ordered_models:
- if not model: model = "default"
sys.stdout.write(", {}".format(model))
sys.stdout.write(os.linesep)
for (instr, mapping) in ordered_table:
sys.stdout.write(instr)
for model in ordered_models:
- if model in mapping:
+ if model in mapping and mapping[model] is not None:
sys.stdout.write(", {}".format(mapping[model]))
else:
sys.stdout.write(", ")
@@ -57,18 +63,21 @@
re_sched_no_default = re.compile("No machine model for ([^ ]*)\n");
re_sched_spec = re.compile("InstRW on ([^ ]*) for ([^ ]*) (.*)\n");
re_sched_no_spec = re.compile("No machine model for ([^ ]*) on processor (.*)\n");
+ re_sched_itin = re.compile("Itinerary for ([^ ]*): ([^ ]*)\n")
# scan the file
with open(path, 'r') as f:
for line in f.readlines():
match = re_sched_default.match(line)
- if match: add(match.group(1), None, match.group(2))
+ if match: add(match.group(1), "default", match.group(2))
match = re_sched_no_default.match(line)
- if match: add(match.group(1), None)
+ if match: add(match.group(1), "default")
match = re_sched_spec.match(line)
if match: add(match.group(2), match.group(1), match.group(3))
- match = re_sched_no_default.match(line)
- if match: add(match.group(1), None)
+ match = re_sched_no_spec.match(line)
+ if match: add(match.group(1), match.group(2))
+ match = re_sched_itin.match(line)
+ if match: add(match.group(1), "itinerary", match.group(2))
display()
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D44834.139612.patch
Type: text/x-patch
Size: 2431 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180323/425de2e9/attachment.bin>
More information about the llvm-commits
mailing list