-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[RyuJIT] Refactor the codegen/emitter for MOVD/MODQ #9973
Comments
What do you mean? It sounds like a contradiction, either it can generate based on different emit-size or it can't because there are only 2 valid sizes. |
For example, |
Seems to be working fine for me: getEmitter()->emitIns_R_R(INS_mov_i2xmm, EA_4BYTE, REG_XMM6, REG_RDX);
getEmitter()->emitIns_R_R(INS_mov_i2xmm, EA_8BYTE, REG_XMM5, REG_RBX);
getEmitter()->emitIns_R_R(INS_mov_xmm2i, EA_4BYTE, REG_XMM4, REG_RCX);
getEmitter()->emitIns_R_R(INS_mov_xmm2i, EA_8BYTE, REG_XMM3, REG_RAX); generates C4E1796EF2 vmovd xmm6, edx
C4E1F96EEB vmovd xmm5, rbx
C4E1797EE1 vmovd ecx, xmm4
C4E1F97ED8 vmovd rax, xmm3 |
@mikedn Oh, you are right! I used the wrong emit-size in dotnet/coreclr#17030 (should be |
The codegen/emitter of
MOVD
/MODQ
is very messy in the current backend.It has several "instructions" to generate
MOVD
/MODQ
(e.g.,mov_i2xmm
,mov_xmm2i
,movd
, andmovd
), but the codegen is not consistent.For example,
mov_i2xmm
can generateMOVD
andMOVQ
based on different emit-size, but it just accepts some of the valid sizes.cc @CarolEidt @tannergooding
The text was updated successfully, but these errors were encountered: