Browse Source

bugfix external gnu assembler - special handling for any vcvt..-opcodes (opsize S_XMM,S_YMM = prefix (x,y); S_ZMM = without prefix)

git-svn-id: branches/tg74/avx512-0037785@47149 -
tg74 4 years ago
parent
commit
c4d80b1694

+ 7 - 7
compiler/i386/i386atts.inc

@@ -781,8 +781,8 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
-attsufMM,
-attsufMM,
+attsufMMX,
+attsufMMX,
 attsufNONE,
 attsufNONE,
 attsufNONE,
@@ -793,7 +793,7 @@ attsufINT,
 attsufINT,
 attsufNONE,
 attsufNONE,
-attsufMM,
+attsufMMX,
 attsufNONE,
 attsufNONE,
 attsufNONE,
@@ -1194,17 +1194,17 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
-attsufINT,
+attsufMMX,
 attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
-attsufINT,
+attsufMMX,
 attsufNONE,
 attsufNONE,
 attsufNONE,
-attsufINT,
+attsufMMX,
 attsufNONE,
 attsufNONE,
 attsufNONE,
@@ -1214,7 +1214,7 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
-attsufINT,
+attsufMMX,
 attsufINT,
 attsufINT,
 attsufNONE,

+ 2 - 2
compiler/i386/i386tab.inc

@@ -10433,7 +10433,7 @@
   (
     opcode  : A_VCVTDQ2PD;
     ops     : 2;
-    optypes : (ot_zmmreg_mz,ot_ymmreg_er,ot_none,ot_none);
+    optypes : (ot_zmmreg_mz,ot_ymmreg,ot_none,ot_none);
     code    : #219#232#233#248#1#230#72;
     flags   : [if_avx512]
   ),
@@ -22011,7 +22011,7 @@
   (
     opcode  : A_VCVTUDQ2PD;
     ops     : 2;
-    optypes : (ot_zmmreg_mz,ot_ymmreg_er,ot_none,ot_none);
+    optypes : (ot_zmmreg_mz,ot_ymmreg,ot_none,ot_none);
     code    : #219#232#233#248#1#122#72;
     flags   : [if_avx512]
   ),

+ 7 - 7
compiler/i8086/i8086atts.inc

@@ -781,8 +781,8 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
-attsufMM,
-attsufMM,
+attsufMMX,
+attsufMMX,
 attsufNONE,
 attsufNONE,
 attsufNONE,
@@ -793,7 +793,7 @@ attsufINT,
 attsufINT,
 attsufNONE,
 attsufNONE,
-attsufMM,
+attsufMMX,
 attsufNONE,
 attsufNONE,
 attsufNONE,
@@ -1208,17 +1208,17 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
-attsufINT,
+attsufMMX,
 attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
-attsufINT,
+attsufMMX,
 attsufNONE,
 attsufNONE,
 attsufNONE,
-attsufINT,
+attsufMMX,
 attsufNONE,
 attsufNONE,
 attsufNONE,
@@ -1228,7 +1228,7 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
-attsufINT,
+attsufMMX,
 attsufINT,
 attsufINT,
 attsufNONE,

+ 2 - 2
compiler/i8086/i8086tab.inc

@@ -10461,7 +10461,7 @@
   (
     opcode  : A_VCVTDQ2PD;
     ops     : 2;
-    optypes : (ot_zmmreg_mz,ot_ymmreg_er,ot_none,ot_none);
+    optypes : (ot_zmmreg_mz,ot_ymmreg,ot_none,ot_none);
     code    : #219#232#233#248#1#230#72;
     flags   : [if_avx512]
   ),
@@ -22235,7 +22235,7 @@
   (
     opcode  : A_VCVTUDQ2PD;
     ops     : 2;
-    optypes : (ot_zmmreg_mz,ot_ymmreg_er,ot_none,ot_none);
+    optypes : (ot_zmmreg_mz,ot_ymmreg,ot_none,ot_none);
     code    : #219#232#233#248#1#122#72;
     flags   : [if_avx512]
   ),

+ 2 - 0
compiler/x86/agx86att.pas

