summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2017-12-01 16:35:57 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2017-12-01 16:35:57 +0000
commit07b4c5917efaa005fdacd1bfbb01a6019c250588 (patch)
tree77031ffa3d41a7b022fe36d198d29299de69efe3 /llvm/lib
parent9fbecd5b0dc4eded9846e35590bf5224f8cb9dce (diff)
downloadbcm5719-llvm-07b4c5917efaa005fdacd1bfbb01a6019c250588.tar.gz
bcm5719-llvm-07b4c5917efaa005fdacd1bfbb01a6019c250588.zip
[X86][AVX512] Tag VPSHUFBITQMB instructions scheduler class
llvm-svn: 319553
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86InstrAVX512.td21
1 files changed, 12 insertions, 9 deletions
diff --git a/llvm/lib/Target/X86/X86InstrAVX512.td b/llvm/lib/Target/X86/X86InstrAVX512.td
index 3855b085d50..e9c06447eef 100644
--- a/llvm/lib/Target/X86/X86InstrAVX512.td
+++ b/llvm/lib/Target/X86/X86InstrAVX512.td
@@ -10348,32 +10348,35 @@ defm VPOPCNTW : avx512_unary_rm_vl<0x54, "vpopcntw", ctpop, SSE_INTALU_ITINS_P,
avx512vl_i16_info, HasBITALG>,
avx512_unary_lowering<ctpop, avx512vl_i16_info, HasBITALG>, VEX_W;
-multiclass VPSHUFBITQMB_rm<X86VectorVTInfo VTI> {
+multiclass VPSHUFBITQMB_rm<OpndItins itins, X86VectorVTInfo VTI> {
defm rr : AVX512_maskable_cmp<0x8F, MRMSrcReg, VTI, (outs VTI.KRC:$dst),
(ins VTI.RC:$src1, VTI.RC:$src2),
"vpshufbitqmb",
"$src2, $src1", "$src1, $src2",
(X86Vpshufbitqmb (VTI.VT VTI.RC:$src1),
- (VTI.VT VTI.RC:$src2))>, EVEX_4V, T8PD;
+ (VTI.VT VTI.RC:$src2)), itins.rr>, EVEX_4V, T8PD,
+ Sched<[itins.Sched]>;
defm rm : AVX512_maskable_cmp<0x8F, MRMSrcMem, VTI, (outs VTI.KRC:$dst),
(ins VTI.RC:$src1, VTI.MemOp:$src2),
"vpshufbitqmb",
"$src2, $src1", "$src1, $src2",
(X86Vpshufbitqmb (VTI.VT VTI.RC:$src1),
- (VTI.VT (bitconvert (VTI.LdFrag addr:$src2))))>,
- EVEX_4V, EVEX_CD8<8, CD8VF>, T8PD;
+ (VTI.VT (bitconvert (VTI.LdFrag addr:$src2)))),
+ itins.rm>, EVEX_4V, EVEX_CD8<8, CD8VF>, T8PD,
+ Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
-multiclass VPSHUFBITQMB_common<AVX512VLVectorVTInfo VTI> {
+multiclass VPSHUFBITQMB_common<OpndItins itins, AVX512VLVectorVTInfo VTI> {
let Predicates = [HasBITALG] in
- defm Z : VPSHUFBITQMB_rm<VTI.info512>, EVEX_V512;
+ defm Z : VPSHUFBITQMB_rm<itins, VTI.info512>, EVEX_V512;
let Predicates = [HasBITALG, HasVLX] in {
- defm Z256 : VPSHUFBITQMB_rm<VTI.info256>, EVEX_V256;
- defm Z128 : VPSHUFBITQMB_rm<VTI.info128>, EVEX_V128;
+ defm Z256 : VPSHUFBITQMB_rm<itins, VTI.info256>, EVEX_V256;
+ defm Z128 : VPSHUFBITQMB_rm<itins, VTI.info128>, EVEX_V128;
}
}
-defm VPSHUFBITQMB : VPSHUFBITQMB_common<avx512vl_i8_info>;
+// FIXME: Is there a better scheduler itinerary for VPSHUFBITQMB?
+defm VPSHUFBITQMB : VPSHUFBITQMB_common<SSE_INTMUL_ITINS_P, avx512vl_i8_info>;
//===----------------------------------------------------------------------===//
// GFNI
OpenPOWER on IntegriCloud