1 /* 3DNow! interface library
2 * Copyright (C) 1998 Robert Dale
4 * This depends on mmx.h which should have been included.
10 /* 3DNow! instructions */
13 __asm__ __volatile__ ("femms")
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
93 #define prefetch() __asm__ __volatile__ ("prefetch")
95 #define prefetchw() __asm__ __volatile__ ("prefetchw")