mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-24 13:49:30 +02:00
* Jcc reads the flags, this was not in the dat yet, resolves #9278
* disabled 4 ops variant of insertq for now git-svn-id: trunk@8133 -
This commit is contained in:
parent
f70a4a64a0
commit
447276c5bb
@ -1,2 +1,2 @@
|
|||||||
{ don't edit, this file is generated from x86ins.dat }
|
{ don't edit, this file is generated from x86ins.dat }
|
||||||
1380;
|
1379;
|
||||||
|
@ -386,7 +386,7 @@
|
|||||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||||
(Ch: (Ch_ROp1, Ch_WOp2, Ch_RFLAGS)),
|
(Ch: (Ch_ROp1, Ch_WOp2, Ch_RFLAGS)),
|
||||||
(Ch: (Ch_None, Ch_None, Ch_None)),
|
(Ch: (Ch_RFLAGS, Ch_None, Ch_None)),
|
||||||
(Ch: (Ch_RFLAGS, Ch_WOp1, Ch_None)),
|
(Ch: (Ch_RFLAGS, Ch_WOp1, Ch_None)),
|
||||||
(Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),
|
(Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),
|
||||||
(Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),
|
(Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),
|
||||||
|
@ -9604,13 +9604,6 @@
|
|||||||
code : #65#192#220#213#62#2#15#43#63;
|
code : #65#192#220#213#62#2#15#43#63;
|
||||||
flags : if_sse4
|
flags : if_sse4
|
||||||
),
|
),
|
||||||
(
|
|
||||||
opcode : A_INSERTQ;
|
|
||||||
ops : 4;
|
|
||||||
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate);
|
|
||||||
code : #76#2#15#120#63#253#18#253#19;
|
|
||||||
flags : if_sse4 or if_sb
|
|
||||||
),
|
|
||||||
(
|
(
|
||||||
opcode : A_INSERTQ;
|
opcode : A_INSERTQ;
|
||||||
ops : 2;
|
ops : 2;
|
||||||
|
@ -2151,7 +2151,7 @@ void \333\3\x0F\xA7\xE8 P6,CYRIX
|
|||||||
reg16|32|64,regmem \301\320\1\x0F\13\x40\110 P6,SM
|
reg16|32|64,regmem \301\320\1\x0F\13\x40\110 P6,SM
|
||||||
|
|
||||||
[Jcc]
|
[Jcc]
|
||||||
(Ch_None, Ch_None, Ch_None)
|
(Ch_RFLAGS, Ch_None, Ch_None)
|
||||||
imm8 \13\x70\50 8086
|
imm8 \13\x70\50 8086
|
||||||
imm16|32 \320\1\x0F\13\x80\64 386,PASS2
|
imm16|32 \320\1\x0F\13\x80\64 386,PASS2
|
||||||
imm|short \13\x70\50 8086
|
imm|short \13\x70\50 8086
|
||||||
@ -3262,8 +3262,9 @@ mem,xmmreg \101\300\334\325\76\2\x0F\x2B\77 SSE4 ;,S
|
|||||||
|
|
||||||
[INSERTQ]
|
[INSERTQ]
|
||||||
(Ch_All, Ch_None, Ch_None)
|
(Ch_All, Ch_None, Ch_None)
|
||||||
xmmreg,xmmreg,imm,imm \110\334\76\2\x0F\x78\77\375\22\375\23 SSE4,SB
|
|
||||||
xmmreg,xmmreg \110\334\76\2\x0F\x79\77 SSE4
|
xmmreg,xmmreg \110\334\76\2\x0F\x79\77 SSE4
|
||||||
|
; four operands are not possible yet
|
||||||
|
; xmmreg,xmmreg,imm,imm \110\334\76\2\x0F\x78\77\375\22\375\23 SSE4,SB
|
||||||
|
|
||||||
[EXTRQ]
|
[EXTRQ]
|
||||||
(Ch_All, Ch_None, Ch_None)
|
(Ch_All, Ch_None, Ch_None)
|
||||||
|
@ -178,12 +178,18 @@ unit cpupara;
|
|||||||
|
|
||||||
|
|
||||||
function tx86_64paramanager.ret_in_param(def : tdef;calloption : tproccalloption) : boolean;
|
function tx86_64paramanager.ret_in_param(def : tdef;calloption : tproccalloption) : boolean;
|
||||||
|
var
|
||||||
|
loc1,loc2:tcgloc;
|
||||||
begin
|
begin
|
||||||
if target_info.system=system_x86_64_win64 then
|
if target_info.system=system_x86_64_win64 then
|
||||||
result:=(calloption=pocall_safecall) or
|
result:=(calloption=pocall_safecall) or
|
||||||
(def.size>8) or not(def.size in [1,2,4,8])
|
(def.size>8) or not(def.size in [1,2,4,8])
|
||||||
else
|
else
|
||||||
result:=inherited ret_in_param(def,calloption);
|
begin
|
||||||
|
{ get memory class }
|
||||||
|
getvalueparaloc(p,loc1,loc2);
|
||||||
|
result:=loc1=LOC_REFERENCE;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
{ don't edit, this file is generated from x86ins.dat }
|
{ don't edit, this file is generated from x86ins.dat }
|
||||||
1379;
|
1378;
|
||||||
|
@ -386,7 +386,7 @@
|
|||||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||||
(Ch: (Ch_All, Ch_None, Ch_None)),
|
(Ch: (Ch_All, Ch_None, Ch_None)),
|
||||||
(Ch: (Ch_ROp1, Ch_WOp2, Ch_RFLAGS)),
|
(Ch: (Ch_ROp1, Ch_WOp2, Ch_RFLAGS)),
|
||||||
(Ch: (Ch_None, Ch_None, Ch_None)),
|
(Ch: (Ch_RFLAGS, Ch_None, Ch_None)),
|
||||||
(Ch: (Ch_RFLAGS, Ch_WOp1, Ch_None)),
|
(Ch: (Ch_RFLAGS, Ch_WOp1, Ch_None)),
|
||||||
(Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),
|
(Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),
|
||||||
(Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),
|
(Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),
|
||||||
|
@ -9597,13 +9597,6 @@
|
|||||||
code : #65#192#220#213#62#2#15#43#63;
|
code : #65#192#220#213#62#2#15#43#63;
|
||||||
flags : if_sse4
|
flags : if_sse4
|
||||||
),
|
),
|
||||||
(
|
|
||||||
opcode : A_INSERTQ;
|
|
||||||
ops : 4;
|
|
||||||
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate);
|
|
||||||
code : #76#2#15#120#63#253#18#253#19;
|
|
||||||
flags : if_sse4 or if_sb
|
|
||||||
),
|
|
||||||
(
|
(
|
||||||
opcode : A_INSERTQ;
|
opcode : A_INSERTQ;
|
||||||
ops : 2;
|
ops : 2;
|
||||||
|
Loading…
Reference in New Issue
Block a user