summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2>2021-01-13 06:02:41 +0000
committertg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2>2021-01-13 06:02:41 +0000
commit9e7123b2d9aa377b4c2873c7836ff072f3c852dd (patch)
tree008545301eb6e5fc11f5a02cfe1372a8e0402a9f
parent531b9b117e45d37b0c2efc13a1e6c948294f7a3f (diff)
downloadfpc-9e7123b2d9aa377b4c2873c7836ff072f3c852dd.tar.gz
working on backport bugfix 0037785
git-svn-id: https://svn.freepascal.org/svn/fpc/branches/tg74@48151 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--fixes_3_2/compiler/i386/i386atts.inc8
-rw-r--r--fixes_3_2/compiler/i386/i386nop.inc2
-rw-r--r--fixes_3_2/compiler/i386/i386tab.inc36
-rw-r--r--fixes_3_2/compiler/i8086/i8086atts.inc8
-rw-r--r--fixes_3_2/compiler/i8086/i8086nop.inc2
-rw-r--r--fixes_3_2/compiler/i8086/i8086tab.inc36
-rw-r--r--fixes_3_2/compiler/x86/x86ins.dat26
-rw-r--r--fixes_3_2/compiler/x86_64/x8664ats.inc8
-rw-r--r--fixes_3_2/compiler/x86_64/x8664nop.inc2
-rw-r--r--fixes_3_2/compiler/x86_64/x8664tab.inc36
10 files changed, 107 insertions, 57 deletions
diff --git a/fixes_3_2/compiler/i386/i386atts.inc b/fixes_3_2/compiler/i386/i386atts.inc
index 3d9024c499..fa3d7c0aaf 100644
--- a/fixes_3_2/compiler/i386/i386atts.inc
+++ b/fixes_3_2/compiler/i386/i386atts.inc
@@ -425,9 +425,9 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufINT,
-attsufINT,
attsufNONE,
-attsufINT,
+attsufNONE,
+attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
@@ -539,14 +539,14 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
-attsufINT,
+attsufNONE,
attsufNONE,
attsufINT,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
-attsufINT,
+attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
diff --git a/fixes_3_2/compiler/i386/i386nop.inc b/fixes_3_2/compiler/i386/i386nop.inc
index 9e0fad8df4..dbc8c7ec1d 100644
--- a/fixes_3_2/compiler/i386/i386nop.inc
+++ b/fixes_3_2/compiler/i386/i386nop.inc
@@ -1,2 +1,2 @@
{ don't edit, this file is generated from x86ins.dat }
-2117;
+2119;
diff --git a/fixes_3_2/compiler/i386/i386tab.inc b/fixes_3_2/compiler/i386/i386tab.inc
index 7f5cd96ab9..28f1c4d3b4 100644
--- a/fixes_3_2/compiler/i386/i386tab.inc
+++ b/fixes_3_2/compiler/i386/i386tab.inc
@@ -9992,14 +9992,7 @@
(
opcode : A_VCVTDQ2PD;
ops : 2;
- optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
- code : #219#242#244#248#1#230#72;
- flags : [if_avx,if_sandybridge]
- ),
- (
- opcode : A_VCVTDQ2PD;
- ops : 2;
- optypes : (ot_ymmreg,ot_memory or ot_bits128,ot_none,ot_none);
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
code : #219#242#244#248#1#230#72;
flags : [if_avx,if_sandybridge]
),
@@ -10020,6 +10013,13 @@
(
opcode : A_VCVTPD2DQ;
ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits256,ot_none,ot_none);
+ code : #220#242#244#248#1#230#72;
+ flags : [if_avx,if_sandybridge]
+ ),
+ (
+ opcode : A_VCVTPD2DQ;
+ ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
code : #220#242#248#1#230#72;
flags : [if_avx,if_sandybridge]
@@ -10027,13 +10027,20 @@
(
opcode : A_VCVTPD2DQ;
ops : 2;
- optypes : (ot_xmmreg,ot_ymmrm,ot_none,ot_none);
+ optypes : (ot_xmmreg,ot_ymmreg,ot_none,ot_none);
code : #220#242#244#248#1#230#72;
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VCVTPD2PS;
ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits256,ot_none,ot_none);
+ code : #241#242#244#248#1#90#72;
+ flags : [if_avx,if_sandybridge]
+ ),
+ (
+ opcode : A_VCVTPD2PS;
+ ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
code : #241#242#248#1#90#72;
flags : [if_avx,if_sandybridge]
@@ -10041,7 +10048,7 @@
(
opcode : A_VCVTPD2PS;
ops : 2;
- optypes : (ot_xmmreg,ot_ymmrm,ot_none,ot_none);
+ optypes : (ot_xmmreg,ot_ymmreg,ot_none,ot_none);
code : #241#242#244#248#1#90#72;
flags : [if_avx,if_sandybridge]
),
@@ -10181,6 +10188,13 @@
(
opcode : A_VCVTTPD2DQ;
ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits256,ot_none,ot_none);
+ code : #241#242#244#248#1#230#72;
+ flags : [if_avx,if_sandybridge]
+ ),
+ (
+ opcode : A_VCVTTPD2DQ;
+ ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
code : #241#242#248#1#230#72;
flags : [if_avx,if_sandybridge]
@@ -10188,7 +10202,7 @@
(
opcode : A_VCVTTPD2DQ;
ops : 2;
- optypes : (ot_xmmreg,ot_ymmrm,ot_none,ot_none);
+ optypes : (ot_xmmreg,ot_ymmreg,ot_none,ot_none);
code : #241#242#244#248#1#230#72;
flags : [if_avx,if_sandybridge]
),
diff --git a/fixes_3_2/compiler/i8086/i8086atts.inc b/fixes_3_2/compiler/i8086/i8086atts.inc
index a920ca7ef1..5c57169d9b 100644
--- a/fixes_3_2/compiler/i8086/i8086atts.inc
+++ b/fixes_3_2/compiler/i8086/i8086atts.inc
@@ -425,9 +425,9 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufINT,
-attsufINT,
attsufNONE,
-attsufINT,
+attsufNONE,
+attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
@@ -539,14 +539,14 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
-attsufINT,
+attsufNONE,
attsufNONE,
attsufINT,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
-attsufINT,
+attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
diff --git a/fixes_3_2/compiler/i8086/i8086nop.inc b/fixes_3_2/compiler/i8086/i8086nop.inc
index 3edc5df1f5..d24e36a0b4 100644
--- a/fixes_3_2/compiler/i8086/i8086nop.inc
+++ b/fixes_3_2/compiler/i8086/i8086nop.inc
@@ -1,2 +1,2 @@
{ don't edit, this file is generated from x86ins.dat }
-2149;
+2151;
diff --git a/fixes_3_2/compiler/i8086/i8086tab.inc b/fixes_3_2/compiler/i8086/i8086tab.inc
index 0e86e7469d..efafcc9ca1 100644
--- a/fixes_3_2/compiler/i8086/i8086tab.inc
+++ b/fixes_3_2/compiler/i8086/i8086tab.inc
@@ -10020,14 +10020,7 @@
(
opcode : A_VCVTDQ2PD;
ops : 2;
- optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
- code : #219#242#244#248#1#230#72;
- flags : [if_avx,if_sandybridge]
- ),
- (
- opcode : A_VCVTDQ2PD;
- ops : 2;
- optypes : (ot_ymmreg,ot_memory or ot_bits128,ot_none,ot_none);
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
code : #219#242#244#248#1#230#72;
flags : [if_avx,if_sandybridge]
),
@@ -10048,6 +10041,13 @@
(
opcode : A_VCVTPD2DQ;
ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits256,ot_none,ot_none);
+ code : #220#242#244#248#1#230#72;
+ flags : [if_avx,if_sandybridge]
+ ),
+ (
+ opcode : A_VCVTPD2DQ;
+ ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
code : #220#242#248#1#230#72;
flags : [if_avx,if_sandybridge]
@@ -10055,13 +10055,20 @@
(
opcode : A_VCVTPD2DQ;
ops : 2;
- optypes : (ot_xmmreg,ot_ymmrm,ot_none,ot_none);
+ optypes : (ot_xmmreg,ot_ymmreg,ot_none,ot_none);
code : #220#242#244#248#1#230#72;
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VCVTPD2PS;
ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits256,ot_none,ot_none);
+ code : #241#242#244#248#1#90#72;
+ flags : [if_avx,if_sandybridge]
+ ),
+ (
+ opcode : A_VCVTPD2PS;
+ ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
code : #241#242#248#1#90#72;
flags : [if_avx,if_sandybridge]
@@ -10069,7 +10076,7 @@
(
opcode : A_VCVTPD2PS;
ops : 2;
- optypes : (ot_xmmreg,ot_ymmrm,ot_none,ot_none);
+ optypes : (ot_xmmreg,ot_ymmreg,ot_none,ot_none);
code : #241#242#244#248#1#90#72;
flags : [if_avx,if_sandybridge]
),
@@ -10209,6 +10216,13 @@
(
opcode : A_VCVTTPD2DQ;
ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits256,ot_none,ot_none);
+ code : #241#242#244#248#1#230#72;
+ flags : [if_avx,if_sandybridge]
+ ),
+ (
+ opcode : A_VCVTTPD2DQ;
+ ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
code : #241#242#248#1#230#72;
flags : [if_avx,if_sandybridge]
@@ -10216,7 +10230,7 @@
(
opcode : A_VCVTTPD2DQ;
ops : 2;
- optypes : (ot_xmmreg,ot_ymmrm,ot_none,ot_none);
+ optypes : (ot_xmmreg,ot_ymmreg,ot_none,ot_none);
code : #241#242#244#248#1#230#72;
flags : [if_avx,if_sandybridge]
),
diff --git a/fixes_3_2/compiler/x86/x86ins.dat b/fixes_3_2/compiler/x86/x86ins.dat
index c5dc33b3ad..963381995c 100644
--- a/fixes_3_2/compiler/x86/x86ins.dat
+++ b/fixes_3_2/compiler/x86/x86ins.dat
@@ -2343,7 +2343,7 @@ mmxreg,xmmreg \331\2\x0F\x2D\110 KATMAI,SSE,MMX
xmmreg,rm32 \333\321\2\x0F\x2A\110 KATMAI,SSE
xmmreg,rm64 \333\321\2\x0F\x2A\110 KATMAI,SSE,X86_64
-[CVTSS2SI,cvtss2siX]
+[CVTSS2SI]
(Ch_Wop2, Ch_Rop1)
reg32|64,mem32 \333\320\2\x0F\x2D\110 KATMAI,SSE
reg32|64,xmmreg \333\320\2\x0F\x2D\110 KATMAI,SSE
@@ -2353,7 +2353,7 @@ reg32|64,xmmreg \333\320\2\x0F\x2D\110 KATMAI,SSE
mmxreg,mem64 \331\2\x0F\x2C\110 KATMAI,SSE,MMX
mmxreg,xmmreg \331\2\x0F\x2C\110 KATMAI,SSE,MMX
-[CVTTSS2SI,cvttss2siX]
+[CVTTSS2SI]
(Ch_Wop2, Ch_Rop1)
reg32|64,mem32 \333\320\2\x0F\x2C\110 KATMAI,SSE
reg32|64,xmmreg \333\320\2\x0F\x2C\110 KATMAI,SSE
@@ -2865,7 +2865,7 @@ xmmreg,xmmrm \361\2\x0F\x5B\110 WILLAMETTE,SSE2,SM
xmmreg,xmmreg \2\x0F\x5A\110 WILLAMETTE,SSE2 ;,SQ
xmmreg,mem64 \2\x0F\x5A\110 WILLAMETTE,SSE2 ;,SQ
-[CVTSD2SI,cvtsd2siX]
+[CVTSD2SI]
(Ch_Wop2, Ch_Rop1)
reg32,xmmreg \334\2\x0F\x2D\110 WILLAMETTE,SSE2
reg32,mem64 \334\2\x0F\x2D\110 WILLAMETTE,SSE2
@@ -2899,7 +2899,7 @@ xmmreg,xmmrm \361\2\x0F\xE6\110 WILLAMETTE,SSE2,SM
(Ch_Wop2, Ch_Rop1)
xmmreg,xmmrm \333\2\x0F\x5B\110 WILLAMETTE,SSE2,SM
-[CVTTSD2SI,cvttsd2siX]
+[CVTTSD2SI]
(Ch_Wop2, Ch_Rop1)
reg32|64,xmmreg \334\320\2\x0F\x2C\110 WILLAMETTE,SSE2
reg32|64,mem64 \334\320\2\x0F\x2C\110 WILLAMETTE,SSE2
@@ -4057,23 +4057,28 @@ xmmreg,xmmreg \362\370\1\x2F\110 AVX,SA
(Ch_Wop2, Ch_Rop1)
xmmreg,mem64 \333\362\370\1\xE6\110 AVX,SANDYBRIDGE
xmmreg,xmmreg \333\362\370\1\xE6\110 AVX,SANDYBRIDGE
-ymmreg,xmmreg \333\362\364\370\1\xE6\110 AVX,SANDYBRIDGE
-ymmreg,mem128 \333\362\364\370\1\xE6\110 AVX,SANDYBRIDGE
+ymmreg,xmmrm \333\362\364\370\1\xE6\110 AVX,SANDYBRIDGE
[VCVTDQ2PS]
(Ch_Wop2, Ch_Rop1)
xmmreg,xmmrm \362\370\1\x5B\110 AVX,SANDYBRIDGE
ymmreg,ymmrm \362\364\370\1\x5B\110 AVX,SANDYBRIDGE
+; VCVTPD2DQ xmmreg_mz,mem256 must come first - map MemRefSize 256bits correct
+; map all other MemrefSize to xmmreg, xmmrm
[VCVTPD2DQ,vcvtpd2dqM]
(Ch_Wop2, Ch_Rop1)
+xmmreg,mem256 \334\362\364\370\1\xE6\110 AVX,SANDYBRIDGE
xmmreg,xmmrm \334\362\370\1\xE6\110 AVX,SANDYBRIDGE
-xmmreg,ymmrm \334\362\364\370\1\xE6\110 AVX,SANDYBRIDGE
+xmmreg,ymmreg \334\362\364\370\1\xE6\110 AVX,SANDYBRIDGE
+; VCVTPD2PS xmmreg_mz,mem256 must come first - map MemRefSize 256bits correct
+; map all other MemrefSize to xmmreg, xmmrm
[VCVTPD2PS,vcvtpd2psM]
(Ch_Wop2, Ch_Rop1)
+xmmreg,mem256 \361\362\364\370\1\x5A\110 AVX,SANDYBRIDGE
xmmreg,xmmrm \361\362\370\1\x5A\110 AVX,SANDYBRIDGE
-xmmreg,ymmrm \361\362\364\370\1\x5A\110 AVX,SANDYBRIDGE
+xmmreg,ymmreg \361\362\364\370\1\x5A\110 AVX,SANDYBRIDGE
[VCVTPS2DQ]
(Ch_Wop2, Ch_Rop1)
@@ -4120,10 +4125,13 @@ reg32,xmmreg \333\362\370\1\x2D\110 AVX,SA
reg64,mem32 \333\362\363\370\1\x2D\110 AVX,SANDYBRIDGE
reg64,xmmreg \333\362\363\370\1\x2D\110 AVX,SANDYBRIDGE
+; VCVTTPD2DQ xmmreg_mz,mem256 must come first - map MemRefSize 256bits correct
+; map all other MemrefSize to xmmreg, xmmrm
[VCVTTPD2DQ,vcvttpd2dqM]
(Ch_Wop2, Ch_Rop1)
+xmmreg,mem256 \361\362\364\370\1\xE6\110 AVX,SANDYBRIDGE
xmmreg,xmmrm \361\362\370\1\xE6\110 AVX,SANDYBRIDGE
-xmmreg,ymmrm \361\362\364\370\1\xE6\110 AVX,SANDYBRIDGE
+xmmreg,ymmreg \361\362\364\370\1\xE6\110 AVX,SANDYBRIDGE
[VCVTTPS2DQ]
(Ch_Wop2, Ch_Rop1)
diff --git a/fixes_3_2/compiler/x86_64/x8664ats.inc b/fixes_3_2/compiler/x86_64/x8664ats.inc
index 56551ab634..7b5ce37768 100644
--- a/fixes_3_2/compiler/x86_64/x8664ats.inc
+++ b/fixes_3_2/compiler/x86_64/x8664ats.inc
@@ -411,9 +411,9 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufINT,
-attsufINT,
attsufNONE,
-attsufINT,
+attsufNONE,
+attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
@@ -525,14 +525,14 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
-attsufINT,
+attsufNONE,
attsufNONE,
attsufINT,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
-attsufINT,
+attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
diff --git a/fixes_3_2/compiler/x86_64/x8664nop.inc b/fixes_3_2/compiler/x86_64/x8664nop.inc
index 7cd4db7b89..d792bf92a5 100644
--- a/fixes_3_2/compiler/x86_64/x8664nop.inc
+++ b/fixes_3_2/compiler/x86_64/x8664nop.inc
@@ -1,2 +1,2 @@
{ don't edit, this file is generated from x86ins.dat }
-2170;
+2172;
diff --git a/fixes_3_2/compiler/x86_64/x8664tab.inc b/fixes_3_2/compiler/x86_64/x8664tab.inc
index ceeaa126de..64519356d8 100644
--- a/fixes_3_2/compiler/x86_64/x8664tab.inc
+++ b/fixes_3_2/compiler/x86_64/x8664tab.inc
@@ -10293,14 +10293,7 @@
(
opcode : A_VCVTDQ2PD;
ops : 2;
- optypes : (ot_ymmreg,ot_xmmreg,ot_none,ot_none);
- code : #219#242#244#248#1#230#72;
- flags : [if_avx,if_sandybridge]
- ),
- (
- opcode : A_VCVTDQ2PD;
- ops : 2;
- optypes : (ot_ymmreg,ot_memory or ot_bits128,ot_none,ot_none);
+ optypes : (ot_ymmreg,ot_xmmrm,ot_none,ot_none);
code : #219#242#244#248#1#230#72;
flags : [if_avx,if_sandybridge]
),
@@ -10321,6 +10314,13 @@
(
opcode : A_VCVTPD2DQ;
ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits256,ot_none,ot_none);
+ code : #220#242#244#248#1#230#72;
+ flags : [if_avx,if_sandybridge]
+ ),
+ (
+ opcode : A_VCVTPD2DQ;
+ ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
code : #220#242#248#1#230#72;
flags : [if_avx,if_sandybridge]
@@ -10328,13 +10328,20 @@
(
opcode : A_VCVTPD2DQ;
ops : 2;
- optypes : (ot_xmmreg,ot_ymmrm,ot_none,ot_none);
+ optypes : (ot_xmmreg,ot_ymmreg,ot_none,ot_none);
code : #220#242#244#248#1#230#72;
flags : [if_avx,if_sandybridge]
),
(
opcode : A_VCVTPD2PS;
ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits256,ot_none,ot_none);
+ code : #241#242#244#248#1#90#72;
+ flags : [if_avx,if_sandybridge]
+ ),
+ (
+ opcode : A_VCVTPD2PS;
+ ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
code : #241#242#248#1#90#72;
flags : [if_avx,if_sandybridge]
@@ -10342,7 +10349,7 @@
(
opcode : A_VCVTPD2PS;
ops : 2;
- optypes : (ot_xmmreg,ot_ymmrm,ot_none,ot_none);
+ optypes : (ot_xmmreg,ot_ymmreg,ot_none,ot_none);
code : #241#242#244#248#1#90#72;
flags : [if_avx,if_sandybridge]
),
@@ -10496,6 +10503,13 @@
(
opcode : A_VCVTTPD2DQ;
ops : 2;
+ optypes : (ot_xmmreg,ot_memory or ot_bits256,ot_none,ot_none);
+ code : #241#242#244#248#1#230#72;
+ flags : [if_avx,if_sandybridge]
+ ),
+ (
+ opcode : A_VCVTTPD2DQ;
+ ops : 2;
optypes : (ot_xmmreg,ot_xmmrm,ot_none,ot_none);
code : #241#242#248#1#230#72;
flags : [if_avx,if_sandybridge]
@@ -10503,7 +10517,7 @@
(
opcode : A_VCVTTPD2DQ;
ops : 2;
- optypes : (ot_xmmreg,ot_ymmrm,ot_none,ot_none);
+ optypes : (ot_xmmreg,ot_ymmreg,ot_none,ot_none);
code : #241#242#244#248#1#230#72;
flags : [if_avx,if_sandybridge]
),