/*	swartypes.h

	Definitions for SWAR types on various architectures
*/

typedef union {
	float			f;	/* Float (32-bit) value */
	int			d;	/* Doubleword (32-bit) value */
	unsigned int		ud;	/* Unsigned Doubleword */
	short			w[2];	/* 2 Word (16-bit) values */
	unsigned short		uw[2];	/* 2 Unsigned Word */
	char			b[4];	/* 4 Byte (8-bit) values */
	unsigned char		ub[4];	/* 4 Unsigned Byte */
} p32_t;

typedef	union {
	long long		q;	/* Quadword (64-bit) value */
	unsigned long long	uq;	/* Unsigned Quadword */
	float			f[2];	/* 2 Float (32-bit) values */
	int			d[2];	/* 2 Doubleword (32-bit) values */
	unsigned int		ud[2];	/* 2 Unsigned Doubleword */
	short			w[4];	/* 4 Word (16-bit) values */
	unsigned short		uw[4];	/* 4 Unsigned Word */
	char			b[8];	/* 8 Byte (8-bit) values */
	unsigned char		ub[8];	/* 8 Unsigned Byte */
        float                   sf[2];  /* Single-precision (32-bit) FP value */
} p64_t;

typedef union {
	long long		q[2];	/* Quadword (64-bit) value */
	unsigned long long	uq[2];	/* Unsigned Quadword */
	float			f[4];	/* 4 Float (32-bit) values */
	int			d[4];	/* 4 Doubleword (32-bit) values */
	unsigned int		ud[4];	/* 4 Unsigned Doubleword */
	short			w[8];	/* 8 Word (16-bit) values */
	unsigned short		uw[8];	/* 8 Unsigned Word */
	char			b[16];	/* 16 Byte (8-bit) values */
	unsigned char		ub[16];	/* 16 Unsigned Byte */
        float                   sf[4];  /* Single-precision (32-bit) FP value */
} p128_t;

