浏览代码

working on backport bugfix 0037785

git-svn-id: branches/tg74/fixes_3_2@48151 -
tg74 4 年之前
父节点
当前提交
ea15ebdb91

+ 4 - 4
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,

+ 1 - 1
compiler/i386/i386nop.inc

@@ -1,2 +1,2 @@
 { don't edit, this file is generated from x86ins.dat }
-2117;
+2119;

+ 25 - 11
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]
   ),
@@ -10017,6 +10010,13 @@
     code    : #242#244#248#1#91#72;
     flags   : [if_avx,if_sandybridge]
   ),
+  (
+    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;
@@ -10027,10 +10027,17 @@
   (
     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;
@@ -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]
   ),
@@ -10178,6 +10185,13 @@
     code    : #219#242#243#248#1#45#72;
     flags   : [if_avx,if_sandybridge]
   ),
+  (
+    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;
@@ -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]
   ),

+ 4 - 4
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,

+ 1 - 1
compiler/i8086/i8086nop.inc

@@ -1,2 +1,2 @@
 { don't edit, this file is generated from x86ins.dat }
-2149;
+2151;

+ 25 - 11
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]
   ),
@@ -10045,6 +10038,13 @@
     code    : #242#244#248#1#91#72;
     flags   : [if_avx,if_sandybridge]
   ),
+  (
+    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;
@@ -10055,10 +10055,17 @@
   (
     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;
@@ -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]
   ),
@@ -10206,6 +10213,13 @@
     code    : #219#242#243#248#1#45#72;
     flags   : [if_avx,if_sandybridge]
   ),
+  (
+    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;
@@ -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]
   ),

+ 17 - 9
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)

+ 4 - 4
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,

+ 1 - 1
compiler/x86_64/x8664nop.inc

@@ -1,2 +1,2 @@
 { don't edit, this file is generated from x86ins.dat }
-2170;
+2172;

+ 25 - 11
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]
   ),
@@ -10318,6 +10311,13 @@
     code    : #242#244#248#1#91#72;
     flags   : [if_avx,if_sandybridge]
   ),
+  (
+    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;
@@ -10328,10 +10328,17 @@
   (
     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;
@@ -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]
   ),
@@ -10493,6 +10500,13 @@
     code    : #219#242#243#248#1#45#72;
     flags   : [if_avx,if_sandybridge]
   ),
+  (
+    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;
@@ -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]
   ),