/*
 * Project 64 - A Nintendo 64 emulator.
 *
 * (c) Copyright 2001 zilmar (zilmar@emulation64.com) and
 * Jabo (jabo@emulation64.com).
 *
 * pj64 homepage: www.pj64.net
 *
 * Permission to use, copy, modify and distribute Project64 in both binary and
 * source form, for non-commercial purposes, is hereby granted without fee,
 * providing that this license information and copyright notice appear with
 * all copies and any derived work.
 *
 * This software is provided 'as-is', without any express or implied
 * warranty. In no event shall the authors be held liable for any damages
 * arising from the use of this software.
 *
 * Project64 is freeware for PERSONAL USE only. Commercial users should
 * seek permission of the copyright holders first. Commercial use includes
 * charging money for Project64 or software derived from Project64.
 *
 * The copyright holders request that bug fixes and improvements to the code
 * should be forwarded to them so if they want them.
 *
 */
#ifndef __Types_h
#define __Types_h

#ifdef __LP64__
#define USEX64
#define EXTREGS
#endif

#include <stdint.h>
typedef uint64_t QWORD;

typedef union tagVect {
	double				FD[2];
	int64_t				DW[2];
	uint64_t			UDW[2];
	int32_t				W[4];
	float				FS[4];
	uint32_t			UW[4];
	int16_t				HW[8];
	uint16_t			UHW[8];
	int8_t				B[16];
	uint8_t				UB[16];
} VECTOR;

typedef union tagUWORD {
	int32_t		W;
	uint32_t	UW;
	int16_t		HW[2];
	uint16_t	UHW[2];
	int8_t		B[4];
	uint8_t		UB[4];
	float F;
} MIPS_WORD;

typedef union tagUDWORD {
	double				D;
	int64_t				DW;
	uint64_t			UDW;
	int32_t				W[2];
	uint32_t			UW[2];
	int16_t				HW[4];
	uint16_t			UHW[4];
	int8_t				B[8];
	uint8_t				UB[8];
	float 				F[2];
} MIPS_DWORD;

typedef MIPS_WORD	MIPSUWORD;
typedef MIPS_DWORD	MIPSUDWORD;


#endif
