Update pssl parser

This commit is contained in:
red-prig 2021-12-21 21:02:46 +03:00
parent 172817ae9c
commit f70d0e2ed3
1 changed files with 220 additions and 12 deletions

View File

@ -723,9 +723,98 @@ const
BUFFER_STORE_DWORDX3 =$1F;
//MIMG
IMAGE_LOAD_MIP=1;
IMAGE_STORE =8;
IMAGE_SAMPLE =$20;
IMAGE_LOAD =$00;
IMAGE_LOAD_MIP =$01;
IMAGE_LOAD_PCK =$02;
IMAGE_LOAD_PCK_SGN =$03;
IMAGE_LOAD_MIP_PCK =$04;
IMAGE_LOAD_MIP_PCK_SGN=$05;
IMAGE_STORE =$08;
IMAGE_STORE_MIP =$09;
IMAGE_STORE_PCK =$0A;
IMAGE_STORE_MIP_PCK =$0B;
IMAGE_GET_RESINFO =$0E;
IMAGE_ATOMIC_SWAP =$0F;
IMAGE_ATOMIC_CMPSWAP =$10;
IMAGE_ATOMIC_ADD =$11;
IMAGE_ATOMIC_SUB =$12;
IMAGE_ATOMIC_SMIN =$14;
IMAGE_ATOMIC_UMIN =$15;
IMAGE_ATOMIC_SMAX =$16;
IMAGE_ATOMIC_UMAX =$17;
IMAGE_ATOMIC_AND =$18;
IMAGE_ATOMIC_OR =$19;
IMAGE_ATOMIC_XOR =$1A;
IMAGE_ATOMIC_INC =$1B;
IMAGE_ATOMIC_DEC =$1C;
IMAGE_ATOMIC_FCMPSWAP =$1D;
IMAGE_ATOMIC_FMIN =$1E;
IMAGE_ATOMIC_FMAX =$1F;
IMAGE_SAMPLE =$20;
IMAGE_SAMPLE_CL =$21;
IMAGE_SAMPLE_D =$22;
IMAGE_SAMPLE_D_CL =$23;
IMAGE_SAMPLE_L =$24;
IMAGE_SAMPLE_B =$25;
IMAGE_SAMPLE_B_CL =$26;
IMAGE_SAMPLE_LZ =$27;
IMAGE_SAMPLE_C =$28;
IMAGE_SAMPLE_C_CL =$29;
IMAGE_SAMPLE_C_D =$2A;
IMAGE_SAMPLE_C_D_CL =$2B;
IMAGE_SAMPLE_C_L =$2C;
IMAGE_SAMPLE_C_B =$2D;
IMAGE_SAMPLE_C_B_CL =$2E;
IMAGE_SAMPLE_C_LZ =$2F;
IMAGE_SAMPLE_O =$30;
IMAGE_SAMPLE_CL_O =$31;
IMAGE_SAMPLE_D_O =$32;
IMAGE_SAMPLE_D_CL_O =$33;
IMAGE_SAMPLE_L_O =$34;
IMAGE_SAMPLE_B_O =$35;
IMAGE_SAMPLE_B_CL_O =$36;
IMAGE_SAMPLE_LZ_O =$37;
IMAGE_SAMPLE_C_O =$38;
IMAGE_SAMPLE_C_CL_O =$39;
IMAGE_SAMPLE_C_D_O =$3A;
IMAGE_SAMPLE_C_D_CL_O =$3B;
IMAGE_SAMPLE_C_L_O =$3C;
IMAGE_SAMPLE_C_B_O =$3D;
IMAGE_SAMPLE_C_B_CL_O =$3E;
IMAGE_SAMPLE_C_LZ_O =$3F;
IMAGE_GATHER4 =$40;
IMAGE_GATHER4_CL =$41;
IMAGE_GATHER4_L =$42;
IMAGE_GATHER4_B =$43;
IMAGE_GATHER4_B_CL =$44;
IMAGE_GATHER4_LZ =$45;
IMAGE_GATHER4_C =$46;
IMAGE_GATHER4_C_CL =$47;
IMAGE_GATHER4_C_L =$4C;
IMAGE_GATHER4_C_B =$4D;
IMAGE_GATHER4_C_B_CL =$4E;
IMAGE_GATHER4_C_LZ =$4F;
IMAGE_GATHER4_O =$50;
IMAGE_GATHER4_CL_O =$51;
IMAGE_GATHER4_L_O =$54;
IMAGE_GATHER4_B_O =$55;
IMAGE_GATHER4_B_CL_O =$56;
IMAGE_GATHER4_LZ_O =$57;
IMAGE_GATHER4_C_O =$58;
IMAGE_GATHER4_C_CL_O =$59;
IMAGE_GATHER4_C_L_O =$5C;
IMAGE_GATHER4_C_B_O =$5D;
IMAGE_GATHER4_C_B_CL_O=$5E;
IMAGE_GATHER4_C_LZ_O =$5F;
IMAGE_GET_LOD =$60;
IMAGE_SAMPLE_CD =$68;
IMAGE_SAMPLE_CD_CL =$69;
IMAGE_SAMPLE_C_CD =$6A;
IMAGE_SAMPLE_C_CD_CL =$6B;
IMAGE_SAMPLE_CD_O =$6C;
IMAGE_SAMPLE_CD_CL_O =$6D;
IMAGE_SAMPLE_C_CD_O =$6E;
IMAGE_SAMPLE_C_CD_CL_O=$6F;
type
TSOP2=bitpacked record
@ -2608,22 +2697,141 @@ end;
procedure _print_MIMG(Var SPI:TSPI);
begin
Case SPI.MIMG.OP of
IMAGE_LOAD_MIP:Write('IMAGE_LOAD_MIP');
IMAGE_STORE :Write('IMAGE_STORE');
IMAGE_SAMPLE :Write('IMAGE_SAMPLE');
IMAGE_LOAD :Write('IMAGE_LOAD');
IMAGE_LOAD_MIP :Write('IMAGE_LOAD_MIP');
IMAGE_LOAD_PCK :Write('IMAGE_LOAD_PCK');
IMAGE_LOAD_PCK_SGN :Write('IMAGE_LOAD_PCK_SGN');
IMAGE_LOAD_MIP_PCK :Write('IMAGE_LOAD_MIP_PCK');
IMAGE_LOAD_MIP_PCK_SGN:Write('IMAGE_LOAD_MIP_PCK_SGN');
IMAGE_STORE :Write('IMAGE_STORE');
IMAGE_STORE_MIP :Write('IMAGE_STORE_MIP');
IMAGE_STORE_PCK :Write('IMAGE_STORE_PCK');
IMAGE_STORE_MIP_PCK :Write('IMAGE_STORE_MIP_PCK');
IMAGE_GET_RESINFO :Write('IMAGE_GET_RESINFO');
IMAGE_ATOMIC_SWAP :Write('IMAGE_ATOMIC_SWAP');
IMAGE_ATOMIC_CMPSWAP :Write('IMAGE_ATOMIC_CMPSWAP');
IMAGE_ATOMIC_ADD :Write('IMAGE_ATOMIC_ADD');
IMAGE_ATOMIC_SUB :Write('IMAGE_ATOMIC_SUB');
IMAGE_ATOMIC_SMIN :Write('IMAGE_ATOMIC_SMIN');
IMAGE_ATOMIC_UMIN :Write('IMAGE_ATOMIC_UMIN');
IMAGE_ATOMIC_SMAX :Write('IMAGE_ATOMIC_SMAX');
IMAGE_ATOMIC_UMAX :Write('IMAGE_ATOMIC_UMAX');
IMAGE_ATOMIC_AND :Write('IMAGE_ATOMIC_AND');
IMAGE_ATOMIC_OR :Write('IMAGE_ATOMIC_OR');
IMAGE_ATOMIC_XOR :Write('IMAGE_ATOMIC_XOR');
IMAGE_ATOMIC_INC :Write('IMAGE_ATOMIC_INC');
IMAGE_ATOMIC_DEC :Write('IMAGE_ATOMIC_DEC');
IMAGE_ATOMIC_FCMPSWAP :Write('IMAGE_ATOMIC_FCMPSWAP');
IMAGE_ATOMIC_FMIN :Write('IMAGE_ATOMIC_FMIN');
IMAGE_ATOMIC_FMAX :Write('IMAGE_ATOMIC_FMAX');
IMAGE_SAMPLE :Write('IMAGE_SAMPLE');
IMAGE_SAMPLE_CL :Write('IMAGE_SAMPLE_CL');
IMAGE_SAMPLE_D :Write('IMAGE_SAMPLE_D');
IMAGE_SAMPLE_D_CL :Write('IMAGE_SAMPLE_D_CL');
IMAGE_SAMPLE_L :Write('IMAGE_SAMPLE_L');
IMAGE_SAMPLE_B :Write('IMAGE_SAMPLE_B');
IMAGE_SAMPLE_B_CL :Write('IMAGE_SAMPLE_B_CL');
IMAGE_SAMPLE_LZ :Write('IMAGE_SAMPLE_LZ');
IMAGE_SAMPLE_C :Write('IMAGE_SAMPLE_C');
IMAGE_SAMPLE_C_CL :Write('IMAGE_SAMPLE_C_CL');
IMAGE_SAMPLE_C_D :Write('IMAGE_SAMPLE_C_D');
IMAGE_SAMPLE_C_D_CL :Write('IMAGE_SAMPLE_C_D_CL');
IMAGE_SAMPLE_C_L :Write('IMAGE_SAMPLE_C_L');
IMAGE_SAMPLE_C_B :Write('IMAGE_SAMPLE_C_B');
IMAGE_SAMPLE_C_B_CL :Write('IMAGE_SAMPLE_C_B_CL');
IMAGE_SAMPLE_C_LZ :Write('IMAGE_SAMPLE_C_LZ');
IMAGE_SAMPLE_O :Write('IMAGE_SAMPLE_O');
IMAGE_SAMPLE_CL_O :Write('IMAGE_SAMPLE_CL_O');
IMAGE_SAMPLE_D_O :Write('IMAGE_SAMPLE_D_O');
IMAGE_SAMPLE_D_CL_O :Write('IMAGE_SAMPLE_D_CL_O');
IMAGE_SAMPLE_L_O :Write('IMAGE_SAMPLE_L_O');
IMAGE_SAMPLE_B_O :Write('IMAGE_SAMPLE_B_O');
IMAGE_SAMPLE_B_CL_O :Write('IMAGE_SAMPLE_B_CL_O');
IMAGE_SAMPLE_LZ_O :Write('IMAGE_SAMPLE_LZ_O');
IMAGE_SAMPLE_C_O :Write('IMAGE_SAMPLE_C_O');
IMAGE_SAMPLE_C_CL_O :Write('IMAGE_SAMPLE_C_CL_O');
IMAGE_SAMPLE_C_D_O :Write('IMAGE_SAMPLE_C_D_O');
IMAGE_SAMPLE_C_D_CL_O :Write('IMAGE_SAMPLE_C_D_CL_O');
IMAGE_SAMPLE_C_L_O :Write('IMAGE_SAMPLE_C_L_O');
IMAGE_SAMPLE_C_B_O :Write('IMAGE_SAMPLE_C_B_O');
IMAGE_SAMPLE_C_B_CL_O :Write('IMAGE_SAMPLE_C_B_CL_O');
IMAGE_SAMPLE_C_LZ_O :Write('IMAGE_SAMPLE_C_LZ_O');
IMAGE_GATHER4 :Write('IMAGE_GATHER4');
IMAGE_GATHER4_CL :Write('IMAGE_GATHER4_CL');
IMAGE_GATHER4_L :Write('IMAGE_GATHER4_L');
IMAGE_GATHER4_B :Write('IMAGE_GATHER4_B');
IMAGE_GATHER4_B_CL :Write('IMAGE_GATHER4_B_CL');
IMAGE_GATHER4_LZ :Write('IMAGE_GATHER4_LZ');
IMAGE_GATHER4_C :Write('IMAGE_GATHER4_C');
IMAGE_GATHER4_C_CL :Write('IMAGE_GATHER4_C_CL');
IMAGE_GATHER4_C_L :Write('IMAGE_GATHER4_C_L');
IMAGE_GATHER4_C_B :Write('IMAGE_GATHER4_C_B');
IMAGE_GATHER4_C_B_CL :Write('IMAGE_GATHER4_C_B_CL');
IMAGE_GATHER4_C_LZ :Write('IMAGE_GATHER4_C_LZ');
IMAGE_GATHER4_O :Write('IMAGE_GATHER4_O');
IMAGE_GATHER4_CL_O :Write('IMAGE_GATHER4_CL_O');
IMAGE_GATHER4_L_O :Write('IMAGE_GATHER4_L_O');
IMAGE_GATHER4_B_O :Write('IMAGE_GATHER4_B_O');
IMAGE_GATHER4_B_CL_O :Write('IMAGE_GATHER4_B_CL_O');
IMAGE_GATHER4_LZ_O :Write('IMAGE_GATHER4_LZ_O');
IMAGE_GATHER4_C_O :Write('IMAGE_GATHER4_C_O');
IMAGE_GATHER4_C_CL_O :Write('IMAGE_GATHER4_C_CL_O');
IMAGE_GATHER4_C_L_O :Write('IMAGE_GATHER4_C_L_O');
IMAGE_GATHER4_C_B_O :Write('IMAGE_GATHER4_C_B_O');
IMAGE_GATHER4_C_B_CL_O:Write('IMAGE_GATHER4_C_B_CL_O');
IMAGE_GATHER4_C_LZ_O :Write('IMAGE_GATHER4_C_LZ_O');
IMAGE_GET_LOD :Write('IMAGE_GET_LOD');
IMAGE_SAMPLE_CD :Write('IMAGE_SAMPLE_CD');
IMAGE_SAMPLE_CD_CL :Write('IMAGE_SAMPLE_CD_CL');
IMAGE_SAMPLE_C_CD :Write('IMAGE_SAMPLE_C_CD');
IMAGE_SAMPLE_C_CD_CL :Write('IMAGE_SAMPLE_C_CD_CL');
IMAGE_SAMPLE_CD_O :Write('IMAGE_SAMPLE_CD_O');
IMAGE_SAMPLE_CD_CL_O :Write('IMAGE_SAMPLE_CD_CL_O');
IMAGE_SAMPLE_C_CD_O :Write('IMAGE_SAMPLE_C_CD_O');
IMAGE_SAMPLE_C_CD_CL_O:Write('IMAGE_SAMPLE_C_CD_CL_O');
else
Write('MIMG?',SPI.MIMG.OP);
end;
Write(' ');
_print_vdst8(SPI.MIMG.VDATA);
Write(', ');
_print_vdst8(SPI.MIMG.VADDR);
Write(', ');
Case PopCnt(SPI.MIMG.DMASK) of
2:begin
Write('v[',SPI.MIMG.VDATA,':',SPI.MIMG.VDATA+1,']');
Write(', ');
Write('v[',SPI.MIMG.VADDR,':',SPI.MIMG.VADDR+1,']');
end;
3:begin
Write('v[',SPI.MIMG.VDATA,':',SPI.MIMG.VDATA+2,']');
Write(', ');
Write('v[',SPI.MIMG.VADDR,':',SPI.MIMG.VADDR+2,']');
end;
4:begin
Write('v[',SPI.MIMG.VDATA,':',SPI.MIMG.VDATA+3,']');
Write(', ');
Write('v[',SPI.MIMG.VADDR,':',SPI.MIMG.VADDR+3,']');
end;
else
begin
_print_vdst8(SPI.MIMG.VDATA);
Write(', ');
_print_vdst8(SPI.MIMG.VADDR);
end;
end;
Write('s[',SPI.MIMG.SRSRC*8,':',SPI.MIMG.SRSRC*8+7,']');
Write(', ');
Write('s[',SPI.MIMG.SSAMP*4,':',SPI.MIMG.SSAMP*4+3,']');
Write('s[',SPI.MIMG.SRSRC*4,':',SPI.MIMG.SRSRC*4+7,']');
Case SPI.MIMG.OP of
IMAGE_GATHER4..IMAGE_SAMPLE_C_CD_CL_O:
begin
Write(', ');
Write('s[',SPI.MIMG.SSAMP*4,':',SPI.MIMG.SSAMP*4+3,']');
end;
end;
Write(' dmask:0x',HexStr(SPI.MIMG.DMASK,1));
Writeln;
end;