From 694fe0e071a92ee5dabd05ef421bb524739e36c7 Mon Sep 17 00:00:00 2001 From: Pavel <68122101+red-prig@users.noreply.github.com> Date: Thu, 2 May 2024 17:59:55 +0300 Subject: [PATCH] + --- rtl/x86_jit.pas | 47 +++++++++++++++--------------------- sys/jit/kern_jit_ops_avx.pas | 6 +++-- vulkan/vRegs2Vulkan.pas | 5 ++-- 3 files changed, 26 insertions(+), 32 deletions(-) diff --git a/rtl/x86_jit.pas b/rtl/x86_jit.pas index 5460995b..12806562 100644 --- a/rtl/x86_jit.pas +++ b/rtl/x86_jit.pas @@ -3736,6 +3736,7 @@ begin end; Vex.rexW:=False; + if not (not_prefix in desc.opt) then if (mreg.AMemSize=os64) then begin Vex.rexW:=True; @@ -3818,6 +3819,7 @@ begin end; Vex.rexW:=False; + if not (not_prefix in desc.opt) then if (mreg.AMemSize=os64) then begin Vex.rexW:=True; @@ -3886,20 +3888,19 @@ begin ji:=default_jit_instruction; - Vex.Length:=0; - Vex.rexW:=False; - if (size=os0) then begin size:=reg0.ASize; end; + Vex.Length:=0; if not (not_vex_len in desc.opt) then if (size=os256) then begin Vex.Length:=1; end; + Vex.rexW:=False; if not (not_prefix in desc.opt) then if (size=os64) then begin @@ -3963,20 +3964,19 @@ begin ji:=default_jit_instruction; - Vex.Length:=0; - Vex.rexW:=False; - if (mreg.AMemSize=os0) then begin mreg.AMemSize:=reg.ASize; end; + Vex.Length:=0; if not (not_vex_len in desc.opt) then if (mreg.AMemSize=os256) then begin Vex.Length:=1; end; + Vex.rexW:=False; if not (not_prefix in desc.opt) then if (mreg.AMemSize=os64) then begin @@ -4039,20 +4039,19 @@ begin ji:=default_jit_instruction; - Vex.Length:=0; - Vex.rexW:=False; - if (size=os0) then begin size:=reg0.ASize; end; + Vex.Length:=0; if not (not_vex_len in desc.opt) then if (size=os256) then begin Vex.Length:=1; end; + Vex.rexW:=False; if not (not_prefix in desc.opt) then if (size=os64) then begin @@ -4110,20 +4109,19 @@ begin ji:=default_jit_instruction; - Vex.Length:=0; - Vex.rexW:=False; - if (mreg.AMemSize=os0) then begin mreg.AMemSize:=reg0.ASize; end; + Vex.Length:=0; if not (not_vex_len in desc.opt) then if (mreg.AMemSize=os256) then begin Vex.Length:=1; end; + Vex.rexW:=False; if not (not_prefix in desc.opt) then if (mreg.AMemSize=os64) then begin @@ -4204,20 +4202,19 @@ begin ji:=default_jit_instruction; - Vex.Length:=0; - Vex.rexW:=False; - if (mreg.AMemSize=os0) then begin mreg.AMemSize:=reg0.ASize; end; + Vex.Length:=0; if not (not_vex_len in desc.opt) then if (mreg.AMemSize=os256) then begin Vex.Length:=1; end; + Vex.rexW:=False; if not (not_prefix in desc.opt) then if (mreg.AMemSize=os64) then begin @@ -4301,20 +4298,19 @@ begin ji:=default_jit_instruction; - Vex.Length:=0; - Vex.rexW:=False; - if (size=os0) then begin size:=reg0.ASize; end; + Vex.Length:=0; if not (not_vex_len in desc.opt) then if (size=os256) then begin Vex.Length:=1; end; + Vex.rexW:=False; if not (not_prefix in desc.opt) then if (size=os64) then begin @@ -4379,20 +4375,19 @@ begin ji:=default_jit_instruction; - Vex.Length:=0; - Vex.rexW:=False; - if (size=os0) then begin size:=reg0.ASize; end; + Vex.Length:=0; if not (not_vex_len in desc.opt) then if (size=os256) then begin Vex.Length:=1; end; + Vex.rexW:=False; if not (not_prefix in desc.opt) then if (size=os64) then begin @@ -4453,20 +4448,19 @@ begin ji:=default_jit_instruction; - Vex.Length:=0; - Vex.rexW:=False; - if (size=os0) then begin size:=reg0.ASize; end; + Vex.Length:=0; if not (not_vex_len in desc.opt) then if (size=os256) then begin Vex.Length:=1; end; + Vex.rexW:=False; if not (not_prefix in desc.opt) then if (size=os64) then begin @@ -4518,20 +4512,19 @@ begin ji:=default_jit_instruction; - Vex.Length:=0; - Vex.rexW:=False; - if (mreg.AMemSize=os0) then begin mreg.AMemSize:=reg.ASize; end; + Vex.Length:=0; if not (not_vex_len in desc.opt) then if (mreg.AMemSize=os256) then begin Vex.Length:=1; end; + Vex.rexW:=False; if not (not_prefix in desc.opt) then if (mreg.AMemSize=os64) then begin diff --git a/sys/jit/kern_jit_ops_avx.pas b/sys/jit/kern_jit_ops_avx.pas index e736ab1c..770bbacf 100644 --- a/sys/jit/kern_jit_ops_avx.pas +++ b/sys/jit/kern_jit_ops_avx.pas @@ -787,7 +787,7 @@ end; const vbroadcastsd_desc:t_op_desc=( mem_reg:(opt:[not_impl]); - reg_mem:(op:$19;simdop:1;mm:2;opt:[not_vex_len]); + reg_mem:(op:$19;simdop:1;mm:2;opt:[not_prefix]); reg_imm:(opt:[not_impl]); reg_im8:(opt:[not_impl]); hint:[]; @@ -807,7 +807,7 @@ end; const vbroadcastf128_desc:t_op_desc=( mem_reg:(opt:[not_impl]); - reg_mem:(op:$1A;simdop:1;mm:2;opt:[not_vex_len]); + reg_mem:(op:$1A;simdop:1;mm:2); reg_imm:(opt:[not_impl]); reg_im8:(opt:[not_impl]); hint:[his_wo]; @@ -817,6 +817,8 @@ procedure op_vbroadcastf128(var ctx:t_jit_context2); begin if is_memory(ctx.din) then begin + //Vex.VectorLength = os256 + ctx.din.Operand[2].Size:=os256; op_emit_avx2(ctx,vbroadcastf128_desc); end else begin diff --git a/vulkan/vRegs2Vulkan.pas b/vulkan/vRegs2Vulkan.pas index 680819af..48365a90 100644 --- a/vulkan/vRegs2Vulkan.pas +++ b/vulkan/vRegs2Vulkan.pas @@ -176,7 +176,7 @@ var i:Byte; begin Result:=0; - For i:=0 to 7 do + For i:=1 to 7 do begin if RT_ENABLE(i) then begin @@ -902,8 +902,7 @@ begin end else begin Result.IMAGE_USAGE:=TM_READ or TM_WRITE; - end; Result.FImageView.cformat :=Result.FImageInfo.cformat; - Result.FImageView.vtype :=ord(VK_IMAGE_VIEW_TYPE_2D); + end; //if (Result.blend.blendEnable<>0) then //begin