GCC maintainers: Per the comment from Segher, there is a typo in the ABI.
On Tue, 2018-06-05 at 16:45 -0500, Bill Schmidt wrote: > Hi Carl, > > That looks like a typo in the ABI document to me. The return type > should match the > argument types like it does for the other variants. Sorry -- I'll > open a bug against > the ABI doc. > > Thanks! Good catch, Segher. > >> So, the ABI doc currently says: > > > > vector unsigned char vec_permxor (vector signed char, vector > > signed char, vector signed char); > > vector unsigned char vec_permxor (vector unsigned char, vector > > unsigned char, vector unsigned char); > > > > and we want it to read: > > > > vector signed char vec_permxor (vector signed char, vector > > signed char, vector signed char); > > vector unsigned char vec_permxor (vector unsigned char, vector > > unsigned char, vector unsigned char);> > Yep, correct! > Bill Given that, the changes to match the ABI in gcc/config/rs6000/rs6000- c.c and gcc/testsuite/gcc.target/powerpc/builtins-7-runnable.c were removed from the patch leaving just the changes to file gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c. The patch was retested on: powerpc64le-unknown-linux-gnu (Power 8 LE) powerpc64le-unknown-linux-gnu (Power 9 LE) powerpc64-unknown-linux-gnu (Power 8 BE) With no regressions. Please let me know if the patch looks OK for GCC mainline. Carl Love --------------------------------------------------------------------- gcc/testsuite/ChangeLog: 2018-06-06 Carl Love <c...@us.ibm.com> * gcc.target/powerpc/builtins-7-p9-runnable.c: Change first argument to vui_arg. --- gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c b/gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c index 137b46b..f277344 100644 --- a/gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c +++ b/gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c @@ -82,6 +82,7 @@ vext (vector unsigned char *vc) int main() { vector signed int vsi_arg; + vector unsigned int vui_arg; vector unsigned char vec_uc_arg, vec_uc_result, vec_uc_expected; vector unsigned long long vec_ull_result, vec_ull_expected; unsigned long long ull_result, ull_expected; @@ -113,10 +114,12 @@ int main() /* insert into char 4 location */ vec_uc_expected = (vector unsigned char){1, 2, 3, 4, - 0xC, 0, 0, 0, + 2, 0, 0, 0, 9, 10, 11, 12, 13, 14, 15, 16}; - vec_uc_result = vec_insert4b (vsi_arg, vec_uc_arg, 4); + vui_arg = (vector unsigned int){0x4, 0x3, 0x2, 0x1}; + + vec_uc_result = vec_insert4b (vui_arg, vec_uc_arg, 4); if (result_wrong_uc(vec_uc_expected, vec_uc_result)) { -- 2.7.4