Thomas Gleixner | d94d71c | 2019-05-29 07:12:40 -0700 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
Alexander Graf | 963cf3d | 2010-02-19 11:00:40 +0100 | [diff] [blame] | 2 | /* |
Alexander Graf | 963cf3d | 2010-02-19 11:00:40 +0100 | [diff] [blame] | 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 | |
Andreas Schwab | 49f6be8 | 2010-05-31 21:59:13 +0200 | [diff] [blame] | 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); |
Alexander Graf | 963cf3d | 2010-02-19 11:00:40 +0100 | [diff] [blame] | 17 | |
Andreas Schwab | 49f6be8 | 2010-05-31 21:59:13 +0200 | [diff] [blame] | 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); |
Alexander Graf | 963cf3d | 2010-02-19 11:00:40 +0100 | [diff] [blame] | 22 | |
Andreas Schwab | 49f6be8 | 2010-05-31 21:59:13 +0200 | [diff] [blame] | 23 | extern void fps_fmadds(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, |
Alexander Graf | 963cf3d | 2010-02-19 11:00:40 +0100 | [diff] [blame] | 24 | u32 *src3); |
Andreas Schwab | 49f6be8 | 2010-05-31 21:59:13 +0200 | [diff] [blame] | 25 | extern void fps_fmsubs(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, |
Alexander Graf | 963cf3d | 2010-02-19 11:00:40 +0100 | [diff] [blame] | 26 | u32 *src3); |
Andreas Schwab | 49f6be8 | 2010-05-31 21:59:13 +0200 | [diff] [blame] | 27 | extern void fps_fnmadds(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, |
Alexander Graf | 963cf3d | 2010-02-19 11:00:40 +0100 | [diff] [blame] | 28 | u32 *src3); |
Andreas Schwab | 49f6be8 | 2010-05-31 21:59:13 +0200 | [diff] [blame] | 29 | extern void fps_fnmsubs(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, |
Alexander Graf | 963cf3d | 2010-02-19 11:00:40 +0100 | [diff] [blame] | 30 | u32 *src3); |
Andreas Schwab | 49f6be8 | 2010-05-31 21:59:13 +0200 | [diff] [blame] | 31 | extern void fps_fsel(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, |
Alexander Graf | 963cf3d | 2010-02-19 11:00:40 +0100 | [diff] [blame] | 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 | |
Andreas Schwab | 05d77ac | 2010-08-21 11:43:20 +0000 | [diff] [blame] | 74 | extern void kvm_cvt_fd(u32 *from, u64 *to); |
| 75 | extern void kvm_cvt_df(u64 *from, u32 *to); |
Andreas Schwab | 49f6be8 | 2010-05-31 21:59:13 +0200 | [diff] [blame] | 76 | |
Alexander Graf | 963cf3d | 2010-02-19 11:00:40 +0100 | [diff] [blame] | 77 | #endif |