1/* { dg-do compile { target { s390*-*-* } } } */ 2/* { dg-options "-O3 -mzarch -march=z13" } */ 3 4/* { dg-final { scan-assembler-times "vsb" 2 } } */ 5/* { dg-final { scan-assembler-times "vsh" 2 } } */ 6/* { dg-final { scan-assembler-times "vsf" 2 } } */ 7/* { dg-final { scan-assembler-times "vsg" 2 } } */ 8/* { dg-final { scan-assembler-times "vfs" 1 } } */ 9 10 11typedef unsigned char uv16qi __attribute__((vector_size(16))); 12typedef signed char v16qi __attribute__((vector_size(16))); 13typedef unsigned short uv8hi __attribute__((vector_size(16))); 14typedef signed short v8hi __attribute__((vector_size(16))); 15typedef unsigned int uv4si __attribute__((vector_size(16))); 16typedef signed int v4si __attribute__((vector_size(16))); 17typedef unsigned long long uv2di __attribute__((vector_size(16))); 18typedef signed long long v2di __attribute__((vector_size(16))); 19typedef double v2df __attribute__((vector_size(16))); 20 21uv16qi g_uvqi0, g_uvqi1, g_uvqi2; 22v16qi g_vqi0, g_vqi1, g_vqi2; 23 24uv8hi g_uvhi0, g_uvhi1, g_uvhi2; 25v8hi g_vhi0, g_vhi1, g_vhi2; 26 27uv4si g_uvsi0, g_uvsi1, g_uvsi2; 28v4si g_vsi0, g_vsi1, g_vsi2; 29 30uv2di g_uvdi0, g_uvdi1, g_uvdi2; 31v2di g_vdi0, g_vdi1, g_vdi2; 32 33v2df g_vdf0, g_vdf1, g_vdf2; 34 35void 36sub1 () 37{ 38 g_vqi0 = g_vqi1 - g_vqi2; 39 g_uvqi0 = g_uvqi1 - g_uvqi2; 40 41 g_vhi0 = g_vhi1 - g_vhi2; 42 g_uvhi0 = g_uvhi1 - g_uvhi2; 43 44 g_vsi0 = g_vsi1 - g_vsi2; 45 g_uvsi0 = g_uvsi1 - g_uvsi2; 46 47 g_vdi0 = g_vdi1 - g_vdi2; 48 g_uvdi0 = g_uvdi1 - g_uvdi2; 49 50 g_vdf0 = g_vdf1 - g_vdf2; 51} 52