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
4 vgf2p8affineinvqb $
0, %xmm16
, %xmm17
, %xmm19
5 vgf2p8affineinvqb $
0, (%rax
), %xmm17
, %xmm19
6 vgf2p8affineinvqb $
0, (%rax
){1to2
}, %xmm17
, %xmm19
7 vgf2p8affineinvqb $
0, %xmm16
, %xmm17
, %xmm19
{k1
}
8 vgf2p8affineinvqb $
0, (%rax
), %xmm17
, %xmm19
{k1
}
9 vgf2p8affineinvqb $
0, (%rax
){1to2
}, %xmm17
, %xmm19
{k1
}
10 vgf2p8affineinvqb $
0, %xmm16
, %xmm17
, %xmm19
{z
}{k1
}
11 vgf2p8affineinvqb $
0, (%rax
), %xmm17
, %xmm19
{z
}{k1
}
12 vgf2p8affineinvqb $
0, (%rax
){1to2
}, %xmm17
, %xmm19
{z
}{k1
}
14 vgf2p8affineinvqb $
0, %ymm16
, %ymm17
, %ymm19
15 vgf2p8affineinvqb $
0, (%rax
), %ymm17
, %ymm19
16 vgf2p8affineinvqb $
0, (%rax
){1to4
}, %ymm17
, %ymm19
17 vgf2p8affineinvqb $
0, %ymm16
, %ymm17
, %ymm19
{k1
}
18 vgf2p8affineinvqb $
0, (%rax
), %ymm17
, %ymm19
{k1
}
19 vgf2p8affineinvqb $
0, (%rax
){1to4
}, %ymm17
, %ymm19
{k1
}
20 vgf2p8affineinvqb $
0, %ymm16
, %ymm17
, %ymm19
{z
}{k1
}
21 vgf2p8affineinvqb $
0, (%rax
), %ymm17
, %ymm19
{z
}{k1
}
22 vgf2p8affineinvqb $
0, (%rax
){1to4
}, %ymm17
, %ymm19
{z
}{k1
}
24 vgf2p8affineqb $
0, %xmm16
, %xmm17
, %xmm19
25 vgf2p8affineqb $
0, (%rax
), %xmm17
, %xmm19
26 vgf2p8affineqb $
0, (%rax
){1to2
}, %xmm17
, %xmm19
27 vgf2p8affineqb $
0, %xmm16
, %xmm17
, %xmm19
28 vgf2p8affineqb $
0, (%rax
), %xmm17
, %xmm19
29 vgf2p8affineqb $
0, (%rax
){1to2
}, %xmm17
, %xmm19
30 vgf2p8affineqb $
0, %xmm16
, %xmm17
, %xmm19
{z
}{k1
}
31 vgf2p8affineqb $
0, (%rax
), %xmm17
, %xmm19
{z
}{k1
}
32 vgf2p8affineqb $
0, (%rax
){1to2
}, %xmm17
, %xmm19
{z
}{k1
}
34 vgf2p8affineqb $
0, %ymm16
, %ymm17
, %ymm19
35 vgf2p8affineqb $
0, (%rax
), %ymm17
, %ymm19
36 vgf2p8affineqb $
0, (%rax
){1to4
}, %ymm17
, %ymm19
37 vgf2p8affineqb $
0, %ymm16
, %ymm17
, %ymm19
38 vgf2p8affineqb $
0, (%rax
), %ymm17
, %ymm19
39 vgf2p8affineqb $
0, (%rax
){1to4
}, %ymm17
, %ymm19
40 vgf2p8affineqb $
0, %ymm16
, %ymm17
, %ymm19
{z
}{k1
}
41 vgf2p8affineqb $
0, (%rax
), %ymm17
, %ymm19
{z
}{k1
}
42 vgf2p8affineqb $
0, (%rax
){1to4
}, %ymm17
, %ymm19
{z
}{k1
}
44 vgf2p8mulb
%xmm16
, %xmm17
, %xmm19
45 vgf2p8mulb
(%rax
), %xmm17
, %xmm19
46 vgf2p8mulb
%xmm16
, %xmm17
, %xmm19
{k1
}
47 vgf2p8mulb
(%rax
), %xmm17
, %xmm19
{k1
}
48 vgf2p8mulb
%xmm16
, %xmm17
, %xmm19
{z
}{k1
}
49 vgf2p8mulb
(%rax
), %xmm17
, %xmm19
{z
}{k1
}
51 vgf2p8mulb
%ymm16
, %ymm17
, %ymm19
52 vgf2p8mulb
(%rax
), %ymm17
, %ymm19
53 vgf2p8mulb
%ymm16
, %ymm17
, %ymm19
{k1
}
54 vgf2p8mulb
(%rax
), %ymm17
, %ymm19
{k1
}
55 vgf2p8mulb
%ymm16
, %ymm17
, %ymm19
{z
}{k1
}
56 vgf2p8mulb
(%rax
), %ymm17
, %ymm19
{z
}{k1
}
58 # CHECK: Instruction Info:
59 # CHECK-NEXT: [1]: #uOps
60 # CHECK-NEXT: [2]: Latency
61 # CHECK-NEXT: [3]: RThroughput
62 # CHECK-NEXT: [4]: MayLoad
63 # CHECK-NEXT: [5]: MayStore
64 # CHECK-NEXT: [6]: HasSideEffects (U)
66 # CHECK: [1] [2] [3] [4] [5] [6] Instructions:
67 # CHECK-NEXT: 1 5 1.00 vgf2p8affineinvqb $0, %xmm16, %xmm17, %xmm19
68 # CHECK-NEXT: 2 11 1.00 * vgf2p8affineinvqb $0, (%rax), %xmm17, %xmm19
69 # CHECK-NEXT: 2 11 1.00 * vgf2p8affineinvqb $0, (%rax){1to2}, %xmm17, %xmm19
70 # CHECK-NEXT: 1 5 1.00 vgf2p8affineinvqb $0, %xmm16, %xmm17, %xmm19 {%k1}
71 # CHECK-NEXT: 2 11 1.00 * vgf2p8affineinvqb $0, (%rax), %xmm17, %xmm19 {%k1}
72 # CHECK-NEXT: 2 11 1.00 * vgf2p8affineinvqb $0, (%rax){1to2}, %xmm17, %xmm19 {%k1}
73 # CHECK-NEXT: 1 5 1.00 vgf2p8affineinvqb $0, %xmm16, %xmm17, %xmm19 {%k1} {z}
74 # CHECK-NEXT: 2 11 1.00 * vgf2p8affineinvqb $0, (%rax), %xmm17, %xmm19 {%k1} {z}
75 # CHECK-NEXT: 2 11 1.00 * vgf2p8affineinvqb $0, (%rax){1to2}, %xmm17, %xmm19 {%k1} {z}
76 # CHECK-NEXT: 1 5 1.00 vgf2p8affineinvqb $0, %ymm16, %ymm17, %ymm19
77 # CHECK-NEXT: 2 12 1.00 * vgf2p8affineinvqb $0, (%rax), %ymm17, %ymm19
78 # CHECK-NEXT: 2 12 1.00 * vgf2p8affineinvqb $0, (%rax){1to4}, %ymm17, %ymm19
79 # CHECK-NEXT: 1 5 1.00 vgf2p8affineinvqb $0, %ymm16, %ymm17, %ymm19 {%k1}
80 # CHECK-NEXT: 2 12 1.00 * vgf2p8affineinvqb $0, (%rax), %ymm17, %ymm19 {%k1}
81 # CHECK-NEXT: 2 12 1.00 * vgf2p8affineinvqb $0, (%rax){1to4}, %ymm17, %ymm19 {%k1}
82 # CHECK-NEXT: 1 5 1.00 vgf2p8affineinvqb $0, %ymm16, %ymm17, %ymm19 {%k1} {z}
83 # CHECK-NEXT: 2 12 1.00 * vgf2p8affineinvqb $0, (%rax), %ymm17, %ymm19 {%k1} {z}
84 # CHECK-NEXT: 2 12 1.00 * vgf2p8affineinvqb $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
85 # CHECK-NEXT: 1 5 1.00 vgf2p8affineqb $0, %xmm16, %xmm17, %xmm19
86 # CHECK-NEXT: 2 11 1.00 * vgf2p8affineqb $0, (%rax), %xmm17, %xmm19
87 # CHECK-NEXT: 2 11 1.00 * vgf2p8affineqb $0, (%rax){1to2}, %xmm17, %xmm19
88 # CHECK-NEXT: 1 5 1.00 vgf2p8affineqb $0, %xmm16, %xmm17, %xmm19
89 # CHECK-NEXT: 2 11 1.00 * vgf2p8affineqb $0, (%rax), %xmm17, %xmm19
90 # CHECK-NEXT: 2 11 1.00 * vgf2p8affineqb $0, (%rax){1to2}, %xmm17, %xmm19
91 # CHECK-NEXT: 1 5 1.00 vgf2p8affineqb $0, %xmm16, %xmm17, %xmm19 {%k1} {z}
92 # CHECK-NEXT: 2 11 1.00 * vgf2p8affineqb $0, (%rax), %xmm17, %xmm19 {%k1} {z}
93 # CHECK-NEXT: 2 11 1.00 * vgf2p8affineqb $0, (%rax){1to2}, %xmm17, %xmm19 {%k1} {z}
94 # CHECK-NEXT: 1 5 1.00 vgf2p8affineqb $0, %ymm16, %ymm17, %ymm19
95 # CHECK-NEXT: 2 12 1.00 * vgf2p8affineqb $0, (%rax), %ymm17, %ymm19
96 # CHECK-NEXT: 2 12 1.00 * vgf2p8affineqb $0, (%rax){1to4}, %ymm17, %ymm19
97 # CHECK-NEXT: 1 5 1.00 vgf2p8affineqb $0, %ymm16, %ymm17, %ymm19
98 # CHECK-NEXT: 2 12 1.00 * vgf2p8affineqb $0, (%rax), %ymm17, %ymm19
99 # CHECK-NEXT: 2 12 1.00 * vgf2p8affineqb $0, (%rax){1to4}, %ymm17, %ymm19
100 # CHECK-NEXT: 1 5 1.00 vgf2p8affineqb $0, %ymm16, %ymm17, %ymm19 {%k1} {z}
101 # CHECK-NEXT: 2 12 1.00 * vgf2p8affineqb $0, (%rax), %ymm17, %ymm19 {%k1} {z}
102 # CHECK-NEXT: 2 12 1.00 * vgf2p8affineqb $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
103 # CHECK-NEXT: 1 1 0.50 vgf2p8mulb %xmm16, %xmm17, %xmm19
104 # CHECK-NEXT: 2 7 0.50 * vgf2p8mulb (%rax), %xmm17, %xmm19
105 # CHECK-NEXT: 1 1 0.50 vgf2p8mulb %xmm16, %xmm17, %xmm19 {%k1}
106 # CHECK-NEXT: 2 7 0.50 * vgf2p8mulb (%rax), %xmm17, %xmm19 {%k1}
107 # CHECK-NEXT: 1 1 0.50 vgf2p8mulb %xmm16, %xmm17, %xmm19 {%k1} {z}
108 # CHECK-NEXT: 2 7 0.50 * vgf2p8mulb (%rax), %xmm17, %xmm19 {%k1} {z}
109 # CHECK-NEXT: 1 1 0.50 vgf2p8mulb %ymm16, %ymm17, %ymm19
110 # CHECK-NEXT: 2 8 0.50 * vgf2p8mulb (%rax), %ymm17, %ymm19
111 # CHECK-NEXT: 1 1 0.50 vgf2p8mulb %ymm16, %ymm17, %ymm19 {%k1}
112 # CHECK-NEXT: 2 8 0.50 * vgf2p8mulb (%rax), %ymm17, %ymm19 {%k1}
113 # CHECK-NEXT: 1 1 0.50 vgf2p8mulb %ymm16, %ymm17, %ymm19 {%k1} {z}
114 # CHECK-NEXT: 2 8 0.50 * vgf2p8mulb (%rax), %ymm17, %ymm19 {%k1} {z}
117 # CHECK-NEXT: [0] - SBDivider
118 # CHECK-NEXT: [1] - SBFPDivider
119 # CHECK-NEXT: [2] - SBPort0
120 # CHECK-NEXT: [3] - SBPort1
121 # CHECK-NEXT: [4] - SBPort4
122 # CHECK-NEXT: [5] - SBPort5
123 # CHECK-NEXT: [6.0] - SBPort23
124 # CHECK-NEXT: [6.1] - SBPort23
126 # CHECK: Resource pressure per iteration:
127 # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1]
128 # CHECK-NEXT: - - 36.00 6.00 - 6.00 15.00 15.00
130 # CHECK: Resource pressure by instruction:
131 # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
132 # CHECK-NEXT: - - 1.00 - - - - - vgf2p8affineinvqb $0, %xmm16, %xmm17, %xmm19
133 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineinvqb $0, (%rax), %xmm17, %xmm19
134 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineinvqb $0, (%rax){1to2}, %xmm17, %xmm19
135 # CHECK-NEXT: - - 1.00 - - - - - vgf2p8affineinvqb $0, %xmm16, %xmm17, %xmm19 {%k1}
136 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineinvqb $0, (%rax), %xmm17, %xmm19 {%k1}
137 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineinvqb $0, (%rax){1to2}, %xmm17, %xmm19 {%k1}
138 # CHECK-NEXT: - - 1.00 - - - - - vgf2p8affineinvqb $0, %xmm16, %xmm17, %xmm19 {%k1} {z}
139 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineinvqb $0, (%rax), %xmm17, %xmm19 {%k1} {z}
140 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineinvqb $0, (%rax){1to2}, %xmm17, %xmm19 {%k1} {z}
141 # CHECK-NEXT: - - 1.00 - - - - - vgf2p8affineinvqb $0, %ymm16, %ymm17, %ymm19
142 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineinvqb $0, (%rax), %ymm17, %ymm19
143 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineinvqb $0, (%rax){1to4}, %ymm17, %ymm19
144 # CHECK-NEXT: - - 1.00 - - - - - vgf2p8affineinvqb $0, %ymm16, %ymm17, %ymm19 {%k1}
145 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineinvqb $0, (%rax), %ymm17, %ymm19 {%k1}
146 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineinvqb $0, (%rax){1to4}, %ymm17, %ymm19 {%k1}
147 # CHECK-NEXT: - - 1.00 - - - - - vgf2p8affineinvqb $0, %ymm16, %ymm17, %ymm19 {%k1} {z}
148 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineinvqb $0, (%rax), %ymm17, %ymm19 {%k1} {z}
149 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineinvqb $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
150 # CHECK-NEXT: - - 1.00 - - - - - vgf2p8affineqb $0, %xmm16, %xmm17, %xmm19
151 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineqb $0, (%rax), %xmm17, %xmm19
152 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineqb $0, (%rax){1to2}, %xmm17, %xmm19
153 # CHECK-NEXT: - - 1.00 - - - - - vgf2p8affineqb $0, %xmm16, %xmm17, %xmm19
154 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineqb $0, (%rax), %xmm17, %xmm19
155 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineqb $0, (%rax){1to2}, %xmm17, %xmm19
156 # CHECK-NEXT: - - 1.00 - - - - - vgf2p8affineqb $0, %xmm16, %xmm17, %xmm19 {%k1} {z}
157 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineqb $0, (%rax), %xmm17, %xmm19 {%k1} {z}
158 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineqb $0, (%rax){1to2}, %xmm17, %xmm19 {%k1} {z}
159 # CHECK-NEXT: - - 1.00 - - - - - vgf2p8affineqb $0, %ymm16, %ymm17, %ymm19
160 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineqb $0, (%rax), %ymm17, %ymm19
161 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineqb $0, (%rax){1to4}, %ymm17, %ymm19
162 # CHECK-NEXT: - - 1.00 - - - - - vgf2p8affineqb $0, %ymm16, %ymm17, %ymm19
163 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineqb $0, (%rax), %ymm17, %ymm19
164 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineqb $0, (%rax){1to4}, %ymm17, %ymm19
165 # CHECK-NEXT: - - 1.00 - - - - - vgf2p8affineqb $0, %ymm16, %ymm17, %ymm19 {%k1} {z}
166 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineqb $0, (%rax), %ymm17, %ymm19 {%k1} {z}
167 # CHECK-NEXT: - - 1.00 - - - 0.50 0.50 vgf2p8affineqb $0, (%rax){1to4}, %ymm17, %ymm19 {%k1} {z}
168 # CHECK-NEXT: - - - 0.50 - 0.50 - - vgf2p8mulb %xmm16, %xmm17, %xmm19
169 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vgf2p8mulb (%rax), %xmm17, %xmm19
170 # CHECK-NEXT: - - - 0.50 - 0.50 - - vgf2p8mulb %xmm16, %xmm17, %xmm19 {%k1}
171 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vgf2p8mulb (%rax), %xmm17, %xmm19 {%k1}
172 # CHECK-NEXT: - - - 0.50 - 0.50 - - vgf2p8mulb %xmm16, %xmm17, %xmm19 {%k1} {z}
173 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vgf2p8mulb (%rax), %xmm17, %xmm19 {%k1} {z}
174 # CHECK-NEXT: - - - 0.50 - 0.50 - - vgf2p8mulb %ymm16, %ymm17, %ymm19
175 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vgf2p8mulb (%rax), %ymm17, %ymm19
176 # CHECK-NEXT: - - - 0.50 - 0.50 - - vgf2p8mulb %ymm16, %ymm17, %ymm19 {%k1}
177 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vgf2p8mulb (%rax), %ymm17, %ymm19 {%k1}
178 # CHECK-NEXT: - - - 0.50 - 0.50 - - vgf2p8mulb %ymm16, %ymm17, %ymm19 {%k1} {z}
179 # CHECK-NEXT: - - - 0.50 - 0.50 0.50 0.50 vgf2p8mulb (%rax), %ymm17, %ymm19 {%k1} {z}