(ins _.RC:$src2, _.MemOp:$src3),
OpcodeStr, "$src3, $src2", "$src2, $src3",
(_.VT (OpNode _.RC:$src2, _.RC:$src1, (_.LdFrag addr:$src3))),
- NoItinerary, 1, 0>, AVX512FMA3Base, Sched<[WriteFMA, ReadAfterLd]>;
+ NoItinerary, 1, 0>, AVX512FMA3Base, Sched<[WriteFMALd, ReadAfterLd]>;
defm mb: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src2, _.ScalarMemOp:$src3),
(OpNode _.RC:$src2,
_.RC:$src1,(_.VT (X86VBroadcast (_.ScalarLdFrag addr:$src3)))),
NoItinerary, 1, 0>, AVX512FMA3Base, EVEX_B,
- Sched<[WriteFMA, ReadAfterLd]>;
+ Sched<[WriteFMALd, ReadAfterLd]>;
}
}
(ins _.RC:$src2, _.MemOp:$src3),
OpcodeStr, "$src3, $src2", "$src2, $src3",
(_.VT (OpNode _.RC:$src2, (_.LdFrag addr:$src3), _.RC:$src1)),
- NoItinerary, 1, 0>, AVX512FMA3Base, Sched<[WriteFMA, ReadAfterLd]>;
+ NoItinerary, 1, 0>, AVX512FMA3Base, Sched<[WriteFMALd, ReadAfterLd]>;
defm mb: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src2, _.ScalarMemOp:$src3),
(_.VT (OpNode _.RC:$src2,
(_.VT (X86VBroadcast(_.ScalarLdFrag addr:$src3))),
_.RC:$src1)), NoItinerary, 1, 0>, AVX512FMA3Base, EVEX_B,
- Sched<[WriteFMA, ReadAfterLd]>;
+ Sched<[WriteFMALd, ReadAfterLd]>;
}
}
(ins _.RC:$src2, _.MemOp:$src3),
OpcodeStr, "$src3, $src2", "$src2, $src3",
(_.VT (OpNode (_.LdFrag addr:$src3), _.RC:$src1, _.RC:$src2)),
- NoItinerary, 1, 0>, AVX512FMA3Base, Sched<[WriteFMA, ReadAfterLd]>;
+ NoItinerary, 1, 0>, AVX512FMA3Base, Sched<[WriteFMALd, ReadAfterLd]>;
// Pattern is 312 order so that the load is in a different place from the
// 213 and 231 patterns this helps tablegen's duplicate pattern detection.
"$src2, ${src3}"##_.BroadcastStr,
(_.VT (OpNode (_.VT (X86VBroadcast(_.ScalarLdFrag addr:$src3))),
_.RC:$src1, _.RC:$src2)), NoItinerary, 1, 0>,
- AVX512FMA3Base, EVEX_B, Sched<[WriteFMA, ReadAfterLd]>;
+ AVX512FMA3Base, EVEX_B, Sched<[WriteFMALd, ReadAfterLd]>;
}
}
defm m_Int: AVX512_maskable_3src_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src2, _.IntScalarMemOp:$src3), OpcodeStr,
"$src3, $src2", "$src2, $src3", RHS_VEC_m, NoItinerary, 1, 1>,
- AVX512FMA3Base, Sched<[WriteFMA, ReadAfterLd]>;
+ AVX512FMA3Base, Sched<[WriteFMALd, ReadAfterLd]>;
defm rb_Int: AVX512_maskable_3src_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src2, _.RC:$src3, AVX512RC:$rc),
(ins _.FRC:$src1, _.FRC:$src2, _.ScalarMemOp:$src3),
!strconcat(OpcodeStr,
"\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
- [RHS_m]>, Sched<[WriteFMA, ReadAfterLd]>;
+ [RHS_m]>, Sched<[WriteFMALd, ReadAfterLd]>;
}// isCodeGenOnly = 1
}// Constraints = "$src1 = $dst"
}
"\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
[(set RC:$dst, (VT (Op RC:$src2, RC:$src1,
(MemFrag addr:$src3))))]>,
- Sched<[WriteFMA, ReadAfterLd]>;
+ Sched<[WriteFMALd, ReadAfterLd]>;
}
multiclass fma3p_rm_231<bits<8> opc, string OpcodeStr, RegisterClass RC,
!strconcat(OpcodeStr,
"\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
[(set RC:$dst, (VT (Op RC:$src2, (MemFrag addr:$src3),
- RC:$src1)))]>, Sched<[WriteFMA, ReadAfterLd]>;
+ RC:$src1)))]>, Sched<[WriteFMALd, ReadAfterLd]>;
}
multiclass fma3p_rm_132<bits<8> opc, string OpcodeStr, RegisterClass RC,
!strconcat(OpcodeStr,
"\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
[(set RC:$dst, (VT (Op (MemFrag addr:$src3), RC:$src1,
- RC:$src2)))]>, Sched<[WriteFMA, ReadAfterLd]>;
+ RC:$src2)))]>, Sched<[WriteFMALd, ReadAfterLd]>;
}
let Constraints = "$src1 = $dst", hasSideEffects = 0, isCommutable = 1 in
"\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
[(set RC:$dst,
(OpNode RC:$src2, RC:$src1, (load addr:$src3)))]>,
- Sched<[WriteFMA, ReadAfterLd]>;
+ Sched<[WriteFMALd, ReadAfterLd]>;
}
multiclass fma3s_rm_231<bits<8> opc, string OpcodeStr,
"\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
[(set RC:$dst,
(OpNode RC:$src2, (load addr:$src3), RC:$src1))]>,
- Sched<[WriteFMA, ReadAfterLd]>;
+ Sched<[WriteFMALd, ReadAfterLd]>;
}
multiclass fma3s_rm_132<bits<8> opc, string OpcodeStr,
"\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
[(set RC:$dst,
(OpNode (load addr:$src3), RC:$src1, RC:$src2))]>,
- Sched<[WriteFMA, ReadAfterLd]>;
+ Sched<[WriteFMALd, ReadAfterLd]>;
}
let Constraints = "$src1 = $dst", isCommutable = 1, hasSideEffects = 0 in
(ins RC:$src1, RC:$src2, memopr:$src3),
!strconcat(OpcodeStr,
"\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
- []>, Sched<[WriteFMA, ReadAfterLd]>;
+ []>, Sched<[WriteFMALd, ReadAfterLd]>;
}
// The FMA 213 form is created for lowering of scalar FMA intrinscis
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}"),
[(set RC:$dst, (OpNode RC:$src1, RC:$src2,
(mem_frag addr:$src3)))]>, VEX_W, VEX_LIG,
- Sched<[WriteFMA, ReadAfterLd]>;
+ Sched<[WriteFMALd, ReadAfterLd]>;
def mr : FMA4S<opc, MRMSrcMem, (outs RC:$dst),
(ins RC:$src1, x86memop:$src2, RC:$src3),
!strconcat(OpcodeStr,
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}"),
[(set RC:$dst,
(OpNode RC:$src1, (mem_frag addr:$src2), RC:$src3))]>, VEX_LIG,
- Sched<[WriteFMA, ReadAfterLd]>;
+ Sched<[WriteFMALd, ReadAfterLd]>;
// For disassembler
let isCodeGenOnly = 1, ForceDisassemble = 1, hasSideEffects = 0 in
def rr_REV : FMA4S<opc, MRMSrcReg, (outs RC:$dst),
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}"),
[(set VR128:$dst, (VT (OpNode VR128:$src1, VR128:$src2,
mem_cpat:$src3)))]>, VEX_W, VEX_LIG,
- Sched<[WriteFMA, ReadAfterLd]>;
+ Sched<[WriteFMALd, ReadAfterLd]>;
def mr_Int : FMA4S_Int<opc, MRMSrcMem, (outs VR128:$dst),
(ins VR128:$src1, memop:$src2, VR128:$src3),
!strconcat(OpcodeStr,
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}"),
[(set VR128:$dst,
(VT (OpNode VR128:$src1, mem_cpat:$src2, VR128:$src3)))]>,
- VEX_LIG, Sched<[WriteFMA, ReadAfterLd]>;
+ VEX_LIG, Sched<[WriteFMALd, ReadAfterLd]>;
let hasSideEffects = 0 in
def rr_Int_REV : FMA4S_Int<opc, MRMSrcReg, (outs VR128:$dst),
(ins VR128:$src1, VR128:$src2, VR128:$src3),
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}"),
[(set VR128:$dst, (OpNode VR128:$src1, VR128:$src2,
(ld_frag128 addr:$src3)))]>, VEX_W,
- Sched<[WriteFMA, ReadAfterLd]>;
+ Sched<[WriteFMALd, ReadAfterLd]>;
def mr : FMA4<opc, MRMSrcMem, (outs VR128:$dst),
(ins VR128:$src1, f128mem:$src2, VR128:$src3),
!strconcat(OpcodeStr,
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}"),
[(set VR128:$dst,
(OpNode VR128:$src1, (ld_frag128 addr:$src2), VR128:$src3))]>,
- Sched<[WriteFMA, ReadAfterLd]>;
+ Sched<[WriteFMALd, ReadAfterLd]>;
let isCommutable = 1 in
def Yrr : FMA4<opc, MRMSrcRegOp4, (outs VR256:$dst),
(ins VR256:$src1, VR256:$src2, VR256:$src3),
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}"),
[(set VR256:$dst, (OpNode VR256:$src1, VR256:$src2,
(ld_frag256 addr:$src3)))]>, VEX_W, VEX_L,
- Sched<[WriteFMA, ReadAfterLd]>;
+ Sched<[WriteFMALd, ReadAfterLd]>;
def Ymr : FMA4<opc, MRMSrcMem, (outs VR256:$dst),
(ins VR256:$src1, f256mem:$src2, VR256:$src3),
!strconcat(OpcodeStr,
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}"),
[(set VR256:$dst, (OpNode VR256:$src1,
(ld_frag256 addr:$src2), VR256:$src3))]>, VEX_L,
- Sched<[WriteFMA, ReadAfterLd]>;
+ Sched<[WriteFMALd, ReadAfterLd]>;
// For disassembler
let isCodeGenOnly = 1, ForceDisassemble = 1, hasSideEffects = 0 in {
def rr_REV : FMA4<opc, MRMSrcReg, (outs VR128:$dst),
def rm : IXOP<opc, MRMSrcMem, (outs VR128:$dst), (ins i128mem:$src),
!strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
[(set VR128:$dst, (Int (bitconvert (memop addr:$src))))]>, XOP,
- Sched<[WritePHAdd, ReadAfterLd]>;
+ Sched<[WritePHAddLd, ReadAfterLd]>;
}
let ExeDomain = SSEPackedInt in {
def rm : IXOP<opc, MRMSrcMem, (outs VR128:$dst), (ins memop:$src),
!strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
[(set VR128:$dst, (Int (bitconvert mem_cpat:$src)))]>, XOP,
- Sched<[WriteFAdd, ReadAfterLd]>;
+ Sched<[WriteFAddLd, ReadAfterLd]>;
}
multiclass xop2op128<bits<8> opc, string OpcodeStr, Intrinsic Int,
def rm : IXOP<opc, MRMSrcMem, (outs VR128:$dst), (ins f128mem:$src),
!strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
[(set VR128:$dst, (Int (bitconvert (memop addr:$src))))]>, XOP,
- Sched<[WriteFAdd, ReadAfterLd]>;
+ Sched<[WriteFAddLd, ReadAfterLd]>;
}
multiclass xop2op256<bits<8> opc, string OpcodeStr, Intrinsic Int,
def rmY : IXOP<opc, MRMSrcMem, (outs VR256:$dst), (ins f256mem:$src),
!strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
[(set VR256:$dst, (Int (bitconvert (memop addr:$src))))]>, XOP, VEX_L,
- Sched<[WriteFAdd, ReadAfterLd]>;
+ Sched<[WriteFAddLd, ReadAfterLd]>;
}
let ExeDomain = SSEPackedSingle in {
[(set VR128:$dst,
(vt128 (OpNode (vt128 VR128:$src1),
(vt128 (bitconvert (loadv2i64 addr:$src2))))))]>,
- XOP_4V, VEX_W, Sched<[WriteVarVecShift, ReadAfterLd]>;
+ XOP_4V, VEX_W, Sched<[WriteVarVecShiftLd, ReadAfterLd]>;
def mr : IXOP<opc, MRMSrcMem4VOp3, (outs VR128:$dst),
(ins i128mem:$src1, VR128:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
[(set VR128:$dst,
(vt128 (OpNode (vt128 (bitconvert (loadv2i64 addr:$src1))),
(vt128 VR128:$src2))))]>,
- XOP, Sched<[WriteVarVecShift, ReadAfterLd]>;
+ XOP, Sched<[WriteVarVecShiftLd, ReadAfterLd]>;
// For disassembler
let isCodeGenOnly = 1, ForceDisassemble = 1, hasSideEffects = 0 in
def rr_REV : IXOP<opc, MRMSrcReg, (outs VR128:$dst),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
[(set VR128:$dst,
(vt128 (OpNode (vt128 (bitconvert (loadv2i64 addr:$src1))), imm:$src2)))]>,
- XOP, Sched<[WriteVecShift, ReadAfterLd]>;
+ XOP, Sched<[WriteVecShiftLd, ReadAfterLd]>;
}
let ExeDomain = SSEPackedInt in {
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}"),
[(set VR128:$dst,
(Int VR128:$src1, (bitconvert (loadv2i64 addr:$src2)),
- VR128:$src3))]>, XOP_4V, Sched<[WriteVecIMul, ReadAfterLd]>;
+ VR128:$src3))]>, XOP_4V, Sched<[WriteVecIMulLd, ReadAfterLd]>;
}
let ExeDomain = SSEPackedInt in {
[(set VR128:$dst,
(vt128 (OpNode (vt128 VR128:$src1), (vt128 VR128:$src2),
imm:$cc)))]>,
- XOP_4V, Sched<[WriteVecALU, ReadAfterLd]>;
+ XOP_4V, Sched<[WriteVecALULd, ReadAfterLd]>;
def mi : IXOPi8<opc, MRMSrcMem, (outs VR128:$dst),
(ins VR128:$src1, i128mem:$src2, XOPCC:$cc),
!strconcat("vpcom${cc}", Suffix,
(vt128 (OpNode (vt128 VR128:$src1),
(vt128 (bitconvert (loadv2i64 addr:$src2))),
imm:$cc)))]>,
- XOP_4V, Sched<[WriteVecALU, ReadAfterLd]>;
+ XOP_4V, Sched<[WriteVecALULd, ReadAfterLd]>;
let isAsmParserOnly = 1, hasSideEffects = 0 in {
def ri_alt : IXOPi8<opc, MRMSrcReg, (outs VR128:$dst),
(ins VR128:$src1, VR128:$src2, u8imm:$src3),
!strconcat("vpcom", Suffix,
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}"),
- []>, XOP_4V, Sched<[WriteVecALU, ReadAfterLd]>;
+ []>, XOP_4V, Sched<[WriteVecALULd, ReadAfterLd]>;
let mayLoad = 1 in
def mi_alt : IXOPi8<opc, MRMSrcMem, (outs VR128:$dst),
(ins VR128:$src1, i128mem:$src2, u8imm:$src3),
!strconcat("vpcom", Suffix,
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}"),
- []>, XOP_4V, Sched<[WriteVecALU, ReadAfterLd]>;
+ []>, XOP_4V, Sched<[WriteVecALULd, ReadAfterLd]>;
}
}
[(set VR128:$dst,
(vt128 (OpNode (vt128 VR128:$src1), (vt128 VR128:$src2),
(vt128 (bitconvert (loadv2i64 addr:$src3))))))]>,
- XOP_4V, VEX_W, Sched<[WriteShuffle, ReadAfterLd]>;
+ XOP_4V, VEX_W, Sched<[WriteShuffleLd, ReadAfterLd]>;
def rmr : IXOPi8Reg<opc, MRMSrcMem, (outs VR128:$dst),
(ins VR128:$src1, i128mem:$src2, VR128:$src3),
!strconcat(OpcodeStr,
[(set VR128:$dst,
(v16i8 (OpNode (vt128 VR128:$src1), (vt128 (bitconvert (loadv2i64 addr:$src2))),
(vt128 VR128:$src3))))]>,
- XOP_4V, Sched<[WriteShuffle, ReadAfterLd]>;
+ XOP_4V, Sched<[WriteShuffleLd, ReadAfterLd]>;
// For disassembler
let isCodeGenOnly = 1, ForceDisassemble = 1, hasSideEffects = 0 in
def rrr_REV : IXOPi8Reg<opc, MRMSrcRegOp4, (outs VR128:$dst),
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}"),
[(set RC:$dst, (VT (or (and (load addr:$src3), RC:$src1),
(X86andnp (load addr:$src3), RC:$src2))))]>,
- XOP_4V, VEX_W, Sched<[WriteShuffle, ReadAfterLd]>;
+ XOP_4V, VEX_W, Sched<[WriteShuffleLd, ReadAfterLd]>;
def rmr : IXOPi8Reg<opc, MRMSrcMem, (outs RC:$dst),
(ins RC:$src1, x86memop:$src2, RC:$src3),
!strconcat(OpcodeStr,
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}"),
[(set RC:$dst, (VT (or (and RC:$src3, RC:$src1),
(X86andnp RC:$src3, (load addr:$src2)))))]>,
- XOP_4V, Sched<[WriteShuffle, ReadAfterLd]>;
+ XOP_4V, Sched<[WriteShuffleLd, ReadAfterLd]>;
// For disassembler
let isCodeGenOnly = 1, ForceDisassemble = 1, hasSideEffects = 0 in
def rrr_REV : IXOPi8Reg<opc, MRMSrcRegOp4, (outs RC:$dst),
(VT (X86vpermil2 RC:$src1, RC:$src2,
(bitconvert (IntLdFrag addr:$src3)),
(i8 imm:$src4))))]>, VEX_W,
- Sched<[WriteFShuffle, ReadAfterLd]>;
+ Sched<[WriteFShuffleLd, ReadAfterLd]>;
def mr : IXOP5<Opc, MRMSrcMem, (outs RC:$dst),
(ins RC:$src1, fpmemop:$src2, RC:$src3, u8imm:$src4),
!strconcat(OpcodeStr,
[(set RC:$dst,
(VT (X86vpermil2 RC:$src1, (FPLdFrag addr:$src2),
RC:$src3, (i8 imm:$src4))))]>,
- Sched<[WriteFShuffle, ReadAfterLd]>;
+ Sched<[WriteFShuffleLd, ReadAfterLd]>;
// For disassembler
let isCodeGenOnly = 1, ForceDisassemble = 1, hasSideEffects = 0 in
def rr_REV : IXOP5<Opc, MRMSrcRegOp4, (outs RC:$dst),
; GENERIC-LABEL: test_vfmadd213pd:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmadd213pd %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmadd213pd (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmadd213pd (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmadd213pd:
; GENERIC-LABEL: test_vfmadd213pd_ymm:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmadd213pd %ymm2, %ymm1, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmadd213pd (%rdi), %ymm1, %ymm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmadd213pd (%rdi), %ymm1, %ymm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmadd213pd_ymm:
; GENERIC-LABEL: test_vfmadd213ps:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmadd213ps %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmadd213ps (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmadd213ps (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmadd213ps:
; GENERIC-LABEL: test_vfmadd213ps_ymm:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmadd213ps %ymm2, %ymm1, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmadd213ps (%rdi), %ymm1, %ymm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmadd213ps (%rdi), %ymm1, %ymm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmadd213ps_ymm:
; GENERIC-LABEL: test_vfmadd213sd:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmadd213sd %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmadd213sd (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmadd213sd (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmadd213sd:
; GENERIC-LABEL: test_vfmadd213ss:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmadd213ss %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmadd213ss (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmadd213ss (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmadd213ss:
; GENERIC-LABEL: test_vfmaddsubpd:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmaddsub213pd %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmaddsub213pd (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmaddsub213pd (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmaddsubpd:
; GENERIC-LABEL: test_vfmaddsubpd_ymm:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmaddsub213pd %ymm2, %ymm1, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmaddsub213pd (%rdi), %ymm1, %ymm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmaddsub213pd (%rdi), %ymm1, %ymm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmaddsubpd_ymm:
; GENERIC-LABEL: test_vfmaddsubps:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmaddsub213ps %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmaddsub213ps (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmaddsub213ps (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmaddsubps:
; GENERIC-LABEL: test_vfmaddsubps_ymm:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmaddsub213ps %ymm2, %ymm1, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmaddsub213ps (%rdi), %ymm1, %ymm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmaddsub213ps (%rdi), %ymm1, %ymm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmaddsubps_ymm:
; GENERIC-LABEL: test_vfmsubaddpd:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmsubadd213pd %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmsubadd213pd (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmsubadd213pd (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmsubaddpd:
; GENERIC-LABEL: test_vfmsubaddpd_ymm:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmsubadd213pd %ymm2, %ymm1, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmsubadd213pd (%rdi), %ymm1, %ymm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmsubadd213pd (%rdi), %ymm1, %ymm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmsubaddpd_ymm:
; GENERIC-LABEL: test_vfmsubaddps:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmsubadd213ps %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmsubadd213ps (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmsubadd213ps (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmsubaddps:
; GENERIC-LABEL: test_vfmsubaddps_ymm:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmsubadd213ps %ymm2, %ymm1, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmsubadd213ps (%rdi), %ymm1, %ymm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmsubadd213ps (%rdi), %ymm1, %ymm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmsubaddps_ymm:
; GENERIC-LABEL: test_vfmsub213pd:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmsub213pd %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmsub213pd (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmsub213pd (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmsub213pd:
; GENERIC-LABEL: test_vfmsub213pd_ymm:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmsub213pd %ymm2, %ymm1, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmsub213pd (%rdi), %ymm1, %ymm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmsub213pd (%rdi), %ymm1, %ymm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmsub213pd_ymm:
; GENERIC-LABEL: test_vfmsub213ps:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmsub213ps %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmsub213ps (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmsub213ps (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmsub213ps:
; GENERIC-LABEL: test_vfmsub213ps_ymm:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmsub213ps %ymm2, %ymm1, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmsub213ps (%rdi), %ymm1, %ymm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmsub213ps (%rdi), %ymm1, %ymm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmsub213ps_ymm:
; GENERIC-LABEL: test_vfmsub213sd:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmsub213sd %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmsub213sd (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmsub213sd (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmsub213sd:
; GENERIC-LABEL: test_vfmsub213ss:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfmsub213ss %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfmsub213ss (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfmsub213ss (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfmsub213ss:
; GENERIC-LABEL: test_vfnmadd213pd:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfnmadd213pd %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfnmadd213pd (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfnmadd213pd (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfnmadd213pd:
; GENERIC-LABEL: test_vfnmadd213pd_ymm:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfnmadd213pd %ymm2, %ymm1, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfnmadd213pd (%rdi), %ymm1, %ymm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfnmadd213pd (%rdi), %ymm1, %ymm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfnmadd213pd_ymm:
; GENERIC-LABEL: test_vfnmadd213ps:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfnmadd213ps %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfnmadd213ps (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfnmadd213ps (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfnmadd213ps:
; GENERIC-LABEL: test_vfnmadd213ps_ymm:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfnmadd213ps %ymm2, %ymm1, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfnmadd213ps (%rdi), %ymm1, %ymm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfnmadd213ps (%rdi), %ymm1, %ymm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfnmadd213ps_ymm:
; GENERIC-LABEL: test_vfnmadd213sd:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfnmadd213sd %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfnmadd213sd (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfnmadd213sd (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfnmadd213sd:
; GENERIC-LABEL: test_vfnmadd213ss:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfnmadd213ss %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfnmadd213ss (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfnmadd213ss (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfnmadd213ss:
; GENERIC-LABEL: test_vfnmsub213pd:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfnmsub213pd %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfnmsub213pd (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfnmsub213pd (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfnmsub213pd:
; GENERIC-LABEL: test_vfnmsub213pd_ymm:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfnmsub213pd %ymm2, %ymm1, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfnmsub213pd (%rdi), %ymm1, %ymm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfnmsub213pd (%rdi), %ymm1, %ymm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfnmsub213pd_ymm:
; GENERIC-LABEL: test_vfnmsub213ps:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfnmsub213ps %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfnmsub213ps (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfnmsub213ps (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfnmsub213ps:
; GENERIC-LABEL: test_vfnmsub213ps_ymm:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfnmsub213ps %ymm2, %ymm1, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfnmsub213ps (%rdi), %ymm1, %ymm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfnmsub213ps (%rdi), %ymm1, %ymm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfnmsub213ps_ymm:
; GENERIC-LABEL: test_vfnmsub213sd:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfnmsub213sd %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfnmsub213sd (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfnmsub213sd (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfnmsub213sd:
; GENERIC-LABEL: test_vfnmsub213ss:
; GENERIC: # %bb.0:
; GENERIC-NEXT: vfnmsub213ss %xmm2, %xmm1, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT: vfnmsub213ss (%rdi), %xmm1, %xmm0 # sched: [5:0.50]
+; GENERIC-NEXT: vfnmsub213ss (%rdi), %xmm1, %xmm0 # sched: [9:0.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_vfnmsub213ss: