Hi, I have been accidentally not testing -m32 for the last few weeks, so I missed some compatibility issues with recent tests. "vector long" produces 2x64 vectors for -m64, but 4x32 vectors for -m32. This caused some of the tests to fail on the AIX tester. For compatibility across both, I need to use "vector long long" instead. I've made this change throughout the recently added vector API tests.
Tested on powerpc64le-unknown-linux-gnu with -m64, on powerpc64-unknown-linux-gnu with -m32/-m64, and on gcc111.fsffrance.org running AIX 7.1. The tests now pass in all environments (except for a handful that are failing on AIX for another reason). Committed as obvious (in retrospect :). Thanks, Bill 2014-03-04 Bill Schmidt <wschm...@linux.vnet.ibm.com> * gcc.dg/vmx/extract-vsx.c: Replace "vector long" with "vector long long" throughout. * gcc.dg/vmx/extract-vsx-be-order.c: Likewise. * gcc.dg/vmx/insert-vsx.c: Likewise. * gcc.dg/vmx/insert-vsx-be-order.c: Likewise. * gcc.dg/vmx/ld-vsx.c: Likewise. * gcc.dg/vmx/ld-vsx-be-order.c: Likewise. * gcc.dg/vmx/ldl-vsx.c: Likewise. * gcc.dg/vmx/ldl-vsx-be-order.c: Likewise. * gcc.dg/vmx/merge-vsx.c: Likewise. * gcc.dg/vmx/merge-vsx-be-order.c: Likewise. * gcc.dg/vmx/st-vsx.c: Likewise. * gcc.dg/vmx/st-vsx-be-order.c: Likewise. * gcc.dg/vmx/stl-vsx.c: Likewise. * gcc.dg/vmx/stl-vsx-be-order.c: Likewise. Index: gcc/testsuite/gcc.dg/vmx/extract-vsx-be-order.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/extract-vsx-be-order.c (revision 208287) +++ gcc/testsuite/gcc.dg/vmx/extract-vsx-be-order.c (working copy) @@ -6,7 +6,7 @@ static void test() { - vector long vl = {0, 1}; + vector long long vl = {0, 1}; vector double vd = {0.0, 1.0}; #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ Index: gcc/testsuite/gcc.dg/vmx/extract-vsx.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/extract-vsx.c (revision 208287) +++ gcc/testsuite/gcc.dg/vmx/extract-vsx.c (working copy) @@ -6,7 +6,7 @@ static void test() { - vector long vl = {0, 1}; + vector long long vl = {0, 1}; vector double vd = {0.0, 1.0}; check (vec_extract (vl, 0) == 0, "vec_extract, vl, 0"); Index: gcc/testsuite/gcc.dg/vmx/insert-vsx-be-order.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/insert-vsx-be-order.c (revision 208287) +++ gcc/testsuite/gcc.dg/vmx/insert-vsx-be-order.c (working copy) @@ -4,7 +4,7 @@ #include "harness.h" -static int vec_long_eq (vector long x, vector long y) +static int vec_long_long_eq (vector long long x, vector long long y) { return (x[0] == y[0] && x[1] == y[1]); } @@ -16,19 +16,19 @@ static int vec_dbl_eq (vector double x, vector dou static void test() { - vector long vl = {0, 1}; + vector long long vl = {0, 1}; vector double vd = {0.0, 1.0}; - vector long vlr = vec_insert (2, vl, 0); + vector long long vlr = vec_insert (2, vl, 0); vector double vdr = vec_insert (2.0, vd, 1); #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ - vector long vler = {0, 2}; + vector long long vler = {0, 2}; vector double vder = {2.0, 1.0}; #else - vector long vler = {2, 1}; + vector long long vler = {2, 1}; vector double vder = {0.0, 2.0}; #endif - check (vec_long_eq (vlr, vler), "vl"); + check (vec_long_long_eq (vlr, vler), "vl"); check (vec_dbl_eq (vdr, vder), "vd"); } Index: gcc/testsuite/gcc.dg/vmx/insert-vsx.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/insert-vsx.c (revision 208287) +++ gcc/testsuite/gcc.dg/vmx/insert-vsx.c (working copy) @@ -4,7 +4,7 @@ #include "harness.h" -static int vec_long_eq (vector long x, vector long y) +static int vec_long_long_eq (vector long long x, vector long long y) { return (x[0] == y[0] && x[1] == y[1]); } @@ -16,13 +16,13 @@ static int vec_dbl_eq (vector double x, vector dou static void test() { - vector long vl = {0, 1}; + vector long long vl = {0, 1}; vector double vd = {0.0, 1.0}; - vector long vlr = vec_insert (2, vl, 0); + vector long long vlr = vec_insert (2, vl, 0); vector double vdr = vec_insert (2.0, vd, 1); - vector long vler = {2, 1}; + vector long long vler = {2, 1}; vector double vder = {0.0, 2.0}; - check (vec_long_eq (vlr, vler), "vl"); + check (vec_long_long_eq (vlr, vler), "vl"); check (vec_dbl_eq (vdr, vder), "vd"); } Index: gcc/testsuite/gcc.dg/vmx/ld-vsx-be-order.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/ld-vsx-be-order.c (revision 208287) +++ gcc/testsuite/gcc.dg/vmx/ld-vsx-be-order.c (working copy) @@ -4,7 +4,7 @@ #include "harness.h" -static unsigned long svul[2] __attribute__ ((aligned (16))); +static unsigned long long svul[2] __attribute__ ((aligned (16))); static double svd[2] __attribute__ ((aligned (16))); static void init () @@ -20,20 +20,20 @@ static void init () static void test () { #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ - vector unsigned long evul = {1,0}; + vector unsigned long long evul = {1,0}; vector double evd = {1.0,0.0}; #else - vector unsigned long evul = {0,1}; + vector unsigned long long evul = {0,1}; vector double evd = {0.0,1.0}; #endif - vector unsigned long vul; + vector unsigned long long vul; vector double vd; unsigned i; init (); - vul = vec_ld (0, (vector unsigned long *)svul); + vul = vec_ld (0, (vector unsigned long long *)svul); vd = vec_ld (0, (vector double *)svd); for (i = 0; i < 2; ++i) Index: gcc/testsuite/gcc.dg/vmx/ld-vsx.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/ld-vsx.c (revision 208287) +++ gcc/testsuite/gcc.dg/vmx/ld-vsx.c (working copy) @@ -4,7 +4,7 @@ #include "harness.h" -static unsigned long svul[2] __attribute__ ((aligned (16))); +static unsigned long long svul[2] __attribute__ ((aligned (16))); static double svd[2] __attribute__ ((aligned (16))); static void init () @@ -19,16 +19,16 @@ static void init () static void test () { - vector unsigned long evul = {0,1}; + vector unsigned long long evul = {0,1}; vector double evd = {0.0,1.0}; - vector unsigned long vul; + vector unsigned long long vul; vector double vd; unsigned i; init (); - vul = vec_ld (0, (vector unsigned long *)svul); + vul = vec_ld (0, (vector unsigned long long *)svul); vd = vec_ld (0, (vector double *)svd); for (i = 0; i < 2; ++i) Index: gcc/testsuite/gcc.dg/vmx/ldl-vsx-be-order.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/ldl-vsx-be-order.c (revision 208287) +++ gcc/testsuite/gcc.dg/vmx/ldl-vsx-be-order.c (working copy) @@ -4,7 +4,7 @@ #include "harness.h" -static unsigned long svul[2] __attribute__ ((aligned (16))); +static unsigned long long svul[2] __attribute__ ((aligned (16))); static double svd[2] __attribute__ ((aligned (16))); static void init () @@ -20,20 +20,20 @@ static void init () static void test () { #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ - vector unsigned long evul = {1,0}; + vector unsigned long long evul = {1,0}; vector double evd = {1.0,0.0}; #else - vector unsigned long evul = {0,1}; + vector unsigned long long evul = {0,1}; vector double evd = {0.0,1.0}; #endif - vector unsigned long vul; + vector unsigned long long vul; vector double vd; unsigned i; init (); - vul = vec_ldl (0, (vector unsigned long *)svul); + vul = vec_ldl (0, (vector unsigned long long *)svul); vd = vec_ldl (0, (vector double *)svd); for (i = 0; i < 2; ++i) Index: gcc/testsuite/gcc.dg/vmx/ldl-vsx.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/ldl-vsx.c (revision 208287) +++ gcc/testsuite/gcc.dg/vmx/ldl-vsx.c (working copy) @@ -4,7 +4,7 @@ #include "harness.h" -static unsigned long svul[2] __attribute__ ((aligned (16))); +static unsigned long long svul[2] __attribute__ ((aligned (16))); static double svd[2] __attribute__ ((aligned (16))); static void init () @@ -19,16 +19,16 @@ static void init () static void test () { - vector unsigned long evul = {0,1}; + vector unsigned long long evul = {0,1}; vector double evd = {0.0,1.0}; - vector unsigned long vul; + vector unsigned long long vul; vector double vd; unsigned i; init (); - vul = vec_ldl (0, (vector unsigned long *)svul); + vul = vec_ldl (0, (vector unsigned long long *)svul); vd = vec_ldl (0, (vector double *)svd); for (i = 0; i < 2; ++i) Index: gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c (revision 208287) +++ gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c (working copy) @@ -4,7 +4,7 @@ #include "harness.h" -static int vec_long_eq (vector long x, vector long y) +static int vec_long_long_eq (vector long long x, vector long long y) { return (x[0] == y[0] && x[1] == y[1]); } @@ -17,24 +17,24 @@ static int vec_double_eq (vector double x, vector static void test() { /* Input vectors. */ - vector long vla = {-2,-1}; - vector long vlb = {0,1}; + vector long long vla = {-2,-1}; + vector long long vlb = {0,1}; vector double vda = {-2.0,-1.0}; vector double vdb = {0.0,1.0}; /* Result vectors. */ - vector long vlh, vll; + vector long long vlh, vll; vector double vdh, vdl; /* Expected result vectors. */ #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ - vector long vlrh = {1,-1}; - vector long vlrl = {0,-2}; + vector long long vlrh = {1,-1}; + vector long long vlrl = {0,-2}; vector double vdrh = {1.0,-1.0}; vector double vdrl = {0.0,-2.0}; #else - vector long vlrh = {-2,0}; - vector long vlrl = {-1,1}; + vector long long vlrh = {-2,0}; + vector long long vlrl = {-1,1}; vector double vdrh = {-2.0,0.0}; vector double vdrl = {-1.0,1.0}; #endif @@ -44,8 +44,8 @@ static void test() vdh = vec_mergeh (vda, vdb); vdl = vec_mergel (vda, vdb); - check (vec_long_eq (vlh, vlrh), "vlh"); - check (vec_long_eq (vll, vlrl), "vll"); + check (vec_long_long_eq (vlh, vlrh), "vlh"); + check (vec_long_long_eq (vll, vlrl), "vll"); check (vec_double_eq (vdh, vdrh), "vdh" ); check (vec_double_eq (vdl, vdrl), "vdl" ); } Index: gcc/testsuite/gcc.dg/vmx/merge-vsx.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/merge-vsx.c (revision 208287) +++ gcc/testsuite/gcc.dg/vmx/merge-vsx.c (working copy) @@ -4,7 +4,7 @@ #include "harness.h" -static int vec_long_eq (vector long x, vector long y) +static int vec_long_long_eq (vector long long x, vector long long y) { return (x[0] == y[0] && x[1] == y[1]); } @@ -17,18 +17,18 @@ static int vec_double_eq (vector double x, vector static void test() { /* Input vectors. */ - vector long vla = {-2,-1}; - vector long vlb = {0,1}; + vector long long vla = {-2,-1}; + vector long long vlb = {0,1}; vector double vda = {-2.0,-1.0}; vector double vdb = {0.0,1.0}; /* Result vectors. */ - vector long vlh, vll; + vector long long vlh, vll; vector double vdh, vdl; /* Expected result vectors. */ - vector long vlrh = {-2,0}; - vector long vlrl = {-1,1}; + vector long long vlrh = {-2,0}; + vector long long vlrl = {-1,1}; vector double vdrh = {-2.0,0.0}; vector double vdrl = {-1.0,1.0}; @@ -37,8 +37,8 @@ static void test() vdh = vec_mergeh (vda, vdb); vdl = vec_mergel (vda, vdb); - check (vec_long_eq (vlh, vlrh), "vlh"); - check (vec_long_eq (vll, vlrl), "vll"); + check (vec_long_long_eq (vlh, vlrh), "vlh"); + check (vec_long_long_eq (vll, vlrl), "vll"); check (vec_double_eq (vdh, vdrh), "vdh" ); check (vec_double_eq (vdl, vdrl), "vdl" ); } Index: gcc/testsuite/gcc.dg/vmx/st-vsx-be-order.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/st-vsx-be-order.c (revision 208287) +++ gcc/testsuite/gcc.dg/vmx/st-vsx-be-order.c (working copy) @@ -4,7 +4,7 @@ #include "harness.h" -static unsigned long svul[2] __attribute__ ((aligned (16))); +static unsigned long long svul[2] __attribute__ ((aligned (16))); static double svd[2] __attribute__ ((aligned (16))); static void check_arrays () @@ -20,14 +20,14 @@ static void check_arrays () static void test () { #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ - vector unsigned long vul = {1,0}; + vector unsigned long long vul = {1,0}; vector double vd = {1.0,0.0}; #else - vector unsigned long vul = {0,1}; + vector unsigned long long vul = {0,1}; vector double vd = {0.0,1.0}; #endif - vec_st (vul, 0, (vector unsigned long *)svul); + vec_st (vul, 0, (vector unsigned long long *)svul); vec_st (vd, 0, (vector double *)svd); check_arrays (); Index: gcc/testsuite/gcc.dg/vmx/st-vsx.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/st-vsx.c (revision 208287) +++ gcc/testsuite/gcc.dg/vmx/st-vsx.c (working copy) @@ -4,7 +4,7 @@ #include "harness.h" -static unsigned long svul[2] __attribute__ ((aligned (16))); +static unsigned long long svul[2] __attribute__ ((aligned (16))); static double svd[2] __attribute__ ((aligned (16))); static void check_arrays () @@ -19,10 +19,10 @@ static void check_arrays () static void test () { - vector unsigned long vul = {0,1}; + vector unsigned long long vul = {0,1}; vector double vd = {0.0,1.0}; - vec_st (vul, 0, (vector unsigned long *)svul); + vec_st (vul, 0, (vector unsigned long long *)svul); vec_st (vd, 0, (vector double *)svd); check_arrays (); Index: gcc/testsuite/gcc.dg/vmx/stl-vsx-be-order.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/stl-vsx-be-order.c (revision 208287) +++ gcc/testsuite/gcc.dg/vmx/stl-vsx-be-order.c (working copy) @@ -4,7 +4,7 @@ #include "harness.h" -static unsigned long svul[2] __attribute__ ((aligned (16))); +static unsigned long long svul[2] __attribute__ ((aligned (16))); static double svd[2] __attribute__ ((aligned (16))); static void check_arrays () @@ -20,14 +20,14 @@ static void check_arrays () static void test () { #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ - vector unsigned long vul = {1,0}; + vector unsigned long long vul = {1,0}; vector double vd = {1.0,0.0}; #else - vector unsigned long vul = {0,1}; + vector unsigned long long vul = {0,1}; vector double vd = {0.0,1.0}; #endif - vec_stl (vul, 0, (vector unsigned long *)svul); + vec_stl (vul, 0, (vector unsigned long long *)svul); vec_stl (vd, 0, (vector double *)svd); check_arrays (); Index: gcc/testsuite/gcc.dg/vmx/stl-vsx.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/stl-vsx.c (revision 208287) +++ gcc/testsuite/gcc.dg/vmx/stl-vsx.c (working copy) @@ -4,7 +4,7 @@ #include "harness.h" -static unsigned long svul[2] __attribute__ ((aligned (16))); +static unsigned long long svul[2] __attribute__ ((aligned (16))); static double svd[2] __attribute__ ((aligned (16))); static void check_arrays () @@ -19,10 +19,10 @@ static void check_arrays () static void test () { - vector unsigned long vul = {0,1}; + vector unsigned long long vul = {0,1}; vector double vd = {0.0,1.0}; - vec_stl (vul, 0, (vector unsigned long *)svul); + vec_stl (vul, 0, (vector unsigned long long *)svul); vec_stl (vd, 0, (vector double *)svd); check_arrays ();