Regarding using a constructive variant. Not sure how to mark explicit op2 and op3 as needing consecutive registers. The current intrinsics with consecutive registers have a tuple in a single op. Here we have two separate args in the API.
I might have to spend some time in figuring out how to make sure that when op2 gets register Zn, force op3 to get Zn+1 given that they are 2 different operands. I think for simplicity, lets add just the destructive version of SPLICE and open an issue to add constructive version post .NET 9.
See PRs:
ExtractVector - https://github.com/dotnet/runtime/pull/103567 Splice - https://github.com/dotnet/runtime/pull/103567