mirror of https://github.com/red-prig/fpPS4.git
VOP1?12
This commit is contained in:
parent
2be22ac817
commit
dc5c0b9734
|
@ -128,6 +128,8 @@ type
|
|||
function OpSToS(src:PsrRegNode;rtype:TsrDataType;ppLine:PPspirvOp=nil):PsrRegNode;
|
||||
function OpFToF(src:PsrRegNode;rtype:TsrDataType;ppLine:PPspirvOp=nil):PsrRegNode;
|
||||
//
|
||||
function OpFloorTo(src:PsrRegNode;ppLine:PPspirvOp=nil):PsrRegNode;
|
||||
//
|
||||
procedure OpNot(dst:PsrRegSlot;src:PsrRegNode);
|
||||
procedure OpLogicalNot(dst:PsrRegSlot;src:PsrRegNode);
|
||||
procedure OpBitwiseOr(dst:PsrRegSlot;src0,src1:PsrRegNode);
|
||||
|
@ -1198,6 +1200,16 @@ end;
|
|||
|
||||
//
|
||||
|
||||
function TEmitOp.OpFloorTo(src:PsrRegNode;ppLine:PPspirvOp=nil):PsrRegNode;
|
||||
begin
|
||||
if (src=nil) then Exit(src);
|
||||
|
||||
Result:=NewReg(src^.dtype);
|
||||
_OpGlsl1(_get_line(ppLine),GlslOp.Floor,Result,src)
|
||||
end;
|
||||
|
||||
//
|
||||
|
||||
procedure TEmitOp.OpNot(dst:PsrRegSlot;src:PsrRegNode);
|
||||
begin
|
||||
Op1(Op.OpNot,dtUnknow,dst,src); //post type
|
||||
|
|
|
@ -22,6 +22,7 @@ type
|
|||
procedure emit_V_CVT_F32_F16;
|
||||
procedure emit_V_CVT_OFF_F32_I4;
|
||||
procedure emit_V_CVT_FLR_I32_F32;
|
||||
procedure emit_V_CVT_RPI_I32_F32;
|
||||
procedure emit_V_CVT_F32_UBYTE0;
|
||||
procedure emit_V_EXT_F32(OpId:DWORD);
|
||||
procedure emit_V_RSQ_CLAMP_F32;
|
||||
|
@ -114,15 +115,27 @@ procedure TEmit_VOP1.emit_V_CVT_FLR_I32_F32; //ConvertFloatToSignedInt(floor(vsr
|
|||
Var
|
||||
dst:PsrRegSlot;
|
||||
src:PsrRegNode;
|
||||
flr:PsrRegNode;
|
||||
begin
|
||||
dst:=get_vdst8(FSPI.VOP1.VDST);
|
||||
src:=fetch_ssrc9(FSPI.VOP1.SRC0,dtFloat32);
|
||||
|
||||
flr:=NewReg(dtFloat32);
|
||||
_OpGlsl1(line,GlslOp.Floor,flr,src);
|
||||
src:=OpFloorTo(src);
|
||||
|
||||
Op1(Op.OpConvertFToS,dtInt32,dst,flr);
|
||||
Op1(Op.OpConvertFToS,dtInt32,dst,src);
|
||||
end;
|
||||
|
||||
procedure TEmit_VOP1.emit_V_CVT_RPI_I32_F32; //ConvertFloatToSignedInt(floor(vsrc.f+0.5))
|
||||
Var
|
||||
dst:PsrRegSlot;
|
||||
src:PsrRegNode;
|
||||
begin
|
||||
dst:=get_vdst8(FSPI.VOP1.VDST);
|
||||
src:=fetch_ssrc9(FSPI.VOP1.SRC0,dtFloat32);
|
||||
|
||||
src:=OpFAddToS(src,0.5);
|
||||
src:=OpFloorTo(src);
|
||||
|
||||
Op1(Op.OpConvertFToS,dtInt32,dst,src);
|
||||
end;
|
||||
|
||||
procedure TEmit_VOP1.emit_V_CVT_F32_UBYTE0;
|
||||
|
@ -238,8 +251,11 @@ begin
|
|||
|
||||
V_CVT_FLR_I32_F32: emit_V_CVT_FLR_I32_F32;
|
||||
|
||||
V_CVT_RPI_I32_F32: emit_V_CVT_RPI_I32_F32;
|
||||
|
||||
V_CVT_F32_UBYTE0: emit_V_CVT_F32_UBYTE0;
|
||||
|
||||
|
||||
V_FRACT_F32: emit_V_EXT_F32(GlslOp.Fract);
|
||||
V_TRUNC_F32: emit_V_EXT_F32(GlslOp.Trunc);
|
||||
V_CEIL_F32 : emit_V_EXT_F32(GlslOp.Ceil);
|
||||
|
|
Loading…
Reference in New Issue