This commit is contained in:
Pavel 2025-07-14 13:38:47 +03:00
parent 3ae6011062
commit 94c7e1335d
2 changed files with 28 additions and 2 deletions

View File

@ -4021,7 +4021,13 @@ begin
//mri
_VVI8(desc.mri,new2,new1,imm,mem_size);
if (not (not_impl in desc.mri.opt)) then
begin
_VVI8(desc.mri,new2,new1,imm,mem_size); //swapped
end else
begin
_VVI8(desc.rmi,new1,new2,imm,mem_size);
end;
op_save(ctx,1,fix_size(new1));
end;

View File

@ -1019,6 +1019,26 @@ end;
//
procedure op_vpextrw(var ctx:t_jit_context2);
begin
if is_preserved(ctx.din) or is_memory(ctx.din) then
begin
//VEX.128.66.0F.W0 C5 /r ib VPEXTRW reg , xmm1, imm8
//VEX.128.66.0F3A.W0 15 /r ib VPEXTRW reg/m16, xmm2, imm8
case ctx.dis.opcode of
$C5:op_avx3_rmi(ctx);
$15:op_avx3_mri(ctx);
else;
Assert(false);
end;
end else
begin
add_orig(ctx);
end;
end;
//
const
vbroadcastss_desc:t_op_desc=(
mem_reg:(opt:[not_impl]);
@ -1354,7 +1374,7 @@ begin
jit_cbs[OPPv,OPpextr,OPSx_b]:=@op_avx3_mri;
jit_cbs[OPPv,OPpextr,OPSx_d]:=@op_avx3_mri;
jit_cbs[OPPv,OPpextr,OPSx_q]:=@op_avx3_mri;
jit_cbs[OPPv,OPpextr,OPSx_w]:=@op_avx3_mri;
jit_cbs[OPPv,OPpextr,OPSx_w]:=@op_vpextrw;
jit_cbs[OPPv,OPextract,OPSx_ps ]:=@op_avx3_mri;
jit_cbs[OPPv,OPextract,OPSx_f128]:=@op_avx3_mri;