Alex: Added the new sources for terminatorX 3.5
[terminatorX.git] / src / 3dnow.h
1 /*  3DNow! interface library
2  *  Copyright (C) 1998 Robert Dale
3  *  
4  *  This depends on mmx.h which should have been included.
5  *
6  */ 
7
8 #include "mmx.h"
9
10 /* 3DNow! instructions */
11
12 #define femms() \
13         __asm__ __volatile__ ("femms")
14
15 #define pf2id_m2r(var, reg)    mmx_m2r(pf2id, var, reg)
16 #define pf2id_r2r(regs, regd)  mmx_r2r(pf2id, regs, regd)
17 #define pf2id(vars, vard)      mmx_m2m(pf2id, vars, vard)
18
19 #define pfacc_m2r(var, reg)    mmx_m2r(pfacc, var, reg)
20 #define pfacc_r2r(regs, regd)  mmx_r2r(pfacc, regs, regd)
21 #define pfacc(vars, vard)      mmx_m2m(pfacc, vars, vard)
22
23 #define pfadd_i2r(imm, reg)    mmx_i2r(pfadd, imm, reg)
24 #define pfadd_m2r(var, reg)    mmx_m2r(pfadd, var, reg)
25 #define pfadd_r2r(regs, regd)  mmx_r2r(pfadd, regs, regd)
26 #define pfadd(vars, vard)      mmx_m2m(pfadd, vars, vard)
27
28 #define pfcmpeq_m2r(var, reg)  mmx_m2r(pfcmpeq, var, reg)
29 #define pfcmpeq_r2r(regs, regd) mmx_r2r(pfcmpeq, regs, regd)
30 #define pfcmpeq(vars, vard)     mmx_m2m(pfcmpeq, vars, vard)
31
32 #define pfcmpge_m2r(var, reg)   mmx_m2r(pfcmpge, var, reg)
33 #define pfcmpge_r2r(regs, regd) mmx_r2r(pfcmpge, regs, regd)
34 #define pfcmpge(vars, vard)     mmx_m2m(pfcmpge, vars, vard)
35
36 #define pfcmpgt_m2r(var, reg)   mmx_m2r(pfcmpgt, var, reg)
37 #define pfcmpgt_r2r(regs, regd) mmx_r2r(pfcmpgt, regs, regd)
38 #define pfcmpgt(vars, vard)     mmx_m2m(pfcmpgt, vars, vard)
39
40 #define pfmax_m2r(var, reg)     mmx_m2r(pfmax, var, reg)
41 #define pfmax_r2r(regs, regd)   mmx_r2r(pfmax, regs, regd)
42 #define pfmax(vars, vard)       mmx_m2m(pfmax, vars, vard)
43
44 #define pfmin_m2r(var, reg)     mmx_m2r(pfmin, var, reg)
45 #define pfmin_r2r(regs, regd)   mmx_r2r(pfmin, regs, regd)
46 #define pfmin(vars, vard)       mmx_m2m(pfmin, vars, vard)
47
48 #define pfmul_i2r(imm, reg)     mmx_i2r(pfmul, imm, reg)
49 #define pfmul_m2r(var, reg)     mmx_m2r(pfmul, var, reg)
50 #define pfmul_r2r(regs, regd)   mmx_r2r(pfmul, regs, regd)
51 #define pfmul(vars, vard)       mmx_m2m(pfmul, vars, vard)
52
53 #define pfrcp_m2r(var, reg)     mmx_m2r(pfrcp, var, reg)
54 #define pfrcp_r2r(regs, regd)   mmx_r2r(pfrcp, regs, regd)
55 #define pfrcp(vars, vard)       mmx_m2m(pfrcp, vars, vard)
56
57 #define pfrcpit1_m2r(var, reg)  mmx_m2r(pfrcpit1, var, reg)
58 #define pfrcpit1_r2r(regs, regd) mmx_r2r(pfrcpit1, regs, regd)
59 #define pfrcpit1(vars, vard)    mmx_m2m(pfrcpit1, vars, vard)
60
61 #define pfrcpit2_m2r(var, reg)  mmx_m2r(pfrcpit2, var, reg)
62 #define pfrcpit2_r2r(regs, regd) mmx_r2r(pfrcpit2, regs, regd)
63 #define pfrcpit2(vars, vard)    mmx_m2m(pfrcpit2, vars, vard)
64
65 #define pfrsqrt_m2r(var, reg)   mmx_m2r(pfrsqrt, var, reg)
66 #define pfrsqrt_r2r(regs, regd) mmx_r2r(pfrsqrt, regs, regd)
67 #define pfrsqrt(vars, vard)     mmx_m2m(pfrsqrt, vars, vard)
68
69 #define pfrsqit1_m2r(var, reg)   mmx_m2r(pfrsqit1, var, reg)
70 #define pfrsqit1_r2r(regs, regd) mmx_r2r(pfrsqit1, regs, regd)
71 #define pfrsqit1(vars, vard)     mmx_m2m(pfrsqit1, vars, vard)
72
73 #define pfsub_m2r(var, reg)     mmx_m2r(pfsub, var, reg)
74 #define pfsub_r2r(regs, regd)   mmx_r2r(pfsub, regs, regd)
75 #define pfsub(vars, vard)       mmx_m2m(pfsub, vars, vard)
76
77 #define pfsubr_m2r(var, reg)    mmx_m2r(pfsubr, var, reg)
78 #define pfsubr_r2r(regs, regd)  mmx_r2r(pfsubr, regs, regd)
79 #define pfsubr(vars, vard)      mmx_m2m(pfsubr, vars, vard)
80
81 #define pi2fd_m2r(var, reg)     mmx_m2r(pi2fd, var, reg)
82 #define pi2fd_r2r(regs, regd)   mmx_r2r(pi2fd, regs, regd)
83 #define pi2fd(vars, vard)       mmx_m2m(pi2fd, vars, vard)
84
85 #define pavgusb_m2r(var, reg)   mmx_m2r(pavgusb, var, reg)
86 #define pavgusb_r2r(regs, regd) mmx_r2r(pavgusb, regs, regd)
87 #define pavgusb(vars, vard)     mmx_m2m(pavgusb, vars, vard)
88
89 #define pmulhrw_m2r(var, reg)   mmx_m2r(pmulhrw, var, reg)
90 #define pmulhrw_r2r(regs, regd) mmx_r2r(pmulhrw, regs, regd)
91 #define pmulhrw(vars, vard)     mmx_m2m(pmulhrw, vars, vard)
92
93 #define prefetch()           __asm__ __volatile__ ("prefetch") 
94
95 #define prefetchw()          __asm__ __volatile__ ("prefetchw")