+ several internalerrors in case things go wrong

+ support for OS_M64 in several places

git-svn-id: trunk@15366 -
This commit is contained in:
Jonas Maebe 2010-06-03 19:09:27 +00:00
parent 27f6376fd4
commit 9e785ea553

View File

@ -196,6 +196,7 @@ unit cgx86;
result:=rg[R_MMREGISTER].getregister(list,R_SUBMMD);
OS_F32:
result:=rg[R_MMREGISTER].getregister(list,R_SUBMMS);
OS_M64,
OS_M128:
result:=rg[R_MMREGISTER].getregister(list,R_SUBMMWHOLE);
else
@ -1087,7 +1088,14 @@ unit cgx86;
(A_NONE,A_NONE,A_NONE,A_MOVQ,A_NONE),
(A_NONE,A_NONE,A_NONE,A_NONE,A_NONE));
begin
result:=convertop[fromsize,tosize];
if (fromsize in [low(convertop)..high(convertop)]) and
(tosize in [low(convertop)..high(convertop)]) then
result:=convertop[fromsize,tosize]
else if (fromsize=tosize) and
(fromsize=OS_M64) then
result:=A_MOVQ
else
internalerror(2010060104);
if result=A_NONE then
internalerror(200312205);
end;
@ -1106,6 +1114,8 @@ unit cgx86;
instr:=taicpu.op_reg_reg(A_MOVAPS,S_NO,reg1,reg2);
OS_F64:
instr:=taicpu.op_reg_reg(A_MOVAPD,S_NO,reg1,reg2);
OS_M64:
instr:=taicpu.op_reg_reg(A_MOVQ,S_NO,reg1,reg2);
else
internalerror(2006091201);
end
@ -1246,6 +1256,7 @@ unit cgx86;
//!!!
if (shuffle<>nil) and not(shufflescalar(shuffle)) then
begin
internalerror(2010060101);
end
else if (shuffle=nil) then
asmop:=opmm2asmop[1,size,op]
@ -1256,7 +1267,7 @@ unit cgx86;
if asmop=A_NOP then
begin
{ do vectorized and shuffle finally }
//!!!
internalerror(2010060102);
end;
end
else