/**
 * TrueReality - n64/cop1.h
 * Copyright (C) 1998 Niki W. Waibel
 *
 * This program is free software; you can redistribute it and/
 * or modify it under the terms of the GNU General Public Li-
 * cence as published by the Free Software Foundation; either
 * version 2 of the Licence, or any later version.
 *
 * This program is distributed in the hope that it will be use-
 * ful, but WITHOUT ANY WARRANTY; without even the implied war-
 * ranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU General Public Licence for more details.
 *
 * You should have received a copy of the GNU General Public
 * Licence along with this program; if not, write to the Free
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
 * USA.
 *
 * Information about me (the author):
 *   Niki W. Waibel, Reichenau 20, 6890 Lustenau, Austria - EUROPE
 *   niki.waibel@gmx.net
**/





#define __COP1_H





/* the fp formats known by the rs4300i */

#define FMT_S   16      /* 32bit binary floating-point */
#define FMT_D   17      /* 64bit binary floating-point */
#define FMT_W   20      /* 32bit binary fixed-point    */
#define FMT_L   21      /* 64bit binary fixed-point    */





// cop1 rs instruction pointer

void *cop1_rs_instruction[32];



// 32 cop1 rs instructions

void rs4300i_cop1_rs_mf();
void rs4300i_cop1_rs_dmf();
void rs4300i_cop1_rs_cf();
void rs4300i_cop1_rs_mt();
void rs4300i_cop1_rs_dmt();
void rs4300i_cop1_rs_ct();
void rs4300i_cop1_rs_bc();
void rs4300i_cop1_rs_reserved();
void rs4300i_cop1_rs_co();



// cop1 rt instruction pointer

void *cop1_rt_instruction[32];



// 32 cop1 rt instructions

void rs4300i_cop1_rt_bcf();
void rs4300i_cop1_rt_bct();
void rs4300i_cop1_rt_bcfl();
void rs4300i_cop1_rt_bctl();
void rs4300i_cop1_rt_reserved();





// cop1 (fpu) function instruction pointer

void *cop1_instruction[64];



// 64 cop1 (fpu) function instructions

void rs4300i_cop1_add();
void rs4300i_cop1_sub();
void rs4300i_cop1_mul();
void rs4300i_cop1_div();
void rs4300i_cop1_sqrt();
void rs4300i_cop1_abs();
void rs4300i_cop1_mov();
void rs4300i_cop1_neg();
void rs4300i_cop1_roundl();
void rs4300i_cop1_truncl();
void rs4300i_cop1_ceill();
void rs4300i_cop1_floorl();
void rs4300i_cop1_roundw();
void rs4300i_cop1_truncw();
void rs4300i_cop1_ceilw();
void rs4300i_cop1_floorw();
void rs4300i_cop1_reserved();
void rs4300i_cop1_cvts();
void rs4300i_cop1_cvtd();
void rs4300i_cop1_cvtw();
void rs4300i_cop1_cvtl();
void rs4300i_cop1_c();






