1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 20:43:44 +02:00

[X86] Remove x86 InstrItinClass entries (PR37093)

This removes the last of the x86 schedule itineraries, I'm intending to cleanup the remaining uses of NoItinerary/OpndItins/etc. before resolving PR37093.

llvm-svn: 329967
This commit is contained in:
Simon Pilgrim 2018-04-12 22:44:47 +00:00
parent bc99ced9a0
commit 4c267ba6eb
3 changed files with 94 additions and 241 deletions

View File

@ -585,11 +585,11 @@ multiclass vinsert_for_type<ValueType EltVT32, int Opcode128,
// FIXME: Is there a better scheduler itinerary for VINSERTF/VINSERTI?
let Sched = WriteFShuffle256 in
def AVX512_VINSERTF : OpndItins<
IIC_SSE_SHUFP, IIC_SSE_SHUFP
NoItinerary, NoItinerary
>;
let Sched = WriteShuffle256 in
def AVX512_VINSERTI : OpndItins<
IIC_SSE_PSHUF_RI, IIC_SSE_PSHUF_MI
NoItinerary, NoItinerary
>;
defm VINSERTF : vinsert_for_type<f32, 0x18, f64, 0x1a, AVX512_VINSERTF>;
@ -1712,12 +1712,12 @@ defm VPBROADCASTMB2Q : avx512_mask_broadcast<0x2A, "vpbroadcastmb2q",
let Sched = WriteFVarShuffle256 in
def AVX512_PERM2_F : OpndItins<
IIC_SSE_SHUFP, IIC_SSE_SHUFP
NoItinerary, NoItinerary
>;
let Sched = WriteVarShuffle256 in
def AVX512_PERM2_I : OpndItins<
IIC_SSE_PSHUF_RI, IIC_SSE_PSHUF_MI
NoItinerary, NoItinerary
>;
multiclass avx512_perm_i<bits<8> opc, string OpcodeStr, OpndItins itins,
@ -1881,12 +1881,12 @@ defm VPERMT2PD : avx512_perm_t_sizes<0x7F, "vpermt2pd", AVX512_PERM2_F,
let Sched = WriteFVarBlend in
def AVX512_BLENDM : OpndItins<
IIC_SSE_ALU_F32P_RR, IIC_SSE_ALU_F32P_RM
NoItinerary, NoItinerary
>;
let Sched = WriteVarBlend in
def AVX512_PBLENDM : OpndItins<
IIC_SSE_INTALU_P_RR, IIC_SSE_INTALU_P_RM
NoItinerary, NoItinerary
>;
multiclass avx512_blendmask<bits<8> opc, string OpcodeStr, OpndItins itins,
@ -5689,7 +5689,7 @@ multiclass avx512_var_shift_w<bits<8> opc, string OpcodeStr,
let Sched = WriteVarVecShift in
def AVX512_VARSHIFT_P : OpndItins<
IIC_SSE_INTSH_P_RR, IIC_SSE_INTSH_P_RM
NoItinerary, NoItinerary
>;
defm VPSLLV : avx512_var_shift_types<0x47, "vpsllv", shl, AVX512_VARSHIFT_P>,
@ -8199,12 +8199,12 @@ defm VRNDSCALESD : avx512_rndscale_scalar<0x0B, "vrndscalesd", SSE_ALU_F64S,
let Sched = WriteShuffle256 in
def AVX512_EXTEND : OpndItins<
IIC_SSE_PSHUF_RI, IIC_SSE_PSHUF_MI
NoItinerary, NoItinerary
>;
let Sched = WriteShuffle256 in
def AVX512_TRUNCATE : OpndItins<
IIC_SSE_PSHUF_RI, IIC_SSE_PSHUF_MI
NoItinerary, NoItinerary
>;
multiclass avx512_trunc_common<bits<8> opc, string OpcodeStr, SDNode OpNode,
@ -8939,10 +8939,10 @@ let Predicates = [HasDQI, NoBWI] in {
// FIXME: Is there a better scheduler itinerary for VPCOMPRESS/VPEXPAND?
let Sched = WriteVarShuffle256 in {
def AVX512_COMPRESS : OpndItins<
IIC_SSE_INTALU_P_RR, IIC_SSE_INTALU_P_RM
NoItinerary, NoItinerary
>;
def AVX512_EXPAND : OpndItins<
IIC_SSE_INTALU_P_RR, IIC_SSE_INTALU_P_RM
NoItinerary, NoItinerary
>;
}
@ -10035,7 +10035,7 @@ defm VSHUFPD: avx512_shufp<"vshufpd", avx512vl_i64_info, avx512vl_f64_info>, PD,
let Sched = WriteVecShift in
def AVX512_BYTESHIFT : OpndItins<
IIC_SSE_INTSHDQ_P_RI, IIC_SSE_INTSHDQ_P_RI
NoItinerary, NoItinerary
>;
multiclass avx512_shift_packed<bits<8> opc, SDNode OpNode, Format MRMr,

View File

@ -42,11 +42,11 @@ class ShiftOpndItins<InstrItinClass arg_rr, InstrItinClass arg_rm,
// scalar
let Sched = WriteFAdd in {
def SSE_ALU_F32S : OpndItins<
IIC_SSE_ALU_F32S_RR, IIC_SSE_ALU_F32S_RM
NoItinerary, NoItinerary
>;
def SSE_ALU_F64S : OpndItins<
IIC_SSE_ALU_F64S_RR, IIC_SSE_ALU_F64S_RM
NoItinerary, NoItinerary
>;
}
@ -56,11 +56,11 @@ def SSE_ALU_ITINS_S : SizeItins<
let Sched = WriteFMul in {
def SSE_MUL_F32S : OpndItins<
IIC_SSE_MUL_F32S_RR, IIC_SSE_MUL_F32S_RM
NoItinerary, NoItinerary
>;
def SSE_MUL_F64S : OpndItins<
IIC_SSE_MUL_F64S_RR, IIC_SSE_MUL_F64S_RM
NoItinerary, NoItinerary
>;
}
@ -70,11 +70,11 @@ def SSE_MUL_ITINS_S : SizeItins<
let Sched = WriteFDiv in {
def SSE_DIV_F32S : OpndItins<
IIC_SSE_DIV_F32S_RR, IIC_SSE_DIV_F32S_RM
NoItinerary, NoItinerary
>;
def SSE_DIV_F64S : OpndItins<
IIC_SSE_DIV_F64S_RR, IIC_SSE_DIV_F64S_RM
NoItinerary, NoItinerary
>;
}
@ -85,11 +85,11 @@ def SSE_DIV_ITINS_S : SizeItins<
// parallel
let Sched = WriteFAdd in {
def SSE_ALU_F32P : OpndItins<
IIC_SSE_ALU_F32P_RR, IIC_SSE_ALU_F32P_RM
NoItinerary, NoItinerary
>;
def SSE_ALU_F64P : OpndItins<
IIC_SSE_ALU_F64P_RR, IIC_SSE_ALU_F64P_RM
NoItinerary, NoItinerary
>;
}
@ -99,11 +99,11 @@ def SSE_ALU_ITINS_P : SizeItins<
let Sched = WriteFMul in {
def SSE_MUL_F32P : OpndItins<
IIC_SSE_MUL_F32P_RR, IIC_SSE_MUL_F32P_RM
NoItinerary, NoItinerary
>;
def SSE_MUL_F64P : OpndItins<
IIC_SSE_MUL_F64P_RR, IIC_SSE_MUL_F64P_RM
NoItinerary, NoItinerary
>;
}
@ -113,11 +113,11 @@ def SSE_MUL_ITINS_P : SizeItins<
let Sched = WriteFDiv in {
def SSE_DIV_F32P : OpndItins<
IIC_SSE_DIV_F32P_RR, IIC_SSE_DIV_F32P_RM
NoItinerary, NoItinerary
>;
def SSE_DIV_F64P : OpndItins<
IIC_SSE_DIV_F64P_RR, IIC_SSE_DIV_F64P_RM
NoItinerary, NoItinerary
>;
}
@ -127,78 +127,73 @@ def SSE_DIV_ITINS_P : SizeItins<
let Sched = WriteVecLogic in
def SSE_BIT_ITINS_P : OpndItins<
IIC_SSE_BIT_P_RR, IIC_SSE_BIT_P_RM
NoItinerary, NoItinerary
>;
let Sched = WriteVecALU in {
def SSE_INTALU_ITINS_P : OpndItins<
IIC_SSE_INTALU_P_RR, IIC_SSE_INTALU_P_RM
NoItinerary, NoItinerary
>;
def SSE_INTALUQ_ITINS_P : OpndItins<
IIC_SSE_INTALUQ_P_RR, IIC_SSE_INTALUQ_P_RM
NoItinerary, NoItinerary
>;
}
let Sched = WriteVecIMul in
def SSE_INTMUL_ITINS_P : OpndItins<
IIC_SSE_INTMUL_P_RR, IIC_SSE_INTMUL_P_RM
NoItinerary, NoItinerary
>;
// FIXME: Merge SSE_INTSHIFT_P + SSE_INTSHIFT_ITINS_P.
let Sched = WriteVecShift in
def SSE_INTSHIFT_P : OpndItins<
IIC_SSE_INTSH_P_RR, IIC_SSE_INTSH_P_RM
>;
def SSE_INTSHIFT_ITINS_P : ShiftOpndItins<
IIC_SSE_INTSH_P_RR, IIC_SSE_INTSH_P_RM, IIC_SSE_INTSH_P_RI
NoItinerary, NoItinerary
>;
def SSE_MOVA_ITINS : OpndItins<
IIC_SSE_MOVA_P_RR, IIC_SSE_MOVA_P_RM
NoItinerary, NoItinerary
>;
def SSE_MOVA : MoveLoadStoreItins<
IIC_SSE_MOVA_P_RR, IIC_SSE_MOVA_P_RM, IIC_SSE_MOVA_P_MR
NoItinerary, NoItinerary, NoItinerary
>;
def SSE_MOVU_ITINS : OpndItins<
IIC_SSE_MOVU_P_RR, IIC_SSE_MOVU_P_RM
NoItinerary, NoItinerary
>;
def SSE_MOVU : MoveLoadStoreItins<
IIC_SSE_MOVU_P_RR, IIC_SSE_MOVU_P_RM, IIC_SSE_MOVU_P_MR
NoItinerary, NoItinerary, NoItinerary
>;
def SSE_DPPD_ITINS : OpndItins<
IIC_SSE_DPPD_RR, IIC_SSE_DPPD_RM
NoItinerary, NoItinerary
>;
def SSE_DPPS_ITINS : OpndItins<
IIC_SSE_DPPS_RR, IIC_SSE_DPPS_RM
NoItinerary, NoItinerary
>;
def DEFAULT_ITINS : OpndItins<
IIC_ALU_NONMEM, IIC_ALU_MEM
NoItinerary, NoItinerary
>;
def SSE_EXTRACT_ITINS : OpndItins<
IIC_SSE_EXTRACTPS_RR, IIC_SSE_EXTRACTPS_RM
NoItinerary, NoItinerary
>;
def SSE_INSERT_ITINS : OpndItins<
IIC_SSE_INSERTPS_RR, IIC_SSE_INSERTPS_RM
NoItinerary, NoItinerary
>;
let Sched = WriteMPSAD in
def SSE_MPSADBW_ITINS : OpndItins<
IIC_SSE_MPSADBW_RR, IIC_SSE_MPSADBW_RM
NoItinerary, NoItinerary
>;
let Sched = WritePMULLD in
def SSE_PMULLD_ITINS : OpndItins<
IIC_SSE_PMULLD_RR, IIC_SSE_PMULLD_RM
NoItinerary, NoItinerary
>;
// Definitions for backward compatibility.
@ -206,42 +201,42 @@ def SSE_PMULLD_ITINS : OpndItins<
// than the actual scheduling model.
let Sched = WriteShuffle in
def DEFAULT_ITINS_SHUFFLESCHED : OpndItins<
IIC_ALU_NONMEM, IIC_ALU_MEM
NoItinerary, NoItinerary
>;
let Sched = WriteVecIMul in
def DEFAULT_ITINS_VECIMULSCHED : OpndItins<
IIC_ALU_NONMEM, IIC_ALU_MEM
NoItinerary, NoItinerary
>;
let Sched = WriteShuffle in
def SSE_INTALU_ITINS_SHUFF_P : OpndItins<
IIC_SSE_INTALU_P_RR, IIC_SSE_INTALU_P_RM
NoItinerary, NoItinerary
>;
let Sched = WriteShuffle in
def SSE_PACK : OpndItins<
IIC_SSE_PACK, IIC_SSE_PACK
NoItinerary, NoItinerary
>;
let Sched = WriteVarBlend in
def DEFAULT_ITINS_VARBLENDSCHED : OpndItins<
IIC_ALU_NONMEM, IIC_ALU_MEM
NoItinerary, NoItinerary
>;
let Sched = WriteFVarBlend in
def DEFAULT_ITINS_FVARBLENDSCHED : OpndItins<
IIC_ALU_NONMEM, IIC_ALU_MEM
NoItinerary, NoItinerary
>;
let Sched = WriteFBlend in
def SSE_INTALU_ITINS_FBLEND_P : OpndItins<
IIC_SSE_INTALU_P_RR, IIC_SSE_INTALU_P_RM
NoItinerary, NoItinerary
>;
let Sched = WriteBlend in
def SSE_INTALU_ITINS_BLEND_P : OpndItins<
IIC_SSE_INTALU_P_RR, IIC_SSE_INTALU_P_RM
NoItinerary, NoItinerary
>;
//===----------------------------------------------------------------------===//
@ -1119,68 +1114,68 @@ let Constraints = "$src1 = $dst", AddedComplexity = 20 in {
let Sched = WriteCvtF2I in {
def SSE_CVT_SS2SI_32 : OpndItins<
IIC_SSE_CVT_SS2SI32_RR, IIC_SSE_CVT_SS2SI32_RM
NoItinerary, NoItinerary
>;
let Sched = WriteCvtF2I in
def SSE_CVT_SS2SI_64 : OpndItins<
IIC_SSE_CVT_SS2SI64_RR, IIC_SSE_CVT_SS2SI64_RM
NoItinerary, NoItinerary
>;
def SSE_CVT_SD2SI : OpndItins<
IIC_SSE_CVT_SD2SI_RR, IIC_SSE_CVT_SD2SI_RM
NoItinerary, NoItinerary
>;
def SSE_CVT_PS2I : OpndItins<
IIC_SSE_CVT_PS_RR, IIC_SSE_CVT_PS_RM
NoItinerary, NoItinerary
>;
def SSE_CVT_PD2I : OpndItins<
IIC_SSE_CVT_PD_RR, IIC_SSE_CVT_PD_RM
NoItinerary, NoItinerary
>;
}
let Sched = WriteCvtI2F in {
def SSE_CVT_SI2SS : OpndItins<
IIC_SSE_CVT_Scalar_RR, IIC_SSE_CVT_Scalar_RM
NoItinerary, NoItinerary
>;
def SSE_CVT_SI2SD : OpndItins<
IIC_SSE_CVT_Scalar_RR, IIC_SSE_CVT_Scalar_RM
NoItinerary, NoItinerary
>;
def SSE_CVT_I2PS : OpndItins<
IIC_SSE_CVT_PS_RR, IIC_SSE_CVT_PS_RM
NoItinerary, NoItinerary
>;
def SSE_CVT_I2PD : OpndItins<
IIC_SSE_CVT_PD_RR, IIC_SSE_CVT_PD_RM
NoItinerary, NoItinerary
>;
}
let Sched = WriteCvtF2F in {
def SSE_CVT_SD2SS : OpndItins<
IIC_SSE_CVT_Scalar_RR, IIC_SSE_CVT_Scalar_RM
NoItinerary, NoItinerary
>;
def SSE_CVT_SS2SD : OpndItins<
IIC_SSE_CVT_Scalar_RR, IIC_SSE_CVT_Scalar_RM
NoItinerary, NoItinerary
>;
def SSE_CVT_PD2PS : OpndItins<
IIC_SSE_CVT_PD_RR, IIC_SSE_CVT_PD_RM
NoItinerary, NoItinerary
>;
def SSE_CVT_PS2PD : OpndItins<
IIC_SSE_CVT_PD_RR, IIC_SSE_CVT_PD_RM
NoItinerary, NoItinerary
>;
def SSE_CVT_PH2PS : OpndItins<
IIC_SSE_CVT_PS_RR, IIC_SSE_CVT_PS_RM
NoItinerary, NoItinerary
>;
def SSE_CVT_PS2PH : OpndItins<
IIC_SSE_CVT_PS_RR, IIC_SSE_CVT_PS_RM
NoItinerary, NoItinerary
>;
}
@ -2120,7 +2115,7 @@ let Predicates = [UseSSE2] in {
let Sched = WriteFAdd in
def SSE_COMIS : OpndItins<
IIC_SSE_COMIS_RR, IIC_SSE_COMIS_RM
NoItinerary, NoItinerary
>;
// sse12_cmp_scalar - sse 1 & 2 compare scalar instructions
@ -2413,7 +2408,7 @@ let Predicates = [UseSSE1] in {
let Sched = WriteFShuffle in
def SSE_SHUFP : OpndItins<
IIC_SSE_SHUFP, IIC_SSE_SHUFP
NoItinerary, NoItinerary
>;
/// sse12_shuffle - sse 1 & 2 fp shuffle instructions
@ -2461,7 +2456,7 @@ let Constraints = "$src1 = $dst" in {
let Sched = WriteFShuffle in
def SSE_UNPCK : OpndItins<
IIC_SSE_UNPCK, IIC_SSE_UNPCK
NoItinerary, NoItinerary
>;
/// sse12_unpack_interleave - sse 1 & 2 fp unpack and interleave
@ -3034,29 +3029,29 @@ defm : scalar_math_f64_patterns<fdiv, "DIV">;
let Sched = WriteFSqrt in {
def SSE_SQRTPS : OpndItins<
IIC_SSE_SQRTPS_RR, IIC_SSE_SQRTPS_RM
NoItinerary, NoItinerary
>;
def SSE_SQRTSS : OpndItins<
IIC_SSE_SQRTSS_RR, IIC_SSE_SQRTSS_RM
NoItinerary, NoItinerary
>;
def SSE_SQRTPD : OpndItins<
IIC_SSE_SQRTPD_RR, IIC_SSE_SQRTPD_RM
NoItinerary, NoItinerary
>;
def SSE_SQRTSD : OpndItins<
IIC_SSE_SQRTSD_RR, IIC_SSE_SQRTSD_RM
NoItinerary, NoItinerary
>;
}
let Sched = WriteFRsqrt in {
def SSE_RSQRTPS : OpndItins<
IIC_SSE_RSQRTPS_RR, IIC_SSE_RSQRTPS_RM
NoItinerary, NoItinerary
>;
def SSE_RSQRTSS : OpndItins<
IIC_SSE_RSQRTSS_RR, IIC_SSE_RSQRTSS_RM
NoItinerary, NoItinerary
>;
}
@ -3070,11 +3065,11 @@ def SSE_RSQRT_S : SizeItins<
let Sched = WriteFRcp in {
def SSE_RCPP : OpndItins<
IIC_SSE_RCPP_RR, IIC_SSE_RCPP_RM
NoItinerary, NoItinerary
>;
def SSE_RCPS : OpndItins<
IIC_SSE_RCPS_RR, IIC_SSE_RCPS_RM
NoItinerary, NoItinerary
>;
}
@ -3644,7 +3639,7 @@ let Predicates = [HasAVX, NoVLX] in {
let Sched = WriteVecIMul in
def SSE_PMADD : OpndItins<
IIC_SSE_PMADD, IIC_SSE_PMADD
NoItinerary, NoItinerary
>;
let ExeDomain = SSEPackedInt in { // SSE integer instructions
@ -3873,7 +3868,7 @@ defm PCMPGTD : PDI_binop_all<0x66, "pcmpgtd", X86pcmpgt, v4i32, v8i32,
let Sched = WriteShuffle in
def SSE_PSHUF : OpndItins<
IIC_SSE_PSHUF_RI, IIC_SSE_PSHUF_MI
NoItinerary, NoItinerary
>;
let ExeDomain = SSEPackedInt in {
@ -4045,7 +4040,7 @@ let Constraints = "$src1 = $dst" in {
let Sched = WriteShuffle in
def SSE_PUNPCK : OpndItins<
IIC_SSE_UNPCK, IIC_SSE_UNPCK
NoItinerary, NoItinerary
>;
let ExeDomain = SSEPackedInt in {
@ -4689,7 +4684,7 @@ let Predicates = [UseSSE3] in {
// FIXME: Improve MOVDDUP/BROADCAST reg/mem scheduling itineraries.
let Sched = WriteFShuffle in
def SSE_MOVDDUP : OpndItins<
IIC_SSE_MOV_LH, IIC_SSE_MOV_LH
NoItinerary, NoItinerary
>;
multiclass sse3_replicate_dfp<string OpcodeStr> {
@ -4813,7 +4808,7 @@ let Constraints = "$src1 = $dst", Predicates = [UseSSE3] in {
let Sched = WriteFHAdd in
def SSE_HADDSUB : OpndItins<
IIC_SSE_HADDSUB_RR, IIC_SSE_HADDSUB_RM
NoItinerary, NoItinerary
>;
// Horizontal ops
@ -4896,7 +4891,7 @@ let Constraints = "$src1 = $dst" in {
let Sched = WriteVecALU in
def SSE_PABS : OpndItins<
IIC_SSE_PABS_RR, IIC_SSE_PABS_RM
NoItinerary, NoItinerary
>;
/// SS3I_unop_rm_int - Simple SSSE3 unary op whose type can be v*{i8,i16,i32}.
@ -4958,26 +4953,26 @@ defm PABSD : SS3I_unop_rm<0x1E, "pabsd", v4i32, abs, SSE_PABS, memopv2i64>;
let Sched = WritePHAdd in {
def SSE_PHADDSUBD : OpndItins<
IIC_SSE_PHADDSUBD_RR, IIC_SSE_PHADDSUBD_RM
NoItinerary, NoItinerary
>;
def SSE_PHADDSUBSW : OpndItins<
IIC_SSE_PHADDSUBSW_RR, IIC_SSE_PHADDSUBSW_RM
NoItinerary, NoItinerary
>;
def SSE_PHADDSUBW : OpndItins<
IIC_SSE_PHADDSUBW_RR, IIC_SSE_PHADDSUBW_RM
NoItinerary, NoItinerary
>;
}
let Sched = WriteVarShuffle in
def SSE_PSHUFB : OpndItins<
IIC_SSE_PSHUFB_RR, IIC_SSE_PSHUFB_RM
NoItinerary, NoItinerary
>;
let Sched = WriteVecALU in
def SSE_PSIGN : OpndItins<
IIC_SSE_PSIGN_RR, IIC_SSE_PSIGN_RM
NoItinerary, NoItinerary
>;
let Sched = WriteVecIMul in
def SSE_PMULHRSW : OpndItins<
IIC_SSE_PMULHRSW, IIC_SSE_PMULHRSW
NoItinerary, NoItinerary
>;
/// SS3I_binop_rm - Simple SSSE3 bin op
@ -5172,7 +5167,7 @@ defm PMULHRSW : SS3I_binop_rm<0x0B, "pmulhrsw", X86mulhrs, v8i16, v8i16,
let Sched = WriteShuffle in
def SSE_PALIGN : OpndItins<
IIC_SSE_PALIGNRR, IIC_SSE_PALIGNRM
NoItinerary, NoItinerary
>;
multiclass ssse3_palignr<string asm, ValueType VT, RegisterClass RC,
@ -5768,11 +5763,11 @@ let Predicates = [UseAVX] in {
//===----------------------------------------------------------------------===//
def SSE_ROUNDPS : OpndItins<
IIC_SSE_ROUNDPS_REG, IIC_SSE_ROUNDPS_MEM
NoItinerary, NoItinerary
>;
def SSE_ROUNDPD : OpndItins<
IIC_SSE_ROUNDPD_REG, IIC_SSE_ROUNDPD_MEM
NoItinerary, NoItinerary
>;
multiclass sse41_fp_unop_p<bits<8> opc, string OpcodeStr,
@ -6073,7 +6068,7 @@ let Predicates = [UseSSE41] in {
let Sched = WriteVecLogic in
def SSE_PTEST : OpndItins<
IIC_SSE_INTALU_P_RR, IIC_SSE_INTALU_P_RM
NoItinerary, NoItinerary
>;
// ptest instruction we'll lower to this in X86ISelLowering primarily from
@ -7601,12 +7596,12 @@ defm VMASKMOVPD : avx_movmask_rm<0x2D, 0x2F, "vmaskmovpd",
let Sched = WriteFVarShuffle in
def AVX_VPERMILV : OpndItins<
IIC_SSE_SHUFP, IIC_SSE_SHUFP
NoItinerary, NoItinerary
>;
let Sched = WriteFShuffle in
def AVX_VPERMIL : OpndItins<
IIC_SSE_SHUFP, IIC_SSE_SHUFP
NoItinerary, NoItinerary
>;
multiclass avx_permil<bits<8> opc_rm, bits<8> opc_rmi, string OpcodeStr,
@ -8065,12 +8060,12 @@ let Predicates = [HasAVX1Only] in {
let Sched = WriteFShuffle256 in
def AVX2_PERMV_F : OpndItins<
IIC_SSE_SHUFP, IIC_SSE_SHUFP
NoItinerary, NoItinerary
>;
let Sched = WriteShuffle256 in
def AVX2_PERMV_I : OpndItins<
IIC_SSE_PSHUF_RI, IIC_SSE_PSHUF_MI
NoItinerary, NoItinerary
>;
multiclass avx2_perm<bits<8> opc, string OpcodeStr, PatFrag mem_frag,

View File

@ -166,148 +166,6 @@ def WriteFence : SchedWrite;
// Nop, not very useful expect it provides a model for nops!
def WriteNop : SchedWrite;
//===----------------------------------------------------------------------===//
// Instruction Itinerary classes used for X86
def IIC_ALU_MEM : InstrItinClass;
def IIC_ALU_NONMEM : InstrItinClass;
// SSE scalar/parallel binary operations
def IIC_SSE_ALU_F32S_RR : InstrItinClass;
def IIC_SSE_ALU_F32S_RM : InstrItinClass;
def IIC_SSE_ALU_F64S_RR : InstrItinClass;
def IIC_SSE_ALU_F64S_RM : InstrItinClass;
def IIC_SSE_MUL_F32S_RR : InstrItinClass;
def IIC_SSE_MUL_F32S_RM : InstrItinClass;
def IIC_SSE_MUL_F64S_RR : InstrItinClass;
def IIC_SSE_MUL_F64S_RM : InstrItinClass;
def IIC_SSE_DIV_F32S_RR : InstrItinClass;
def IIC_SSE_DIV_F32S_RM : InstrItinClass;
def IIC_SSE_DIV_F64S_RR : InstrItinClass;
def IIC_SSE_DIV_F64S_RM : InstrItinClass;
def IIC_SSE_ALU_F32P_RR : InstrItinClass;
def IIC_SSE_ALU_F32P_RM : InstrItinClass;
def IIC_SSE_ALU_F64P_RR : InstrItinClass;
def IIC_SSE_ALU_F64P_RM : InstrItinClass;
def IIC_SSE_MUL_F32P_RR : InstrItinClass;
def IIC_SSE_MUL_F32P_RM : InstrItinClass;
def IIC_SSE_MUL_F64P_RR : InstrItinClass;
def IIC_SSE_MUL_F64P_RM : InstrItinClass;
def IIC_SSE_DIV_F32P_RR : InstrItinClass;
def IIC_SSE_DIV_F32P_RM : InstrItinClass;
def IIC_SSE_DIV_F64P_RR : InstrItinClass;
def IIC_SSE_DIV_F64P_RM : InstrItinClass;
def IIC_SSE_COMIS_RR : InstrItinClass;
def IIC_SSE_COMIS_RM : InstrItinClass;
def IIC_SSE_HADDSUB_RR : InstrItinClass;
def IIC_SSE_HADDSUB_RM : InstrItinClass;
def IIC_SSE_BIT_P_RR : InstrItinClass;
def IIC_SSE_BIT_P_RM : InstrItinClass;
def IIC_SSE_INTALU_P_RR : InstrItinClass;
def IIC_SSE_INTALU_P_RM : InstrItinClass;
def IIC_SSE_INTALUQ_P_RR : InstrItinClass;
def IIC_SSE_INTALUQ_P_RM : InstrItinClass;
def IIC_SSE_INTMUL_P_RR : InstrItinClass;
def IIC_SSE_INTMUL_P_RM : InstrItinClass;
def IIC_SSE_INTSH_P_RR : InstrItinClass;
def IIC_SSE_INTSH_P_RM : InstrItinClass;
def IIC_SSE_INTSH_P_RI : InstrItinClass;
def IIC_SSE_INTSHDQ_P_RI : InstrItinClass;
def IIC_SSE_SHUFP : InstrItinClass;
def IIC_SSE_PSHUF_RI : InstrItinClass;
def IIC_SSE_PSHUF_MI : InstrItinClass;
def IIC_SSE_PACK : InstrItinClass;
def IIC_SSE_UNPCK : InstrItinClass;
def IIC_SSE_PABS_RR : InstrItinClass;
def IIC_SSE_PABS_RM : InstrItinClass;
def IIC_SSE_SQRTPS_RR : InstrItinClass;
def IIC_SSE_SQRTPS_RM : InstrItinClass;
def IIC_SSE_SQRTSS_RR : InstrItinClass;
def IIC_SSE_SQRTSS_RM : InstrItinClass;
def IIC_SSE_SQRTPD_RR : InstrItinClass;
def IIC_SSE_SQRTPD_RM : InstrItinClass;
def IIC_SSE_SQRTSD_RR : InstrItinClass;
def IIC_SSE_SQRTSD_RM : InstrItinClass;
def IIC_SSE_RSQRTPS_RR : InstrItinClass;
def IIC_SSE_RSQRTPS_RM : InstrItinClass;
def IIC_SSE_RSQRTSS_RR : InstrItinClass;
def IIC_SSE_RSQRTSS_RM : InstrItinClass;
def IIC_SSE_RCPP_RR : InstrItinClass;
def IIC_SSE_RCPP_RM : InstrItinClass;
def IIC_SSE_RCPS_RR : InstrItinClass;
def IIC_SSE_RCPS_RM : InstrItinClass;
def IIC_SSE_MOV_S_RR : InstrItinClass;
def IIC_SSE_MOV_S_RM : InstrItinClass;
def IIC_SSE_MOV_S_MR : InstrItinClass;
def IIC_SSE_MOVA_P_RR : InstrItinClass;
def IIC_SSE_MOVA_P_RM : InstrItinClass;
def IIC_SSE_MOVA_P_MR : InstrItinClass;
def IIC_SSE_MOVU_P_RR : InstrItinClass;
def IIC_SSE_MOVU_P_RM : InstrItinClass;
def IIC_SSE_MOVU_P_MR : InstrItinClass;
def IIC_SSE_MOV_LH : InstrItinClass;
def IIC_SSE_PHADDSUBD_RR : InstrItinClass;
def IIC_SSE_PHADDSUBD_RM : InstrItinClass;
def IIC_SSE_PHADDSUBSW_RR : InstrItinClass;
def IIC_SSE_PHADDSUBSW_RM : InstrItinClass;
def IIC_SSE_PHADDSUBW_RR : InstrItinClass;
def IIC_SSE_PHADDSUBW_RM : InstrItinClass;
def IIC_SSE_PSHUFB_RR : InstrItinClass;
def IIC_SSE_PSHUFB_RM : InstrItinClass;
def IIC_SSE_PSIGN_RR : InstrItinClass;
def IIC_SSE_PSIGN_RM : InstrItinClass;
def IIC_SSE_PMADD : InstrItinClass;
def IIC_SSE_PMULHRSW : InstrItinClass;
def IIC_SSE_PALIGNRR : InstrItinClass;
def IIC_SSE_PALIGNRM : InstrItinClass;
def IIC_SSE_CVT_PD_RR : InstrItinClass;
def IIC_SSE_CVT_PD_RM : InstrItinClass;
def IIC_SSE_CVT_PS_RR : InstrItinClass;
def IIC_SSE_CVT_PS_RM : InstrItinClass;
def IIC_SSE_CVT_Scalar_RR : InstrItinClass;
def IIC_SSE_CVT_Scalar_RM : InstrItinClass;
def IIC_SSE_CVT_SS2SI32_RM : InstrItinClass;
def IIC_SSE_CVT_SS2SI32_RR : InstrItinClass;
def IIC_SSE_CVT_SS2SI64_RM : InstrItinClass;
def IIC_SSE_CVT_SS2SI64_RR : InstrItinClass;
def IIC_SSE_CVT_SD2SI_RM : InstrItinClass;
def IIC_SSE_CVT_SD2SI_RR : InstrItinClass;
def IIC_SSE_DPPD_RR : InstrItinClass;
def IIC_SSE_DPPD_RM : InstrItinClass;
def IIC_SSE_DPPS_RR : InstrItinClass;
def IIC_SSE_DPPS_RM : InstrItinClass;
def IIC_SSE_EXTRACTPS_RR : InstrItinClass;
def IIC_SSE_EXTRACTPS_RM : InstrItinClass;
def IIC_SSE_INSERTPS_RR : InstrItinClass;
def IIC_SSE_INSERTPS_RM : InstrItinClass;
def IIC_SSE_MPSADBW_RR : InstrItinClass;
def IIC_SSE_MPSADBW_RM : InstrItinClass;
def IIC_SSE_PMULLD_RR : InstrItinClass;
def IIC_SSE_PMULLD_RM : InstrItinClass;
def IIC_SSE_ROUNDPS_REG : InstrItinClass;
def IIC_SSE_ROUNDPS_MEM : InstrItinClass;
def IIC_SSE_ROUNDPD_REG : InstrItinClass;
def IIC_SSE_ROUNDPD_MEM : InstrItinClass;
//===----------------------------------------------------------------------===//
// Generic Processor Scheduler Models.