The movprfx is a vector copy, so it doesn't access memory. Set the
value of hasSideEffects 0 to avoid return true for the hasUnmodeledSideEffects(),
which will block the machine scheduler which load/store instructions.
Details
Diff Detail
Unit Tests
Event Timeline
Patch looks good to me but it looks like we're missing this information for all SVE instructions. Not sure if it used to default to 0 and we missed the switch to ? but the information is missing regardless. @Allen Is this something you plan to follow up on? or should I add it to my list?
llvm/test/CodeGen/AArch64/sched-movprfx.ll | ||
---|---|---|
11–12 | Not sure you need this test given the llvm-mca explicitly emits this bit and based on my general comment do we really want tests like this for every instruction? |
Thanks, If you have time to complete, I am very welcome, I am not skilled in the function of instructions, need to query documents one by one, so it may be too slow to finish that.
llvm/test/CodeGen/AArch64/sched-movprfx.ll | ||
---|---|---|
11–12 | Thanks, I think this case can be saved as demo for the improvement of schedule. |
llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-sve-instructions.s | ||
---|---|---|
5039 ↗ | (On Diff #485385) | I think this place also needs to be corrected. I'm going to put up a patch to fix |
Not sure you need this test given the llvm-mca explicitly emits this bit and based on my general comment do we really want tests like this for every instruction?