/*
 * SYNOPSYS CONFIDENTIAL - This is an unpublished, proprietary work of Synopsys,
 * Inc., and is fully protected under copyright and trade secret laws. You may
 * not view, use, disclose, copy, or distribute this file or any information
 * contained herein except pursuant to a valid written license from Synopsys.
 */

//
//	The purpose of this file is to define SSE2 data types to abstacr from the compiler 
//	specific constructs. Currently the target compilers are GCC and the MS VC 2005.
//

#ifndef _SSE2_CMPL_ABSTRACTION_MSC_H_
#define _SSE2_CMPL_ABSTRACTION_MSC_H_

#include <boost/static_assert.hpp>
#include <emmintrin.h>

//
//	Namespace sse2
//
namespace sse2
{

//
//	Primitive types
//

///	2xdouble
//
typedef __m128d rxmm128d;

///	4xfloat
//
typedef __m128 rxmm128s;

///	2xint64
//
typedef __m128i rxmm128l;

///	4xint32
//
typedef __m128 rxmm128i;

///	int64
//
typedef __int64 int64;

//
//	Namespace sse2
//
}

#include "SSE_cmplr_abstraction_MSC_pckdbl.h"
#include "SSE_cmplr_abstraction_MSC_pckfloat.h"
#include "SSE_cmplr_abstraction_MSC_pckint8.h"
#include "SSE_cmplr_abstraction_MSC_pckint16.h"
#include "SSE_cmplr_abstraction_MSC_pckint32.h"
#include "SSE_cmplr_abstraction_MSC_pckint64.h"

#endif/*_SSE2_CMPL_ABSTRACTION_MSC_H_*/
