mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-22 19:29:24 +02:00
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 -
This commit is contained in:
parent
c3bb9a2954
commit
c4d80b1694
@ -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,
|
||||
|
@ -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]
|
||||
),
|
||||
|
@ -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,
|
||||
|
@ -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]
|
||||
),
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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]
|
||||
),
|
||||
|
Loading…
Reference in New Issue
Block a user