162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Copyright Novell Inc. 2010 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * Authors: Alexander Graf <agraf@suse.de> 762306a36Sopenharmony_ci */ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#ifndef __ASM_KVM_FPU_H__ 1062306a36Sopenharmony_ci#define __ASM_KVM_FPU_H__ 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include <linux/types.h> 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ciextern void fps_fres(u64 *fpscr, u32 *dst, u32 *src1); 1562306a36Sopenharmony_ciextern void fps_frsqrte(u64 *fpscr, u32 *dst, u32 *src1); 1662306a36Sopenharmony_ciextern void fps_fsqrts(u64 *fpscr, u32 *dst, u32 *src1); 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ciextern void fps_fadds(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2); 1962306a36Sopenharmony_ciextern void fps_fdivs(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2); 2062306a36Sopenharmony_ciextern void fps_fmuls(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2); 2162306a36Sopenharmony_ciextern void fps_fsubs(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2); 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ciextern void fps_fmadds(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, 2462306a36Sopenharmony_ci u32 *src3); 2562306a36Sopenharmony_ciextern void fps_fmsubs(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, 2662306a36Sopenharmony_ci u32 *src3); 2762306a36Sopenharmony_ciextern void fps_fnmadds(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, 2862306a36Sopenharmony_ci u32 *src3); 2962306a36Sopenharmony_ciextern void fps_fnmsubs(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, 3062306a36Sopenharmony_ci u32 *src3); 3162306a36Sopenharmony_ciextern void fps_fsel(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, 3262306a36Sopenharmony_ci u32 *src3); 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci#define FPD_ONE_IN(name) extern void fpd_ ## name(u64 *fpscr, u32 *cr, \ 3562306a36Sopenharmony_ci u64 *dst, u64 *src1); 3662306a36Sopenharmony_ci#define FPD_TWO_IN(name) extern void fpd_ ## name(u64 *fpscr, u32 *cr, \ 3762306a36Sopenharmony_ci u64 *dst, u64 *src1, u64 *src2); 3862306a36Sopenharmony_ci#define FPD_THREE_IN(name) extern void fpd_ ## name(u64 *fpscr, u32 *cr, \ 3962306a36Sopenharmony_ci u64 *dst, u64 *src1, u64 *src2, u64 *src3); 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ciextern void fpd_fcmpu(u64 *fpscr, u32 *cr, u64 *src1, u64 *src2); 4262306a36Sopenharmony_ciextern void fpd_fcmpo(u64 *fpscr, u32 *cr, u64 *src1, u64 *src2); 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ciFPD_ONE_IN(fsqrts) 4562306a36Sopenharmony_ciFPD_ONE_IN(frsqrtes) 4662306a36Sopenharmony_ciFPD_ONE_IN(fres) 4762306a36Sopenharmony_ciFPD_ONE_IN(frsp) 4862306a36Sopenharmony_ciFPD_ONE_IN(fctiw) 4962306a36Sopenharmony_ciFPD_ONE_IN(fctiwz) 5062306a36Sopenharmony_ciFPD_ONE_IN(fsqrt) 5162306a36Sopenharmony_ciFPD_ONE_IN(fre) 5262306a36Sopenharmony_ciFPD_ONE_IN(frsqrte) 5362306a36Sopenharmony_ciFPD_ONE_IN(fneg) 5462306a36Sopenharmony_ciFPD_ONE_IN(fabs) 5562306a36Sopenharmony_ciFPD_TWO_IN(fadds) 5662306a36Sopenharmony_ciFPD_TWO_IN(fsubs) 5762306a36Sopenharmony_ciFPD_TWO_IN(fdivs) 5862306a36Sopenharmony_ciFPD_TWO_IN(fmuls) 5962306a36Sopenharmony_ciFPD_TWO_IN(fcpsgn) 6062306a36Sopenharmony_ciFPD_TWO_IN(fdiv) 6162306a36Sopenharmony_ciFPD_TWO_IN(fadd) 6262306a36Sopenharmony_ciFPD_TWO_IN(fmul) 6362306a36Sopenharmony_ciFPD_TWO_IN(fsub) 6462306a36Sopenharmony_ciFPD_THREE_IN(fmsubs) 6562306a36Sopenharmony_ciFPD_THREE_IN(fmadds) 6662306a36Sopenharmony_ciFPD_THREE_IN(fnmsubs) 6762306a36Sopenharmony_ciFPD_THREE_IN(fnmadds) 6862306a36Sopenharmony_ciFPD_THREE_IN(fsel) 6962306a36Sopenharmony_ciFPD_THREE_IN(fmsub) 7062306a36Sopenharmony_ciFPD_THREE_IN(fmadd) 7162306a36Sopenharmony_ciFPD_THREE_IN(fnmsub) 7262306a36Sopenharmony_ciFPD_THREE_IN(fnmadd) 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ciextern void kvm_cvt_fd(u32 *from, u64 *to); 7562306a36Sopenharmony_ciextern void kvm_cvt_df(u64 *from, u32 *to); 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci#endif 78