/* Verify that overloaded built-ins for vec_xst with int
   inputs produce the right code.  */

/* { dg-require-effective-target powerpc_vsx_ok } */
/* { dg-options "-mvsx -O2" } */

#include <altivec.h>
#define BUILD_VAR_TEST(TESTNAME1, VALUE, VAR_OFFSET, SAVETO)		\
void									\
TESTNAME1 ## _var (VALUE value, VAR_OFFSET offset, SAVETO * saveto) 	\
{									\
	vec_xst (value, offset, saveto);		\
}

#define BUILD_CST_TEST(TESTNAME1, VALUE, CST_OFFSET, SAVETO)		\
void									\
TESTNAME1 ## _cst (VALUE value, SAVETO * saveto) 			\
{									\
	vec_xst (value, CST_OFFSET, saveto);		\
}

BUILD_VAR_TEST( test1,  vector signed int, signed long long, signed int );
BUILD_VAR_TEST( test2,  vector signed int, signed int, signed int );
BUILD_CST_TEST( test3,  vector signed int, 12, signed int );

BUILD_VAR_TEST( test4,  vector unsigned int, signed long long, unsigned int );
BUILD_VAR_TEST( test5,  vector unsigned int, signed int, unsigned int );
BUILD_CST_TEST( test6,  vector unsigned int, 12, unsigned int );

BUILD_VAR_TEST( test7,  vector signed int, signed long long, vector signed int );
BUILD_VAR_TEST( test8,  vector signed int, signed int, vector signed int );
BUILD_CST_TEST( test9,  vector signed int, 12, vector signed int );

BUILD_VAR_TEST( test10, vector unsigned int, signed long long, vector unsigned int );
BUILD_VAR_TEST( test11, vector unsigned int, signed int, vector unsigned int );
BUILD_CST_TEST( test12, vector unsigned int, 12, vector unsigned int );

/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
