forked from OSchip/llvm-project
[X86][SLM] Vector stores only use the MEC port.
Confirmed by both Agner and Intel's AOM - the IEC/FPC are not required for pure load/stores (even if its a partial update). Can't fix WriteStore until all RMW instructions are cleaned up though.... llvm-svn: 332096
This commit is contained in:
parent
868b31bf21
commit
032a01f74a
|
|
@ -137,11 +137,11 @@ def : WriteRes<WriteFLoadX, [SLM_MEC_RSV]> { let Latency = 3; }
|
|||
def : WriteRes<WriteFLoadY, [SLM_MEC_RSV]> { let Latency = 3; }
|
||||
def : WriteRes<WriteFMaskedLoad, [SLM_MEC_RSV]> { let Latency = 3; }
|
||||
def : WriteRes<WriteFMaskedLoadY, [SLM_MEC_RSV]> { let Latency = 3; }
|
||||
def : WriteRes<WriteFStore, [SLM_FPC_RSV01, SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteFStoreX, [SLM_FPC_RSV01, SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteFStoreY, [SLM_FPC_RSV01, SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteFMaskedStore, [SLM_FPC_RSV01, SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteFMaskedStoreY, [SLM_FPC_RSV01, SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteFStore, [SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteFStoreX, [SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteFStoreY, [SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteFMaskedStore, [SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteFMaskedStoreY, [SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteFMove, [SLM_FPC_RSV01]>;
|
||||
def : WriteRes<WriteFMoveX, [SLM_FPC_RSV01]>;
|
||||
def : WriteRes<WriteFMoveY, [SLM_FPC_RSV01]>;
|
||||
|
|
@ -215,11 +215,11 @@ def : WriteRes<WriteVecLoadX, [SLM_MEC_RSV]> { let Latency = 3; }
|
|||
def : WriteRes<WriteVecLoadY, [SLM_MEC_RSV]> { let Latency = 3; }
|
||||
def : WriteRes<WriteVecMaskedLoad, [SLM_MEC_RSV]> { let Latency = 3; }
|
||||
def : WriteRes<WriteVecMaskedLoadY, [SLM_MEC_RSV]> { let Latency = 3; }
|
||||
def : WriteRes<WriteVecStore, [SLM_FPC_RSV01, SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteVecStoreX, [SLM_FPC_RSV01, SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteVecStoreY, [SLM_FPC_RSV01, SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteVecMaskedStore, [SLM_FPC_RSV01, SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteVecMaskedStoreY, [SLM_FPC_RSV01, SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteVecStore, [SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteVecStoreX, [SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteVecStoreY, [SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteVecMaskedStore, [SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteVecMaskedStoreY, [SLM_MEC_RSV]>;
|
||||
def : WriteRes<WriteVecMove, [SLM_FPC_RSV01]>;
|
||||
def : WriteRes<WriteVecMoveX, [SLM_FPC_RSV01]>;
|
||||
def : WriteRes<WriteVecMoveY, [SLM_FPC_RSV01]>;
|
||||
|
|
|
|||
|
|
@ -331,7 +331,7 @@ xorps (%rax), %xmm2
|
|||
|
||||
# CHECK: Resource pressure per iteration:
|
||||
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7]
|
||||
# CHECK-NEXT: - 232.00 8.00 62.50 47.50 2.50 2.50 67.00
|
||||
# CHECK-NEXT: - 232.00 8.00 61.00 46.00 2.50 2.50 67.00
|
||||
|
||||
# CHECK: Resource pressure by instruction:
|
||||
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions:
|
||||
|
|
@ -382,7 +382,7 @@ xorps (%rax), %xmm2
|
|||
# CHECK-NEXT: - - - - 1.00 - - - minss %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - 1.00 minss (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - - movaps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - 1.00 movaps %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movaps %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movaps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - movhlps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - movlhps %xmm0, %xmm2
|
||||
|
|
@ -391,13 +391,13 @@ xorps (%rax), %xmm2
|
|||
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 movlps %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - 1.00 - - - 1.00 movlps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - - movmskps %xmm0, %ecx
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - 1.00 movntps %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movntps %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 movntq %mm0, (%rax)
|
||||
# CHECK-NEXT: - - - 1.00 - - - - movss %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 movss %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movss (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - - movups %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - 1.00 movups %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movups %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movups (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 2.00 1.00 - - - - mulps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 2.00 1.00 - - - 1.00 mulps (%rax), %xmm2
|
||||
|
|
|
|||
|
|
@ -674,7 +674,7 @@ xorpd (%rax), %xmm2
|
|||
|
||||
# CHECK: Resource pressure per iteration:
|
||||
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7]
|
||||
# CHECK-NEXT: - 412.00 8.00 154.00 90.00 4.50 4.50 130.00
|
||||
# CHECK-NEXT: - 412.00 8.00 150.50 86.50 4.50 4.50 130.00
|
||||
|
||||
# CHECK: Resource pressure by instruction:
|
||||
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions:
|
||||
|
|
@ -736,7 +736,7 @@ xorpd (%rax), %xmm2
|
|||
# CHECK-NEXT: - 32.00 - 1.00 - - - - divsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - 32.00 - 1.00 - - - 1.00 divsd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 lfence
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - 1.00 maskmovdqu %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - - - - - - 1.00 maskmovdqu %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - - - 1.00 - - - maxpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - 1.00 maxpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - - maxsd %xmm0, %xmm2
|
||||
|
|
@ -746,17 +746,17 @@ xorpd (%rax), %xmm2
|
|||
# CHECK-NEXT: - - - - 1.00 - - - minsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - 1.00 minsd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - - movapd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - 1.00 movapd %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movapd %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movapd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - 0.50 0.50 - movd %eax, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - 0.50 0.50 - movd %xmm0, %ecx
|
||||
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 movd %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - - movdqa %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - 1.00 movdqa %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movdqa %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movdqa (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - - movdqu %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - 1.00 movdqu %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movdqu %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movdqu (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - - movdq2q %xmm0, %mm2
|
||||
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 movhpd %xmm0, (%rax)
|
||||
|
|
@ -764,8 +764,8 @@ xorpd (%rax), %xmm2
|
|||
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 movlpd %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - 1.00 - - - 1.00 movlpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - - movmskpd %xmm0, %ecx
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - 1.00 movntdq %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - 1.00 movntpd %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movntdq %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movntpd %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - - movq %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - - 0.50 0.50 - movq %rax, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movq (%rax), %xmm2
|
||||
|
|
@ -776,7 +776,7 @@ xorpd (%rax), %xmm2
|
|||
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 movsd %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movsd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - - movupd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - 1.00 movupd %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movupd %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - - - 1.00 movupd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 2.00 1.00 - - - - mulpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 2.00 1.00 - - - 1.00 mulpd (%rax), %xmm2
|
||||
|
|
|
|||
Loading…
Reference in New Issue