@@ -395,6 +395,8 @@ interface
                (getregtype(taicpu(hp).oper[0]^.reg)=R_FPUREGISTER)
               ) then
         begin
+          if (gas_needsuffix[op]<>AttSufMMX) or
+	     (taicpu(hp).opsize in [S_XMM,S_YMM]) then
           owner.writer.AsmWrite(gas_opsize2str[taicpu(hp).opsize]);
         end;
 

+ 8 - 8
compiler/x86/x86ins.dat

@@ -4176,7 +4176,7 @@ zmmreg_mz,zmmreg_er                       \350\351\370\1\x5B\110
 
 ; VCVTPD2DQ xmmreg_mz,mem256 must come first - map MemRefSize 256bits correct
 ;                                              map all other MemrefSize (without broasdcast MemRef) to xmmreg, xmmrm
-[VCVTPD2DQ,vcvtpd2dqM]
+[VCVTPD2DQ,vcvtpd2dqN]
 (Ch_Wop2, Ch_Rop1)
 xmmreg_mz,mem256                          \334\350\352\362\364\370\1\xE6\110        AVX,SANDYBRIDGE,TFV
 xmmreg_mz,xmmrm                           \334\350\352\362\370\1\xE6\110            AVX,SANDYBRIDGE,TFV
@@ -4191,7 +4191,7 @@ ymmreg_mz,zmmreg_er                       \334\350\351\352\370\1\xE6\110
 
 ; VCVTPD2PS xmmreg_mz,mem256 must come first - map MemRefSize 256bits correct
 ;                                              map all other MemrefSize (without broasdcast MemRef) to xmmreg, xmmrm 
-[VCVTPD2PS,vcvtpd2psM]
+[VCVTPD2PS,vcvtpd2psN]
 (Ch_Wop2, Ch_Rop1)
 xmmreg_mz,mem256                          \350\352\361\362\364\370\1\x5A\110        AVX,SANDYBRIDGE,TFV
 xmmreg_mz,ymmreg                          \350\352\361\362\364\370\1\x5A\110        AVX,SANDYBRIDGE
@@ -4290,7 +4290,7 @@ reg64,xmmreg_er                           \333\350\352\362\363\370\1\x2D\110
 
 ; VCVTTPD2DQ xmmreg_mz,mem256 must come first - map MemRefSize 256bits correct
 ;                                               map all other MemrefSize (without broasdcast MemRef) to xmmreg, xmmrm 
-[VCVTTPD2DQ,vcvttpd2dqM]
+[VCVTTPD2DQ,vcvttpd2dqN]
 (Ch_Wop2, Ch_Rop1)
 xmmreg_mz,mem256                          \350\352\361\362\364\370\1\xE6\110        AVX,SANDYBRIDGE,AVX512,TFV
 xmmreg_mz,ymmreg                          \350\352\361\362\364\370\1\xE6\110        AVX,SANDYBRIDGE
@@ -7280,7 +7280,7 @@ zmmreg_mz,mem512                          \350\351\352\361\370\1\x7B\110
 zmmreg_mz,bmem64                          \350\351\352\361\370\1\x7B\110            AVX512,TFV
 zmmreg_mz,zmmreg_er                       \350\351\352\361\370\1\x7B\110            AVX512
 
-[VCVTPD2UDQ, vcvtpd2udqX]
+[VCVTPD2UDQ, vcvtpd2udqN]
 (Ch_All)
 xmmreg_mz,mem128                          \350\352\370\1\x79\110                    AVX512,TFV
 xmmreg_mz,mem256                          \350\352\364\370\1\x79\110                AVX512,TFV
@@ -7344,7 +7344,7 @@ zmmreg_mz,mem512                          \333\350\351\352\370\1\xE6\110
 zmmreg_mz,bmem64                          \333\350\351\352\370\1\xE6\110            AVX512,TFV
 zmmreg_mz,zmmreg_er                       \333\350\351\352\370\1\xE6\110            AVX512
 
-[VCVTQQ2PS,vcvtqq2psX]
+[VCVTQQ2PS,vcvtqq2psN]
 (Ch_All)
 xmmreg_mz,mem128                          \350\352\370\1\x5B\110                    AVX512,TFV
 xmmreg_mz,mem256                          \350\352\364\370\1\x5B\110                AVX512,TFV
