From fba72b280b8b145443a10dcf3bf132c99e46de3e Mon Sep 17 00:00:00 2001 From: tg74 Date: Wed, 19 Sep 2018 15:28:15 +0000 Subject: [PATCH] avx512 broadcast vcvt...,vfpclass... git-svn-id: branches/tg74/avx512@39778 - --- compiler/i386/i386nop.inc | 2 +- compiler/i386/i386tab.inc | 127 ++++++++++++++++++++++++----------- compiler/i8086/i8086nop.inc | 2 +- compiler/i8086/i8086tab.inc | 127 ++++++++++++++++++++++++----------- compiler/ppcx64.lpi | 5 +- compiler/x86/aasmcpu.pas | 8 +-- compiler/x86/x86ins.dat | 91 +++++++++++++------------ compiler/x86_64/x8664nop.inc | 2 +- compiler/x86_64/x8664tab.inc | 127 ++++++++++++++++++++++++----------- 9 files changed, 318 insertions(+), 173 deletions(-) diff --git a/compiler/i386/i386nop.inc b/compiler/i386/i386nop.inc index 7d4cc3e16b..6d25744dbd 100644 --- a/compiler/i386/i386nop.inc +++ b/compiler/i386/i386nop.inc @@ -1,2 +1,2 @@ { don't edit, this file is generated from x86ins.dat } -4032; +4039; diff --git a/compiler/i386/i386tab.inc b/compiler/i386/i386tab.inc index aa9a50281d..5f736697c9 100644 --- a/compiler/i386/i386tab.inc +++ b/compiler/i386/i386tab.inc @@ -10449,7 +10449,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #220#232#234#248#1#230#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTPD2DQ; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #220#232#234#244#248#1#230#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPD2DQ; @@ -10470,7 +10477,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #220#232#233#234#248#1#230#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPD2DQ; @@ -10505,7 +10512,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#241#248#1#90#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTPD2PS; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #232#234#241#244#248#1#90#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPD2PS; @@ -10526,7 +10540,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#233#234#241#248#1#90#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPD2PS; @@ -10659,7 +10673,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#248#1#90#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTPS2PD; @@ -10680,7 +10694,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#244#248#1#90#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPS2PD; @@ -10701,7 +10715,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#233#248#1#90#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPS2PH; @@ -10869,7 +10883,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#241#248#1#230#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTTPD2DQ; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #232#234#241#244#248#1#230#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTTPD2DQ; @@ -10890,7 +10911,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#233#234#241#248#1#230#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTTPD2DQ; @@ -20207,7 +20228,7 @@ ops : 3; optypes : (ot_xmmreg_mz,ot_xmmreg,ot_bmem32,ot_none); code : #232#241#249#1#190#61#80; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VFNMSUB231PS; @@ -21271,7 +21292,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTPD2UDQ; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #232#234#244#248#1#121#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPD2UDQ; @@ -21292,7 +21320,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#233#234#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPD2UDQ; @@ -21313,7 +21341,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#241#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTPD2UQQ; @@ -21327,7 +21355,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#241#244#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPD2UQQ; @@ -21341,7 +21369,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#233#234#241#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPD2UQQ; @@ -21369,7 +21397,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#248#1#123#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTPS2QQ; @@ -21383,7 +21411,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#244#248#1#123#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPS2QQ; @@ -21397,7 +21425,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#233#241#248#1#123#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPS2QQ; @@ -21418,7 +21446,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPS2UDQ; @@ -21432,7 +21460,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#244#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPS2UDQ; @@ -21446,7 +21474,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#233#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst16] ), ( opcode : A_VCVTPS2UDQ; @@ -21474,7 +21502,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTPS2UQQ; @@ -21488,7 +21516,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#244#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPS2UQQ; @@ -21502,7 +21530,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#233#241#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPS2UQQ; @@ -21586,7 +21614,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#248#1#91#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTQQ2PS; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #232#234#244#248#1#91#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTQQ2PS; @@ -21607,7 +21642,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#233#234#248#1#91#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTQQ2PS; @@ -21747,7 +21782,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#248#1#120#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTTPD2UDQ; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #232#234#244#248#1#120#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTTPD2UDQ; @@ -21768,7 +21810,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#233#234#248#1#120#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTTPD2UDQ; @@ -21845,7 +21887,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTTPS2QQ; @@ -21859,7 +21901,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#244#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTTPS2QQ; @@ -21873,7 +21915,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#233#241#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTTPS2QQ; @@ -21950,7 +21992,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#248#1#120#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTTPS2UQQ; @@ -21964,7 +22006,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#244#248#1#120#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTTPS2UQQ; @@ -21978,7 +22020,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#233#241#248#1#120#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTTPS2UQQ; @@ -22062,7 +22104,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #219#232#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTUDQ2PD; @@ -22076,7 +22118,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #219#232#244#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTUDQ2PD; @@ -22090,7 +22132,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #219#232#233#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTUDQ2PD; @@ -22223,7 +22265,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #220#232#234#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTUQQ2PS; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #220#232#234#244#248#1#122#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTUQQ2PS; @@ -22244,7 +22293,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #220#232#233#234#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTUQQ2PS; diff --git a/compiler/i8086/i8086nop.inc b/compiler/i8086/i8086nop.inc index dfc92e5a4d..78f1e9ce23 100644 --- a/compiler/i8086/i8086nop.inc +++ b/compiler/i8086/i8086nop.inc @@ -1,2 +1,2 @@ { don't edit, this file is generated from x86ins.dat } -4064; +4071; diff --git a/compiler/i8086/i8086tab.inc b/compiler/i8086/i8086tab.inc index 677aa2fe3b..04fe2646e4 100644 --- a/compiler/i8086/i8086tab.inc +++ b/compiler/i8086/i8086tab.inc @@ -10477,7 +10477,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #220#232#234#248#1#230#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTPD2DQ; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #220#232#234#244#248#1#230#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPD2DQ; @@ -10498,7 +10505,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #220#232#233#234#248#1#230#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPD2DQ; @@ -10533,7 +10540,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#241#248#1#90#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTPD2PS; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #232#234#241#244#248#1#90#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPD2PS; @@ -10554,7 +10568,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#233#234#241#248#1#90#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPD2PS; @@ -10687,7 +10701,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#248#1#90#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTPS2PD; @@ -10708,7 +10722,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#244#248#1#90#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPS2PD; @@ -10729,7 +10743,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#233#248#1#90#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPS2PH; @@ -10897,7 +10911,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#241#248#1#230#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTTPD2DQ; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #232#234#241#244#248#1#230#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTTPD2DQ; @@ -10918,7 +10939,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#233#234#241#248#1#230#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTTPD2DQ; @@ -20431,7 +20452,7 @@ ops : 3; optypes : (ot_xmmreg_mz,ot_xmmreg,ot_bmem32,ot_none); code : #232#241#249#1#190#61#80; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VFNMSUB231PS; @@ -21495,7 +21516,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTPD2UDQ; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #232#234#244#248#1#121#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPD2UDQ; @@ -21516,7 +21544,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#233#234#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPD2UDQ; @@ -21537,7 +21565,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#241#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTPD2UQQ; @@ -21551,7 +21579,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#241#244#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPD2UQQ; @@ -21565,7 +21593,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#233#234#241#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPD2UQQ; @@ -21593,7 +21621,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#248#1#123#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTPS2QQ; @@ -21607,7 +21635,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#244#248#1#123#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPS2QQ; @@ -21621,7 +21649,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#233#241#248#1#123#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPS2QQ; @@ -21642,7 +21670,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPS2UDQ; @@ -21656,7 +21684,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#244#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPS2UDQ; @@ -21670,7 +21698,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#233#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst16] ), ( opcode : A_VCVTPS2UDQ; @@ -21698,7 +21726,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTPS2UQQ; @@ -21712,7 +21740,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#244#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPS2UQQ; @@ -21726,7 +21754,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#233#241#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPS2UQQ; @@ -21810,7 +21838,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#248#1#91#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTQQ2PS; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #232#234#244#248#1#91#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTQQ2PS; @@ -21831,7 +21866,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#233#234#248#1#91#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTQQ2PS; @@ -21971,7 +22006,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#248#1#120#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTTPD2UDQ; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #232#234#244#248#1#120#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTTPD2UDQ; @@ -21992,7 +22034,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#233#234#248#1#120#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTTPD2UDQ; @@ -22069,7 +22111,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTTPS2QQ; @@ -22083,7 +22125,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#244#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTTPS2QQ; @@ -22097,7 +22139,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#233#241#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTTPS2QQ; @@ -22174,7 +22216,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#248#1#120#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTTPS2UQQ; @@ -22188,7 +22230,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#244#248#1#120#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTTPS2UQQ; @@ -22202,7 +22244,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#233#241#248#1#120#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTTPS2UQQ; @@ -22286,7 +22328,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #219#232#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTUDQ2PD; @@ -22300,7 +22342,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #219#232#244#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTUDQ2PD; @@ -22314,7 +22356,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #219#232#233#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTUDQ2PD; @@ -22447,7 +22489,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #220#232#234#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTUQQ2PS; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #220#232#234#244#248#1#122#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTUQQ2PS; @@ -22468,7 +22517,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #220#232#233#234#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTUQQ2PS; diff --git a/compiler/ppcx64.lpi b/compiler/ppcx64.lpi index 3d0afb854e..8452c21d52 100644 --- a/compiler/ppcx64.lpi +++ b/compiler/ppcx64.lpi @@ -25,7 +25,7 @@ - + @@ -33,12 +33,10 @@ - - @@ -71,7 +69,6 @@ - diff --git a/compiler/x86/aasmcpu.pas b/compiler/x86/aasmcpu.pas index 6520037f57..7d5a8dcb3c 100644 --- a/compiler/x86/aasmcpu.pas +++ b/compiler/x86/aasmcpu.pas @@ -1807,13 +1807,6 @@ implementation end; end; - - if opcode = A_VFPCLASSPD then - begin - vopext := 0; - - end; - if (InsTabMemRefSizeInfoCache^[opcode].ExistsSSEAVX) then begin for i:=0 to p^.ops-1 do @@ -1852,6 +1845,7 @@ implementation // e.g. vfpclasspd k1, [RAX] {1to8}, 0 // =>> check flags + case oper[i]^.vopext and (OTVE_VECTOR_BCST2 or OTVE_VECTOR_BCST4 or OTVE_VECTOR_BCST8 or OTVE_VECTOR_BCST16) of OTVE_VECTOR_BCST2: if not(IF_BCST2 in p^.flags) then exit; OTVE_VECTOR_BCST4: if not(IF_BCST4 in p^.flags) then exit; diff --git a/compiler/x86/x86ins.dat b/compiler/x86/x86ins.dat index 7c5222b6c2..9d4bf2b053 100644 --- a/compiler/x86/x86ins.dat +++ b/compiler/x86/x86ins.dat @@ -4132,13 +4132,13 @@ xmmreg,xmmreg_sae \350\362\370\1\x2F\110 (Ch_Wop2, Ch_Rop1) xmmreg_mz,mem64 \333\350\362\370\1\xE6\110 AVX,SANDYBRIDGE xmmreg_mz,xmmreg \333\350\362\370\1\xE6\110 AVX,SANDYBRIDGE -xmmreg_mz,bmem32 \333\350\370\1\xE6\110 AVX512 +xmmreg_mz,bmem32 \333\350\370\1\xE6\110 AVX512,BCST2 ymmreg_mz,mem128 \333\350\362\364\370\1\xE6\110 AVX,SANDYBRIDGE ymmreg_mz,xmmreg \333\350\362\364\370\1\xE6\110 AVX,SANDYBRIDGE -ymmreg_mz,bmem32 \333\350\364\370\1\xE6\110 AVX512 +ymmreg_mz,bmem32 \333\350\364\370\1\xE6\110 AVX512,BCST4 zmmreg_mz,mem256 \333\350\351\370\1\xE6\110 AVX512 zmmreg_mz,ymmreg_er \333\350\351\370\1\xE6\110 AVX512 -zmmreg_mz,bmem32 \333\350\351\370\1\xE6\110 AVX512 +zmmreg_mz,bmem32 \333\350\351\370\1\xE6\110 AVX512,BCST8 @@ -4158,10 +4158,11 @@ zmmreg_mz,zmmreg_er \350\351\370\1\x5B\110 xmmreg_mz,mem128 \334\350\352\362\370\1\xE6\110 AVX,SANDYBRIDGE xmmreg_mz,mem256 \334\350\352\362\364\370\1\xE6\110 AVX,SANDYBRIDGE xmmreg_mz,xmmreg \334\350\352\362\370\1\xE6\110 AVX,SANDYBRIDGE -xmmreg_mz,bmem64 \334\350\352\370\1\xE6\110 AVX512 +xmmreg_mz,bmem64 \334\350\352\370\1\xE6\110 AVX512,BCST2 +xmmreg_mz,bmem64 \334\350\352\364\370\1\xE6\110 AVX512,BCST4 xmmreg_mz,ymmreg \334\350\352\362\364\370\1\xE6\110 AVX,SANDYBRIDGE ymmreg_mz,mem512 \334\350\351\352\370\1\xE6\110 AVX512 -ymmreg_mz,bmem64 \334\350\351\352\370\1\xE6\110 AVX512 +ymmreg_mz,bmem64 \334\350\351\352\370\1\xE6\110 AVX512,BCST8 ymmreg_mz,zmmreg_er \334\350\351\352\370\1\xE6\110 AVX512 @@ -4170,10 +4171,11 @@ ymmreg_mz,zmmreg_er \334\350\351\352\370\1\xE6\110 xmmreg_mz,mem128 \350\352\361\362\370\1\x5A\110 AVX,SANDYBRIDGE xmmreg_mz,mem256 \350\352\361\362\364\370\1\x5A\110 AVX,SANDYBRIDGE xmmreg_mz,xmmreg \350\352\361\362\370\1\x5A\110 AVX,SANDYBRIDGE -xmmreg_mz,bmem64 \350\352\361\370\1\x5A\110 AVX512 +xmmreg_mz,bmem64 \350\352\361\370\1\x5A\110 AVX512,BCST2 +xmmreg_mz,bmem64 \350\352\361\364\370\1\x5A\110 AVX512,BCST4 xmmreg_mz,ymmreg \350\352\361\362\364\370\1\x5A\110 AVX,SANDYBRIDGE ymmreg_mz,mem512 \350\351\352\361\370\1\x5A\110 AVX512 -ymmreg_mz,bmem64 \350\351\352\361\370\1\x5A\110 AVX512 +ymmreg_mz,bmem64 \350\351\352\361\370\1\x5A\110 AVX512,BCST8 ymmreg_mz,zmmreg_er \350\351\352\361\370\1\x5A\110 AVX512 [VCVTPH2PS] @@ -4203,13 +4205,13 @@ zmmreg_mz,zmmreg_er \350\351\361\370\1\x5B\110 (Ch_Wop2, Ch_Rop1) xmmreg_mz,mem64 \350\362\370\1\x5A\110 AVX,SANDYBRIDGE xmmreg_mz,xmmreg \350\362\370\1\x5A\110 AVX,SANDYBRIDGE -xmmreg_mz,bmem32 \350\370\1\x5A\110 AVX512 +xmmreg_mz,bmem32 \350\370\1\x5A\110 AVX512,BCST2 ymmreg_mz,mem128 \350\362\364\370\1\x5A\110 AVX,SANDYBRIDGE ymmreg_mz,xmmreg \350\362\364\370\1\x5A\110 AVX,SANDYBRIDGE -ymmreg_mz,bmem32 \350\364\370\1\x5A\110 AVX512 +ymmreg_mz,bmem32 \350\364\370\1\x5A\110 AVX512,BCST4 zmmreg_mz,mem256 \350\351\370\1\x5A\110 AVX512 zmmreg_mz,ymmreg_sae \350\351\370\1\x5A\110 AVX512 -zmmreg_mz,bmem32 \350\351\370\1\x5A\110 AVX512 +zmmreg_mz,bmem32 \350\351\370\1\x5A\110 AVX512,BCST8 [VCVTPS2PH] @@ -4267,10 +4269,11 @@ reg64,xmmreg_er \333\350\352\362\363\370\1\x2D\110 xmmreg_mz,mem128 \350\352\361\362\370\1\xE6\110 AVX,SANDYBRIDGE,AVX512 xmmreg_mz,mem256 \350\352\361\362\364\370\1\xE6\110 AVX,SANDYBRIDGE,AVX512 xmmreg_mz,xmmreg \350\352\361\362\370\1\xE6\110 AVX,SANDYBRIDGE,AVX512 -xmmreg_mz,bmem64 \350\352\361\370\1\xE6\110 AVX512 +xmmreg_mz,bmem64 \350\352\361\370\1\xE6\110 AVX512,BCST2 +xmmreg_mz,bmem64 \350\352\361\364\370\1\xE6\110 AVX512,BCST4 xmmreg_mz,ymmreg \350\352\361\362\364\370\1\xE6\110 AVX,SANDYBRIDGE,AVX512 ymmreg_mz,mem512 \350\351\352\361\370\1\xE6\110 AVX512 -ymmreg_mz,bmem64 \350\351\352\361\370\1\xE6\110 AVX512 +ymmreg_mz,bmem64 \350\351\352\361\370\1\xE6\110 AVX512,BCST8 ymmreg_mz,zmmreg_sae \350\351\352\361\370\1\xE6\110 AVX512 [VCVTTPS2DQ] @@ -6821,7 +6824,7 @@ zmmreg_mz,zmmreg,bmem64 \350\351\352\361\371\1\xBE\75\120 [VFNMSUB231PS] (Ch_All) xmmreg_mz,xmmreg,xmmrm \350\361\362\371\1\xBE\75\120 FMA -xmmreg_mz,xmmreg,bmem32 \350\361\371\1\xBE\75\120 AVX512 +xmmreg_mz,xmmreg,bmem32 \350\361\371\1\xBE\75\120 AVX512,BCST2 ymmreg_mz,ymmreg,ymmrm \350\361\362\364\371\1\xBE\75\120 FMA ymmreg_mz,ymmreg,bmem32 \350\361\364\371\1\xBE\75\120 AVX512 zmmreg_mz,zmmreg,zmmreg_er \350\351\361\371\1\xBE\75\120 AVX512 @@ -7244,52 +7247,53 @@ zmmreg_mz,zmmreg_er \350\351\352\361\370\1\x7B\110 xmmreg_mz,mem128 \350\352\370\1\x79\110 AVX512 xmmreg_mz,mem256 \350\352\364\370\1\x79\110 AVX512 xmmreg_mz,xmmreg \350\352\370\1\x79\110 AVX512 -xmmreg_mz,bmem64 \350\352\370\1\x79\110 AVX512 +xmmreg_mz,bmem64 \350\352\370\1\x79\110 AVX512,BCST2 +xmmreg_mz,bmem64 \350\352\364\370\1\x79\110 AVX512,BCST4 xmmreg_mz,ymmreg \350\352\364\370\1\x79\110 AVX512 ymmreg_mz,mem512 \350\351\352\370\1\x79\110 AVX512 -ymmreg_mz,bmem64 \350\351\352\370\1\x79\110 AVX512 +ymmreg_mz,bmem64 \350\351\352\370\1\x79\110 AVX512,BCST8 ymmreg_mz,zmmreg_er \350\351\352\370\1\x79\110 AVX512 [VCVTPD2UQQ] (Ch_All) xmmreg_mz,xmmrm \350\352\361\370\1\x79\110 AVX512 -xmmreg_mz,bmem64 \350\352\361\370\1\x79\110 AVX512 +xmmreg_mz,bmem64 \350\352\361\370\1\x79\110 AVX512,BCST2 ymmreg_mz,ymmrm \350\352\361\364\370\1\x79\110 AVX512 -ymmreg_mz,bmem64 \350\352\361\364\370\1\x79\110 AVX512 +ymmreg_mz,bmem64 \350\352\361\364\370\1\x79\110 AVX512,BCST4 zmmreg_mz,mem512 \350\351\352\361\370\1\x79\110 AVX512 -zmmreg_mz,bmem64 \350\351\352\361\370\1\x79\110 AVX512 +zmmreg_mz,bmem64 \350\351\352\361\370\1\x79\110 AVX512,BCST8 zmmreg_mz,zmmreg_er \350\351\352\361\370\1\x79\110 AVX512 [VCVTPS2QQ] (Ch_All) xmmreg_mz,xmmreg \350\361\370\1\x7B\110 AVX512 xmmreg_mz,mem64 \350\361\370\1\x7B\110 AVX512 -xmmreg_mz,bmem32 \350\361\370\1\x7B\110 AVX512 +xmmreg_mz,bmem32 \350\361\370\1\x7B\110 AVX512,BCST2 ymmreg_mz,xmmrm \350\361\364\370\1\x7B\110 AVX512 -ymmreg_mz,bmem32 \350\361\364\370\1\x7B\110 AVX512 +ymmreg_mz,bmem32 \350\361\364\370\1\x7B\110 AVX512,BCST4 zmmreg_mz,mem256 \350\351\361\370\1\x7B\110 AVX512 -zmmreg_mz,bmem32 \350\351\361\370\1\x7B\110 AVX512 +zmmreg_mz,bmem32 \350\351\361\370\1\x7B\110 AVX512,BCST8 zmmreg_mz,ymmreg_er \350\351\361\370\1\x7B\110 AVX512 [VCVTPS2UDQ] (Ch_All) xmmreg_mz,xmmrm \350\370\1\x79\110 AVX512 -xmmreg_mz,bmem32 \350\370\1\x79\110 AVX512 +xmmreg_mz,bmem32 \350\370\1\x79\110 AVX512,BCST4 ymmreg_mz,ymmrm \350\364\370\1\x79\110 AVX512 -ymmreg_mz,bmem32 \350\364\370\1\x79\110 AVX512 +ymmreg_mz,bmem32 \350\364\370\1\x79\110 AVX512,BCST8 zmmreg_mz,mem512 \350\351\370\1\x79\110 AVX512 -zmmreg_mz,bmem32 \350\351\370\1\x79\110 AVX512 +zmmreg_mz,bmem32 \350\351\370\1\x79\110 AVX512,BCST16 zmmreg_mz,zmmreg_er \350\351\370\1\x79\110 AVX512 [VCVTPS2UQQ] (Ch_All) xmmreg_mz,xmmreg \350\361\370\1\x79\110 AVX512 xmmreg_mz,mem64 \350\361\370\1\x79\110 AVX512 -xmmreg_mz,bmem32 \350\361\370\1\x79\110 AVX512 +xmmreg_mz,bmem32 \350\361\370\1\x79\110 AVX512,BCST2 ymmreg_mz,xmmrm \350\361\364\370\1\x79\110 AVX512 -ymmreg_mz,bmem32 \350\361\364\370\1\x79\110 AVX512 +ymmreg_mz,bmem32 \350\361\364\370\1\x79\110 AVX512,BCST4 zmmreg_mz,mem256 \350\351\361\370\1\x79\110 AVX512 -zmmreg_mz,bmem32 \350\351\361\370\1\x79\110 AVX512 +zmmreg_mz,bmem32 \350\351\361\370\1\x79\110 AVX512,BCST8 zmmreg_mz,ymmreg_er \350\351\361\370\1\x79\110 AVX512 [VCVTQQ2PD] @@ -7307,10 +7311,11 @@ zmmreg_mz,zmmreg_er \333\350\351\352\370\1\xE6\110 xmmreg_mz,mem128 \350\352\370\1\x5B\110 AVX512 xmmreg_mz,mem256 \350\352\364\370\1\x5B\110 AVX512 xmmreg_mz,xmmreg \350\352\370\1\x5B\110 AVX512 -xmmreg_mz,bmem64 \350\352\370\1\x5B\110 AVX512 +xmmreg_mz,bmem64 \350\352\370\1\x5B\110 AVX512,BCST2 +xmmreg_mz,bmem64 \350\352\364\370\1\x5B\110 AVX512,BCST4 xmmreg_mz,ymmreg \350\352\364\370\1\x5B\110 AVX512 ymmreg_mz,mem512 \350\351\352\370\1\x5B\110 AVX512 -ymmreg_mz,bmem64 \350\351\352\370\1\x5B\110 AVX512 +ymmreg_mz,bmem64 \350\351\352\370\1\x5B\110 AVX512,BCST8 ymmreg_mz,zmmreg_er \350\351\352\370\1\x5B\110 AVX512 [VCVTSD2USI] @@ -7342,10 +7347,11 @@ zmmreg_mz,zmmreg_sae \350\351\352\361\370\1\x7A\110 xmmreg_mz,mem128 \350\352\370\1\x78\110 AVX512 xmmreg_mz,mem256 \350\352\364\370\1\x78\110 AVX512 xmmreg_mz,xmmreg \350\352\370\1\x78\110 AVX512 -xmmreg_mz,bmem64 \350\352\370\1\x78\110 AVX512 +xmmreg_mz,bmem64 \350\352\370\1\x78\110 AVX512,BCST2 +xmmreg_mz,bmem64 \350\352\364\370\1\x78\110 AVX512,BCST4 xmmreg_mz,ymmreg \350\352\364\370\1\x78\110 AVX512 ymmreg_mz,mem512 \350\351\352\370\1\x78\110 AVX512 -ymmreg_mz,bmem64 \350\351\352\370\1\x78\110 AVX512 +ymmreg_mz,bmem64 \350\351\352\370\1\x78\110 AVX512,BCST8 \350\352\370\1\x78\110 AVX512,BCST2 ymmreg_mz,zmmreg_sae \350\351\352\370\1\x78\110 AVX512 [VCVTTPD2UQQ] @@ -7362,11 +7368,11 @@ zmmreg_mz,zmmreg_sae \350\351\352\361\370\1\x78\110 (Ch_All) xmmreg_mz,xmmreg \350\361\370\1\x7A\110 AVX512 xmmreg_mz,mem64 \350\361\370\1\x7A\110 AVX512 -xmmreg_mz,bmem32 \350\361\370\1\x7A\110 AVX512 +xmmreg_mz,bmem32 \350\361\370\1\x7A\110 AVX512,BCST2 ymmreg_mz,xmmrm \350\361\364\370\1\x7A\110 AVX512 -ymmreg_mz,bmem32 \350\361\364\370\1\x7A\110 AVX512 +ymmreg_mz,bmem32 \350\361\364\370\1\x7A\110 AVX512,BCST4 zmmreg_mz,mem256 \350\351\361\370\1\x7A\110 AVX512 -zmmreg_mz,bmem32 \350\351\361\370\1\x7A\110 AVX512 +zmmreg_mz,bmem32 \350\351\361\370\1\x7A\110 AVX512,BCST8 zmmreg_mz,ymmreg_sae \350\351\361\370\1\x7A\110 AVX512 [VCVTTPS2UDQ] @@ -7383,11 +7389,11 @@ zmmreg_mz,zmmreg_sae \350\351\370\1\x78\110 (Ch_All) xmmreg_mz,xmmreg \350\361\370\1\x78\110 AVX512 xmmreg_mz,mem64 \350\361\370\1\x78\110 AVX512 -xmmreg_mz,bmem32 \350\361\370\1\x78\110 AVX512 +xmmreg_mz,bmem32 \350\361\370\1\x78\110 AVX512,BCST2 ymmreg_mz,xmmrm \350\361\364\370\1\x78\110 AVX512 -ymmreg_mz,bmem32 \350\361\364\370\1\x78\110 AVX512 +ymmreg_mz,bmem32 \350\361\364\370\1\x78\110 AVX512,BCST4 zmmreg_mz,mem256 \350\351\361\370\1\x78\110 AVX512 -zmmreg_mz,bmem32 \350\351\361\370\1\x78\110 AVX512 +zmmreg_mz,bmem32 \350\351\361\370\1\x78\110 AVX512,BCST8 zmmreg_mz,ymmreg_sae \350\351\361\370\1\x78\110 AVX512 [VCVTTSD2USI] @@ -7408,11 +7414,11 @@ reg64,xmmreg_sae \333\350\352\370\1\x78\110 (Ch_All) xmmreg_mz,xmmreg \333\350\370\1\x7A\110 AVX512 xmmreg_mz,mem64 \333\350\370\1\x7A\110 AVX512 -xmmreg_mz,bmem32 \333\350\370\1\x7A\110 AVX512 +xmmreg_mz,bmem32 \333\350\370\1\x7A\110 AVX512,BCST2 ymmreg_mz,xmmrm \333\350\364\370\1\x7A\110 AVX512 -ymmreg_mz,bmem32 \333\350\364\370\1\x7A\110 AVX512 +ymmreg_mz,bmem32 \333\350\364\370\1\x7A\110 AVX512,BCST4 zmmreg_mz,mem256 \333\350\351\370\1\x7A\110 AVX512 -zmmreg_mz,bmem32 \333\350\351\370\1\x7A\110 AVX512 +zmmreg_mz,bmem32 \333\350\351\370\1\x7A\110 AVX512,BCST8 zmmreg_mz,ymmreg_er \333\350\351\370\1\x7A\110 AVX512 [VCVTUDQ2PS] @@ -7440,10 +7446,11 @@ zmmreg_mz,zmmreg_er \333\350\351\352\370\1\x7A\110 xmmreg_mz,mem128 \334\350\352\370\1\x7A\110 AVX512 xmmreg_mz,mem256 \334\350\352\364\370\1\x7A\110 AVX512 xmmreg_mz,xmmreg \334\350\352\370\1\x7A\110 AVX512 -xmmreg_mz,bmem64 \334\350\352\370\1\x7A\110 AVX512 +xmmreg_mz,bmem64 \334\350\352\370\1\x7A\110 AVX512,BCST2 +xmmreg_mz,bmem64 \334\350\352\364\370\1\x7A\110 AVX512,BCST4 xmmreg_mz,ymmreg \334\350\352\364\370\1\x7A\110 AVX512 ymmreg_mz,mem512 \334\350\351\352\370\1\x7A\110 AVX512 -ymmreg_mz,bmem64 \334\350\351\352\370\1\x7A\110 AVX512 +ymmreg_mz,bmem64 \334\350\351\352\370\1\x7A\110 AVX512,BCST8 ymmreg_mz,zmmreg_er \334\350\351\352\370\1\x7A\110 AVX512 [VCVTUSI2SD] diff --git a/compiler/x86_64/x8664nop.inc b/compiler/x86_64/x8664nop.inc index 9aa9566158..7371a3e73c 100644 --- a/compiler/x86_64/x8664nop.inc +++ b/compiler/x86_64/x8664nop.inc @@ -1,2 +1,2 @@ { don't edit, this file is generated from x86ins.dat } -4085; +4092; diff --git a/compiler/x86_64/x8664tab.inc b/compiler/x86_64/x8664tab.inc index 6322d25b79..555aa9dee6 100644 --- a/compiler/x86_64/x8664tab.inc +++ b/compiler/x86_64/x8664tab.inc @@ -10750,7 +10750,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #220#232#234#248#1#230#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTPD2DQ; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #220#232#234#244#248#1#230#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPD2DQ; @@ -10771,7 +10778,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #220#232#233#234#248#1#230#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPD2DQ; @@ -10806,7 +10813,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#241#248#1#90#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTPD2PS; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #232#234#241#244#248#1#90#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPD2PS; @@ -10827,7 +10841,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#233#234#241#248#1#90#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPD2PS; @@ -10960,7 +10974,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#248#1#90#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTPS2PD; @@ -10981,7 +10995,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#244#248#1#90#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPS2PD; @@ -11002,7 +11016,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#233#248#1#90#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPS2PH; @@ -11184,7 +11198,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#241#248#1#230#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTTPD2DQ; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #232#234#241#244#248#1#230#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTTPD2DQ; @@ -11205,7 +11226,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#233#234#241#248#1#230#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTTPD2DQ; @@ -20578,7 +20599,7 @@ ops : 3; optypes : (ot_xmmreg_mz,ot_xmmreg,ot_bmem32,ot_none); code : #232#241#249#1#190#61#80; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VFNMSUB231PS; @@ -21642,7 +21663,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTPD2UDQ; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #232#234#244#248#1#121#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPD2UDQ; @@ -21663,7 +21691,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#233#234#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPD2UDQ; @@ -21684,7 +21712,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#241#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTPD2UQQ; @@ -21698,7 +21726,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#241#244#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPD2UQQ; @@ -21712,7 +21740,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#233#234#241#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPD2UQQ; @@ -21740,7 +21768,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#248#1#123#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTPS2QQ; @@ -21754,7 +21782,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#244#248#1#123#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPS2QQ; @@ -21768,7 +21796,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#233#241#248#1#123#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPS2QQ; @@ -21789,7 +21817,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPS2UDQ; @@ -21803,7 +21831,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#244#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPS2UDQ; @@ -21817,7 +21845,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#233#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst16] ), ( opcode : A_VCVTPS2UDQ; @@ -21845,7 +21873,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTPS2UQQ; @@ -21859,7 +21887,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#244#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTPS2UQQ; @@ -21873,7 +21901,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#233#241#248#1#121#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTPS2UQQ; @@ -21957,7 +21985,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#248#1#91#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTQQ2PS; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #232#234#244#248#1#91#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTQQ2PS; @@ -21978,7 +22013,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#233#234#248#1#91#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTQQ2PS; @@ -22118,7 +22153,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#234#248#1#120#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTTPD2UDQ; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #232#234#244#248#1#120#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTTPD2UDQ; @@ -22139,7 +22181,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #232#233#234#248#1#120#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTTPD2UDQ; @@ -22216,7 +22258,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTTPS2QQ; @@ -22230,7 +22272,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#244#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTTPS2QQ; @@ -22244,7 +22286,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#233#241#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTTPS2QQ; @@ -22321,7 +22363,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#248#1#120#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTTPS2UQQ; @@ -22335,7 +22377,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#241#244#248#1#120#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTTPS2UQQ; @@ -22349,7 +22391,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #232#233#241#248#1#120#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTTPS2UQQ; @@ -22433,7 +22475,7 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem32,ot_none,ot_none); code : #219#232#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] ), ( opcode : A_VCVTUDQ2PD; @@ -22447,7 +22489,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem32,ot_none,ot_none); code : #219#232#244#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTUDQ2PD; @@ -22461,7 +22503,7 @@ ops : 2; optypes : (ot_zmmreg_mz,ot_bmem32,ot_none,ot_none); code : #219#232#233#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTUDQ2PD; @@ -22594,7 +22636,14 @@ ops : 2; optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); code : #220#232#234#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst2] + ), + ( + opcode : A_VCVTUQQ2PS; + ops : 2; + optypes : (ot_xmmreg_mz,ot_bmem64,ot_none,ot_none); + code : #220#232#234#244#248#1#122#72; + flags : [if_avx512,if_bcst4] ), ( opcode : A_VCVTUQQ2PS; @@ -22615,7 +22664,7 @@ ops : 2; optypes : (ot_ymmreg_mz,ot_bmem64,ot_none,ot_none); code : #220#232#233#234#248#1#122#72; - flags : [if_avx512] + flags : [if_avx512,if_bcst8] ), ( opcode : A_VCVTUQQ2PS;