2 # NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
3 # RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-p470 -iterations=1 < %s | FileCheck %s
5 # These instructions only support e32
7 vsetvli zero
, zero
, e32
, mf2
, tu
, mu
18 vsetvli zero
, zero
, e32
, m1
, tu
, mu
29 vsetvli zero
, zero
, e32
, m2
, tu
, mu
40 vsetvli zero
, zero
, e32
, m4
, tu
, mu
51 vsetvli zero
, zero
, e32
, m8
, tu
, mu
62 # CHECK: Iterations: 1
63 # CHECK-NEXT: Instructions: 50
64 # CHECK-NEXT: Total Cycles: 142
65 # CHECK-NEXT: Total uOps: 50
67 # CHECK: Dispatch Width: 3
68 # CHECK-NEXT: uOps Per Cycle: 0.35
69 # CHECK-NEXT: IPC: 0.35
70 # CHECK-NEXT: Block RThroughput: 144.0
72 # CHECK: Instruction Info:
73 # CHECK-NEXT: [1]: #uOps
74 # CHECK-NEXT: [2]: Latency
75 # CHECK-NEXT: [3]: RThroughput
76 # CHECK-NEXT: [4]: MayLoad
77 # CHECK-NEXT: [5]: MayStore
78 # CHECK-NEXT: [6]: HasSideEffects (U)
80 # CHECK: [1] [2] [3] [4] [5] [6] Instructions:
81 # CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, mf2, tu, mu
82 # CHECK-NEXT: 1 2 1.00 vaesef.vv v4, v8
83 # CHECK-NEXT: 1 2 1.00 vaesef.vs v4, v8
84 # CHECK-NEXT: 1 2 1.00 vaesem.vv v4, v8
85 # CHECK-NEXT: 1 2 1.00 vaesem.vs v4, v8
86 # CHECK-NEXT: 1 2 1.00 vaesdm.vv v4, v8
87 # CHECK-NEXT: 1 2 1.00 vaesdm.vs v4, v8
88 # CHECK-NEXT: 1 2 1.00 vaeskf1.vi v4, v8, 8
89 # CHECK-NEXT: 1 2 1.00 vaeskf2.vi v4, v8, 8
90 # CHECK-NEXT: 1 2 1.00 vaesz.vs v4, v8
91 # CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m1, tu, mu
92 # CHECK-NEXT: 1 2 1.00 vaesef.vv v4, v8
93 # CHECK-NEXT: 1 2 1.00 vaesef.vs v4, v8
94 # CHECK-NEXT: 1 2 1.00 vaesem.vv v4, v8
95 # CHECK-NEXT: 1 2 1.00 vaesem.vs v4, v8
96 # CHECK-NEXT: 1 2 1.00 vaesdm.vv v4, v8
97 # CHECK-NEXT: 1 2 1.00 vaesdm.vs v4, v8
98 # CHECK-NEXT: 1 2 1.00 vaeskf1.vi v4, v8, 8
99 # CHECK-NEXT: 1 2 1.00 vaeskf2.vi v4, v8, 8
100 # CHECK-NEXT: 1 2 1.00 vaesz.vs v4, v8
101 # CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m2, tu, mu
102 # CHECK-NEXT: 1 2 2.00 vaesef.vv v4, v8
103 # CHECK-NEXT: 1 2 2.00 vaesef.vs v4, v8
104 # CHECK-NEXT: 1 2 2.00 vaesem.vv v4, v8
105 # CHECK-NEXT: 1 2 2.00 vaesem.vs v4, v8
106 # CHECK-NEXT: 1 2 2.00 vaesdm.vv v4, v8
107 # CHECK-NEXT: 1 2 2.00 vaesdm.vs v4, v8
108 # CHECK-NEXT: 1 2 2.00 vaeskf1.vi v4, v8, 8
109 # CHECK-NEXT: 1 2 2.00 vaeskf2.vi v4, v8, 8
110 # CHECK-NEXT: 1 2 2.00 vaesz.vs v4, v8
111 # CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m4, tu, mu
112 # CHECK-NEXT: 1 2 4.00 vaesef.vv v4, v8
113 # CHECK-NEXT: 1 2 4.00 vaesef.vs v4, v8
114 # CHECK-NEXT: 1 2 4.00 vaesem.vv v4, v8
115 # CHECK-NEXT: 1 2 4.00 vaesem.vs v4, v8
116 # CHECK-NEXT: 1 2 4.00 vaesdm.vv v4, v8
117 # CHECK-NEXT: 1 2 4.00 vaesdm.vs v4, v8
118 # CHECK-NEXT: 1 2 4.00 vaeskf1.vi v4, v8, 8
119 # CHECK-NEXT: 1 2 4.00 vaeskf2.vi v4, v8, 8
120 # CHECK-NEXT: 1 2 4.00 vaesz.vs v4, v8
121 # CHECK-NEXT: 1 1 1.00 U vsetvli zero, zero, e32, m8, tu, mu
122 # CHECK-NEXT: 1 2 8.00 vaesef.vv v8, v16
123 # CHECK-NEXT: 1 2 8.00 vaesef.vs v8, v16
124 # CHECK-NEXT: 1 2 8.00 vaesem.vv v8, v16
125 # CHECK-NEXT: 1 2 8.00 vaesem.vs v8, v16
126 # CHECK-NEXT: 1 2 8.00 vaesdm.vv v8, v16
127 # CHECK-NEXT: 1 2 8.00 vaesdm.vs v8, v16
128 # CHECK-NEXT: 1 2 8.00 vaeskf1.vi v8, v16, 8
129 # CHECK-NEXT: 1 2 8.00 vaeskf2.vi v8, v16, 8
130 # CHECK-NEXT: 1 2 8.00 vaesz.vs v8, v16
133 # CHECK-NEXT: [0] - SiFiveP400Div
134 # CHECK-NEXT: [1] - SiFiveP400FEXQ0
135 # CHECK-NEXT: [2] - SiFiveP400FloatDiv
136 # CHECK-NEXT: [3] - SiFiveP400IEXQ0
137 # CHECK-NEXT: [4] - SiFiveP400IEXQ1
138 # CHECK-NEXT: [5] - SiFiveP400IEXQ2
139 # CHECK-NEXT: [6] - SiFiveP400Load
140 # CHECK-NEXT: [7] - SiFiveP400Store
141 # CHECK-NEXT: [8] - SiFiveP400VDiv
142 # CHECK-NEXT: [9] - SiFiveP400VEXQ0
143 # CHECK-NEXT: [10] - SiFiveP400VFloatDiv
144 # CHECK-NEXT: [11] - SiFiveP400VLD
145 # CHECK-NEXT: [12] - SiFiveP400VST
147 # CHECK: Resource pressure per iteration:
148 # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]
149 # CHECK-NEXT: - - - - 5.00 - - - - 144.00 - - -
151 # CHECK: Resource pressure by instruction:
152 # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] Instructions:
153 # CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, mf2, tu, mu
154 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vaesef.vv v4, v8
155 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vaesef.vs v4, v8
156 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vaesem.vv v4, v8
157 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vaesem.vs v4, v8
158 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vaesdm.vv v4, v8
159 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vaesdm.vs v4, v8
160 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vaeskf1.vi v4, v8, 8
161 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vaeskf2.vi v4, v8, 8
162 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vaesz.vs v4, v8
163 # CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m1, tu, mu
164 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vaesef.vv v4, v8
165 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vaesef.vs v4, v8
166 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vaesem.vv v4, v8
167 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vaesem.vs v4, v8
168 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vaesdm.vv v4, v8
169 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vaesdm.vs v4, v8
170 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vaeskf1.vi v4, v8, 8
171 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vaeskf2.vi v4, v8, 8
172 # CHECK-NEXT: - - - - - - - - - 1.00 - - - vaesz.vs v4, v8
173 # CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m2, tu, mu
174 # CHECK-NEXT: - - - - - - - - - 2.00 - - - vaesef.vv v4, v8
175 # CHECK-NEXT: - - - - - - - - - 2.00 - - - vaesef.vs v4, v8
176 # CHECK-NEXT: - - - - - - - - - 2.00 - - - vaesem.vv v4, v8
177 # CHECK-NEXT: - - - - - - - - - 2.00 - - - vaesem.vs v4, v8
178 # CHECK-NEXT: - - - - - - - - - 2.00 - - - vaesdm.vv v4, v8
179 # CHECK-NEXT: - - - - - - - - - 2.00 - - - vaesdm.vs v4, v8
180 # CHECK-NEXT: - - - - - - - - - 2.00 - - - vaeskf1.vi v4, v8, 8
181 # CHECK-NEXT: - - - - - - - - - 2.00 - - - vaeskf2.vi v4, v8, 8
182 # CHECK-NEXT: - - - - - - - - - 2.00 - - - vaesz.vs v4, v8
183 # CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m4, tu, mu
184 # CHECK-NEXT: - - - - - - - - - 4.00 - - - vaesef.vv v4, v8
185 # CHECK-NEXT: - - - - - - - - - 4.00 - - - vaesef.vs v4, v8
186 # CHECK-NEXT: - - - - - - - - - 4.00 - - - vaesem.vv v4, v8
187 # CHECK-NEXT: - - - - - - - - - 4.00 - - - vaesem.vs v4, v8
188 # CHECK-NEXT: - - - - - - - - - 4.00 - - - vaesdm.vv v4, v8
189 # CHECK-NEXT: - - - - - - - - - 4.00 - - - vaesdm.vs v4, v8
190 # CHECK-NEXT: - - - - - - - - - 4.00 - - - vaeskf1.vi v4, v8, 8
191 # CHECK-NEXT: - - - - - - - - - 4.00 - - - vaeskf2.vi v4, v8, 8
192 # CHECK-NEXT: - - - - - - - - - 4.00 - - - vaesz.vs v4, v8
193 # CHECK-NEXT: - - - - 1.00 - - - - - - - - vsetvli zero, zero, e32, m8, tu, mu
194 # CHECK-NEXT: - - - - - - - - - 8.00 - - - vaesef.vv v8, v16
195 # CHECK-NEXT: - - - - - - - - - 8.00 - - - vaesef.vs v8, v16
196 # CHECK-NEXT: - - - - - - - - - 8.00 - - - vaesem.vv v8, v16
197 # CHECK-NEXT: - - - - - - - - - 8.00 - - - vaesem.vs v8, v16
198 # CHECK-NEXT: - - - - - - - - - 8.00 - - - vaesdm.vv v8, v16
199 # CHECK-NEXT: - - - - - - - - - 8.00 - - - vaesdm.vs v8, v16
200 # CHECK-NEXT: - - - - - - - - - 8.00 - - - vaeskf1.vi v8, v16, 8
201 # CHECK-NEXT: - - - - - - - - - 8.00 - - - vaeskf2.vi v8, v16, 8
202 # CHECK-NEXT: - - - - - - - - - 8.00 - - - vaesz.vs v8, v16