diff options
Diffstat (limited to 'lib/Target/X86/X86InstrAVX512.td')
-rw-r--r-- | lib/Target/X86/X86InstrAVX512.td | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/lib/Target/X86/X86InstrAVX512.td b/lib/Target/X86/X86InstrAVX512.td index 663f2d17bfc..4826eb72532 100644 --- a/lib/Target/X86/X86InstrAVX512.td +++ b/lib/Target/X86/X86InstrAVX512.td @@ -1215,51 +1215,61 @@ multiclass avx512_broadcast_rm_split<bits<8> opc, string OpcodeStr, multiclass avx512_broadcast_rm<bits<8> opc, string OpcodeStr, SchedWrite SchedRR, SchedWrite SchedRM, X86VectorVTInfo DestInfo, - X86VectorVTInfo SrcInfo> : + X86VectorVTInfo SrcInfo, string BASENAME> : avx512_broadcast_rm_split<opc, OpcodeStr, SchedRR, SchedRM, - DestInfo, DestInfo, SrcInfo>; + DestInfo, DestInfo, SrcInfo, BASENAME>; multiclass avx512_fp_broadcast_sd<bits<8> opc, string OpcodeStr, - AVX512VLVectorVTInfo _> { + AVX512VLVectorVTInfo _, string BASENAME> { let Predicates = [HasAVX512] in { defm Z : avx512_broadcast_rm<opc, OpcodeStr, WriteFShuffle256, - WriteFShuffle256Ld, _.info512, _.info128>, - avx512_broadcast_scalar<opc, OpcodeStr, _.info512, _.info128>, + WriteFShuffle256Ld, _.info512, _.info128, + string BASENAME>, + avx512_broadcast_scalar<opc, OpcodeStr, _.info512, _.info128, + string BASENAME>, EVEX_V512; } let Predicates = [HasVLX] in { defm Z256 : avx512_broadcast_rm<opc, OpcodeStr, WriteFShuffle256, - WriteFShuffle256Ld, _.info256, _.info128>, - avx512_broadcast_scalar<opc, OpcodeStr, _.info256, _.info128>, + WriteFShuffle256Ld, _.info256, _.info128, + string BASENAME>, + avx512_broadcast_scalar<opc, OpcodeStr, _.info256, _.info128, + string BASENAME>, EVEX_V256; } } multiclass avx512_fp_broadcast_ss<bits<8> opc, string OpcodeStr, - AVX512VLVectorVTInfo _> { + AVX512VLVectorVTInfo _, string BASENAME> { let Predicates = [HasAVX512] in { defm Z : avx512_broadcast_rm<opc, OpcodeStr, WriteFShuffle256, - WriteFShuffle256Ld, _.info512, _.info128>, - avx512_broadcast_scalar<opc, OpcodeStr, _.info512, _.info128>, + WriteFShuffle256Ld, _.info512, _.info128, + string BASENAME>, + avx512_broadcast_scalar<opc, OpcodeStr, _.info512, _.info128, + string BASENAME>, EVEX_V512; } let Predicates = [HasVLX] in { defm Z256 : avx512_broadcast_rm<opc, OpcodeStr, WriteFShuffle256, - WriteFShuffle256Ld, _.info256, _.info128>, - avx512_broadcast_scalar<opc, OpcodeStr, _.info256, _.info128>, + WriteFShuffle256Ld, _.info256, _.info128, + string BASENAME>, + avx512_broadcast_scalar<opc, OpcodeStr, _.info256, _.info128, + string BASENAME>, EVEX_V256; defm Z128 : avx512_broadcast_rm<opc, OpcodeStr, WriteFShuffle256, - WriteFShuffle256Ld, _.info128, _.info128>, - avx512_broadcast_scalar<opc, OpcodeStr, _.info128, _.info128>, + WriteFShuffle256Ld, _.info128, _.info128, + string BASENAME>, + avx512_broadcast_scalar<opc, OpcodeStr, _.info128, _.info128, + string BASENAME>, EVEX_V128; } } defm VBROADCASTSS : avx512_fp_broadcast_ss<0x18, "vbroadcastss", - avx512vl_f32_info>; + avx512vl_f32_info, "VBROADCASTSS">; defm VBROADCASTSD : avx512_fp_broadcast_sd<0x19, "vbroadcastsd", - avx512vl_f64_info>, VEX_W; + avx512vl_f64_info, "VBROADCASTSD">, VEX_W; def : Pat<(int_x86_avx512_vbroadcast_ss_512 addr:$src), (VBROADCASTSSZm addr:$src)>; |