/*
	3dnow.h

	MultiMedia eXtensions GCC interface library for AMD's
	3DNow! 32-bit floating-point enhancement of MMX.

	To use this library, simply include this header file and
	compile with GCC.  You must also include Sc.h BEFORE
	this file, since some defs there are used here.

	THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY
	EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
	LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY
	AND FITNESS FOR ANY PARTICULAR PURPOSE.

	April 1, 1999 by H. Dietz
*/


/*	2x32 Parallel Float-to-Int
*/
#define	pf2id_m2r(var, reg)	mmx_m2r(pf2id, var, reg)
#define	pf2id_r2r(regs, regd)	mmx_r2r(pf2id, regs, regd)
#define	pf2id(vars, vard)	mmx_m2m(pf2id, vars, vard)

/*	2x32 Parallel Int-to-Float
*/
#define	pi2fd_m2r(var, reg)	mmx_m2r(pi2fd, var, reg)
#define	pi2fd_r2r(regs, regd)	mmx_r2r(pi2fd, regs, regd)
#define	pi2fd(vars, vard)	mmx_m2m(pi2fd, vars, vard)

/*	32-bit Float Reciprocal
*/
#define	pfrcp_r2r(regs, regd)	mmx_r2r(pfrcp, regs, regd)
#define	pfrcpit1_r2r(regs, regd)	mmx_r2r(pfrcpit1, regs, regd)
#define	pfrcpit2_r2r(regs, regd)	mmx_r2r(pfrcpit2, regs, regd)

/*	2x32 Parallel Float Add
*/
#define	pfadd_m2r(var, reg)	mmx_m2r(pfadd, var, reg)
#define	pfadd_r2r(regs, regd)	mmx_r2r(pfadd, regs, regd)
#define	pfadd(vars, vard)	mmx_m2m(pfadd, vars, vard)

/*	2x32 Parallel Float Compares
*/
#define	pfcmpeq_m2r(var, reg)	mmx_m2r(pfcmpeq, var, reg)
#define	pfcmpeq_r2r(regs, regd)	mmx_r2r(pfcmpeq, regs, regd)
#define	pfcmpeq(vars, vard)	mmx_m2m(pfcmpeq, vars, vard)

#define	pfcmpgt_m2r(var, reg)	mmx_m2r(pfcmpgt, var, reg)
#define	pfcmpgt_r2r(regs, regd)	mmx_r2r(pfcmpgt, regs, regd)
#define	pfcmpgt(vars, vard)	mmx_m2m(pfcmpgt, vars, vard)

/*	2x32 Parallel Float Mul
*/
#define	pfmul_m2r(var, reg)	mmx_m2r(pfmul, var, reg)
#define	pfmul_r2r(regs, regd)	mmx_r2r(pfmul, regs, regd)
#define	pfmul(vars, vard)	mmx_m2m(pfmul, vars, vard)

/*	2x32 Parallel Float Sub
*/
#define	pfsub_m2r(var, reg)	mmx_m2r(pfsub, var, reg)
#define	pfsub_r2r(regs, regd)	mmx_r2r(pfsub, regs, regd)
#define	pfsub(vars, vard)	mmx_m2m(pfsub, vars, vard)

/*	2x32 Parallel Float Min and Max
*/
#define	pfmin_m2r(var, reg)	mmx_m2r(pfmin, var, reg)
#define	pfmin_r2r(regs, regd)	mmx_r2r(pfmin, regs, regd)
#define	pfmin(vars, vard)	mmx_m2m(pfmin, vars, vard)

#define	pfmax_m2r(var, reg)	mmx_m2r(pfmax, var, reg)
#define	pfmax_r2r(regs, regd)	mmx_r2r(pfmax, regs, regd)
#define	pfmax(vars, vard)	mmx_m2m(pfmax, vars, vard)

/*	Fast emms()
*/
#define	femms()			__asm__ __volatile__ ("femms")
