1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=bdver2 -instruction-tables < %s | FileCheck %s
3
4femms
5
6pavgusb     %mm0, %mm2
7pavgusb     (%rax), %mm2
8
9pf2id       %mm0, %mm2
10pf2id       (%rax), %mm2
11
12pf2iw       %mm0, %mm2
13pf2iw       (%rax), %mm2
14
15pfacc       %mm0, %mm2
16pfacc       (%rax), %mm2
17
18pfadd       %mm0, %mm2
19pfadd       (%rax), %mm2
20
21pfcmpeq     %mm0, %mm2
22pfcmpeq     (%rax), %mm2
23
24pfcmpge     %mm0, %mm2
25pfcmpge     (%rax), %mm2
26
27pfcmpgt     %mm0, %mm2
28pfcmpgt     (%rax), %mm2
29
30pfmax       %mm0, %mm2
31pfmax       (%rax), %mm2
32
33pfmin       %mm0, %mm2
34pfmin       (%rax), %mm2
35
36pfmul       %mm0, %mm2
37pfmul       (%rax), %mm2
38
39pfnacc      %mm0, %mm2
40pfnacc      (%rax), %mm2
41
42pfpnacc     %mm0, %mm2
43pfpnacc     (%rax), %mm2
44
45pfrcp       %mm0, %mm2
46pfrcp       (%rax), %mm2
47
48pfrcpit1    %mm0, %mm2
49pfrcpit1    (%rax), %mm2
50
51pfrcpit2    %mm0, %mm2
52pfrcpit2    (%rax), %mm2
53
54pfrsqit1    %mm0, %mm2
55pfrsqit1    (%rax), %mm2
56
57pfrsqrt     %mm0, %mm2
58pfrsqrt     (%rax), %mm2
59
60pfsub       %mm0, %mm2
61pfsub       (%rax), %mm2
62
63pfsubr      %mm0, %mm2
64pfsubr      (%rax), %mm2
65
66pi2fd       %mm0, %mm2
67pi2fd       (%rax), %mm2
68
69pi2fw       %mm0, %mm2
70pi2fw       (%rax), %mm2
71
72pmulhrw     %mm0, %mm2
73pmulhrw     (%rax), %mm2
74
75prefetch    (%rax)
76prefetchw   (%rax)
77
78pswapd      %mm0, %mm2
79pswapd      (%rax), %mm2
80
81# CHECK:      Instruction Info:
82# CHECK-NEXT: [1]: #uOps
83# CHECK-NEXT: [2]: Latency
84# CHECK-NEXT: [3]: RThroughput
85# CHECK-NEXT: [4]: MayLoad
86# CHECK-NEXT: [5]: MayStore
87# CHECK-NEXT: [6]: HasSideEffects (U)
88
89# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
90# CHECK-NEXT:  1      2     0.50    *      *      U     femms
91# CHECK-NEXT:  1      2     0.50                        pavgusb	%mm0, %mm2
92# CHECK-NEXT:  1      7     1.50    *                   pavgusb	(%rax), %mm2
93# CHECK-NEXT:  1      4     1.00                        pf2id	%mm0, %mm2
94# CHECK-NEXT:  1      9     1.50    *                   pf2id	(%rax), %mm2
95# CHECK-NEXT:  1      4     1.00                        pf2iw	%mm0, %mm2
96# CHECK-NEXT:  1      9     1.50    *                   pf2iw	(%rax), %mm2
97# CHECK-NEXT:  1      5     1.00                        pfacc	%mm0, %mm2
98# CHECK-NEXT:  1      10    1.50    *                   pfacc	(%rax), %mm2
99# CHECK-NEXT:  1      5     1.00                        pfadd	%mm0, %mm2
100# CHECK-NEXT:  1      10    1.50    *                   pfadd	(%rax), %mm2
101# CHECK-NEXT:  1      5     1.00                        pfcmpeq	%mm0, %mm2
102# CHECK-NEXT:  1      10    1.50    *                   pfcmpeq	(%rax), %mm2
103# CHECK-NEXT:  1      5     1.00                        pfcmpge	%mm0, %mm2
104# CHECK-NEXT:  1      10    1.50    *                   pfcmpge	(%rax), %mm2
105# CHECK-NEXT:  1      5     1.00                        pfcmpgt	%mm0, %mm2
106# CHECK-NEXT:  1      10    1.50    *                   pfcmpgt	(%rax), %mm2
107# CHECK-NEXT:  1      5     1.00                        pfmax	%mm0, %mm2
108# CHECK-NEXT:  1      10    1.50    *                   pfmax	(%rax), %mm2
109# CHECK-NEXT:  1      5     1.00                        pfmin	%mm0, %mm2
110# CHECK-NEXT:  1      10    1.50    *                   pfmin	(%rax), %mm2
111# CHECK-NEXT:  1      5     1.00                        pfmul	%mm0, %mm2
112# CHECK-NEXT:  1      10    1.50    *                   pfmul	(%rax), %mm2
113# CHECK-NEXT:  1      5     1.00                        pfnacc	%mm0, %mm2
114# CHECK-NEXT:  1      10    1.50    *                   pfnacc	(%rax), %mm2
115# CHECK-NEXT:  1      5     1.00                        pfpnacc	%mm0, %mm2
116# CHECK-NEXT:  1      10    1.50    *                   pfpnacc	(%rax), %mm2
117# CHECK-NEXT:  1      5     1.00                        pfrcp	%mm0, %mm2
118# CHECK-NEXT:  1      10    1.50    *                   pfrcp	(%rax), %mm2
119# CHECK-NEXT:  1      5     1.00                        pfrcpit1	%mm0, %mm2
120# CHECK-NEXT:  1      10    1.50    *                   pfrcpit1	(%rax), %mm2
121# CHECK-NEXT:  1      5     1.00                        pfrcpit2	%mm0, %mm2
122# CHECK-NEXT:  1      10    1.50    *                   pfrcpit2	(%rax), %mm2
123# CHECK-NEXT:  1      5     1.00                        pfrsqit1	%mm0, %mm2
124# CHECK-NEXT:  1      10    1.50    *                   pfrsqit1	(%rax), %mm2
125# CHECK-NEXT:  1      5     1.00                        pfrsqrt	%mm0, %mm2
126# CHECK-NEXT:  1      10    1.50    *                   pfrsqrt	(%rax), %mm2
127# CHECK-NEXT:  1      5     1.00                        pfsub	%mm0, %mm2
128# CHECK-NEXT:  1      10    1.50    *                   pfsub	(%rax), %mm2
129# CHECK-NEXT:  1      5     1.00                        pfsubr	%mm0, %mm2
130# CHECK-NEXT:  1      10    1.50    *                   pfsubr	(%rax), %mm2
131# CHECK-NEXT:  1      4     1.00                        pi2fd	%mm0, %mm2
132# CHECK-NEXT:  1      9     1.50    *                   pi2fd	(%rax), %mm2
133# CHECK-NEXT:  1      4     1.00                        pi2fw	%mm0, %mm2
134# CHECK-NEXT:  1      9     1.50    *                   pi2fw	(%rax), %mm2
135# CHECK-NEXT:  1      4     1.00                        pmulhrw	%mm0, %mm2
136# CHECK-NEXT:  1      9     1.50    *                   pmulhrw	(%rax), %mm2
137# CHECK-NEXT:  1      5     1.00    *      *            prefetch	(%rax)
138# CHECK-NEXT:  1      5     1.00    *      *            prefetchw	(%rax)
139# CHECK-NEXT:  1      2     1.00                        pswapd	%mm0, %mm2
140# CHECK-NEXT:  1      7     1.50    *                   pswapd	(%rax), %mm2
141
142# CHECK:      Resources:
143# CHECK-NEXT: [0.0] - PdAGLU01
144# CHECK-NEXT: [0.1] - PdAGLU01
145# CHECK-NEXT: [1]   - PdBranch
146# CHECK-NEXT: [2]   - PdCount
147# CHECK-NEXT: [3]   - PdDiv
148# CHECK-NEXT: [4]   - PdEX0
149# CHECK-NEXT: [5]   - PdEX1
150# CHECK-NEXT: [6]   - PdFPCVT
151# CHECK-NEXT: [7.0] - PdFPFMA
152# CHECK-NEXT: [7.1] - PdFPFMA
153# CHECK-NEXT: [8.0] - PdFPMAL
154# CHECK-NEXT: [8.1] - PdFPMAL
155# CHECK-NEXT: [9]   - PdFPMMA
156# CHECK-NEXT: [10]  - PdFPSTO
157# CHECK-NEXT: [11]  - PdFPU0
158# CHECK-NEXT: [12]  - PdFPU1
159# CHECK-NEXT: [13]  - PdFPU2
160# CHECK-NEXT: [14]  - PdFPU3
161# CHECK-NEXT: [15]  - PdFPXBR
162# CHECK-NEXT: [16.0] - PdLoad
163# CHECK-NEXT: [16.1] - PdLoad
164# CHECK-NEXT: [17]  - PdMul
165# CHECK-NEXT: [18]  - PdStore
166
167# CHECK:      Resource pressure per iteration:
168# CHECK-NEXT: [0.0]  [0.1]  [1]    [2]    [3]    [4]    [5]    [6]    [7.0]  [7.1]  [8.0]  [8.1]  [9]    [10]   [11]   [12]   [13]   [14]   [15]   [16.0] [16.1] [17]   [18]
169# CHECK-NEXT: 38.00  38.00   -      -      -      -      -     8.00   17.50  17.50  3.00   3.00   2.00   8.00   46.50  2.50    -      -      -     38.00  38.00   -      -
170
171# CHECK:      Resource pressure by instruction:
172# CHECK-NEXT: [0.0]  [0.1]  [1]    [2]    [3]    [4]    [5]    [6]    [7.0]  [7.1]  [8.0]  [8.1]  [9]    [10]   [11]   [12]   [13]   [14]   [15]   [16.0] [16.1] [17]   [18]   Instructions:
173# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -      -      -     0.50   0.50    -      -      -      -      -      -      -     femms
174# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     0.50   0.50    -      -     0.50   0.50    -      -      -      -      -      -      -     pavgusb	%mm0, %mm2
175# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -      -      -     0.50   0.50    -      -     0.50   0.50    -      -      -     1.50   1.50    -      -     pavgusb	(%rax), %mm2
176# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -      -     1.00   1.00    -      -      -      -      -      -      -      -     pf2id	%mm0, %mm2
177# CHECK-NEXT: 1.50   1.50    -      -      -      -      -     1.00    -      -      -      -      -     1.00   1.00    -      -      -      -     1.50   1.50    -      -     pf2id	(%rax), %mm2
178# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -      -     1.00   1.00    -      -      -      -      -      -      -      -     pf2iw	%mm0, %mm2
179# CHECK-NEXT: 1.50   1.50    -      -      -      -      -     1.00    -      -      -      -      -     1.00   1.00    -      -      -      -     1.50   1.50    -      -     pf2iw	(%rax), %mm2
180# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -      -      -      -      -     pfacc	%mm0, %mm2
181# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -     1.50   1.50    -      -     pfacc	(%rax), %mm2
182# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -      -      -      -      -     pfadd	%mm0, %mm2
183# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -     1.50   1.50    -      -     pfadd	(%rax), %mm2
184# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -      -      -      -      -     pfcmpeq	%mm0, %mm2
185# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -     1.50   1.50    -      -     pfcmpeq	(%rax), %mm2
186# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -      -      -      -      -     pfcmpge	%mm0, %mm2
187# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -     1.50   1.50    -      -     pfcmpge	(%rax), %mm2
188# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -      -      -      -      -     pfcmpgt	%mm0, %mm2
189# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -     1.50   1.50    -      -     pfcmpgt	(%rax), %mm2
190# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -      -      -      -      -     pfmax	%mm0, %mm2
191# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -     1.50   1.50    -      -     pfmax	(%rax), %mm2
192# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -      -      -      -      -     pfmin	%mm0, %mm2
193# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -     1.50   1.50    -      -     pfmin	(%rax), %mm2
194# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -      -      -      -      -     pfmul	%mm0, %mm2
195# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -     1.50   1.50    -      -     pfmul	(%rax), %mm2
196# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -      -      -      -      -     pfnacc	%mm0, %mm2
197# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -     1.50   1.50    -      -     pfnacc	(%rax), %mm2
198# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -      -      -      -      -     pfpnacc	%mm0, %mm2
199# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -     1.50   1.50    -      -     pfpnacc	(%rax), %mm2
200# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -      -      -      -      -     pfrcp	%mm0, %mm2
201# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -     1.50   1.50    -      -     pfrcp	(%rax), %mm2
202# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -      -      -      -      -     pfrcpit1	%mm0, %mm2
203# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -     1.50   1.50    -      -     pfrcpit1	(%rax), %mm2
204# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -      -      -      -      -     pfrcpit2	%mm0, %mm2
205# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -     1.50   1.50    -      -     pfrcpit2	(%rax), %mm2
206# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -      -      -      -      -     pfrsqit1	%mm0, %mm2
207# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -     1.50   1.50    -      -     pfrsqit1	(%rax), %mm2
208# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -      -      -      -      -     pfrsqrt	%mm0, %mm2
209# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -     1.50   1.50    -      -     pfrsqrt	(%rax), %mm2
210# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -      -      -      -      -     pfsub	%mm0, %mm2
211# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -     1.50   1.50    -      -     pfsub	(%rax), %mm2
212# CHECK-NEXT:  -      -      -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -      -      -      -      -     pfsubr	%mm0, %mm2
213# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -     0.50   0.50    -      -      -      -     1.00    -      -      -      -     1.50   1.50    -      -     pfsubr	(%rax), %mm2
214# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -      -     1.00   1.00    -      -      -      -      -      -      -      -     pi2fd	%mm0, %mm2
215# CHECK-NEXT: 1.50   1.50    -      -      -      -      -     1.00    -      -      -      -      -     1.00   1.00    -      -      -      -     1.50   1.50    -      -     pi2fd	(%rax), %mm2
216# CHECK-NEXT:  -      -      -      -      -      -      -     1.00    -      -      -      -      -     1.00   1.00    -      -      -      -      -      -      -      -     pi2fw	%mm0, %mm2
217# CHECK-NEXT: 1.50   1.50    -      -      -      -      -     1.00    -      -      -      -      -     1.00   1.00    -      -      -      -     1.50   1.50    -      -     pi2fw	(%rax), %mm2
218# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     1.00    -     1.00    -      -      -      -      -      -      -      -     pmulhrw	%mm0, %mm2
219# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -      -      -      -      -     1.00    -     1.00    -      -      -      -     1.50   1.50    -      -     pmulhrw	(%rax), %mm2
220# CHECK-NEXT: 1.00   1.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     1.00   1.00    -      -     prefetch	(%rax)
221# CHECK-NEXT: 1.00   1.00    -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -      -     1.00   1.00    -      -     prefetchw	(%rax)
222# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     1.00   1.00    -      -     0.50   0.50    -      -      -      -      -      -      -     pswapd	%mm0, %mm2
223# CHECK-NEXT: 1.50   1.50    -      -      -      -      -      -      -      -     1.00   1.00    -      -     0.50   0.50    -      -      -     1.50   1.50    -      -     pswapd	(%rax), %mm2
224