@@ -7380,7 +7380,7 @@ zmmreg_mz,mem512                          \350\351\352\361\370\1\x7A\110
 zmmreg_mz,bmem64                          \350\351\352\361\370\1\x7A\110            AVX512,TFV
 zmmreg_mz,zmmreg_sae                      \350\351\352\361\370\1\x7A\110            AVX512
 
-[VCVTTPD2UDQ,vcvttpd2udqX]
+[VCVTTPD2UDQ,vcvttpd2udqN]
 (Ch_All)
 xmmreg_mz,mem128                          \350\352\370\1\x78\110                    AVX512,TFV
 xmmreg_mz,mem256                          \350\352\364\370\1\x78\110                AVX512,TFV
@@ -7457,7 +7457,7 @@ ymmreg_mz,xmmrm                           \333\350\364\370\1\x7A\110
 ymmreg_mz,bmem32                          \333\350\364\370\1\x7A\110                AVX512,BCST4,THV
 zmmreg_mz,mem256                          \333\350\351\370\1\x7A\110                AVX512,THV
 zmmreg_mz,bmem32                          \333\350\351\370\1\x7A\110                AVX512,BCST8,THV
-zmmreg_mz,ymmreg_er                       \333\350\351\370\1\x7A\110                AVX512
+zmmreg_mz,ymmreg                          \333\350\351\370\1\x7A\110                AVX512
 
 [VCVTUDQ2PS]
 (Ch_All)
@@ -7479,7 +7479,7 @@ zmmreg_mz,mem512                          \333\350\351\352\370\1\x7A\110
 zmmreg_mz,bmem64                          \333\350\351\352\370\1\x7A\110            AVX512,TFV
 zmmreg_mz,zmmreg_er                       \333\350\351\352\370\1\x7A\110            AVX512
 
-[VCVTUQQ2PS,vcvtuqq2psX]
+[VCVTUQQ2PS,vcvtuqq2psN]
 (Ch_All)
 xmmreg_mz,mem128                          \334\350\352\370\1\x7A\110                AVX512,TFV
 xmmreg_mz,mem256                          \334\350\352\364\370\1\x7A\110            AVX512,TFV

+ 7 - 7
compiler/x86_64/x8664ats.inc

@@ -777,8 +777,8 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
-attsufMM,
-attsufMM,
+attsufMMX,
+attsufMMX,
 attsufNONE,
 attsufNONE,
 attsufNONE,
@@ -789,7 +789,7 @@ attsufINT,
 attsufINT,
 attsufNONE,
 attsufNONE,
-attsufMM,
+attsufMMX,
 attsufNONE,
 attsufNONE,
 attsufNONE,
@@ -1190,17 +1190,17 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
-attsufINT,
+attsufMMX,
 attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
-attsufINT,
+attsufMMX,
 attsufNONE,
 attsufNONE,
 attsufNONE,
-attsufINT,
+attsufMMX,
 attsufNONE,
 attsufNONE,
 attsufNONE,
@@ -1210,7 +1210,7 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
-attsufINT,
+attsufMMX,
 attsufINT,
 attsufINT,
 attsufNONE,

+ 2 - 2
compiler/x86_64/x8664tab.inc

@@ -10734,7 +10734,7 @@
   (
     opcode  : A_VCVTDQ2PD;
     ops     : 2;
-    optypes : (ot_zmmreg_mz,ot_ymmreg_er,ot_none,ot_none);
+    optypes : (ot_zmmreg_mz,ot_ymmreg,ot_none,ot_none);
     code    : #219#232#233#248#1#230#72;
     flags   : [if_avx512]
   ),
@@ -22459,7 +22459,7 @@
   (
     opcode  : A_VCVTUDQ2PD;
     ops     : 2;
-    optypes : (ot_zmmreg_mz,ot_ymmreg_er,ot_none,ot_none);
+    optypes : (ot_zmmreg_mz,ot_ymmreg,ot_none,ot_none);
     code    : #219#232#233#248#1#122#72;
     flags   : [if_avx512]
   ),