On 4/18/22 21:45, Paul Brook wrote:
Massively too large for a single patch, I'm afraid. This needs
to be split, probably into at least twenty patches, which each
are a reviewable chunk of code that does one coherent thing.
Hmm, I'mm see what I can do.

Unfortunately the table driven decoding means that going from two to
three operands tends to be a bit all or nothing just to get the thing
to compile.

Hi Paul, welcome back and thanks for this huge work.  It should be
possible at least to split the patch as follows (at least that's
what _I_ would do in order to review it):

* mechanical changes to translate.c

-    [0x10] = { SSE_SPECIAL, SSE_SPECIAL, SSE_SPECIAL, SSE_SPECIAL }, /* 
movups, movupd, movss, movsd */
+    [0x10] = SSE_SPECIAL, /* movups, movupd, movss, movsd */
+    [0x11] = SSE_SPECIAL, /* movups, movupd, movss, movsd */
+    [0x12] = SSE_SPECIAL, /* movlps, movlpd, movsldup, movddup */
+    [0x13] = SSE_SPECIAL, /* movlps, movlpd */

* mechanical introduction of XMM_OFFSET()

* non-AVX/VEX changes (e.g. SSE_OPF_3DNOW)

* decoding fixes for SSE instructions (CHECK_NO_VEX)

* fix zeroing of high bits

* 3-operand decoding and helpers

* AVX/AVX2 support (existing instructions)

* AVX/AVX2 support (new instructions)

I can do some of the work too since I was planning to do this
anyway (but have hardly started yet).

Paolo

Reply via email to