[RISCV64] riscv64 backend should lower offlineasm instructions
Created attachment 448577 [details] Patch
Created attachment 448723 [details] Patch With additional shift-amount validation.
Comment on attachment 448723 [details] Patch r=me
Committed r287912 (245945@main): <https://commits.webkit.org/245945@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 448723 [details].
<rdar://problem/87440612>
Re-opened since this is blocked by bug 235164
With regards to the regression that initiated the rollout in #235164, the only thing that could affect ARM64/ARM64E is the additional lowering of misplaced addresses for any baddi*, bsubi* and bmuli* instructions. But these should already be lowered by the time that Sequence.getModifiedListARM64() calls riscLowerMisplacedAddresses(), due to already calling riscLowerSimpleBranchOps() and riscLowerHardBranchOps64() before that. Don't know. I can implement Sequence.lowerMisplacedAddressesRISCV64() and manually lower these instructions there, not affecting any other architecture.
Created attachment 449048 [details] Patch
Comment on attachment 449048 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=449048&action=review > Source/JavaScriptCore/offlineasm/riscv64.rb:406 > +def riscv64LowerMisplacedAddresses(list) > + newList = [] > + list.each { > + | node | > + if node.is_a? Instruction > + case node.opcode > + when /^baddi/, /^bsubi/, /^bmuli/ > + postInstructions = [] > + newList << node.riscCloneWithOperandsLowered(newList, postInstructions, "i") > + newList += postInstructions These specific instructions are now handled in a separate, RISCV64-specific lowering pass. Didn't use Instruction.lowerMisplacedAddressesRISCV64() to keep the lowering passes uniformly implemented in helper functions.
Comment on attachment 449048 [details] Patch r=me
Committed r288007 (246033@main): <https://commits.webkit.org/246033@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 449048 [details].