gem5 [DEVELOP-FOR-25.1]
Loading...
Searching...
No Matches
fplib.hh
Go to the documentation of this file.
1/*
2 * Copyright (c) 2012-2013, 2017-2018, 2024-2025 ARM Limited
3 * Copyright (c) 2020 Metempsy Technology Consulting
4 * All rights reserved
5 *
6 * The license below extends only to copyright in the software and shall
7 * not be construed as granting a license to any other intellectual
8 * property including but not limited to intellectual property relating
9 * to a hardware implementation of the functionality of the software
10 * licensed hereunder. You may use the software subject to the license
11 * terms below provided that you ensure that this notice is replicated
12 * unmodified and in its entirety in all distributions of the software,
13 * modified or unmodified, in source code or in binary form.
14 *
15 * Redistribution and use in source and binary forms, with or without
16 * modification, are permitted provided that the following conditions are
17 * met: redistributions of source code must retain the above copyright
18 * notice, this list of conditions and the following disclaimer;
19 * redistributions in binary form must reproduce the above copyright
20 * notice, this list of conditions and the following disclaimer in the
21 * documentation and/or other materials provided with the distribution;
22 * neither the name of the copyright holders nor the names of its
23 * contributors may be used to endorse or promote products derived from
24 * this software without specific prior written permission.
25 *
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
29 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
30 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
33 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 */
38
46
47#ifndef __ARCH_ARM_INSTS_FPLIB_HH__
48#define __ARCH_ARM_INSTS_FPLIB_HH__
49
50#include <stdint.h>
51
52#include "arch/arm/regs/misc.hh"
53
54namespace gem5
55{
56
57namespace ArmISA
58{
59
69
70static inline FPRounding
71FPCRRounding(FPSCR &fpscr)
72{
73 return (FPRounding)((uint32_t)fpscr >> 22 & 3);
74}
75
77template <class T>
78T fplibAbs(T op, FPCR fpcr = 0);
80template <class T>
81T fplibAdd(T op1, T op2, FPSCR &fpscr, FPCR fpcr = 0);
83template <class T>
84int fplibCompare(T op1, T op2, bool signal_nans, FPSCR &fpscr, FPCR fpcr = 0);
86template <class T>
87bool fplibCompareEQ(T op1, T op2, FPSCR &fpscr, FPCR fpcr = 0);
89template <class T>
90bool fplibCompareGE(T op1, T op2, FPSCR &fpscr, FPCR fpcr = 0);
92template <class T>
93bool fplibCompareGT(T op1, T op2, FPSCR &fpscr, FPCR fpcr = 0);
95template <class T>
96bool fplibCompareUN(T op1, T op2, FPSCR &fpscr, FPCR fpcr = 0);
98template <class T1, class T2>
99T2 fplibConvert(T1 op, FPRounding rounding, FPSCR &fpscr, FPCR fpcr = 0);
101template <class T>
102T fplibDiv(T op1, T op2, FPSCR &fpscr, FPCR fpcr = 0);
104template <class T1, class T2>
105T2 fplibDot(T1 op1_a, T1 op1_b, T1 op2_a, T1 op2_b, FPSCR &fpscr,
106 FPCR fpcr = 0);
108template <class T>
111template <class T> T fplibLogB(T op, FPSCR &fpscr, FPCR fpcr = 0);
113template <class T>
114T fplibMax(T op1, T op2, FPSCR &fpscr, FPCR fpcr = 0);
116template <class T>
117T fplibMaxNum(T op1, T op2, FPSCR &fpscr, FPCR fpcr = 0);
119template <class T>
120T fplibMin(T op1, T op2, FPSCR &fpscr, FPCR fpcr = 0);
122template <class T>
123T fplibMinNum(T op1, T op2, FPSCR &fpscr, FPCR fpcr = 0);
125template <class T>
126T fplibMul(T op1, T op2, FPSCR &fpscr, FPCR fpcr = 0);
128template <class T>
129T fplibMulAdd(T addend, T op1, T op2, FPSCR &fpscr, FPCR fpcr=0);
130template <class T1, class T2>
131T2 fplibMulAddH(T2 addend, T1 op1, T1 op2, FPSCR &fpscr, FPCR fpcr=0);
133template <class T>
134T fplibMulX(T op1, T op2, FPSCR &fpscr, FPCR fpcr = 0);
136template <class T>
137T fplibNeg(T op, FPCR fpcr = 0);
139template <class T>
140T fplibRSqrtEstimate(T op, FPSCR &fpscr, FPCR fpcr = 0);
142template <class T>
143T fplibRSqrtStepFused(T op1, T op2, FPSCR &fpscr, FPCR fpcr = 0);
145template <class T>
146T fplibRecipEstimate(T op, FPSCR &fpscr, FPCR fpcr = 0);
148template <class T>
149T fplibRecipStepFused(T op1, T op2, FPSCR &fpscr, FPCR fpcr = 0);
151template <class T>
152T fplibRecpX(T op, FPSCR &fpscr, FPCR fpcr = 0);
154template <class T>
155T fplibRoundInt(T op, FPRounding rounding, bool exact, FPSCR &fpscr,
156 FPCR fpcr = 0);
158template <class T>
159T fplibRoundIntN(T op, FPRounding rounding, bool exact, int intsize,
160 FPSCR &fpscr, FPCR fpcr = 0);
162template <class T>
163T fplibScale(T op1, T op2, FPSCR &fpscr, FPCR fpcr = 0);
165template <class T>
166T fplibSqrt(T op, FPSCR &fpscr, FPCR fpcr = 0);
168template <class T>
169T fplibSub(T op1, T op2, FPSCR &fpscr, FPCR fpcr = 0);
171template <class T>
172T fplibTrigMulAdd(uint8_t coeff_index, T op1, T op2, FPSCR &fpscr,
173 FPCR fpcr = 0);
175template <class T>
176T fplibTrigSMul(T op1, T op2, FPSCR &fpscr, FPCR fpcr = 0);
178template <class T>
179T fplibTrigSSel(T op1, T op2, FPSCR &fpscr, FPCR fpcr = 0);
181template <class T1, class T2>
182T2 fplibFPToFixed(T1 op, int fbits, bool u, FPRounding rounding, FPSCR &fpscr,
183 FPCR fpcr = 0);
185template <class T>
186T fplibFixedToFP(uint64_t op, int fbits, bool u, FPRounding rounding,
187 FPSCR &fpscr, FPCR fpcr = 0);
189template <class T>
190T fplibInfinity(int sgn);
192template <class T>
193T fplibDefaultNaN(FPCR fpcr = 0);
195uint32_t fplibFPToFixedJS(uint64_t op, FPSCR &fpscr, bool Is64, uint8_t &nz);
196
197template <class T>
198T fplib32RSqrtStep(T op1, T op2, FPSCR &fpscr);
199template <class T>
200T fplib32RecipStep(T op1, T op2, FPSCR &fpscr);
201
202/* Function specializations... */
203template <>
204uint16_t fplibAbs(uint16_t op, FPCR fpcr);
205template <>
206uint32_t fplibAbs(uint32_t op, FPCR fpcr);
207template <>
208uint64_t fplibAbs(uint64_t op, FPCR fpcr);
209template <>
210uint16_t fplibAdd(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
211template <>
212uint32_t fplibAdd(uint32_t op1, uint32_t op2, FPSCR &fpscr, FPCR fpcr);
213template <>
214uint64_t fplibAdd(uint64_t op1, uint64_t op2, FPSCR &fpscr, FPCR fpcr);
215template <>
216int fplibCompare(uint16_t op1, uint16_t op2, bool signal_nans, FPSCR &fpscr,
217 FPCR fpcr);
218template <>
219int fplibCompare(uint32_t op1, uint32_t op2, bool signal_nans, FPSCR &fpscr,
220 FPCR fpcr);
221template <>
222int fplibCompare(uint64_t op1, uint64_t op2, bool signal_nans, FPSCR &fpscr,
223 FPCR fpcr);
224template <>
225bool fplibCompareEQ(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
226template <>
227bool fplibCompareEQ(uint32_t op1, uint32_t op2, FPSCR &fpscr, FPCR fpcr);
228template <>
229bool fplibCompareEQ(uint64_t op1, uint64_t op2, FPSCR &fpscr, FPCR fpcr);
230template <>
231bool fplibCompareGE(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
232template <>
233bool fplibCompareGE(uint32_t op1, uint32_t op2, FPSCR &fpscr, FPCR fpcr);
234template <>
235bool fplibCompareGE(uint64_t op1, uint64_t op2, FPSCR &fpscr, FPCR fpcr);
236template <>
237bool fplibCompareGT(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
238template <>
239bool fplibCompareGT(uint32_t op1, uint32_t op2, FPSCR &fpscr, FPCR fpcr);
240template <>
241bool fplibCompareGT(uint64_t op1, uint64_t op2, FPSCR &fpscr, FPCR fpcr);
242template <>
243bool fplibCompareUN(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
244template <>
245bool fplibCompareUN(uint32_t op1, uint32_t op2, FPSCR &fpscr, FPCR fpcr);
246template <>
247bool fplibCompareUN(uint64_t op1, uint64_t op2, FPSCR &fpscr, FPCR fpcr);
248template <>
249uint16_t fplibConvert(uint32_t op, FPRounding rounding, FPSCR &fpscr,
250 FPCR fpcr);
251template <>
252uint16_t fplibConvert(uint64_t op, FPRounding rounding, FPSCR &fpscr,
253 FPCR fpcr);
254template <>
255uint32_t fplibConvert(uint16_t op, FPRounding rounding, FPSCR &fpscr,
256 FPCR fpcr);
257template <>
258uint32_t fplibConvert(uint64_t op, FPRounding rounding, FPSCR &fpscr,
259 FPCR fpcr);
260template <>
261uint64_t fplibConvert(uint16_t op, FPRounding rounding, FPSCR &fpscr,
262 FPCR fpcr);
263template <>
264uint64_t fplibConvert(uint32_t op, FPRounding rounding, FPSCR &fpscr,
265 FPCR fpcr);
266template <>
267uint16_t fplibDiv(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
268template <>
269uint32_t fplibDiv(uint32_t op1, uint32_t op2, FPSCR &fpscr, FPCR fpcr);
270template <>
271uint64_t fplibDiv(uint64_t op1, uint64_t op2, FPSCR &fpscr, FPCR fpcr);
272template <>
273uint32_t fplibDot(uint16_t op1_a, uint16_t op1_b, uint16_t op2_a,
274 uint16_t op2_b, FPSCR &fpscr, FPCR fpcr);
275template <> uint16_t fplibExpA(uint16_t op);
276template <>
277uint32_t fplibExpA(uint32_t op);
278template <>
279uint64_t fplibExpA(uint64_t op);
280template <> uint16_t fplibLogB(uint16_t op, FPSCR &fpscr, FPCR fpcr);
281template <> uint32_t fplibLogB(uint32_t op, FPSCR &fpscr, FPCR fpcr);
282template <> uint64_t fplibLogB(uint64_t op, FPSCR &fpscr, FPCR fpcr);
283template <>
284uint16_t fplibMax(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
285template <>
286uint32_t fplibMax(uint32_t op1, uint32_t op2, FPSCR &fpscr, FPCR fpcr);
287template <>
288uint64_t fplibMax(uint64_t op1, uint64_t op2, FPSCR &fpscr, FPCR fpcr);
289template <>
290uint16_t fplibMaxNum(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
291template <>
292uint32_t fplibMaxNum(uint32_t op1, uint32_t op2, FPSCR &fpscr, FPCR fpcr);
293template <>
294uint64_t fplibMaxNum(uint64_t op1, uint64_t op2, FPSCR &fpscr, FPCR fpcr);
295template <>
296uint16_t fplibMin(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
297template <>
298uint32_t fplibMin(uint32_t op1, uint32_t op2, FPSCR &fpscr, FPCR fpcr);
299template <>
300uint64_t fplibMin(uint64_t op1, uint64_t op2, FPSCR &fpscr, FPCR fpcr);
301template <>
302uint16_t fplibMinNum(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
303template <>
304uint32_t fplibMinNum(uint32_t op1, uint32_t op2, FPSCR &fpscr, FPCR fpcr);
305template <>
306uint64_t fplibMinNum(uint64_t op1, uint64_t op2, FPSCR &fpscr, FPCR fpcr);
307template <>
308uint16_t fplibMul(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
309template <>
310uint32_t fplibMul(uint32_t op1, uint32_t op2, FPSCR &fpscr, FPCR fpcr);
311template <>
312uint64_t fplibMul(uint64_t op1, uint64_t op2, FPSCR &fpscr, FPCR fpcr);
313template <>
314uint16_t fplibMulAdd(uint16_t addend, uint16_t op1, uint16_t op2,
315 FPSCR &fpscr, FPCR fpcr);
316template <>
317uint32_t fplibMulAdd(uint32_t addend, uint32_t op1, uint32_t op2,
318 FPSCR &fpscr, FPCR fpcr);
319template <>
320uint64_t fplibMulAdd(uint64_t addend, uint64_t op1, uint64_t op2,
321 FPSCR &fpscr, FPCR fpcr);
322template <>
323uint32_t fplibMulAddH(uint32_t addend, uint16_t op1, uint16_t op2,
324 FPSCR &fpscr, FPCR fpcr);
325template <>
326uint16_t fplibMulX(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
327template <>
328uint32_t fplibMulX(uint32_t op1, uint32_t op2, FPSCR &fpscr, FPCR fpcr);
329template <>
330uint64_t fplibMulX(uint64_t op1, uint64_t op2, FPSCR &fpscr, FPCR fpcr);
331template <>
332uint16_t fplibNeg(uint16_t op, FPCR fpcr);
333template <>
334uint32_t fplibNeg(uint32_t op, FPCR fpcr);
335template <>
336uint64_t fplibNeg(uint64_t op, FPCR fpcr);
337template <>
338uint16_t fplibRSqrtEstimate(uint16_t op, FPSCR &fpscr, FPCR fpcr);
339template <>
340uint32_t fplibRSqrtEstimate(uint32_t op, FPSCR &fpscr, FPCR fpcr);
341template<>
342uint64_t fplibRSqrtEstimate(uint64_t op, FPSCR &fpscr, FPCR fpcr);
343template <>
344uint16_t fplibRSqrtStepFused(uint16_t op1, uint16_t op2, FPSCR &fpscr,
345 FPCR fpcr);
346template <>
347uint32_t fplibRSqrtStepFused(uint32_t op1, uint32_t op2, FPSCR &fpscr,
348 FPCR fpcr);
349template <>
350uint64_t fplibRSqrtStepFused(uint64_t op1, uint64_t op2, FPSCR &fpscr,
351 FPCR fpcr);
352template <>
353uint16_t fplibRecipEstimate(uint16_t op, FPSCR &fpscr, FPCR fpcr);
354template <>
355uint32_t fplibRecipEstimate(uint32_t op, FPSCR &fpscr, FPCR fpcr);
356template <>
357uint64_t fplibRecipEstimate(uint64_t op, FPSCR &fpscr, FPCR fpcr);
358template <>
359uint16_t fplibRecipStepFused(uint16_t op1, uint16_t op2, FPSCR &fpscr,
360 FPCR fpcr);
361template <>
362uint32_t fplibRecipStepFused(uint32_t op1, uint32_t op2, FPSCR &fpscr,
363 FPCR fpcr);
364template <>
365uint64_t fplibRecipStepFused(uint64_t op1, uint64_t op2, FPSCR &fpscr,
366 FPCR fpcr);
367template <>
368uint16_t fplibRecpX(uint16_t op, FPSCR &fpscr, FPCR fpcr);
369template <>
370uint32_t fplibRecpX(uint32_t op, FPSCR &fpscr, FPCR fpcr);
371template <>
372uint64_t fplibRecpX(uint64_t op, FPSCR &fpscr, FPCR fpcr);
373template <>
374uint16_t fplibRoundInt(uint16_t op, FPRounding rounding, bool exact,
375 FPSCR &fpscr, FPCR fpcr);
376template <>
377uint32_t fplibRoundInt(uint32_t op, FPRounding rounding, bool exact,
378 FPSCR &fpscr, FPCR fpcr);
379template <>
380uint64_t fplibRoundInt(uint64_t op, FPRounding rounding, bool exact,
381 FPSCR &fpscr, FPCR fpcr);
382template <>
383uint32_t fplibRoundIntN(uint32_t op, FPRounding rounding, bool exact,
384 int intsize, FPSCR &fpscr, FPCR fpcr);
385template <>
386uint64_t fplibRoundIntN(uint64_t op, FPRounding rounding, bool exact,
387 int intsize, FPSCR &fpscr, FPCR fpcr);
388template <>
389uint16_t fplibScale(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
390template <>
391uint32_t fplibScale(uint32_t op1, uint32_t op2, FPSCR &fpscr, FPCR fpcr);
392template <>
393uint64_t fplibScale(uint64_t op1, uint64_t op2, FPSCR &fpscr, FPCR fpcr);
394template <>
395uint16_t fplibSqrt(uint16_t op, FPSCR &fpscr, FPCR fpcr);
396template <>
397uint32_t fplibSqrt(uint32_t op, FPSCR &fpscr, FPCR fpcr);
398template <>
399uint64_t fplibSqrt(uint64_t op, FPSCR &fpscr, FPCR fpcr);
400template <>
401uint16_t fplibSub(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
402template <>
403uint32_t fplibSub(uint32_t op1, uint32_t op2, FPSCR &fpscr, FPCR fpcr);
404template <>
405uint64_t fplibSub(uint64_t op1, uint64_t op2, FPSCR &fpscr, FPCR fpcr);
406template <>
407uint16_t fplibTrigMulAdd(uint8_t coeff_index, uint16_t op1, uint16_t op2,
408 FPSCR &fpscr, FPCR fpcr);
409template <>
410uint32_t fplibTrigMulAdd(uint8_t coeff_index, uint32_t op1, uint32_t op2,
411 FPSCR &fpscr, FPCR fpcr);
412template <>
413uint64_t fplibTrigMulAdd(uint8_t coeff_index, uint64_t op1, uint64_t op2,
414 FPSCR &fpscr, FPCR fpcr);
415template <>
416uint16_t fplibTrigSMul(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
417template <>
418uint32_t fplibTrigSMul(uint32_t op1, uint32_t op2, FPSCR &fpscr, FPCR fpcr);
419template <>
420uint64_t fplibTrigSMul(uint64_t op1, uint64_t op2, FPSCR &fpscr, FPCR fpcr);
421template <>
422uint16_t fplibTrigSSel(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
423template <>
424uint32_t fplibTrigSSel(uint32_t op1, uint32_t op2, FPSCR &fpscr, FPCR fpcr);
425template <>
426uint64_t fplibTrigSSel(uint64_t op1, uint64_t op2, FPSCR &fpscr, FPCR fpcr);
427template <>
428uint16_t fplibFPToFixed(uint16_t op, int fbits, bool u, FPRounding rounding,
429 FPSCR &fpscr, FPCR fpcr);
430template <>
431uint32_t fplibFPToFixed(uint16_t op, int fbits, bool u, FPRounding rounding,
432 FPSCR &fpscr, FPCR fpcr);
433template <>
434uint32_t fplibFPToFixed(uint32_t op, int fbits, bool u, FPRounding rounding,
435 FPSCR &fpscr, FPCR fpcr);
436template <>
437uint32_t fplibFPToFixed(uint64_t op, int fbits, bool u, FPRounding rounding,
438 FPSCR &fpscr, FPCR fpcr);
439template <>
440uint64_t fplibFPToFixed(uint16_t op, int fbits, bool u, FPRounding rounding,
441 FPSCR &fpscr, FPCR fpcr);
442template <>
443uint64_t fplibFPToFixed(uint32_t op, int fbits, bool u, FPRounding rounding,
444 FPSCR &fpscr, FPCR fpcr);
445template <>
446uint64_t fplibFPToFixed(uint64_t op, int fbits, bool u, FPRounding rounding,
447 FPSCR &fpscr, FPCR fpcr);
448template <>
449uint16_t fplibFixedToFP(uint64_t op, int fbits, bool u, FPRounding rounding,
450 FPSCR &fpscr, FPCR fpcr);
451template <>
452uint32_t fplibFixedToFP(uint64_t op, int fbits, bool u, FPRounding rounding,
453 FPSCR &fpscr, FPCR fpcr);
454template <>
455uint64_t fplibFixedToFP(uint64_t op, int fbits, bool u, FPRounding rounding,
456 FPSCR &fpscr, FPCR fpcr);
457template <>
458uint16_t fplibInfinity(int sgn);
459template <>
460uint32_t fplibInfinity(int sgn);
461template <>
462uint64_t fplibInfinity(int sgn);
463template <>
464uint16_t fplibDefaultNaN(FPCR fpcr);
465template <>
466uint32_t fplibDefaultNaN(FPCR fpcr);
467template <>
468uint64_t fplibDefaultNaN(FPCR fpcr);
469
470// Function for AArch32
471template <>
472uint16_t fplib32RSqrtStep(uint16_t op1, uint16_t op2, FPSCR &fpscr);
473template <>
474uint16_t fplib32RecipStep(uint16_t op1, uint16_t op2, FPSCR &fpscr);
475
476// Function for BF16
477uint16_t fplibBfAdd(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
478uint16_t fplibBfMax(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
479uint16_t fplibBfMaxNum(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
480uint16_t fplibBfMin(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
481uint16_t fplibBfMinNum(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
482uint16_t fplibBfMul(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
483uint32_t fplibBfMulH(uint16_t op1, uint16_t op2, FPSCR &fpscr);
484uint16_t fplibBfMulAdd(uint16_t addend, uint16_t op1, uint16_t op2,
485 FPSCR &fpscr, FPCR fpcr);
486uint32_t fplibBfMulAddH(uint32_t addend, uint16_t op1, uint16_t op2,
487 FPSCR &fpscr, FPCR fpcr);
488uint16_t fplibBfNeg(uint16_t op, FPCR fpcr);
489uint16_t fplibBfSub(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr);
490uint32_t fplibAdd_Bf16(uint32_t op1, uint32_t op2, FPSCR &fpscr);
491uint16_t fplibConvertBF(uint32_t op, FPRounding rounding, FPSCR &fpscr,
492 FPCR fpcr = 0);
493uint32_t fplibBfdotAdd(uint32_t addend, uint16_t op1_a, uint16_t op1_b,
494 uint16_t op2_a, uint16_t op2_b,
495 FPSCR &fpscr, FPCR fpcr);
496} // namespace ArmISA
497} // namespace gem5
498
499#endif
uint16_t fplib32RSqrtStep(uint16_t op1, uint16_t op2, FPSCR &fpscr)
Definition fplib.cc:6854
uint32_t fplibFPToFixedJS(uint64_t op, FPSCR &fpscr, bool is64, uint8_t &nz)
Floating-point JS convert to a signed integer, with rounding to zero.
Definition fplib.cc:6547
uint16_t fplib32RecipStep(uint16_t op1, uint16_t op2, FPSCR &fpscr)
Definition fplib.cc:6883
static FPRounding FPCRRounding(FPSCR &fpscr)
Definition fplib.hh:71
uint32_t fplibMulAddH(uint32_t addend, uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:3912
uint16_t fplibTrigMulAdd(uint8_t coeff_index, uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:6130
uint32_t fplibBfMulH(uint16_t op1, uint16_t op2, FPSCR &fpscr)
Definition fplib.cc:7712
uint16_t fplibBfMaxNum(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:7654
uint32_t fplibAdd_Bf16(uint32_t op1, uint32_t op2, FPSCR &fpscr)
Definition fplib.cc:7772
uint16_t fplibBfMin(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:7673
uint16_t fplibRSqrtEstimate(uint16_t op, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:5006
uint16_t fplibMulX(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:4850
bool fplibCompareEQ(uint16_t a, uint16_t b, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:3196
bool fplibCompareGE(uint16_t a, uint16_t b, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:3206
uint16_t fplibBfMul(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:7703
int fplibCompare(uint16_t op1, uint16_t op2, bool signal_nans, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:3376
uint16_t fplibConvert(uint32_t op, FPRounding rounding, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:3597
uint16_t fplibExpA(uint16_t op)
Definition fplib.cc:3966
uint16_t fplibMaxNum(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:4679
bool fplibCompareUN(uint16_t a, uint16_t b, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:3226
uint16_t fplibTrigSMul(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:6235
uint16_t fplibMul(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:4820
uint16_t fplibMulAdd(uint16_t addend, uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:3876
uint16_t fplibScale(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:6037
uint16_t fplibLogB(uint16_t op, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:4156
uint16_t fplibConvertBF(uint32_t op, FPRounding rounding, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:7581
uint16_t fplibFixedToFP(uint64_t op, int fbits, bool u, FPRounding rounding, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:6772
uint16_t fplibRecpX(uint16_t op, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:5555
uint32_t fplibBfdotAdd(uint32_t addend, uint16_t op1_a, uint16_t op1_b, uint16_t op2_a, uint16_t op2_b, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:7781
uint16_t fplibRoundInt(uint16_t op, FPRounding rounding, bool exact, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:5651
uint16_t fplibBfMulAdd(uint16_t addend, uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:7722
uint16_t fplibBfAdd(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:7634
uint16_t fplibDiv(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:3924
uint32_t fplibBfMulAddH(uint32_t addend, uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:7733
uint16_t fplibMinNum(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:4766
uint16_t fplibRecipStepFused(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:5450
Bitfield< 22 > u
uint16_t fplibMax(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:4646
uint16_t fplibSqrt(uint16_t op, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:6070
uint16_t fplibMin(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:4733
uint16_t fplibBfSub(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:7763
uint16_t fplibAbs(uint16_t op, FPCR fpcr)
Definition fplib.cc:3316
uint16_t fplibAdd(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:3346
uint16_t fplibSub(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:6100
uint16_t fplibFPToFixed(uint16_t op, int fbits, bool u, FPRounding rounding, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:6412
uint16_t fplibRecipEstimate(uint16_t op, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:5237
uint16_t fplibBfMax(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:7643
uint32_t fplibRoundIntN(uint32_t op, FPRounding rounding, bool exact, int intsize, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:5861
uint16_t fplibTrigSSel(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:6293
uint32_t fplibDot(uint16_t op1_a, uint16_t op1_b, uint16_t op2_a, uint16_t op2_b, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:3954
bool fplibCompareGT(uint16_t a, uint16_t b, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:3216
uint16_t fplibBfNeg(uint16_t op, FPCR fpcr)
Definition fplib.cc:7750
uint16_t fplibInfinity(int sgn)
Definition fplib.cc:6811
uint16_t fplibRSqrtStepFused(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:5132
uint16_t fplibDefaultNaN(FPCR fpcr)
Definition fplib.cc:6832
@ FPRounding_POSINF
Definition fplib.hh:63
@ FPRounding_ZERO
Definition fplib.hh:65
@ FPRounding_TIEEVEN
Definition fplib.hh:62
@ FPRounding_TIEAWAY
Definition fplib.hh:66
@ FPRounding_ODD
Definition fplib.hh:67
@ FPRounding_NEGINF
Definition fplib.hh:64
uint16_t fplibNeg(uint16_t op, FPCR fpcr)
Definition fplib.cc:4957
uint16_t fplibBfMinNum(uint16_t op1, uint16_t op2, FPSCR &fpscr, FPCR fpcr)
Definition fplib.cc:7684
Bitfield< 4 > op
Definition types.hh:83
Copyright (c) 2024 Arm Limited All rights reserved.
Definition binary32.hh:36

Generated on Mon Oct 27 2025 04:12:54 for gem5 by doxygen 1.14.0