summaryrefslogtreecommitdiff
path: root/lib/Target/X86/X86InstrAVX512.td
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/X86/X86InstrAVX512.td')
-rw-r--r--lib/Target/X86/X86InstrAVX512.td42
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)>;