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