summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-mca
diff options
context:
space:
mode:
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2019-01-29 16:47:27 +0000
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2019-01-29 16:47:27 +0000
commit815cdbff29ed284eac92da54aaf3f4406d6bd8a2 (patch)
tree6fbbab4e4f10e71e049e5d207726d610d0382b57 /llvm/test/tools/llvm-mca
parent2e87df9112984d853ebdbeeb5935cfaf1591982f (diff)
downloadbcm5719-llvm-815cdbff29ed284eac92da54aaf3f4406d6bd8a2.tar.gz
bcm5719-llvm-815cdbff29ed284eac92da54aaf3f4406d6bd8a2.zip
[X86][Btver2] Improved latency/throughput model for scalar int-to-float conversions.
Account for bypass delays when computing the latency of scalar int-to-float conversions. On Jaguar we need to account for an extra 6cy latency (see AMD fam16h SOG). This patch also fixes the number of micropcodes for the register-memory variants of scalar int-to-float conversions. Differential Revision: https://reviews.llvm.org/D57148 llvm-svn: 352518
Diffstat (limited to 'llvm/test/tools/llvm-mca')
-rw-r--r--llvm/test/tools/llvm-mca/X86/BtVer2/int-to-fpu-forwarding-2.s35
-rw-r--r--llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s16
-rw-r--r--llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s8
-rw-r--r--llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse2.s8
4 files changed, 34 insertions, 33 deletions
diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/int-to-fpu-forwarding-2.s b/llvm/test/tools/llvm-mca/X86/BtVer2/int-to-fpu-forwarding-2.s
index ca13d5ec88c..dc7749102c9 100644
--- a/llvm/test/tools/llvm-mca/X86/BtVer2/int-to-fpu-forwarding-2.s
+++ b/llvm/test/tools/llvm-mca/X86/BtVer2/int-to-fpu-forwarding-2.s
@@ -1,7 +1,8 @@
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -iterations=500 < %s | FileCheck %s
-# Throughput for all the code snippet below should tend to 1.00 IPC.
+# Throughput for the AVX code snippets below should tend to 0.25 IPC.
+# Throughput for the SSE code snippets below should tend to 1.00 IPC.
# LLVM-MCA-BEGIN
vcvtsi2ss %ecx, %xmm0, %xmm0
@@ -31,12 +32,12 @@ movq %rcx, %xmm0
# CHECK: Iterations: 500
# CHECK-NEXT: Instructions: 500
-# CHECK-NEXT: Total Cycles: 4503
+# CHECK-NEXT: Total Cycles: 2003
# CHECK-NEXT: Total uOps: 1000
# CHECK: Dispatch Width: 2
-# CHECK-NEXT: uOps Per Cycle: 0.22
-# CHECK-NEXT: IPC: 0.11
+# CHECK-NEXT: uOps Per Cycle: 0.50
+# CHECK-NEXT: IPC: 0.25
# CHECK-NEXT: Block RThroughput: 1.0
# CHECK: Instruction Info:
@@ -48,7 +49,7 @@ movq %rcx, %xmm0
# CHECK-NEXT: [6]: HasSideEffects (U)
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
-# CHECK-NEXT: 2 9 1.00 vcvtsi2ssl %ecx, %xmm0, %xmm0
+# CHECK-NEXT: 2 10 1.00 vcvtsi2ssl %ecx, %xmm0, %xmm0
# CHECK: Resources:
# CHECK-NEXT: [0] - JALU0
@@ -78,12 +79,12 @@ movq %rcx, %xmm0
# CHECK: Iterations: 500
# CHECK-NEXT: Instructions: 500
-# CHECK-NEXT: Total Cycles: 4503
+# CHECK-NEXT: Total Cycles: 2003
# CHECK-NEXT: Total uOps: 1000
# CHECK: Dispatch Width: 2
-# CHECK-NEXT: uOps Per Cycle: 0.22
-# CHECK-NEXT: IPC: 0.11
+# CHECK-NEXT: uOps Per Cycle: 0.50
+# CHECK-NEXT: IPC: 0.25
# CHECK-NEXT: Block RThroughput: 1.0
# CHECK: Instruction Info:
@@ -95,7 +96,7 @@ movq %rcx, %xmm0
# CHECK-NEXT: [6]: HasSideEffects (U)
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
-# CHECK-NEXT: 2 9 1.00 vcvtsi2sdl %ecx, %xmm0, %xmm0
+# CHECK-NEXT: 2 10 1.00 vcvtsi2sdl %ecx, %xmm0, %xmm0
# CHECK: Resources:
# CHECK-NEXT: [0] - JALU0
@@ -125,12 +126,12 @@ movq %rcx, %xmm0
# CHECK: Iterations: 500
# CHECK-NEXT: Instructions: 500
-# CHECK-NEXT: Total Cycles: 511
+# CHECK-NEXT: Total Cycles: 506
# CHECK-NEXT: Total uOps: 1000
# CHECK: Dispatch Width: 2
-# CHECK-NEXT: uOps Per Cycle: 1.96
-# CHECK-NEXT: IPC: 0.98
+# CHECK-NEXT: uOps Per Cycle: 1.98
+# CHECK-NEXT: IPC: 0.99
# CHECK-NEXT: Block RThroughput: 1.0
# CHECK: Instruction Info:
@@ -142,7 +143,7 @@ movq %rcx, %xmm0
# CHECK-NEXT: [6]: HasSideEffects (U)
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
-# CHECK-NEXT: 2 9 1.00 cvtsi2ssl %ecx, %xmm0
+# CHECK-NEXT: 2 10 1.00 cvtsi2ssl %ecx, %xmm0
# CHECK: Resources:
# CHECK-NEXT: [0] - JALU0
@@ -172,12 +173,12 @@ movq %rcx, %xmm0
# CHECK: Iterations: 500
# CHECK-NEXT: Instructions: 500
-# CHECK-NEXT: Total Cycles: 511
+# CHECK-NEXT: Total Cycles: 506
# CHECK-NEXT: Total uOps: 1000
# CHECK: Dispatch Width: 2
-# CHECK-NEXT: uOps Per Cycle: 1.96
-# CHECK-NEXT: IPC: 0.98
+# CHECK-NEXT: uOps Per Cycle: 1.98
+# CHECK-NEXT: IPC: 0.99
# CHECK-NEXT: Block RThroughput: 1.0
# CHECK: Instruction Info:
@@ -189,7 +190,7 @@ movq %rcx, %xmm0
# CHECK-NEXT: [6]: HasSideEffects (U)
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
-# CHECK-NEXT: 2 9 1.00 cvtsi2sdl %ecx, %xmm0
+# CHECK-NEXT: 2 10 1.00 cvtsi2sdl %ecx, %xmm0
# CHECK: Resources:
# CHECK-NEXT: [0] - JALU0
diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s
index a7d861392f2..959d2eac3ba 100644
--- a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s
+++ b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s
@@ -1144,14 +1144,14 @@ vzeroupper
# CHECK-NEXT: 2 12 1.00 * vcvtsd2si (%rax), %rcx
# CHECK-NEXT: 2 7 2.00 vcvtsd2ss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 12 2.00 * vcvtsd2ss (%rax), %xmm1, %xmm2
-# CHECK-NEXT: 2 9 1.00 vcvtsi2sdl %ecx, %xmm0, %xmm2
-# CHECK-NEXT: 2 9 1.00 vcvtsi2sdq %rcx, %xmm0, %xmm2
-# CHECK-NEXT: 2 14 1.00 * vcvtsi2sdl (%rax), %xmm0, %xmm2
-# CHECK-NEXT: 2 14 1.00 * vcvtsi2sdq (%rax), %xmm0, %xmm2
-# CHECK-NEXT: 2 9 1.00 vcvtsi2ssl %ecx, %xmm0, %xmm2
-# CHECK-NEXT: 2 9 1.00 vcvtsi2ssq %rcx, %xmm0, %xmm2
-# CHECK-NEXT: 2 14 1.00 * vcvtsi2ssl (%rax), %xmm0, %xmm2
-# CHECK-NEXT: 2 14 1.00 * vcvtsi2ssq (%rax), %xmm0, %xmm2
+# CHECK-NEXT: 2 10 1.00 vcvtsi2sdl %ecx, %xmm0, %xmm2
+# CHECK-NEXT: 2 10 1.00 vcvtsi2sdq %rcx, %xmm0, %xmm2
+# CHECK-NEXT: 1 9 1.00 * vcvtsi2sdl (%rax), %xmm0, %xmm2
+# CHECK-NEXT: 1 9 1.00 * vcvtsi2sdq (%rax), %xmm0, %xmm2
+# CHECK-NEXT: 2 10 1.00 vcvtsi2ssl %ecx, %xmm0, %xmm2
+# CHECK-NEXT: 2 10 1.00 vcvtsi2ssq %rcx, %xmm0, %xmm2
+# CHECK-NEXT: 1 9 1.00 * vcvtsi2ssl (%rax), %xmm0, %xmm2
+# CHECK-NEXT: 1 9 1.00 * vcvtsi2ssq (%rax), %xmm0, %xmm2
# CHECK-NEXT: 2 7 2.00 vcvtss2sd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 12 2.00 * vcvtss2sd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 2 7 1.00 vcvtss2si %xmm0, %ecx
diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s
index 6e541dbfdf4..2094e26ba92 100644
--- a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s
+++ b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s
@@ -212,10 +212,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: 1 8 1.00 * cvtpi2ps (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cvtps2pi %xmm0, %mm2
# CHECK-NEXT: 1 8 1.00 * cvtps2pi (%rax), %mm2
-# CHECK-NEXT: 2 9 1.00 cvtsi2ssl %ecx, %xmm2
-# CHECK-NEXT: 2 9 1.00 cvtsi2ssq %rcx, %xmm2
-# CHECK-NEXT: 2 14 1.00 * cvtsi2ssl (%rax), %xmm2
-# CHECK-NEXT: 2 14 1.00 * cvtsi2ssl (%rax), %xmm2
+# CHECK-NEXT: 2 10 1.00 cvtsi2ssl %ecx, %xmm2
+# CHECK-NEXT: 2 10 1.00 cvtsi2ssq %rcx, %xmm2
+# CHECK-NEXT: 1 9 1.00 * cvtsi2ssl (%rax), %xmm2
+# CHECK-NEXT: 1 9 1.00 * cvtsi2ssl (%rax), %xmm2
# CHECK-NEXT: 2 7 1.00 cvtss2si %xmm0, %ecx
# CHECK-NEXT: 2 7 1.00 cvtss2si %xmm0, %rcx
# CHECK-NEXT: 2 12 1.00 * cvtss2si (%rax), %ecx
diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse2.s b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse2.s
index 46f03ae9c17..9ac305d07a8 100644
--- a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse2.s
+++ b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse2.s
@@ -444,10 +444,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: 2 12 1.00 * cvtsd2si (%rax), %rcx
# CHECK-NEXT: 2 7 2.00 cvtsd2ss %xmm0, %xmm2
# CHECK-NEXT: 2 12 2.00 * cvtsd2ss (%rax), %xmm2
-# CHECK-NEXT: 2 9 1.00 cvtsi2sdl %ecx, %xmm2
-# CHECK-NEXT: 2 9 1.00 cvtsi2sdq %rcx, %xmm2
-# CHECK-NEXT: 2 14 1.00 * cvtsi2sdl (%rax), %xmm2
-# CHECK-NEXT: 2 14 1.00 * cvtsi2sdl (%rax), %xmm2
+# CHECK-NEXT: 2 10 1.00 cvtsi2sdl %ecx, %xmm2
+# CHECK-NEXT: 2 10 1.00 cvtsi2sdq %rcx, %xmm2
+# CHECK-NEXT: 1 9 1.00 * cvtsi2sdl (%rax), %xmm2
+# CHECK-NEXT: 1 9 1.00 * cvtsi2sdl (%rax), %xmm2
# CHECK-NEXT: 2 7 2.00 cvtss2sd %xmm0, %xmm2
# CHECK-NEXT: 2 12 2.00 * cvtss2sd (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cvttpd2dq %xmm0, %xmm2
OpenPOWER on IntegriCloud