From c53026cca963ad871f1b7f89123ef8b39cc23ee5 Mon Sep 17 00:00:00 2001 From: tg74 Date: Fri, 23 Oct 2020 15:20:39 +0000 Subject: bugfix internal assembler - disp8 T1S (vpcompressb,vpcompressw) git-svn-id: https://svn.freepascal.org/svn/fpc/branches/tg74@47161 3ad0048d-3df7-0310-abae-a5850022a9f2 --- avx512-0037785/compiler/i386/i386tab.inc | 14 +++++++------- avx512-0037785/compiler/i8086/i8086tab.inc | 14 +++++++------- avx512-0037785/compiler/x86/aasmcpu.pas | 4 ++++ avx512-0037785/compiler/x86/x86ins.dat | 14 +++++++------- avx512-0037785/compiler/x86_64/x8664tab.inc | 14 +++++++------- 5 files changed, 32 insertions(+), 28 deletions(-) diff --git a/avx512-0037785/compiler/i386/i386tab.inc b/avx512-0037785/compiler/i386/i386tab.inc index af30c6ce9c..46d0e5b451 100644 --- a/avx512-0037785/compiler/i386/i386tab.inc +++ b/avx512-0037785/compiler/i386/i386tab.inc @@ -11239,7 +11239,7 @@ opcode : A_VEXTRACTPS; ops : 3; optypes : (ot_reg64,ot_xmmreg,ot_immediate or ot_bits8,ot_none); - code : #232#241#250#1#23#65#22; + code : #232#241#242#250#1#23#65#22; flags : [if_avx512] ), ( @@ -28187,21 +28187,21 @@ ops : 2; optypes : (ot_mem128_m,ot_xmmreg,ot_none,ot_none); code : #232#241#249#1#99#65; - flags : [if_avx512,if_t1s] + flags : [if_avx512,if_t1s8] ), ( opcode : A_VPCOMPRESSB; ops : 2; optypes : (ot_mem256_m,ot_ymmreg,ot_none,ot_none); code : #232#241#244#249#1#99#65; - flags : [if_avx512,if_t1s] + flags : [if_avx512,if_t1s8] ), ( opcode : A_VPCOMPRESSB; ops : 2; optypes : (ot_mem512_m,ot_zmmreg,ot_none,ot_none); code : #232#233#241#249#1#99#65; - flags : [if_avx512,if_t1s] + flags : [if_avx512,if_t1s8] ), ( opcode : A_VPCOMPRESSB; @@ -28229,21 +28229,21 @@ ops : 2; optypes : (ot_mem128_m,ot_xmmreg,ot_none,ot_none); code : #232#234#241#249#1#99#65; - flags : [if_avx512,if_t1s] + flags : [if_avx512,if_t1s16] ), ( opcode : A_VPCOMPRESSW; ops : 2; optypes : (ot_mem256_m,ot_ymmreg,ot_none,ot_none); code : #232#234#241#244#249#1#99#65; - flags : [if_avx512,if_t1s] + flags : [if_avx512,if_t1s16] ), ( opcode : A_VPCOMPRESSW; ops : 2; optypes : (ot_mem512_m,ot_zmmreg,ot_none,ot_none); code : #232#233#234#241#249#1#99#65; - flags : [if_avx512,if_t1s] + flags : [if_avx512,if_t1s16] ), ( opcode : A_VPCOMPRESSW; diff --git a/avx512-0037785/compiler/i8086/i8086tab.inc b/avx512-0037785/compiler/i8086/i8086tab.inc index 31bd39f1e6..d88c3ce67e 100644 --- a/avx512-0037785/compiler/i8086/i8086tab.inc +++ b/avx512-0037785/compiler/i8086/i8086tab.inc @@ -11267,7 +11267,7 @@ opcode : A_VEXTRACTPS; ops : 3; optypes : (ot_reg64,ot_xmmreg,ot_immediate or ot_bits8,ot_none); - code : #232#241#250#1#23#65#22; + code : #232#241#242#250#1#23#65#22; flags : [if_avx512] ), ( @@ -28411,21 +28411,21 @@ ops : 2; optypes : (ot_mem128_m,ot_xmmreg,ot_none,ot_none); code : #232#241#249#1#99#65; - flags : [if_avx512,if_t1s] + flags : [if_avx512,if_t1s8] ), ( opcode : A_VPCOMPRESSB; ops : 2; optypes : (ot_mem256_m,ot_ymmreg,ot_none,ot_none); code : #232#241#244#249#1#99#65; - flags : [if_avx512,if_t1s] + flags : [if_avx512,if_t1s8] ), ( opcode : A_VPCOMPRESSB; ops : 2; optypes : (ot_mem512_m,ot_zmmreg,ot_none,ot_none); code : #232#233#241#249#1#99#65; - flags : [if_avx512,if_t1s] + flags : [if_avx512,if_t1s8] ), ( opcode : A_VPCOMPRESSB; @@ -28453,21 +28453,21 @@ ops : 2; optypes : (ot_mem128_m,ot_xmmreg,ot_none,ot_none); code : #232#234#241#249#1#99#65; - flags : [if_avx512,if_t1s] + flags : [if_avx512,if_t1s16] ), ( opcode : A_VPCOMPRESSW; ops : 2; optypes : (ot_mem256_m,ot_ymmreg,ot_none,ot_none); code : #232#234#241#244#249#1#99#65; - flags : [if_avx512,if_t1s] + flags : [if_avx512,if_t1s16] ), ( opcode : A_VPCOMPRESSW; ops : 2; optypes : (ot_mem512_m,ot_zmmreg,ot_none,ot_none); code : #232#233#234#241#249#1#99#65; - flags : [if_avx512,if_t1s] + flags : [if_avx512,if_t1s16] ), ( opcode : A_VPCOMPRESSW; diff --git a/avx512-0037785/compiler/x86/aasmcpu.pas b/avx512-0037785/compiler/x86/aasmcpu.pas index f712af7196..d1675eb3c3 100644 --- a/avx512-0037785/compiler/x86/aasmcpu.pas +++ b/avx512-0037785/compiler/x86/aasmcpu.pas @@ -505,6 +505,8 @@ interface IF_T4, { disp8 - tuple - 4 } IF_T8, { disp8 - tuple - 8 } IF_T1S, { disp8 - tuple - 1 scalar } + IF_T1S8, { disp8 - tuple - 1 scalar byte } + IF_T1S16, { disp8 - tuple - 1 scalar word } IF_T1F32, IF_T1F64, IF_TMDDUP, @@ -2127,6 +2129,8 @@ implementation else tuplesize := 4; end; end + else if IF_T1S8 in aInsEntry^.Flags then tuplesize := 1 + else if IF_T1S16 in aInsEntry^.Flags then tuplesize := 2 else if IF_T1F32 in aInsEntry^.Flags then tuplesize := 4 else if IF_T1F64 in aInsEntry^.Flags then tuplesize := 8 else if IF_T2 in aInsEntry^.Flags then diff --git a/avx512-0037785/compiler/x86/x86ins.dat b/avx512-0037785/compiler/x86/x86ins.dat index e750abe3cb..b1782fab38 100644 --- a/avx512-0037785/compiler/x86/x86ins.dat +++ b/avx512-0037785/compiler/x86/x86ins.dat @@ -4379,7 +4379,7 @@ xmmrm,ymmreg,imm8 \361\362\364\372\1\x19\101\26 AVX,SA (Ch_All) mem32,xmmreg,imm8 \350\361\362\372\1\x17\101\26 AVX,SANDYBRIDGE,T1S reg32,xmmreg,imm8 \350\361\362\372\1\x17\101\26 AVX,SANDYBRIDGE -reg64,xmmreg,imm8 \350\361\372\1\x17\101\26 AVX512 +reg64,xmmreg,imm8 \350\361\362\372\1\x17\101\26 AVX512 @@ -8930,18 +8930,18 @@ zmmreg_mz,zmmreg,bmem64,imm8 \350\351\352\361\372\1\x43\75\120\27 [VPCOMPRESSB] (Ch_All) -mem128_m,xmmreg \350\361\371\1\x63\101 AVX512,T1S -mem256_m,ymmreg \350\361\364\371\1\x63\101 AVX512,T1S -mem512_m,zmmreg \350\351\361\371\1\x63\101 AVX512,T1S +mem128_m,xmmreg \350\361\371\1\x63\101 AVX512,T1S8 +mem256_m,ymmreg \350\361\364\371\1\x63\101 AVX512,T1S8 +mem512_m,zmmreg \350\351\361\371\1\x63\101 AVX512,T1S8 xmmreg_mz,xmmreg \350\361\371\1\x63\101 AVX512 ymmreg_mz,ymmreg \350\361\364\371\1\x63\101 AVX512 zmmreg_mz,zmmreg \350\351\361\371\1\x63\101 AVX512 [VPCOMPRESSW] (Ch_All) -mem128_m,xmmreg \350\352\361\371\1\x63\101 AVX512,T1S -mem256_m,ymmreg \350\352\361\364\371\1\x63\101 AVX512,T1S -mem512_m,zmmreg \350\351\352\361\371\1\x63\101 AVX512,T1S +mem128_m,xmmreg \350\352\361\371\1\x63\101 AVX512,T1S16 +mem256_m,ymmreg \350\352\361\364\371\1\x63\101 AVX512,T1S16 +mem512_m,zmmreg \350\351\352\361\371\1\x63\101 AVX512,T1S16 xmmreg_mz,xmmreg \350\352\361\371\1\x63\101 AVX512 ymmreg_mz,ymmreg \350\352\361\364\371\1\x63\101 AVX512 zmmreg_mz,zmmreg \350\351\352\361\371\1\x63\101 AVX512 diff --git a/avx512-0037785/compiler/x86_64/x8664tab.inc b/avx512-0037785/compiler/x86_64/x8664tab.inc index ad162fc91f..21f44dcdfa 100644 --- a/avx512-0037785/compiler/x86_64/x8664tab.inc +++ b/avx512-0037785/compiler/x86_64/x8664tab.inc @@ -11568,7 +11568,7 @@ opcode : A_VEXTRACTPS; ops : 3; optypes : (ot_reg64,ot_xmmreg,ot_immediate or ot_bits8,ot_none); - code : #232#241#250#1#23#65#22; + code : #232#241#242#250#1#23#65#22; flags : [if_avx512] ), ( @@ -28635,21 +28635,21 @@ ops : 2; optypes : (ot_mem128_m,ot_xmmreg,ot_none,ot_none); code : #232#241#249#1#99#65; - flags : [if_avx512,if_t1s] + flags : [if_avx512,if_t1s8] ), ( opcode : A_VPCOMPRESSB; ops : 2; optypes : (ot_mem256_m,ot_ymmreg,ot_none,ot_none); code : #232#241#244#249#1#99#65; - flags : [if_avx512,if_t1s] + flags : [if_avx512,if_t1s8] ), ( opcode : A_VPCOMPRESSB; ops : 2; optypes : (ot_mem512_m,ot_zmmreg,ot_none,ot_none); code : #232#233#241#249#1#99#65; - flags : [if_avx512,if_t1s] + flags : [if_avx512,if_t1s8] ), ( opcode : A_VPCOMPRESSB; @@ -28677,21 +28677,21 @@ ops : 2; optypes : (ot_mem128_m,ot_xmmreg,ot_none,ot_none); code : #232#234#241#249#1#99#65; - flags : [if_avx512,if_t1s] + flags : [if_avx512,if_t1s16] ), ( opcode : A_VPCOMPRESSW; ops : 2; optypes : (ot_mem256_m,ot_ymmreg,ot_none,ot_none); code : #232#234#241#244#249#1#99#65; - flags : [if_avx512,if_t1s] + flags : [if_avx512,if_t1s16] ), ( opcode : A_VPCOMPRESSW; ops : 2; optypes : (ot_mem512_m,ot_zmmreg,ot_none,ot_none); code : #232#233#234#241#249#1#99#65; - flags : [if_avx512,if_t1s] + flags : [if_avx512,if_t1s16] ), ( opcode : A_VPCOMPRESSW; -- cgit v1.2.1