18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci *
48c2ecf20Sopenharmony_ci * Copyright Novell Inc. 2010
58c2ecf20Sopenharmony_ci *
68c2ecf20Sopenharmony_ci * Authors: Alexander Graf <agraf@suse.de>
78c2ecf20Sopenharmony_ci */
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci#ifndef __ASM_KVM_FPU_H__
108c2ecf20Sopenharmony_ci#define __ASM_KVM_FPU_H__
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci#include <linux/types.h>
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ciextern void fps_fres(u64 *fpscr, u32 *dst, u32 *src1);
158c2ecf20Sopenharmony_ciextern void fps_frsqrte(u64 *fpscr, u32 *dst, u32 *src1);
168c2ecf20Sopenharmony_ciextern void fps_fsqrts(u64 *fpscr, u32 *dst, u32 *src1);
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ciextern void fps_fadds(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2);
198c2ecf20Sopenharmony_ciextern void fps_fdivs(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2);
208c2ecf20Sopenharmony_ciextern void fps_fmuls(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2);
218c2ecf20Sopenharmony_ciextern void fps_fsubs(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2);
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ciextern void fps_fmadds(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2,
248c2ecf20Sopenharmony_ci		       u32 *src3);
258c2ecf20Sopenharmony_ciextern void fps_fmsubs(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2,
268c2ecf20Sopenharmony_ci		       u32 *src3);
278c2ecf20Sopenharmony_ciextern void fps_fnmadds(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2,
288c2ecf20Sopenharmony_ci		        u32 *src3);
298c2ecf20Sopenharmony_ciextern void fps_fnmsubs(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2,
308c2ecf20Sopenharmony_ci		        u32 *src3);
318c2ecf20Sopenharmony_ciextern void fps_fsel(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2,
328c2ecf20Sopenharmony_ci		     u32 *src3);
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci#define FPD_ONE_IN(name) extern void fpd_ ## name(u64 *fpscr, u32 *cr, \
358c2ecf20Sopenharmony_ci				u64 *dst, u64 *src1);
368c2ecf20Sopenharmony_ci#define FPD_TWO_IN(name) extern void fpd_ ## name(u64 *fpscr, u32 *cr, \
378c2ecf20Sopenharmony_ci				u64 *dst, u64 *src1, u64 *src2);
388c2ecf20Sopenharmony_ci#define FPD_THREE_IN(name) extern void fpd_ ## name(u64 *fpscr, u32 *cr, \
398c2ecf20Sopenharmony_ci				u64 *dst, u64 *src1, u64 *src2, u64 *src3);
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ciextern void fpd_fcmpu(u64 *fpscr, u32 *cr, u64 *src1, u64 *src2);
428c2ecf20Sopenharmony_ciextern void fpd_fcmpo(u64 *fpscr, u32 *cr, u64 *src1, u64 *src2);
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ciFPD_ONE_IN(fsqrts)
458c2ecf20Sopenharmony_ciFPD_ONE_IN(frsqrtes)
468c2ecf20Sopenharmony_ciFPD_ONE_IN(fres)
478c2ecf20Sopenharmony_ciFPD_ONE_IN(frsp)
488c2ecf20Sopenharmony_ciFPD_ONE_IN(fctiw)
498c2ecf20Sopenharmony_ciFPD_ONE_IN(fctiwz)
508c2ecf20Sopenharmony_ciFPD_ONE_IN(fsqrt)
518c2ecf20Sopenharmony_ciFPD_ONE_IN(fre)
528c2ecf20Sopenharmony_ciFPD_ONE_IN(frsqrte)
538c2ecf20Sopenharmony_ciFPD_ONE_IN(fneg)
548c2ecf20Sopenharmony_ciFPD_ONE_IN(fabs)
558c2ecf20Sopenharmony_ciFPD_TWO_IN(fadds)
568c2ecf20Sopenharmony_ciFPD_TWO_IN(fsubs)
578c2ecf20Sopenharmony_ciFPD_TWO_IN(fdivs)
588c2ecf20Sopenharmony_ciFPD_TWO_IN(fmuls)
598c2ecf20Sopenharmony_ciFPD_TWO_IN(fcpsgn)
608c2ecf20Sopenharmony_ciFPD_TWO_IN(fdiv)
618c2ecf20Sopenharmony_ciFPD_TWO_IN(fadd)
628c2ecf20Sopenharmony_ciFPD_TWO_IN(fmul)
638c2ecf20Sopenharmony_ciFPD_TWO_IN(fsub)
648c2ecf20Sopenharmony_ciFPD_THREE_IN(fmsubs)
658c2ecf20Sopenharmony_ciFPD_THREE_IN(fmadds)
668c2ecf20Sopenharmony_ciFPD_THREE_IN(fnmsubs)
678c2ecf20Sopenharmony_ciFPD_THREE_IN(fnmadds)
688c2ecf20Sopenharmony_ciFPD_THREE_IN(fsel)
698c2ecf20Sopenharmony_ciFPD_THREE_IN(fmsub)
708c2ecf20Sopenharmony_ciFPD_THREE_IN(fmadd)
718c2ecf20Sopenharmony_ciFPD_THREE_IN(fnmsub)
728c2ecf20Sopenharmony_ciFPD_THREE_IN(fnmadd)
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_ciextern void kvm_cvt_fd(u32 *from, u64 *to);
758c2ecf20Sopenharmony_ciextern void kvm_cvt_df(u64 *from, u32 *to);
768c2ecf20Sopenharmony_ci
778c2ecf20Sopenharmony_ci#endif
78