summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2>2020-10-23 15:20:39 +0000
committertg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2>2020-10-23 15:20:39 +0000
commitc53026cca963ad871f1b7f89123ef8b39cc23ee5 (patch)
treed4aa831eddf72641ea65ebc7ebf2d327e1c96a9a
parent51643504c77c9359e29f26fae970c3dcf9c3fae4 (diff)
downloadfpc-c53026cca963ad871f1b7f89123ef8b39cc23ee5.tar.gz
bugfix internal assembler - disp8 T1S (vpcompressb,vpcompressw)
git-svn-id: https://svn.freepascal.org/svn/fpc/branches/tg74@47161 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--avx512-0037785/compiler/i386/i386tab.inc14
-rw-r--r--avx512-0037785/compiler/i8086/i8086tab.inc14
-rw-r--r--avx512-0037785/compiler/x86/aasmcpu.pas4
-rw-r--r--avx512-0037785/compiler/x86/x86ins.dat14
-rw-r--r--avx512-0037785/compiler/x86_64/x8664tab.inc14
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;