xref: /llvm-project/llvm/test/tools/llvm-mca/X86/Barcelona/resources-3dnow.s (revision 680c43b73a3b7c7aecb8af7cf0da3d05565dd131)
1*680c43b7SRoman Lebedev# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2*680c43b7SRoman Lebedev# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -instruction-tables < %s | FileCheck %s
3*680c43b7SRoman Lebedev
4*680c43b7SRoman Lebedevfemms
5*680c43b7SRoman Lebedev
6*680c43b7SRoman Lebedevpavgusb     %mm0, %mm2
7*680c43b7SRoman Lebedevpavgusb     (%rax), %mm2
8*680c43b7SRoman Lebedev
9*680c43b7SRoman Lebedevpf2id       %mm0, %mm2
10*680c43b7SRoman Lebedevpf2id       (%rax), %mm2
11*680c43b7SRoman Lebedev
12*680c43b7SRoman Lebedevpf2iw       %mm0, %mm2
13*680c43b7SRoman Lebedevpf2iw       (%rax), %mm2
14*680c43b7SRoman Lebedev
15*680c43b7SRoman Lebedevpfacc       %mm0, %mm2
16*680c43b7SRoman Lebedevpfacc       (%rax), %mm2
17*680c43b7SRoman Lebedev
18*680c43b7SRoman Lebedevpfadd       %mm0, %mm2
19*680c43b7SRoman Lebedevpfadd       (%rax), %mm2
20*680c43b7SRoman Lebedev
21*680c43b7SRoman Lebedevpfcmpeq     %mm0, %mm2
22*680c43b7SRoman Lebedevpfcmpeq     (%rax), %mm2
23*680c43b7SRoman Lebedev
24*680c43b7SRoman Lebedevpfcmpge     %mm0, %mm2
25*680c43b7SRoman Lebedevpfcmpge     (%rax), %mm2
26*680c43b7SRoman Lebedev
27*680c43b7SRoman Lebedevpfcmpgt     %mm0, %mm2
28*680c43b7SRoman Lebedevpfcmpgt     (%rax), %mm2
29*680c43b7SRoman Lebedev
30*680c43b7SRoman Lebedevpfmax       %mm0, %mm2
31*680c43b7SRoman Lebedevpfmax       (%rax), %mm2
32*680c43b7SRoman Lebedev
33*680c43b7SRoman Lebedevpfmin       %mm0, %mm2
34*680c43b7SRoman Lebedevpfmin       (%rax), %mm2
35*680c43b7SRoman Lebedev
36*680c43b7SRoman Lebedevpfmul       %mm0, %mm2
37*680c43b7SRoman Lebedevpfmul       (%rax), %mm2
38*680c43b7SRoman Lebedev
39*680c43b7SRoman Lebedevpfnacc      %mm0, %mm2
40*680c43b7SRoman Lebedevpfnacc      (%rax), %mm2
41*680c43b7SRoman Lebedev
42*680c43b7SRoman Lebedevpfpnacc     %mm0, %mm2
43*680c43b7SRoman Lebedevpfpnacc     (%rax), %mm2
44*680c43b7SRoman Lebedev
45*680c43b7SRoman Lebedevpfrcp       %mm0, %mm2
46*680c43b7SRoman Lebedevpfrcp       (%rax), %mm2
47*680c43b7SRoman Lebedev
48*680c43b7SRoman Lebedevpfrcpit1    %mm0, %mm2
49*680c43b7SRoman Lebedevpfrcpit1    (%rax), %mm2
50*680c43b7SRoman Lebedev
51*680c43b7SRoman Lebedevpfrcpit2    %mm0, %mm2
52*680c43b7SRoman Lebedevpfrcpit2    (%rax), %mm2
53*680c43b7SRoman Lebedev
54*680c43b7SRoman Lebedevpfrsqit1    %mm0, %mm2
55*680c43b7SRoman Lebedevpfrsqit1    (%rax), %mm2
56*680c43b7SRoman Lebedev
57*680c43b7SRoman Lebedevpfrsqrt     %mm0, %mm2
58*680c43b7SRoman Lebedevpfrsqrt     (%rax), %mm2
59*680c43b7SRoman Lebedev
60*680c43b7SRoman Lebedevpfsub       %mm0, %mm2
61*680c43b7SRoman Lebedevpfsub       (%rax), %mm2
62*680c43b7SRoman Lebedev
63*680c43b7SRoman Lebedevpfsubr      %mm0, %mm2
64*680c43b7SRoman Lebedevpfsubr      (%rax), %mm2
65*680c43b7SRoman Lebedev
66*680c43b7SRoman Lebedevpi2fd       %mm0, %mm2
67*680c43b7SRoman Lebedevpi2fd       (%rax), %mm2
68*680c43b7SRoman Lebedev
69*680c43b7SRoman Lebedevpi2fw       %mm0, %mm2
70*680c43b7SRoman Lebedevpi2fw       (%rax), %mm2
71*680c43b7SRoman Lebedev
72*680c43b7SRoman Lebedevpmulhrw     %mm0, %mm2
73*680c43b7SRoman Lebedevpmulhrw     (%rax), %mm2
74*680c43b7SRoman Lebedev
75*680c43b7SRoman Lebedevprefetch    (%rax)
76*680c43b7SRoman Lebedevprefetchw   (%rax)
77*680c43b7SRoman Lebedev
78*680c43b7SRoman Lebedevpswapd      %mm0, %mm2
79*680c43b7SRoman Lebedevpswapd      (%rax), %mm2
80*680c43b7SRoman Lebedev
81*680c43b7SRoman Lebedev# CHECK:      Instruction Info:
82*680c43b7SRoman Lebedev# CHECK-NEXT: [1]: #uOps
83*680c43b7SRoman Lebedev# CHECK-NEXT: [2]: Latency
84*680c43b7SRoman Lebedev# CHECK-NEXT: [3]: RThroughput
85*680c43b7SRoman Lebedev# CHECK-NEXT: [4]: MayLoad
86*680c43b7SRoman Lebedev# CHECK-NEXT: [5]: MayStore
87*680c43b7SRoman Lebedev# CHECK-NEXT: [6]: HasSideEffects (U)
88*680c43b7SRoman Lebedev
89*680c43b7SRoman Lebedev# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
90*680c43b7SRoman Lebedev# CHECK-NEXT:  31     31    10.33   *      *      U     femms
91*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pavgusb	%mm0, %mm2
92*680c43b7SRoman Lebedev# CHECK-NEXT:  2      8     1.00    *                   pavgusb	(%rax), %mm2
93*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pf2id	%mm0, %mm2
94*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pf2id	(%rax), %mm2
95*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pf2iw	%mm0, %mm2
96*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pf2iw	(%rax), %mm2
97*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pfacc	%mm0, %mm2
98*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pfacc	(%rax), %mm2
99*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pfadd	%mm0, %mm2
100*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pfadd	(%rax), %mm2
101*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pfcmpeq	%mm0, %mm2
102*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pfcmpeq	(%rax), %mm2
103*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pfcmpge	%mm0, %mm2
104*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pfcmpge	(%rax), %mm2
105*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pfcmpgt	%mm0, %mm2
106*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pfcmpgt	(%rax), %mm2
107*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pfmax	%mm0, %mm2
108*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pfmax	(%rax), %mm2
109*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pfmin	%mm0, %mm2
110*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pfmin	(%rax), %mm2
111*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pfmul	%mm0, %mm2
112*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pfmul	(%rax), %mm2
113*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pfnacc	%mm0, %mm2
114*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pfnacc	(%rax), %mm2
115*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pfpnacc	%mm0, %mm2
116*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pfpnacc	(%rax), %mm2
117*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pfrcp	%mm0, %mm2
118*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pfrcp	(%rax), %mm2
119*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pfrcpit1	%mm0, %mm2
120*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pfrcpit1	(%rax), %mm2
121*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pfrcpit2	%mm0, %mm2
122*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pfrcpit2	(%rax), %mm2
123*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pfrsqit1	%mm0, %mm2
124*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pfrsqit1	(%rax), %mm2
125*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pfrsqrt	%mm0, %mm2
126*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pfrsqrt	(%rax), %mm2
127*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pfsub	%mm0, %mm2
128*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pfsub	(%rax), %mm2
129*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pfsubr	%mm0, %mm2
130*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pfsubr	(%rax), %mm2
131*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pi2fd	%mm0, %mm2
132*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pi2fd	(%rax), %mm2
133*680c43b7SRoman Lebedev# CHECK-NEXT:  1      3     1.00                        pi2fw	%mm0, %mm2
134*680c43b7SRoman Lebedev# CHECK-NEXT:  2      9     1.00    *                   pi2fw	(%rax), %mm2
135*680c43b7SRoman Lebedev# CHECK-NEXT:  1      5     1.00                        pmulhrw	%mm0, %mm2
136*680c43b7SRoman Lebedev# CHECK-NEXT:  2      10    1.00    *                   pmulhrw	(%rax), %mm2
137*680c43b7SRoman Lebedev# CHECK-NEXT:  1      5     0.50    *      *            prefetch	(%rax)
138*680c43b7SRoman Lebedev# CHECK-NEXT:  1      5     0.50    *      *            prefetchw	(%rax)
139*680c43b7SRoman Lebedev# CHECK-NEXT:  1      1     1.00                        pswapd	%mm0, %mm2
140*680c43b7SRoman Lebedev# CHECK-NEXT:  2      6     1.00    *                   pswapd	(%rax), %mm2
141*680c43b7SRoman Lebedev
142*680c43b7SRoman Lebedev# CHECK:      Resources:
143*680c43b7SRoman Lebedev# CHECK-NEXT: [0]   - SBDivider
144*680c43b7SRoman Lebedev# CHECK-NEXT: [1]   - SBFPDivider
145*680c43b7SRoman Lebedev# CHECK-NEXT: [2]   - SBPort0
146*680c43b7SRoman Lebedev# CHECK-NEXT: [3]   - SBPort1
147*680c43b7SRoman Lebedev# CHECK-NEXT: [4]   - SBPort4
148*680c43b7SRoman Lebedev# CHECK-NEXT: [5]   - SBPort5
149*680c43b7SRoman Lebedev# CHECK-NEXT: [6.0] - SBPort23
150*680c43b7SRoman Lebedev# CHECK-NEXT: [6.1] - SBPort23
151*680c43b7SRoman Lebedev
152*680c43b7SRoman Lebedev# CHECK:      Resource pressure per iteration:
153*680c43b7SRoman Lebedev# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
154*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -     12.33  54.33   -     12.33  13.00  13.00
155*680c43b7SRoman Lebedev
156*680c43b7SRoman Lebedev# CHECK:      Resource pressure by instruction:
157*680c43b7SRoman Lebedev# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
158*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -     10.33  10.33   -     10.33   -      -     femms
159*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pavgusb	%mm0, %mm2
160*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pavgusb	(%rax), %mm2
161*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pf2id	%mm0, %mm2
162*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pf2id	(%rax), %mm2
163*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pf2iw	%mm0, %mm2
164*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pf2iw	(%rax), %mm2
165*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pfacc	%mm0, %mm2
166*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pfacc	(%rax), %mm2
167*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pfadd	%mm0, %mm2
168*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pfadd	(%rax), %mm2
169*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pfcmpeq	%mm0, %mm2
170*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pfcmpeq	(%rax), %mm2
171*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pfcmpge	%mm0, %mm2
172*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pfcmpge	(%rax), %mm2
173*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pfcmpgt	%mm0, %mm2
174*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pfcmpgt	(%rax), %mm2
175*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pfmax	%mm0, %mm2
176*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pfmax	(%rax), %mm2
177*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pfmin	%mm0, %mm2
178*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pfmin	(%rax), %mm2
179*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pfmul	%mm0, %mm2
180*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pfmul	(%rax), %mm2
181*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pfnacc	%mm0, %mm2
182*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pfnacc	(%rax), %mm2
183*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pfpnacc	%mm0, %mm2
184*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pfpnacc	(%rax), %mm2
185*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pfrcp	%mm0, %mm2
186*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pfrcp	(%rax), %mm2
187*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pfrcpit1	%mm0, %mm2
188*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pfrcpit1	(%rax), %mm2
189*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pfrcpit2	%mm0, %mm2
190*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pfrcpit2	(%rax), %mm2
191*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pfrsqit1	%mm0, %mm2
192*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pfrsqit1	(%rax), %mm2
193*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pfrsqrt	%mm0, %mm2
194*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pfrsqrt	(%rax), %mm2
195*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pfsub	%mm0, %mm2
196*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pfsub	(%rax), %mm2
197*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pfsubr	%mm0, %mm2
198*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pfsubr	(%rax), %mm2
199*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pi2fd	%mm0, %mm2
200*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pi2fd	(%rax), %mm2
201*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pi2fw	%mm0, %mm2
202*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -     1.00    -      -     0.50   0.50   pi2fw	(%rax), %mm2
203*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     pmulhrw	%mm0, %mm2
204*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -     1.00    -      -      -     0.50   0.50   pmulhrw	(%rax), %mm2
205*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   prefetch	(%rax)
206*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -      -      -      -     0.50   0.50   prefetchw	(%rax)
207*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     pswapd	%mm0, %mm2
208*680c43b7SRoman Lebedev# CHECK-NEXT:  -      -      -      -      -     1.00   0.50   0.50   pswapd	(%rax), %mm2
209