mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-06 14:58:25 +02:00
* fixed 64 bit check for "movd xmmreg, mem" and "movd mem, xmmreg" (patch by
Jasper Neumann, mantis #13294) * moved "reg64, xmmreg" and "xmmreg, reg64" combo's from movd to movq (movd is always 32 bit) git-svn-id: trunk@15538 -
This commit is contained in:
parent
36e4f3d38b
commit
d3976c858b
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -10338,6 +10338,7 @@ tests/webtbs/tw13210.pp svneol=native#text/plain
|
|||||||
tests/webtbs/tw1323.pp svneol=native#text/plain
|
tests/webtbs/tw1323.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw1327.pp svneol=native#text/plain
|
tests/webtbs/tw1327.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw13281.pp svneol=native#text/plain
|
tests/webtbs/tw13281.pp svneol=native#text/plain
|
||||||
|
tests/webtbs/tw13294.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw13307.pp svneol=native#text/plain
|
tests/webtbs/tw13307.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw1331.pp svneol=native#text/plain
|
tests/webtbs/tw1331.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw13313.pp svneol=native#text/plain
|
tests/webtbs/tw13313.pp svneol=native#text/plain
|
||||||
|
@ -3157,32 +3157,18 @@
|
|||||||
code : #1#102#211#2#15#126#65;
|
code : #1#102#211#2#15#126#65;
|
||||||
flags : if_willamette or if_sse2
|
flags : if_willamette or if_sse2
|
||||||
),
|
),
|
||||||
(
|
|
||||||
opcode : A_MOVD;
|
|
||||||
ops : 2;
|
|
||||||
optypes : (ot_xmmreg,ot_reg64,ot_none);
|
|
||||||
code : #1#102#214#2#15#110#72;
|
|
||||||
flags : if_willamette or if_sse2
|
|
||||||
),
|
|
||||||
(
|
|
||||||
opcode : A_MOVD;
|
|
||||||
ops : 2;
|
|
||||||
optypes : (ot_reg64,ot_xmmreg,ot_none);
|
|
||||||
code : #1#102#214#2#15#126#65;
|
|
||||||
flags : if_willamette or if_sse2
|
|
||||||
),
|
|
||||||
(
|
(
|
||||||
opcode : A_MOVD;
|
opcode : A_MOVD;
|
||||||
ops : 2;
|
ops : 2;
|
||||||
optypes : (ot_memory,ot_xmmreg,ot_none);
|
optypes : (ot_memory,ot_xmmreg,ot_none);
|
||||||
code : #1#102#214#2#15#126#65;
|
code : #1#102#213#2#15#126#65;
|
||||||
flags : if_willamette or if_sse2
|
flags : if_willamette or if_sse2
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
opcode : A_MOVD;
|
opcode : A_MOVD;
|
||||||
ops : 2;
|
ops : 2;
|
||||||
optypes : (ot_xmmreg,ot_memory,ot_none);
|
optypes : (ot_xmmreg,ot_memory,ot_none);
|
||||||
code : #1#102#214#2#15#110#72;
|
code : #1#102#213#2#15#110#72;
|
||||||
flags : if_willamette or if_sse2
|
flags : if_willamette or if_sse2
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -3241,6 +3227,20 @@
|
|||||||
code : #219#193#2#15#126#72;
|
code : #219#193#2#15#126#72;
|
||||||
flags : if_willamette or if_sse2
|
flags : if_willamette or if_sse2
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
opcode : A_MOVQ;
|
||||||
|
ops : 2;
|
||||||
|
optypes : (ot_xmmreg,ot_reg64,ot_none);
|
||||||
|
code : #1#102#214#2#15#110#72;
|
||||||
|
flags : if_willamette or if_sse2
|
||||||
|
),
|
||||||
|
(
|
||||||
|
opcode : A_MOVQ;
|
||||||
|
ops : 2;
|
||||||
|
optypes : (ot_reg64,ot_xmmreg,ot_none);
|
||||||
|
code : #1#102#214#2#15#126#65;
|
||||||
|
flags : if_willamette or if_sse2
|
||||||
|
),
|
||||||
(
|
(
|
||||||
opcode : A_MOVSB;
|
opcode : A_MOVSB;
|
||||||
ops : 0;
|
ops : 0;
|
||||||
|
@ -3108,32 +3108,18 @@
|
|||||||
code : #1#102#211#2#15#126#65;
|
code : #1#102#211#2#15#126#65;
|
||||||
flags : if_willamette or if_sse2
|
flags : if_willamette or if_sse2
|
||||||
),
|
),
|
||||||
(
|
|
||||||
opcode : A_MOVD;
|
|
||||||
ops : 2;
|
|
||||||
optypes : (ot_xmmreg,ot_reg64,ot_none);
|
|
||||||
code : #1#102#214#2#15#110#72;
|
|
||||||
flags : if_willamette or if_sse2
|
|
||||||
),
|
|
||||||
(
|
|
||||||
opcode : A_MOVD;
|
|
||||||
ops : 2;
|
|
||||||
optypes : (ot_reg64,ot_xmmreg,ot_none);
|
|
||||||
code : #1#102#214#2#15#126#65;
|
|
||||||
flags : if_willamette or if_sse2
|
|
||||||
),
|
|
||||||
(
|
(
|
||||||
opcode : A_MOVD;
|
opcode : A_MOVD;
|
||||||
ops : 2;
|
ops : 2;
|
||||||
optypes : (ot_memory,ot_xmmreg,ot_none);
|
optypes : (ot_memory,ot_xmmreg,ot_none);
|
||||||
code : #1#102#214#2#15#126#65;
|
code : #1#102#213#2#15#126#65;
|
||||||
flags : if_willamette or if_sse2
|
flags : if_willamette or if_sse2
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
opcode : A_MOVD;
|
opcode : A_MOVD;
|
||||||
ops : 2;
|
ops : 2;
|
||||||
optypes : (ot_xmmreg,ot_memory,ot_none);
|
optypes : (ot_xmmreg,ot_memory,ot_none);
|
||||||
code : #1#102#214#2#15#110#72;
|
code : #1#102#213#2#15#110#72;
|
||||||
flags : if_willamette or if_sse2
|
flags : if_willamette or if_sse2
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -3192,6 +3178,20 @@
|
|||||||
code : #219#193#2#15#126#72;
|
code : #219#193#2#15#126#72;
|
||||||
flags : if_willamette or if_sse2
|
flags : if_willamette or if_sse2
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
opcode : A_MOVQ;
|
||||||
|
ops : 2;
|
||||||
|
optypes : (ot_xmmreg,ot_reg64,ot_none);
|
||||||
|
code : #1#102#214#2#15#110#72;
|
||||||
|
flags : if_willamette or if_sse2
|
||||||
|
),
|
||||||
|
(
|
||||||
|
opcode : A_MOVQ;
|
||||||
|
ops : 2;
|
||||||
|
optypes : (ot_reg64,ot_xmmreg,ot_none);
|
||||||
|
code : #1#102#214#2#15#126#65;
|
||||||
|
flags : if_willamette or if_sse2
|
||||||
|
),
|
||||||
(
|
(
|
||||||
opcode : A_MOVSB;
|
opcode : A_MOVSB;
|
||||||
ops : 0;
|
ops : 0;
|
||||||
|
20
tests/webtbs/tw13294.pp
Normal file
20
tests/webtbs/tw13294.pp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{ %cpu=i386,x86_64 }
|
||||||
|
{ %opt=-Cg- }
|
||||||
|
|
||||||
|
program movdtest;
|
||||||
|
var
|
||||||
|
a: int64 = 128133443 or (int64(123455) shl 32);
|
||||||
|
b: int64;
|
||||||
|
begin
|
||||||
|
asm
|
||||||
|
{$ifdef i386}
|
||||||
|
movd a, %xmm0
|
||||||
|
movd %xmm0, b
|
||||||
|
{$else}
|
||||||
|
movd a(%rip), %xmm0
|
||||||
|
movd %xmm0, b(%rip)
|
||||||
|
{$endif}
|
||||||
|
end;
|
||||||
|
if b<>128133443 then
|
||||||
|
halt(1);
|
||||||
|
end.
|
Loading…
Reference in New Issue
Block a user