working on new testmethods (memref-operands)

git-svn-id: branches/tg74/avx512-0037785@47654 -
This commit is contained in:
tg74 2020-12-01 05:43:17 +00:00
parent ae71ab7284
commit 84bf87b20d

View File

@ -1437,6 +1437,7 @@ procedure Tx86Instruction.SetInstructionOpsize;
var var
i: integer; i: integer;
bBroadcastMemRef: boolean; bBroadcastMemRef: boolean;
bExistMemRef: boolean;
begin begin
Result := False; Result := False;
@ -1450,7 +1451,12 @@ procedure Tx86Instruction.SetInstructionOpsize;
if bBroadcastMemRef then if bBroadcastMemRef then
begin begin
opsize := S_NO; case MemRefSizeBCST of
msbBCST32: opsize := S_L;
msbBCST64: opsize := S_Q;
else opsize := S_NO;
end;
result := true; result := true;
end end
else else
@ -1477,6 +1483,18 @@ procedure Tx86Instruction.SetInstructionOpsize;
result := true; result := true;
end; end;
end; end;
end
else if not(MemRefSize in [msiMemRegSize]) then
begin
//bExistMemRef:=false;
for i := 1 to ops do
if tx86operand(operands[1]).opr.typ in [OPR_REFERENCE,OPR_LOCAL] then
begin
opsize := tx86operand(operands[1]).opsize;
result := true;
break;
end;
end; end;
end; end;
end; end;
@ -1955,41 +1973,41 @@ begin
localscale,localgetoffset,localforceref); localscale,localgetoffset,localforceref);
ai.oper[i-1]^.localoper^.localsegment:=localsegment; ai.oper[i-1]^.localoper^.localsegment:=localsegment;
if MemRefInfo(opcode).ExistsSSEAVX then // if MemRefInfo(opcode).ExistsSSEAVX then
begin // begin
asize := 0; // asize := 0;
//
case operands[i].size of // case operands[i].size of
OS_32,OS_M32: if (operands[i].HasType) or // OS_32,OS_M32: if (operands[i].HasType) or
(MemRefInfo(opcode).MemRefSize = msiMem32) or // (MemRefInfo(opcode).MemRefSize = msiMem32) or
(MemRefInfo(opcode).MemRefSizeBCST = msbBCST32)
//(((tx86operand(operands[i]).vopext and OTVE_VECTOR_BCST) = OTVE_VECTOR_BCST) and
// (MemRefInfo(opcode).MemRefSizeBCST = msbBCST32) // (MemRefInfo(opcode).MemRefSizeBCST = msbBCST32)
//) // //(((tx86operand(operands[i]).vopext and OTVE_VECTOR_BCST) = OTVE_VECTOR_BCST) and
then // // (MemRefInfo(opcode).MemRefSizeBCST = msbBCST32)
asize:=OT_BITS32; // //)
OS_64,OS_M64: if (operands[i].HasType) or // then
(MemRefInfo(opcode).MemRefSize = msiMem64) or // asize:=OT_BITS32;
//(((tx86operand(operands[i]).vopext and OTVE_VECTOR_BCST) = OTVE_VECTOR_BCST) and // OS_64,OS_M64: if (operands[i].HasType) or
// (MemRefInfo(opcode).MemRefSizeBCST = msbBCST64) // (MemRefInfo(opcode).MemRefSize = msiMem64) or
//) then // //(((tx86operand(operands[i]).vopext and OTVE_VECTOR_BCST) = OTVE_VECTOR_BCST) and
(MemRefInfo(opcode).MemRefSizeBCST = msbBCST64) then // // (MemRefInfo(opcode).MemRefSizeBCST = msbBCST64)
asize:=OT_BITS64; // //) then
OS_M128: if (operands[i].HasType) or // (MemRefInfo(opcode).MemRefSizeBCST = msbBCST64) then
(MemRefInfo(opcode).MemRefSize = msiMem128) then // asize:=OT_BITS64;
asize:=OT_BITS128; // OS_M128: if (operands[i].HasType) or
OS_M256: if (operands[i].HasType) or // (MemRefInfo(opcode).MemRefSize = msiMem128) then
(MemRefInfo(opcode).MemRefSize = msiMem256) then //asize:=OT_BITS128;
asize:=OT_BITS256; // OS_M256: if (operands[i].HasType) or
OS_M512: if (operands[i].HasType) or // (MemRefInfo(opcode).MemRefSize = msiMem256) then
(MemRefInfo(opcode).MemRefSize = msiMem512) then //asize:=OT_BITS256;
asize:=OT_BITS512; // OS_M512: if (operands[i].HasType) or
else; // (MemRefInfo(opcode).MemRefSize = msiMem512) then
end; //asize:=OT_BITS512;
// else;
if asize<>0 then // end;
ai.oper[i-1]^.ot:=(ai.oper[i-1]^.ot and not OT_SIZE_MASK) or asize; //
end; // if asize<>0 then
// ai.oper[i-1]^.ot:=(ai.oper[i-1]^.ot and not OT_SIZE_MASK) or asize;
// end;
end; end;
OPR_REFERENCE: OPR_REFERENCE:
begin begin