Skip to content
This repository was archived by the owner on Apr 23, 2020. It is now read-only.

Commit 880b045

Browse files
committed
[llvm-mca][X86] Add VPOPCNTDQ tests
Matches test coverage of test\CodeGen\X86\avx512vpopcntdq-schedule.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351842 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 09dbf88 commit 880b045

File tree

2 files changed

+238
-0
lines changed

2 files changed

+238
-0
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2+
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -instruction-tables < %s | FileCheck %s
3+
4+
vpopcntd %zmm1, %zmm0
5+
vpopcntd (%rdi), %zmm0
6+
vpopcntd (%rdi){1to16}, %zmm0
7+
8+
vpopcntd %zmm1, %zmm0 {%k1}
9+
vpopcntd (%rdi), %zmm0 {%k1}
10+
vpopcntd (%rdi){1to16}, %zmm0 {%k1}
11+
12+
vpopcntd %zmm1, %zmm0 {%k1} {z}
13+
vpopcntd (%rdi), %zmm0 {%k1} {z}
14+
vpopcntd (%rdi){1to16}, %zmm0 {%k1} {z}
15+
16+
vpopcntq %zmm1, %zmm0
17+
vpopcntq (%rdi), %zmm0
18+
vpopcntq (%rdi){1to8}, %zmm0
19+
20+
vpopcntq %zmm1, %zmm0 {%k1}
21+
vpopcntq (%rdi), %zmm0 {%k1}
22+
vpopcntq (%rdi){1to8}, %zmm0 {%k1}
23+
24+
vpopcntq %zmm1, %zmm0 {%k1} {z}
25+
vpopcntq (%rdi), %zmm0 {%k1} {z}
26+
vpopcntq (%rdi){1to8}, %zmm0 {%k1} {z}
27+
28+
# CHECK: Instruction Info:
29+
# CHECK-NEXT: [1]: #uOps
30+
# CHECK-NEXT: [2]: Latency
31+
# CHECK-NEXT: [3]: RThroughput
32+
# CHECK-NEXT: [4]: MayLoad
33+
# CHECK-NEXT: [5]: MayStore
34+
# CHECK-NEXT: [6]: HasSideEffects (U)
35+
36+
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
37+
# CHECK-NEXT: 1 1 0.50 vpopcntd %zmm1, %zmm0
38+
# CHECK-NEXT: 2 8 0.50 * vpopcntd (%rdi), %zmm0
39+
# CHECK-NEXT: 2 8 0.50 * vpopcntd (%rdi){1to16}, %zmm0
40+
# CHECK-NEXT: 1 1 0.50 vpopcntd %zmm1, %zmm0 {%k1}
41+
# CHECK-NEXT: 2 8 0.50 * vpopcntd (%rdi), %zmm0 {%k1}
42+
# CHECK-NEXT: 2 8 0.50 * vpopcntd (%rdi){1to16}, %zmm0 {%k1}
43+
# CHECK-NEXT: 1 1 0.50 vpopcntd %zmm1, %zmm0 {%k1} {z}
44+
# CHECK-NEXT: 2 8 0.50 * vpopcntd (%rdi), %zmm0 {%k1} {z}
45+
# CHECK-NEXT: 2 8 0.50 * vpopcntd (%rdi){1to16}, %zmm0 {%k1} {z}
46+
# CHECK-NEXT: 1 1 0.50 vpopcntq %zmm1, %zmm0
47+
# CHECK-NEXT: 2 8 0.50 * vpopcntq (%rdi), %zmm0
48+
# CHECK-NEXT: 2 8 0.50 * vpopcntq (%rdi){1to8}, %zmm0
49+
# CHECK-NEXT: 1 1 0.50 vpopcntq %zmm1, %zmm0 {%k1}
50+
# CHECK-NEXT: 2 8 0.50 * vpopcntq (%rdi), %zmm0 {%k1}
51+
# CHECK-NEXT: 2 8 0.50 * vpopcntq (%rdi){1to8}, %zmm0 {%k1}
52+
# CHECK-NEXT: 1 1 0.50 vpopcntq %zmm1, %zmm0 {%k1} {z}
53+
# CHECK-NEXT: 2 8 0.50 * vpopcntq (%rdi), %zmm0 {%k1} {z}
54+
# CHECK-NEXT: 2 8 0.50 * vpopcntq (%rdi){1to8}, %zmm0 {%k1} {z}
55+
56+
# CHECK: Resources:
57+
# CHECK-NEXT: [0] - SBDivider
58+
# CHECK-NEXT: [1] - SBFPDivider
59+
# CHECK-NEXT: [2] - SBPort0
60+
# CHECK-NEXT: [3] - SBPort1
61+
# CHECK-NEXT: [4] - SBPort4
62+
# CHECK-NEXT: [5] - SBPort5
63+
# CHECK-NEXT: [6.0] - SBPort23
64+
# CHECK-NEXT: [6.1] - SBPort23
65+
66+
# CHECK: Resource pressure per iteration:
67+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1]
68+
# CHECK-NEXT: - - - 9.00 - 9.00 6.00 6.00
69+
70+
# CHECK: Resource pressure by instruction:
71+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
72+
# CHECK-NEXT: - - - 0.50 - 0.50 - - vpopcntd %zmm1, %zmm0
73+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntd (%rdi), %zmm0
74+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntd (%rdi){1to16}, %zmm0
75+
# CHECK-NEXT: - - - 0.50 - 0.50 - - vpopcntd %zmm1, %zmm0 {%k1}
76+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntd (%rdi), %zmm0 {%k1}
77+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntd (%rdi){1to16}, %zmm0 {%k1}
78+
# CHECK-NEXT: - - - 0.50 - 0.50 - - vpopcntd %zmm1, %zmm0 {%k1} {z}
79+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntd (%rdi), %zmm0 {%k1} {z}
80+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntd (%rdi){1to16}, %zmm0 {%k1} {z}
81+
# CHECK-NEXT: - - - 0.50 - 0.50 - - vpopcntq %zmm1, %zmm0
82+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntq (%rdi), %zmm0
83+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntq (%rdi){1to8}, %zmm0
84+
# CHECK-NEXT: - - - 0.50 - 0.50 - - vpopcntq %zmm1, %zmm0 {%k1}
85+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntq (%rdi), %zmm0 {%k1}
86+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntq (%rdi){1to8}, %zmm0 {%k1}
87+
# CHECK-NEXT: - - - 0.50 - 0.50 - - vpopcntq %zmm1, %zmm0 {%k1} {z}
88+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntq (%rdi), %zmm0 {%k1} {z}
89+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntq (%rdi){1to8}, %zmm0 {%k1} {z}
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2+
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -instruction-tables < %s | FileCheck %s
3+
4+
vpopcntd %xmm1, %xmm0
5+
vpopcntd (%rdi), %xmm0
6+
vpopcntd (%rdi){1to4}, %xmm0
7+
8+
vpopcntd %xmm1, %xmm0 {%k1}
9+
vpopcntd (%rdi), %xmm0 {%k1}
10+
vpopcntd (%rdi){1to4}, %xmm0 {%k1}
11+
12+
vpopcntd %xmm1, %xmm0 {%k1} {z}
13+
vpopcntd (%rdi), %xmm0 {%k1} {z}
14+
vpopcntd (%rdi){1to4}, %xmm0 {%k1} {z}
15+
16+
vpopcntd %ymm1, %ymm0
17+
vpopcntd (%rdi), %ymm0
18+
vpopcntd (%rdi){1to8}, %ymm0
19+
20+
vpopcntd %ymm1, %ymm0 {%k1}
21+
vpopcntd (%rdi), %ymm0 {%k1}
22+
vpopcntd (%rdi){1to8}, %ymm0 {%k1}
23+
24+
vpopcntd %ymm1, %ymm0 {%k1} {z}
25+
vpopcntd (%rdi), %ymm0 {%k1} {z}
26+
vpopcntd (%rdi){1to8}, %ymm0 {%k1} {z}
27+
28+
vpopcntq %xmm1, %xmm0
29+
vpopcntq (%rdi), %xmm0
30+
vpopcntq (%rdi){1to2}, %xmm0
31+
32+
vpopcntq %xmm1, %xmm0 {%k1}
33+
vpopcntq (%rdi), %xmm0 {%k1}
34+
vpopcntq (%rdi){1to2}, %xmm0 {%k1}
35+
36+
vpopcntq %xmm1, %xmm0 {%k1} {z}
37+
vpopcntq (%rdi), %xmm0 {%k1} {z}
38+
vpopcntq (%rdi){1to2}, %xmm0 {%k1} {z}
39+
40+
vpopcntq %ymm1, %ymm0
41+
vpopcntq (%rdi), %ymm0
42+
vpopcntq (%rdi){1to4}, %ymm0
43+
44+
vpopcntq %ymm1, %ymm0 {%k1}
45+
vpopcntq (%rdi), %ymm0 {%k1}
46+
vpopcntq (%rdi){1to4}, %ymm0 {%k1}
47+
48+
vpopcntq %ymm1, %ymm0 {%k1} {z}
49+
vpopcntq (%rdi), %ymm0 {%k1} {z}
50+
vpopcntq (%rdi){1to4}, %ymm0 {%k1} {z}
51+
52+
# CHECK: Instruction Info:
53+
# CHECK-NEXT: [1]: #uOps
54+
# CHECK-NEXT: [2]: Latency
55+
# CHECK-NEXT: [3]: RThroughput
56+
# CHECK-NEXT: [4]: MayLoad
57+
# CHECK-NEXT: [5]: MayStore
58+
# CHECK-NEXT: [6]: HasSideEffects (U)
59+
60+
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
61+
# CHECK-NEXT: 1 1 0.50 vpopcntd %xmm1, %xmm0
62+
# CHECK-NEXT: 2 7 0.50 * vpopcntd (%rdi), %xmm0
63+
# CHECK-NEXT: 2 7 0.50 * vpopcntd (%rdi){1to4}, %xmm0
64+
# CHECK-NEXT: 1 1 0.50 vpopcntd %xmm1, %xmm0 {%k1}
65+
# CHECK-NEXT: 2 7 0.50 * vpopcntd (%rdi), %xmm0 {%k1}
66+
# CHECK-NEXT: 2 7 0.50 * vpopcntd (%rdi){1to4}, %xmm0 {%k1}
67+
# CHECK-NEXT: 1 1 0.50 vpopcntd %xmm1, %xmm0 {%k1} {z}
68+
# CHECK-NEXT: 2 7 0.50 * vpopcntd (%rdi), %xmm0 {%k1} {z}
69+
# CHECK-NEXT: 2 7 0.50 * vpopcntd (%rdi){1to4}, %xmm0 {%k1} {z}
70+
# CHECK-NEXT: 1 1 0.50 vpopcntd %ymm1, %ymm0
71+
# CHECK-NEXT: 2 8 0.50 * vpopcntd (%rdi), %ymm0
72+
# CHECK-NEXT: 2 8 0.50 * vpopcntd (%rdi){1to8}, %ymm0
73+
# CHECK-NEXT: 1 1 0.50 vpopcntd %ymm1, %ymm0 {%k1}
74+
# CHECK-NEXT: 2 8 0.50 * vpopcntd (%rdi), %ymm0 {%k1}
75+
# CHECK-NEXT: 2 8 0.50 * vpopcntd (%rdi){1to8}, %ymm0 {%k1}
76+
# CHECK-NEXT: 1 1 0.50 vpopcntd %ymm1, %ymm0 {%k1} {z}
77+
# CHECK-NEXT: 2 8 0.50 * vpopcntd (%rdi), %ymm0 {%k1} {z}
78+
# CHECK-NEXT: 2 8 0.50 * vpopcntd (%rdi){1to8}, %ymm0 {%k1} {z}
79+
# CHECK-NEXT: 1 1 0.50 vpopcntq %xmm1, %xmm0
80+
# CHECK-NEXT: 2 7 0.50 * vpopcntq (%rdi), %xmm0
81+
# CHECK-NEXT: 2 7 0.50 * vpopcntq (%rdi){1to2}, %xmm0
82+
# CHECK-NEXT: 1 1 0.50 vpopcntq %xmm1, %xmm0 {%k1}
83+
# CHECK-NEXT: 2 7 0.50 * vpopcntq (%rdi), %xmm0 {%k1}
84+
# CHECK-NEXT: 2 7 0.50 * vpopcntq (%rdi){1to2}, %xmm0 {%k1}
85+
# CHECK-NEXT: 1 1 0.50 vpopcntq %xmm1, %xmm0 {%k1} {z}
86+
# CHECK-NEXT: 2 7 0.50 * vpopcntq (%rdi), %xmm0 {%k1} {z}
87+
# CHECK-NEXT: 2 7 0.50 * vpopcntq (%rdi){1to2}, %xmm0 {%k1} {z}
88+
# CHECK-NEXT: 1 1 0.50 vpopcntq %ymm1, %ymm0
89+
# CHECK-NEXT: 2 8 0.50 * vpopcntq (%rdi), %ymm0
90+
# CHECK-NEXT: 2 8 0.50 * vpopcntq (%rdi){1to4}, %ymm0
91+
# CHECK-NEXT: 1 1 0.50 vpopcntq %ymm1, %ymm0 {%k1}
92+
# CHECK-NEXT: 2 8 0.50 * vpopcntq (%rdi), %ymm0 {%k1}
93+
# CHECK-NEXT: 2 8 0.50 * vpopcntq (%rdi){1to4}, %ymm0 {%k1}
94+
# CHECK-NEXT: 1 1 0.50 vpopcntq %ymm1, %ymm0 {%k1} {z}
95+
# CHECK-NEXT: 2 8 0.50 * vpopcntq (%rdi), %ymm0 {%k1} {z}
96+
# CHECK-NEXT: 2 8 0.50 * vpopcntq (%rdi){1to4}, %ymm0 {%k1} {z}
97+
98+
# CHECK: Resources:
99+
# CHECK-NEXT: [0] - SBDivider
100+
# CHECK-NEXT: [1] - SBFPDivider
101+
# CHECK-NEXT: [2] - SBPort0
102+
# CHECK-NEXT: [3] - SBPort1
103+
# CHECK-NEXT: [4] - SBPort4
104+
# CHECK-NEXT: [5] - SBPort5
105+
# CHECK-NEXT: [6.0] - SBPort23
106+
# CHECK-NEXT: [6.1] - SBPort23
107+
108+
# CHECK: Resource pressure per iteration:
109+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1]
110+
# CHECK-NEXT: - - - 18.00 - 18.00 12.00 12.00
111+
112+
# CHECK: Resource pressure by instruction:
113+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
114+
# CHECK-NEXT: - - - 0.50 - 0.50 - - vpopcntd %xmm1, %xmm0
115+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntd (%rdi), %xmm0
116+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntd (%rdi){1to4}, %xmm0
117+
# CHECK-NEXT: - - - 0.50 - 0.50 - - vpopcntd %xmm1, %xmm0 {%k1}
118+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntd (%rdi), %xmm0 {%k1}
119+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntd (%rdi){1to4}, %xmm0 {%k1}
120+
# CHECK-NEXT: - - - 0.50 - 0.50 - - vpopcntd %xmm1, %xmm0 {%k1} {z}
121+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntd (%rdi), %xmm0 {%k1} {z}
122+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntd (%rdi){1to4}, %xmm0 {%k1} {z}
123+
# CHECK-NEXT: - - - 0.50 - 0.50 - - vpopcntd %ymm1, %ymm0
124+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntd (%rdi), %ymm0
125+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntd (%rdi){1to8}, %ymm0
126+
# CHECK-NEXT: - - - 0.50 - 0.50 - - vpopcntd %ymm1, %ymm0 {%k1}
127+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntd (%rdi), %ymm0 {%k1}
128+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntd (%rdi){1to8}, %ymm0 {%k1}
129+
# CHECK-NEXT: - - - 0.50 - 0.50 - - vpopcntd %ymm1, %ymm0 {%k1} {z}
130+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntd (%rdi), %ymm0 {%k1} {z}
131+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntd (%rdi){1to8}, %ymm0 {%k1} {z}
132+
# CHECK-NEXT: - - - 0.50 - 0.50 - - vpopcntq %xmm1, %xmm0
133+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntq (%rdi), %xmm0
134+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntq (%rdi){1to2}, %xmm0
135+
# CHECK-NEXT: - - - 0.50 - 0.50 - - vpopcntq %xmm1, %xmm0 {%k1}
136+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntq (%rdi), %xmm0 {%k1}
137+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntq (%rdi){1to2}, %xmm0 {%k1}
138+
# CHECK-NEXT: - - - 0.50 - 0.50 - - vpopcntq %xmm1, %xmm0 {%k1} {z}
139+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntq (%rdi), %xmm0 {%k1} {z}
140+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntq (%rdi){1to2}, %xmm0 {%k1} {z}
141+
# CHECK-NEXT: - - - 0.50 - 0.50 - - vpopcntq %ymm1, %ymm0
142+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntq (%rdi), %ymm0
143+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntq (%rdi){1to4}, %ymm0
144+
# CHECK-NEXT: - - - 0.50 - 0.50 - - vpopcntq %ymm1, %ymm0 {%k1}
145+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntq (%rdi), %ymm0 {%k1}
146+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntq (%rdi){1to4}, %ymm0 {%k1}
147+
# CHECK-NEXT: - - - 0.50 - 0.50 - - vpopcntq %ymm1, %ymm0 {%k1} {z}
148+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntq (%rdi), %ymm0 {%k1} {z}
149+
# CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vpopcntq (%rdi){1to4}, %ymm0 {%k1} {z}

0 commit comments

Comments
 (0)