1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * 4 * Copyright Novell Inc. 2010 5 * 6 * Authors: Alexander Graf <agraf@suse.de> 7 */ 8 9 #ifndef __ASM_KVM_FPU_H__ 10 #define __ASM_KVM_FPU_H__ 11 12 #include <linux/types.h> 13 14 extern void fps_fres(u64 *fpscr, u32 *dst, u32 *src1); 15 extern void fps_frsqrte(u64 *fpscr, u32 *dst, u32 *src1); 16 extern void fps_fsqrts(u64 *fpscr, u32 *dst, u32 *src1); 17 18 extern void fps_fadds(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2); 19 extern void fps_fdivs(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2); 20 extern void fps_fmuls(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2); 21 extern void fps_fsubs(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2); 22 23 extern void fps_fmadds(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, 24 u32 *src3); 25 extern void fps_fmsubs(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, 26 u32 *src3); 27 extern void fps_fnmadds(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, 28 u32 *src3); 29 extern void fps_fnmsubs(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, 30 u32 *src3); 31 extern void fps_fsel(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, 32 u32 *src3); 33 34 #define FPD_ONE_IN(name) extern void fpd_ ## name(u64 *fpscr, u32 *cr, \ 35 u64 *dst, u64 *src1); 36 #define FPD_TWO_IN(name) extern void fpd_ ## name(u64 *fpscr, u32 *cr, \ 37 u64 *dst, u64 *src1, u64 *src2); 38 #define FPD_THREE_IN(name) extern void fpd_ ## name(u64 *fpscr, u32 *cr, \ 39 u64 *dst, u64 *src1, u64 *src2, u64 *src3); 40 41 extern void fpd_fcmpu(u64 *fpscr, u32 *cr, u64 *src1, u64 *src2); 42 extern void fpd_fcmpo(u64 *fpscr, u32 *cr, u64 *src1, u64 *src2); 43 44 FPD_ONE_IN(fsqrts) 45 FPD_ONE_IN(frsqrtes) 46 FPD_ONE_IN(fres) 47 FPD_ONE_IN(frsp) 48 FPD_ONE_IN(fctiw) 49 FPD_ONE_IN(fctiwz) 50 FPD_ONE_IN(fsqrt) 51 FPD_ONE_IN(fre) 52 FPD_ONE_IN(frsqrte) 53 FPD_ONE_IN(fneg) 54 FPD_ONE_IN(fabs) 55 FPD_TWO_IN(fadds) 56 FPD_TWO_IN(fsubs) 57 FPD_TWO_IN(fdivs) 58 FPD_TWO_IN(fmuls) 59 FPD_TWO_IN(fcpsgn) 60 FPD_TWO_IN(fdiv) 61 FPD_TWO_IN(fadd) 62 FPD_TWO_IN(fmul) 63 FPD_TWO_IN(fsub) 64 FPD_THREE_IN(fmsubs) 65 FPD_THREE_IN(fmadds) 66 FPD_THREE_IN(fnmsubs) 67 FPD_THREE_IN(fnmadds) 68 FPD_THREE_IN(fsel) 69 FPD_THREE_IN(fmsub) 70 FPD_THREE_IN(fmadd) 71 FPD_THREE_IN(fnmsub) 72 FPD_THREE_IN(fnmadd) 73 74 extern void kvm_cvt_fd(u32 *from, u64 *to); 75 extern void kvm_cvt_df(u64 *from, u32 *to); 76 77 #endif 78