Remove duplicate throughput call and change string literal check to allow negative offsets#120
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #120 +/- ##
==========================================
- Coverage 90.48% 90.48% -0.01%
==========================================
Files 25 25
Lines 3668 3667 -1
==========================================
- Hits 3319 3318 -1
Misses 349 349 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
Could we have a test for the parser change? Something that doesn't parse before and parses after. |
|
Sure, that's fair. I added two tests of type |
|
Thanks for adding the test. I am a tad concerned by the removal of that call to I am not familiar with this part of the code, but I note that the second call was added by @JanLJL in commit 7724ce2 and the same commit added something call "multiple assignments". Do multiple assignments require multiples passes? Is the removal of the second call going to break Zen3? Of course, if the repeated call was intentional, it would have been good to have a comment, but here we are. I hope that Jan remembers what is going on here. |
|
Hi guys and sorry for not replying earlier! What Pascal mentioned with "multiple assignments" becomes relevant when we have different options for a port assigned, like an OR in the port mapping (contrary to the ANDs we usually see). This is written as - name: [smlal, smlal2]
operands:
...
throughput: 8.0
latency: 18.0
port_pressure: {0: [[8, '0']], 1: [[8, '2']]}This means, OSACA will schedule either full 8 cycles on port Finally, for the parsing of memory offsets, this looks very good to me, thank you for adding the test cases! |
|
Sure, please go ahead:) |
While I couldn't find an example where the second call is still necessary for better port balancing, we keep it in for now to check this more closely (see #120)
The optimal throughput calculation is invoked twice during the inspect() routine which seems to be unecessary.
In the x86 Intel parser code, there seems to be a string literal check that should instead be a dictionary value conditional
if displacement and "operator_disp" == "-":This results in instructions with negative memory offsets being parsed incorrectly, for example
"\tlea\trcx, OFFSET FLAT:??_R0M@8-4"