RESOLVED FIXED 228538
[ARM64] Add Pre/Post-Indexed Address Mode to Air for ARM64 (Store Instruction)
https://bugs.webkit.org/show_bug.cgi?id=228538
Summary [ARM64] Add Pre/Post-Indexed Address Mode to Air for ARM64 (Store Instruction)
Yijia Huang
Reported 2021-07-27 23:52:36 PDT
...
Attachments
Patch (46.95 KB, patch)
2021-07-28 00:04 PDT, Yijia Huang
no flags
Patch (21.30 KB, patch)
2021-08-01 19:23 PDT, Yijia Huang
no flags
Patch (21.20 KB, patch)
2021-08-02 10:52 PDT, Yijia Huang
no flags
Patch (22.01 KB, patch)
2021-08-02 15:09 PDT, Yijia Huang
no flags
Patch (18.59 KB, patch)
2021-08-02 22:49 PDT, Yijia Huang
no flags
Patch (22.66 KB, patch)
2021-08-02 23:41 PDT, Yijia Huang
no flags
Patch (24.61 KB, patch)
2021-08-06 00:33 PDT, Yijia Huang
no flags
Patch (24.57 KB, patch)
2021-08-07 02:37 PDT, Yijia Huang
no flags
Patch (23.80 KB, patch)
2021-08-09 20:18 PDT, Yijia Huang
no flags
Patch (23.86 KB, patch)
2021-08-10 08:47 PDT, Yijia Huang
no flags
Yijia Huang
Comment 1 2021-07-28 00:04:44 PDT
Yijia Huang
Comment 2 2021-08-01 19:23:27 PDT
Yijia Huang
Comment 3 2021-08-02 10:52:30 PDT
Yijia Huang
Comment 4 2021-08-02 15:09:46 PDT
Yijia Huang
Comment 5 2021-08-02 22:49:17 PDT
Yijia Huang
Comment 6 2021-08-02 23:41:16 PDT
Radar WebKit Bug Importer
Comment 7 2021-08-03 23:53:16 PDT
Yijia Huang
Comment 8 2021-08-06 00:33:13 PDT
Saam Barati
Comment 9 2021-08-06 12:08:44 PDT
Comment on attachment 434820 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=434820&action=review > Source/JavaScriptCore/ChangeLog:9 > + , which benefits loop program. Here, this patch adds the corresponding mode for Store this comma should be on the previous line
Yijia Huang
Comment 10 2021-08-07 02:37:22 PDT
Yijia Huang
Comment 11 2021-08-09 20:18:40 PDT
Yijia Huang
Comment 12 2021-08-10 08:47:19 PDT
EWS
Comment 13 2021-08-15 10:41:10 PDT
Committed r281062 (240524@main): <https://commits.webkit.org/240524@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 435261 [details].
Saam Barati
Comment 14 2021-08-16 18:59:00 PDT
Comment on attachment 435261 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=435261&action=review > Source/JavaScriptCore/b3/B3CanonicalizePrePostIncrements.cpp:103 > + // memory = Store(value, base, offset) I don't understand this comment since we're skipping things with offsets below. > Source/JavaScriptCore/b3/B3CanonicalizePrePostIncrements.cpp:112 > + if (memory->child(0)->hasInt() || memory->offset()) Why do we care about "memory->child(0)->hasInt()" here? Doesn't that just mean that we're storing a constant? > Source/JavaScriptCore/b3/B3CanonicalizePrePostIncrements.cpp:145 > + tryAddpostIndexCandidates(); I think the "p" should be capitalized here > Source/JavaScriptCore/b3/B3CanonicalizePrePostIncrements.cpp:165 > + // This search is expensive. However, due to the greedy pattern > + // matching, no better method can be proposed at present. I don't get this comment. We know what items we look up here. We also know their index when we are traversing the basic block. We could easily keep a table of these records (e.g, when we see an add, keep a table of add/memory->index in block) > Source/JavaScriptCore/b3/B3CanonicalizePrePostIncrements.cpp:173 > return index; If we don't do above, this should be a RELEASE_ASSERT_NOT_REACHED, and the index value can be local to the block it's in. > Source/JavaScriptCore/b3/B3CanonicalizePrePostIncrements.cpp:184 > + // address = Add(base, offset) address = Add(base, offset) > + // ... --> newMemory = Load(base, offset) > + // ... ... > + // memory = Load(base, offset) memory = Identity(newMemory) This looks super wrong. What if the "..." contains a store to a memory location that aliases? Moving the load above the store is semantically incorrect because it's not identical to the behavior of the original program.
Note You need to log in before you can comment on or make changes to this bug.