View Single Post
Old 18th September 2013, 12:00 PM
MarathonMan's Avatar
MarathonMan MarathonMan is offline
Alpha Tester
Project Supporter
Senior Member
Join Date: Jan 2013
Posts: 454

Originally Posted by BatCat View Post
What an exciting turn of events it will be if and when I can determine how to do the shuffle outside the RSP vector opcodes in the main RSP execute loop under the VU block, so that I can merge these redundant-ass functions back into one and save all that space!
You can't. Just simply just cannot do this without using either SSSE3 or jump tables to direct to the specific kind of shuffle. `pshufXw` takes an imm8 as it's operand that instructs it how to shuffle. The only possible way that you could inline it is by doing dynamic recompilation and generating the opcode at runtime, along with the desired RSP function, and calling that. Short of that, however, there's no way to control the immediate value of the SSE2 shuffle intrinsic without using some form of indirection in a static binary. This is why I require SSSE3. If this were not the case, I'd happily support SSE2 instead of SSSE3.

Last edited by MarathonMan; 18th September 2013 at 12:04 PM.
Reply With Quote