From patchwork Tue Jan 21 16:27:27 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 1226661 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-517915-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha1 header.s=default header.b=RemMnUxr; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 482DTw2ty4z9s1x for ; Wed, 22 Jan 2020 03:27:48 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:message-id:mime-version:content-type; q=dns; s= default; b=N7lb8xj9/nseWVPNEFHTbJbsDDAmfD07y38X6xjBKzwagfBMLvmj8 oJO9Mj4NDSpt6gJwinWKBwUehb3b5ETub7i+CutWyyXj4HOPVXWs6nwqOlttzXm4 WmNSv3saqmLoIJ09s1Lrg42gqtxwy/T4ZSLd/bdYFIWhQjYBqep3Pk= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:message-id:mime-version:content-type; s= default; bh=HRZXUttoxCnB7qc02bsUZttUnLo=; b=RemMnUxrVtZ3McU9hBPT k1gQdNC/fGtOhtxVbJpd2Nhg+Oyam+gR6P3vqF5Uf0on3yGmxtQCGmLUO9I/GSy5 zhnEYzrPc5gcZHIkLZtPFHofUZ5rEABIml7zwDNKSlGynvTyRSp2m2Hop7nFNrpD 6jbJORP2xyskZctDkwg3nek= Received: (qmail 56790 invoked by alias); 21 Jan 2020 16:27:40 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 56778 invoked by uid 89); 21 Jan 2020 16:27:40 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-18.0 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: foss.arm.com Received: from foss.arm.com (HELO foss.arm.com) (217.140.110.172) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 21 Jan 2020 16:27:30 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8ADF430E for ; Tue, 21 Jan 2020 08:27:28 -0800 (PST) Received: from localhost (e121540-lin.manchester.arm.com [10.32.98.126]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 32E673F68E for ; Tue, 21 Jan 2020 08:27:28 -0800 (PST) From: Richard Sandiford To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org, richard.sandiford@arm.com Subject: [committed] aarch64: Use stdint types for SVE ACLE elements Date: Tue, 21 Jan 2020 16:27:27 +0000 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 X-IsSubscribed: yes I'd used mode-based element types in the SVE ACLE implementation, but it turns out that they don't correspond to the types used by ILP32 newlib. GCC already knows what the correct types are, I just wasn't using the right interface to find them. A consequence of this is that ILP32 newlib code needs to cast "int *" pointers to "int32_t *" before passing them to s32 loads and stores, since int32_t is defined as "long int" rather than "int". That matches the normal C++ overloading behaviour for this target, where passing "int *" to: void f(int32_t *); void f(int64_t *); would be ambiguous. It also matches the corresponding behaviour. Tested on aarch64-linux-gnu and aarch64_be-elf, applied. There are still other ILP32-related ACLE failures to go... Richard 2020-01-21 Richard Sandiford gcc/ * config/aarch64/aarch64-sve-builtins.def: Use get_typenode_from_name to get the integer element types. gcc/testsuite/ * gcc.target/aarch64/sve/acle/general-c/load_1.c (f1): Cast to int32_t * rather than int *. * gcc.target/aarch64/sve/acle/general-c/load_2.c (f1): Likewise. * gcc.target/aarch64/sve/acle/general-c/load_gather_sv_1.c (f1): Likewise. * gcc.target/aarch64/sve/acle/general-c/load_gather_sv_2.c (f1): Likewise. * gcc.target/aarch64/sve/acle/general-c/load_gather_sv_restricted_1.c (f1): Likewise. * gcc.target/aarch64/sve/acle/general-c/load_replicate_1.c (f1): Likewise. * gcc.target/aarch64/sve/acle/general-c/store_1.c (f1): Likewise. * gcc.target/aarch64/sve/acle/general-c/store_2.c (f1): Likewise. * gcc.target/aarch64/sve/acle/general-c/store_scatter_index_1.c (f1): Likewise. * gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_2.c (f1): Likewise. * gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_restricted_1.c (f1): Likewise. --- gcc/config/aarch64/aarch64-sve-builtins.def | 19 +++++++++++-------- .../aarch64/sve/acle/general-c/load_1.c | 2 +- .../aarch64/sve/acle/general-c/load_2.c | 2 +- .../sve/acle/general-c/load_gather_sv_1.c | 2 +- .../sve/acle/general-c/load_gather_sv_2.c | 2 +- .../general-c/load_gather_sv_restricted_1.c | 2 +- .../sve/acle/general-c/load_replicate_1.c | 2 +- .../aarch64/sve/acle/general-c/store_1.c | 2 +- .../aarch64/sve/acle/general-c/store_2.c | 2 +- .../acle/general-c/store_scatter_index_1.c | 2 +- .../acle/general-c/store_scatter_offset_2.c | 2 +- .../store_scatter_offset_restricted_1.c | 2 +- 12 files changed, 22 insertions(+), 19 deletions(-) diff --git a/gcc/config/aarch64/aarch64-sve-builtins.def b/gcc/config/aarch64/aarch64-sve-builtins.def index 040f1d8cb8f..a5a5aca58dd 100644 --- a/gcc/config/aarch64/aarch64-sve-builtins.def +++ b/gcc/config/aarch64/aarch64-sve-builtins.def @@ -64,14 +64,17 @@ DEF_SVE_TYPE (svbool_t, 10, __SVBool_t, boolean_type_node) DEF_SVE_TYPE (svfloat16_t, 13, __SVFloat16_t, aarch64_fp16_type_node) DEF_SVE_TYPE (svfloat32_t, 13, __SVFloat32_t, float_type_node) DEF_SVE_TYPE (svfloat64_t, 13, __SVFloat64_t, double_type_node) -DEF_SVE_TYPE (svint8_t, 10, __SVInt8_t, intQI_type_node) -DEF_SVE_TYPE (svint16_t, 11, __SVInt16_t, intHI_type_node) -DEF_SVE_TYPE (svint32_t, 11, __SVInt32_t, intSI_type_node) -DEF_SVE_TYPE (svint64_t, 11, __SVInt64_t, intDI_type_node) -DEF_SVE_TYPE (svuint8_t, 11, __SVUint8_t, unsigned_intQI_type_node) -DEF_SVE_TYPE (svuint16_t, 12, __SVUint16_t, unsigned_intHI_type_node) -DEF_SVE_TYPE (svuint32_t, 12, __SVUint32_t, unsigned_intSI_type_node) -DEF_SVE_TYPE (svuint64_t, 12, __SVUint64_t, unsigned_intDI_type_node) +DEF_SVE_TYPE (svint8_t, 10, __SVInt8_t, get_typenode_from_name (INT8_TYPE)) +DEF_SVE_TYPE (svint16_t, 11, __SVInt16_t, get_typenode_from_name (INT16_TYPE)) +DEF_SVE_TYPE (svint32_t, 11, __SVInt32_t, get_typenode_from_name (INT32_TYPE)) +DEF_SVE_TYPE (svint64_t, 11, __SVInt64_t, get_typenode_from_name (INT64_TYPE)) +DEF_SVE_TYPE (svuint8_t, 11, __SVUint8_t, get_typenode_from_name (UINT8_TYPE)) +DEF_SVE_TYPE (svuint16_t, 12, __SVUint16_t, + get_typenode_from_name (UINT16_TYPE)) +DEF_SVE_TYPE (svuint32_t, 12, __SVUint32_t, + get_typenode_from_name (UINT32_TYPE)) +DEF_SVE_TYPE (svuint64_t, 12, __SVUint64_t, + get_typenode_from_name (UINT64_TYPE)) DEF_SVE_TYPE_SUFFIX (b, svbool_t, bool, 8, VNx16BImode) DEF_SVE_TYPE_SUFFIX (b8, svbool_t, bool, 8, VNx16BImode) diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_1.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_1.c index 34f989bf8bb..784fdc317e6 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_1.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_1.c @@ -13,7 +13,7 @@ f1 (svbool_t pg, signed char *s8_ptr, void *void_ptr, struct s *s_ptr, svld1 (pg, s8_ptr, 0); /* { dg-error {too many arguments to function 'svld1'} } */ svld1 (0, s8_ptr); /* { dg-error {passing 'int' to argument 1 of 'svld1', which expects 'svbool_t'} } */ svld1 (pg, 0); /* { dg-error {passing 'int' to argument 2 of 'svld1', which expects a pointer type} } */ - svld1 (pg, (int *) 0); + svld1 (pg, (int32_t *) 0); svld1 (pg, void_ptr); /* { dg-error {passing 'void \*' to argument 2 of 'svld1', but 'void' is not a valid SVE element type} } */ svld1 (pg, s_ptr); /* { dg-error {passing 'struct s \*' to argument 2 of 'svld1', but 'struct s' is not a valid SVE element type} } */ svld1 (pg, f32_ptr); diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_2.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_2.c index beb07f138d7..a8288762695 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_2.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_2.c @@ -13,7 +13,7 @@ f1 (svbool_t pg, signed char *s8_ptr, void *void_ptr, struct s *s_ptr, svld1_s8 (pg, s8_ptr, 0); /* { dg-error {too many arguments to function 'svld1_s8'} } */ svld1_s8 (0, 0); /* { dg-error {incompatible type for argument 1 of 'svld1_s8'} } */ svld1_s8 (pg, 0); - svld1_s32 (pg, (int *) 0); + svld1_s32 (pg, (int32_t *) 0); svld1_s8 (pg, void_ptr); svld1_s8 (pg, s_ptr); /* { dg-warning {passing argument 2 of 'svld1_s8' from incompatible pointer type} } */ svld1_f32 (pg, f32_ptr); diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_gather_sv_1.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_gather_sv_1.c index 21566a9d96d..4daede78dcb 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_gather_sv_1.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_gather_sv_1.c @@ -18,7 +18,7 @@ f1 (svbool_t pg, signed char *s8_ptr, short *s16_ptr, svld1_gather_offset (pg, s32_ptr, s32, 0); /* { dg-error {too many arguments to function 'svld1_gather_offset'} } */ svld1_gather_offset (0, s32_ptr, s32); /* { dg-error {passing 'int' to argument 1 of 'svld1_gather_offset', which expects 'svbool_t'} } */ svld1_gather_offset (pg, 0, s32); /* { dg-error {passing 'int' to argument 2 of 'svld1_gather_offset', which expects a pointer type} } */ - svld1_gather_offset (pg, (int *) 0, s32); + svld1_gather_offset (pg, (int32_t *) 0, s32); svld1_gather_offset (pg, void_ptr, s32); /* { dg-error {passing 'void \*' to argument 2 of 'svld1_gather_offset', but 'void' is not a valid SVE element type} } */ svld1_gather_offset (pg, s_ptr, s32); /* { dg-error {passing 'struct s \*' to argument 2 of 'svld1_gather_offset', but 'struct s' is not a valid SVE element type} } */ svld1_gather_offset (pg, f32_ptr, s32); diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_gather_sv_2.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_gather_sv_2.c index 4c15fc40c10..65510cbe3f6 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_gather_sv_2.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_gather_sv_2.c @@ -18,7 +18,7 @@ f1 (svbool_t pg, signed char *s8_ptr, short *s16_ptr, svld1_gather_index (pg, s32_ptr, s32, 0); /* { dg-error {too many arguments to function 'svld1_gather_index'} } */ svld1_gather_index (0, s32_ptr, s32); /* { dg-error {passing 'int' to argument 1 of 'svld1_gather_index', which expects 'svbool_t'} } */ svld1_gather_index (pg, 0, s32); /* { dg-error {passing 'int' to argument 2 of 'svld1_gather_index', which expects a pointer type} } */ - svld1_gather_index (pg, (int *) 0, s32); + svld1_gather_index (pg, (int32_t *) 0, s32); svld1_gather_index (pg, void_ptr, s32); /* { dg-error {passing 'void \*' to argument 2 of 'svld1_gather_index', but 'void' is not a valid SVE element type} } */ svld1_gather_index (pg, s_ptr, s32); /* { dg-error {passing 'struct s \*' to argument 2 of 'svld1_gather_index', but 'struct s' is not a valid SVE element type} } */ svld1_gather_index (pg, f32_ptr, s32); diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_gather_sv_restricted_1.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_gather_sv_restricted_1.c index b12faadda55..51e11fca88a 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_gather_sv_restricted_1.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_gather_sv_restricted_1.c @@ -20,7 +20,7 @@ f1 (svbool_t pg, signed char *s8_ptr, short *s16_ptr, svldnt1_gather_offset (pg, s32_ptr, s32, 0); /* { dg-error {too many arguments to function 'svldnt1_gather_offset'} } */ svldnt1_gather_offset (0, s32_ptr, u32); /* { dg-error {passing 'int' to argument 1 of 'svldnt1_gather_offset', which expects 'svbool_t'} } */ svldnt1_gather_offset (pg, 0, s32); /* { dg-error {passing 'int' to argument 2 of 'svldnt1_gather_offset', which expects a pointer type} } */ - svldnt1_gather_offset (pg, (int *) 0, u32); + svldnt1_gather_offset (pg, (int32_t *) 0, u32); svldnt1_gather_offset (pg, void_ptr, u32); /* { dg-error {passing 'void \*' to argument 2 of 'svldnt1_gather_offset', but 'void' is not a valid SVE element type} } */ svldnt1_gather_offset (pg, s_ptr, u32); /* { dg-error {passing 'struct s \*' to argument 2 of 'svldnt1_gather_offset', but 'struct s' is not a valid SVE element type} } */ svldnt1_gather_offset (pg, f32_ptr, u32); diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_replicate_1.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_replicate_1.c index d4ff76ea871..ebcb0e85b1a 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_replicate_1.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/load_replicate_1.c @@ -13,7 +13,7 @@ f1 (svbool_t pg, signed char *s8_ptr, void *void_ptr, struct s *s_ptr, svld1rq (pg, s8_ptr, 0); /* { dg-error {too many arguments to function 'svld1rq'} } */ svld1rq (0, s8_ptr); /* { dg-error {passing 'int' to argument 1 of 'svld1rq', which expects 'svbool_t'} } */ svld1rq (pg, 0); /* { dg-error {passing 'int' to argument 2 of 'svld1rq', which expects a pointer type} } */ - svld1rq (pg, (int *) 0); + svld1rq (pg, (int32_t *) 0); svld1rq (pg, void_ptr); /* { dg-error {passing 'void \*' to argument 2 of 'svld1rq', but 'void' is not a valid SVE element type} } */ svld1rq (pg, s_ptr); /* { dg-error {passing 'struct s \*' to argument 2 of 'svld1rq', but 'struct s' is not a valid SVE element type} } */ svld1rq (pg, f32_ptr); diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_1.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_1.c index 267db83f70f..625f059af44 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_1.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_1.c @@ -16,7 +16,7 @@ f1 (svbool_t pg, signed char *s8_ptr, void *void_ptr, struct s *s_ptr, svst1 (pg, void_ptr, 0); /* { dg-error {passing 'int' to argument 3 of 'svst1', which expects an SVE vector type} } */ svst1 (pg, void_ptr, pg); /* { dg-error {'svst1' has no form that takes 'svbool_t' arguments} } */ svst1 (pg, 0, s8); - svst1 (pg, (int *) 0, s8); /* { dg-warning "passing argument 2 of 'svst1_s8' from incompatible pointer type" } */ + svst1 (pg, (int32_t *) 0, s8); /* { dg-warning "passing argument 2 of 'svst1_s8' from incompatible pointer type" } */ svst1 (pg, void_ptr, s8); svst1 (pg, s_ptr, s8); /* { dg-warning "passing argument 2 of 'svst1_s8' from incompatible pointer type" } */ svst1 (pg, f32_ptr, s8); /* { dg-warning "passing argument 2 of 'svst1_s8' from incompatible pointer type" } */ diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_2.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_2.c index 4e4fb3c6d66..c718b3ee04e 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_2.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_2.c @@ -18,7 +18,7 @@ f1 (svbool_t pg, signed char *s8_ptr, void *void_ptr, struct s *s_ptr, svst1_vnum (pg, void_ptr, 0, 0); /* { dg-error {passing 'int' to argument 4 of 'svst1_vnum', which expects an SVE vector type} } */ svst1_vnum (pg, void_ptr, 0, pg); /* { dg-error {'svst1_vnum' has no form that takes 'svbool_t' arguments} } */ svst1_vnum (pg, 0, 0, s8); - svst1_vnum (pg, (int *) 0, 0, s8); /* { dg-warning "passing argument 2 of 'svst1_vnum_s8' from incompatible pointer type" } */ + svst1_vnum (pg, (int32_t *) 0, 0, s8); /* { dg-warning "passing argument 2 of 'svst1_vnum_s8' from incompatible pointer type" } */ svst1_vnum (pg, void_ptr, 0, s8); svst1_vnum (pg, s_ptr, 0, s8); /* { dg-warning "passing argument 2 of 'svst1_vnum_s8' from incompatible pointer type" } */ svst1_vnum (pg, f32_ptr, 0, s8); /* { dg-warning "passing argument 2 of 'svst1_vnum_s8' from incompatible pointer type" } */ diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_scatter_index_1.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_scatter_index_1.c index 3209149b619..89528237522 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_scatter_index_1.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_scatter_index_1.c @@ -18,7 +18,7 @@ f1 (svbool_t pg, signed char *s8_ptr, short *s16_ptr, svst1_scatter_index (pg, s32_ptr, s32, s32, 0); /* { dg-error {too many arguments to function 'svst1_scatter_index'} } */ svst1_scatter_index (0, s32_ptr, s32, s32); /* { dg-error {passing 'int' to argument 1 of 'svst1_scatter_index', which expects 'svbool_t'} } */ svst1_scatter_index (pg, 0, s32, s32); - svst1_scatter_index (pg, (int *) 0, s32, s32); + svst1_scatter_index (pg, (int32_t *) 0, s32, s32); svst1_scatter_index (pg, void_ptr, s32, s32); svst1_scatter_index (pg, s_ptr, s32, s32); /* { dg-warning "passing argument 2 of 'svst1_scatter_s32index_s32' from incompatible pointer type" } */ svst1_scatter_index (pg, f32_ptr, s32, s32); /* { dg-warning "passing argument 2 of 'svst1_scatter_s32index_s32' from incompatible pointer type" } */ diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_2.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_2.c index 8ee8129fa10..4854818cae6 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_2.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_2.c @@ -18,7 +18,7 @@ f1 (svbool_t pg, signed char *s8_ptr, short *s16_ptr, svst1_scatter_offset (pg, s32_ptr, s32, s32, 0); /* { dg-error {too many arguments to function 'svst1_scatter_offset'} } */ svst1_scatter_offset (0, s32_ptr, s32, s32); /* { dg-error {passing 'int' to argument 1 of 'svst1_scatter_offset', which expects 'svbool_t'} } */ svst1_scatter_offset (pg, 0, s32, s32); - svst1_scatter_offset (pg, (int *) 0, s32, s32); + svst1_scatter_offset (pg, (int32_t *) 0, s32, s32); svst1_scatter_offset (pg, void_ptr, s32, s32); svst1_scatter_offset (pg, s_ptr, s32, s32); /* { dg-warning "passing argument 2 of 'svst1_scatter_s32offset_s32' from incompatible pointer type" } */ svst1_scatter_offset (pg, f32_ptr, s32, s32); /* { dg-warning "passing argument 2 of 'svst1_scatter_s32offset_s32' from incompatible pointer type" } */ diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_restricted_1.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_restricted_1.c index aef152acf5b..100624b7b03 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_restricted_1.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_restricted_1.c @@ -20,7 +20,7 @@ f1 (svbool_t pg, signed char *s8_ptr, short *s16_ptr, svstnt1_scatter_offset (pg, s32_ptr, u32, s32, 0); /* { dg-error {too many arguments to function 'svstnt1_scatter_offset'} } */ svstnt1_scatter_offset (0, s32_ptr, u32, s32); /* { dg-error {passing 'int' to argument 1 of 'svstnt1_scatter_offset', which expects 'svbool_t'} } */ svstnt1_scatter_offset (pg, 0, u32, s32); - svstnt1_scatter_offset (pg, (int *) 0, u32, s32); + svstnt1_scatter_offset (pg, (int32_t *) 0, u32, s32); svstnt1_scatter_offset (pg, void_ptr, u32, s32); svstnt1_scatter_offset (pg, s_ptr, u32, s32); /* { dg-warning "passing argument 2 of 'svstnt1_scatter_u32offset_s32' from incompatible pointer type" } */ svstnt1_scatter_offset (pg, f32_ptr, u32, s32); /* { dg-warning "passing argument 2 of 'svstnt1_scatter_u32offset_s32' from incompatible pointer type" } */