blob: e048e8b2355544ad7f289b44e8f7334740df81e5 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-require-effective-target powerpc_altivec_ok } */
/* { dg-options "-maltivec" } */
#include <altivec.h>
vector bool char
test_eq_char (vector bool char x, vector bool char y)
{
return vec_cmpeq (x, y);
}
vector bool short
test_eq_short (vector bool short x, vector bool short y)
{
return vec_cmpeq (x, y);
}
vector bool int
test_eq_int (vector bool int x, vector bool int y)
{
return vec_cmpeq (x, y);
}
vector signed char
test_nabs_char (vector signed char x)
{
return vec_nabs (x);
}
vector short
test_nabs_short (vector short x)
{
return vec_nabs (x);
}
vector int
test_nabs_int (vector int x)
{
return vec_nabs (x);
}
vector signed char
test_sll_vsc_vsc_vsuc (vector signed char x, vector unsigned char y)
{
return vec_sll (x, y);
}
vector unsigned char
test_sll_vuc_vuc_vuc (vector unsigned char x, vector unsigned char y)
{
return vec_sll (x, y);
}
vector signed int
test_sll_vsi_vsi_vuc (vector signed int x, vector unsigned char y)
{
return vec_sll (x, y);
}
vector unsigned int
test_sll_vui_vui_vuc (vector unsigned int x, vector unsigned char y)
{
return vec_sll (x, y);
}
vector pixel
test_sll_vp_vp_vuc (vector pixel x, vector unsigned char y)
{
return vec_sll (x, y);
}
vector signed short int
test_sll_vssi_vssi_vuc (vector signed short x, vector unsigned char y)
{
return vec_sll (x, y);
}
vector unsigned short int
test_sll_vusi_vusi_vuc (vector unsigned short x, vector unsigned char y)
{
return vec_sll (x, y);
}
vector signed char
test_slo_vsc_vsc_vsc (vector signed char x, vector signed char y)
{
return vec_slo (x, y);
}
vector signed char
test_slo_vsc_vsc_vuc (vector signed char x, vector unsigned char y)
{
return vec_slo (x, y);
}
vector unsigned char
test_slo_vuc_vuc_vsc (vector unsigned char x, vector signed char y)
{
return vec_slo (x, y);
}
vector unsigned char
test_slo_vuc_vuc_vuc (vector unsigned char x, vector unsigned char y)
{
return vec_slo (x, y);
}
vector signed int
test_slo_vsi_vsi_vsc (vector signed int x, vector signed char y)
{
return vec_slo (x, y);
}
vector signed int
test_slo_vsi_vsi_vuc (vector signed int x, vector unsigned char y)
{
return vec_slo (x, y);
}
vector unsigned int
test_slo_vui_vui_vsc (vector unsigned int x, vector signed char y)
{
return vec_slo (x, y);
}
vector unsigned int
test_slo_vui_vui_vuc (vector unsigned int x, vector unsigned char y)
{
return vec_slo (x, y);
}
vector pixel
test_slo_vp_vp_vsc (vector pixel int x, vector signed char y)
{
return vec_slo (x, y);
}
vector pixel
test_slo_vp_vp_vuc (vector pixel int x, vector unsigned char y)
{
return vec_slo (x, y);
}
vector signed short int
test_slo_vssi_vssi_vsc (vector signed short int x, vector signed char y)
{
return vec_slo (x, y);
}
vector signed short int
test_slo_vssi_vssi_vuc (vector signed short int x, vector unsigned char y)
{
return vec_slo (x, y);
}
vector unsigned short int
test_slo_vusi_vusi_vsc (vector unsigned short int x, vector signed char y)
{
return vec_slo (x, y);
}
vector unsigned short int
test_slo_vusi_vusi_vuc (vector unsigned short int x, vector unsigned char y)
{
return vec_slo (x, y);
}
vector float
test_slo_vf_vf_vsc (vector float x, vector signed char y)
{
return vec_slo (x, y);
}
vector float
test_slo_vf_vf_vuc (vector float x, vector unsigned char y)
{
return vec_slo (x, y);
}
vector int
test_cmpb_float (vector float x, vector float y)
{
return vec_cmpb (x, y);
}
/* Expected test results:
test_eq_char 1 vcmpequb inst
test_eq_short 1 vcmpequh inst
test_eq_int 1 vcmpequw inst
test_nabs_char 1 vsububm, 1 vminsb
test_nabs_short 1 vsubuhm, 1 vminsh
test_nabs_int 1 vsubuwm, 1 vminsw
test_sll_vsc_vsc_vsuc 1 vsl
test_sll_vuc_vuc_vuc 1 vsl
test_sll_vsi_vsi_vuc 1 vsl
test_sll_vui_vui_vuc 1 vsl
test_sll_vp_vp_vuc 1 vsl
test_sll_vssi_vssi_vuc 1 vsl
test_sll_vusi_vusi_vuc 1 vsl
test_slo_vsc_vsc_vsc 1 vslo
test_slo_vsc_vsc_vuc 1 vslo
test_slo_vuc_vuc_vsc 1 vslo
test_slo_vuc_vuc_vuc 1 vslo
test_slo_vsi_vsi_vsc 1 vslo
test_slo_vsi_vsi_vuc 1 vslo
test_slo_vui_vui_vsc 1 vslo
test_slo_vui_vui_vuc 1 vslo
test_slo_vp_vp_vsc 1 vslo
test_slo_vp_vp_vuc 1 vslo
test_slo_vssi_vssi_vsc 1 vslo
test_slo_vssi_vssi_vuc 1 vslo
test_slo_vusi_vusi_vsc 1 vslo
test_slo_vusi_vusi_vuc 1 vslo
test_slo_vf_vf_vsc 1 vslo
test_slo_vf_vf_vuc 1 vslo
test_cmpb_float 1 vcmpbfp */
/* { dg-final { scan-assembler-times "vcmpequb" 1 } } */
/* { dg-final { scan-assembler-times "vcmpequh" 1 } } */
/* { dg-final { scan-assembler-times "vcmpequw" 1 } } */
/* { dg-final { scan-assembler-times "vsububm" 1 } } */
/* { dg-final { scan-assembler-times "vsubuhm" 1 } } */
/* { dg-final { scan-assembler-times "vsubuwm" 1 } } */
/* { dg-final { scan-assembler-times "vminsb" 1 } } */
/* { dg-final { scan-assembler-times "vminsh" 1 } } */
/* { dg-final { scan-assembler-times "vminsw" 1 } } */
/* { dg-final { scan-assembler-times "vslo" 16 } } */
/* { dg-final { scan-assembler-times "vcmpbfp" 1 } } */
/* { dg-final { scan-assembler-times "vsl" 23 } } */