mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-15 23:19:50 +02:00
FpDebug: fix disassembler movq/vmovq Issue #40541 patch by Red_prig (Pavel)
This commit is contained in:
parent
17768091e5
commit
67069ef84b
@ -3309,9 +3309,9 @@ begin
|
|||||||
$7E: begin
|
$7E: begin
|
||||||
DecodeSIMD([soNone, so66, soF3]);
|
DecodeSIMD([soNone, so66, soF3]);
|
||||||
case SimdOpcode of
|
case SimdOpcode of
|
||||||
soNone: begin SetOpcode(OPmov, OPSx_d ); AddEy; AddPy; end;
|
soNone: begin SetOpcode(OPmov, OPS_d_q ); AddEy; AddPy; end;
|
||||||
so66: begin SetOpcode(OPmov, OPSx_d, True); AddEy; AddVy; end;
|
so66: begin SetOpcode(OPmov, OPS_d_q, True); AddEy; AddVy; end;
|
||||||
soF3: begin SetOpcode(OPmov, OPSx_q, True); AddVq; AddWq; end;
|
soF3: begin SetOpcode(OPmov, OPSx_q , True); AddVq; AddWq; end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
$7F: begin
|
$7F: begin
|
||||||
|
@ -248,6 +248,18 @@ begin
|
|||||||
TestDis('vroundsd xmm1,xmm2,xmm3,$07', #$C4#$E3#$69#$0B#$CB#$07, 'vroundsd xmm1,xmm2,xmm3,$07');
|
TestDis('vroundsd xmm1,xmm2,xmm3,$07', #$C4#$E3#$69#$0B#$CB#$07, 'vroundsd xmm1,xmm2,xmm3,$07');
|
||||||
TestDis('vroundss xmm1,xmm2,xmm3,$07', #$C4#$E3#$69#$0A#$CB#$07, 'vroundss xmm1,xmm2,xmm3,$07');
|
TestDis('vroundss xmm1,xmm2,xmm3,$07', #$C4#$E3#$69#$0A#$CB#$07, 'vroundss xmm1,xmm2,xmm3,$07');
|
||||||
|
|
||||||
|
TestDis('movd mm1,edi', #$0F#$6E#$CF, 'movd mm1,edi');
|
||||||
|
TestDis('movq mm1,rdi', #$48#$0F#$6E#$CF, 'movq mm1,rdi');
|
||||||
|
TestDis('movd edi,mm1', #$0F#$7E#$CF, 'movd edi,mm1');
|
||||||
|
TestDis('movq rdi,mm1', #$48#$0F#$7E#$CF, 'movq rdi,mm1');
|
||||||
|
TestDis('movd xmm1,edi', #$66#$0F#$6E#$CF, 'movd xmm1,edi');
|
||||||
|
TestDis('movq xmm1,rdi', #$66#$48#$0F#$6E#$CF, 'movq xmm1,rdi');
|
||||||
|
TestDis('movd edi,xmm1', #$66#$0F#$7E#$CF, 'movd edi,xmm1');
|
||||||
|
TestDis('movq rdi,xmm1', #$66#$48#$0F#$7E#$CF, 'movq rdi,xmm1');
|
||||||
|
TestDis('vmovd [rax],xmm0', #$C4#$E1#$79#$7E#$00, 'vmovd [rax],xmm0');
|
||||||
|
TestDis('vmovq [rax],xmm0', #$C4#$E1#$F9#$7E#$00, 'vmovq [rax],xmm0');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Process.NewMode := dm32;
|
Process.NewMode := dm32;
|
||||||
|
|
||||||
@ -355,10 +367,16 @@ begin
|
|||||||
TestDis('vroundsd xmm1,xmm2,xmm3,$07', #$C4#$E3#$69#$0B#$CB#$07, 'vroundsd xmm1,xmm2,xmm3,$07');
|
TestDis('vroundsd xmm1,xmm2,xmm3,$07', #$C4#$E3#$69#$0B#$CB#$07, 'vroundsd xmm1,xmm2,xmm3,$07');
|
||||||
TestDis('vroundss xmm1,xmm2,xmm3,$07', #$C4#$E3#$69#$0A#$CB#$07, 'vroundss xmm1,xmm2,xmm3,$07');
|
TestDis('vroundss xmm1,xmm2,xmm3,$07', #$C4#$E3#$69#$0A#$CB#$07, 'vroundss xmm1,xmm2,xmm3,$07');
|
||||||
|
|
||||||
|
TestDis('movd mm1,edi', #$0F#$6E#$CF, 'movd mm1,edi');
|
||||||
|
TestDis('movd edi,mm1', #$0F#$7E#$CF, 'movd edi,mm1');
|
||||||
|
TestDis('movd xmm1,edi', #$66#$0F#$6E#$CF, 'movd xmm1,edi');
|
||||||
|
TestDis('movd edi,xmm1', #$66#$0F#$7E#$CF, 'movd edi,xmm1');
|
||||||
|
TestDis('vmovd [eax],xmm0', #$C4#$E1#$79#$7E#$00, 'vmovd [eax],xmm0');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Process.NewMode := dm64;
|
Process.NewMode := dm64;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TestDis('push rax', #$50, 'push rax'); // push rax
|
TestDis('push rax', #$50, 'push rax'); // push rax
|
||||||
TestDis('push rcx', #$51, 'push rcx'); // push rcx
|
TestDis('push rcx', #$51, 'push rcx'); // push rcx
|
||||||
TestDis('push rdx', #$52, 'push rdx'); // push rdx
|
TestDis('push rdx', #$52, 'push rdx'); // push rdx
|
||||||
|
Loading…
Reference in New Issue
Block a user