mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-14 09:00:40 +02:00
Sadly this is a fairly substantial change that can't be broken in to something smaller. The gist of the problem is that most of the vector ops declared their own uint8_t RegisterSize and ElementSize variables in their structs. This was initially done because there were assumptions elsewhere in the source that sometimes mixed up the IROp member `Size` and `Elements` as sometimes meaning `Size` elements and `Elements` number of elements. Other times there was an assumption that `Size` was the full register size and `Elements` was the number of elements inside that size. ex: `Size`: 16, `Elements` 8 would sometimes be interpreted as i8v16 OR i128v8 These assumptions are now removed and we also save on average 16bits per vector operation. This is a necessary evil first step for upcoming IR considerations. This should have zero change on runtime behaviour and unit tests confirm that.